views filter: broken filter - but what's broken about it? I am trying to build a views filter and after a lot of digging into the views-workflow, I think I might have understood the basics. I used a lot of resources 1 2 3 4 and of course doc.logrus.com, but now Views tells me that my handler is broken. 

If there is anybody outhere that can help me get my filter-handler working, I would be in a huge debt!

Right now I have the following three files:

ds_regions.module

function ds_regions_views_api(){
  return array(
    'api' =&gt; 3,
    'path' =&gt; drupal_get_path('module','ds_regions')
  );
}


ds_regions.views.inc

&lt;?php 
function ds_regions_views_handlers() {
  return array(
    'info' =&gt; array(
    'path' =&gt; drupal_get_path('module','ds_regions'),
  ),
  'handlers' =&gt; array(
    'ds_regions_handler_filter_view' =&gt; array (
      'parent' =&gt; 'views_handler_filter',
      ),
    ),
  );
}

function ds_regions_views_data(){
  $data=array();
  $data['node']['ds_regions_filter']=array(
    'title' =&gt; t('ds regions view filter'),
    'help' =&gt; t('Filters the nodes by region'),
    'filter' =&gt; array(
      'handler' =&gt; 'ds_regions_handler_filter_view',
    ),
  );
  $data['field_data_field_verein']['table']['join']['node']=array(
    'left_field' =&gt; 'nid',
    'field' =&gt; 'field_verein_tid',
  );
  $data['ds_vereine']['table']['join']['node']=array(
    'left_field' =&gt; 'field_verein_tid',
    'left_table' =&gt; 'field_data_field_verein',
    'field' =&gt; 'tid',
  );
  return $data;
}
?&gt;


ds_regions_handler_filter_view.inc

&lt;?php
class ds_regions_handler_filter_view extends views_handler_filter{
  function admin_summary(){}
  function option_definition(){
    $options = parent::option_definition();
    $options['misc'] = array('default' =&gt; '1');
    return $options;
  }
  function value_form(&amp;$form, &amp;$form_state) {
    $form['custom_filter']  = array(
      '#type' =&gt; 'textfield'
    );
  }
  function options_form(){}
  function operator_form(){}
  function query(){
  $table = $this-&gt;ensure_my_table();
  $this-&gt;query-&gt;ensure_table('ds_vereine',$this-&gt;relationship);
  $this-&gt;query-&gt;add_where($this-&gt;options['group'],"ds_vereine.plz IN (SELECT ds_plz_distance.plz_first FROM `ds_plz_distance` WHERE ds_plz_distance.distance &lt; 20 AND ds_plz_distance.plz_first=ds_vereine.plz) OR ds_vereine.plz IN (SELECT ds_plz_distance.plz_second FROM `ds_plz_distance` WHERE ds_plz_distance.distance &lt; 20 AND ds_plz_distance.plz_second=ds_vereine.plz) OR ds_vereine.plz IN (SELECT ds_plz_ort.plz FROM `ds_plz_ort` ort WHERE ds_plz_ort.kreis=306)");
  }
}
?&gt;
You are looking at Drupal 6 documentation.

You don't need hook_views_handlers() anymore in D7. Instead, you add the file(s) that contains your views handler(s) to your .info file like this:

files[]=ds_regions_handler_filter_view.inc