Convert a multi select filter to radios

  1. function phptemplate_views_filters(&$form) {
  2.   // Our target filter key
  3.   $fid = 'filter2';
  4.   $old = $form[$fid];
  5.  
  6.   // Rebuild widget
  7.   $filter['#type'] = 'radios';
  8.  
  9.   // Construct radios
  10.   $children = '';
  11.   foreach ($old['#options'] as $value => $label) {
  12.     $radio = array(
  13.       '#type' => 'radio',
  14.       '#name' => $fid,
  15.       '#title' => $label,
  16.       '#return_value' => $value,
  17.       '#value' => $_GET[$fid] == $value ? $value : '',
  18.       '#parents' => array(),
  19.     );
  20.     $children .= drupal_render($radio);
  21.   }
  22.   unset($value); unset($label);
  23.   $filter['#children'] = $children;
  24.  
  25.   // Apply changes
  26.   $form[$fid] = $filter;
  27.  
  28.   // Render form element
  29.   $view = $form['view']['#value'];
  30.  
  31.   foreach ($view->exposed_filter as $count => $expose) {
  32.     $row[] = drupal_render($form["op$count"]) . drupal_render($form["filter$count"]);
  33.     $label[] = $expose['label'];
  34.   }
  35.   $row[] = drupal_render($form['submit']);
  36.   $label[] = ''; // so the column count is the same.
  37.  
  38.   // make the 'q' come first
  39.   return drupal_render($form['q']) . theme('table', $label, array($row)) . drupal_render($form);
  40. }