You are here

class views_menu_reference_handler_filter_path in Views Menu Reference 7

Filter to compare a views_menu_reference field against a given path.

Hierarchy

Expanded class hierarchy of views_menu_reference_handler_filter_path

1 string reference to 'views_menu_reference_handler_filter_path'
views_menu_reference_views_data_alter in ./views_menu_reference.views.inc
Implements hook_views_data_alter().

File

includes/views/views_menu_reference_handler_filter_path.inc, line 10
Views filter handler class implementation.

View source
class views_menu_reference_handler_filter_path extends views_handler_filter_equality {

  /**
   * Provide simple equality operator.
   */
  function operator_options() {
    return array(
      // Only matches makes sense here, because it's more logic behind.
      '=' => t('matches'),
    );
  }

  /**
   * Provide a text field to enter the path to filter on.
   */
  function value_form(&$form, &$form_state) {
    $form['value'] = array(
      '#type' => 'textfield',
      '#title' => empty($form_state['exposed']) ? t('Path') : '',
      '#size' => 20,
      '#default_value' => $this->value,
    );
  }

  /**
   * Display the filter on the administrative summary.
   */
  function admin_summary() {
    $operators = $this
      ->operator_options();
    return check_plain($operators[$this->operator] . ' Path: ' . $this->value);
  }

  /**
   * This filter cannot be exposed to users!
   */
  function can_expose() {
    return FALSE;
  }

  /**
   * Add the filtering to the query.
   * This is quite complex, because we have to find all matching fields by
   * the given path, which seems to be the best and fastest solution.
   */
  public function query() {
    $this
      ->ensure_my_table();

    // The given path
    $value = $this->value;

    // !!!!!!! IMPORTANT !!!!!! FROM HERE ON THIS IS COMPLETELY IDENTICALLY
    // TO THE ARGUMENT IMPLEMENTATION IN "views_menu_reference_handler_argument_current_path.inc".
    // IF YOU CHANGE SOMETHING HERE, ALSO CHANGE IT THERE! ;)
    // Get the parents hierarchy of the given path, which is a simple array,
    // keyed by the depth and a + Separator for elements including children.
    // These keys are the depth value the field has to match together with the MLID:
    // The values are the MLIDs the field has to match together with the depth.
    $path_parents_hierarchy = views_menu_reference_get_link_path_parents_hierarchy($value);
    $field_mlid = $this
      ->get_field();
    $field_depth = str_replace('mlid', 'depth', $this
      ->get_field());
    if (!empty($path_parents_hierarchy)) {

      // Each level is compared by an OR, because if just one level matches,
      // the related entity is linked to the menu item.
      $level_conditions = db_or();

      // Add the Only-Level-Condition (No below menu items included)
      foreach ($path_parents_hierarchy as $level => $mlids) {

        // DEPTH AND MLID have to match in one field. If both match, the related
        // entity is linked to the menu item.
        $condition = db_and()
          ->condition($field_mlid, $mlids, 'IN')
          ->condition($field_depth, $level);
        $level_conditions
          ->condition($condition);
      }

      // Add the conditions to the query.
      $this->query
        ->add_where($this->options['group'], $level_conditions);
    }
    else {

      // There is no hierarchy for the path that might match, so there can
      // not be a matching related node. We represnt this knowledge by setting
      // the condition totally false (1=0).
      $this->query
        ->add_where_expression($this->options['group'], '1=0');
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
views_handler::$handler_type public property The type of the handler, for example filter/footer/field.
views_handler::$query public property Where the $query object will reside:. 1
views_handler::$real_field public property The actual field in the database table, maybe different on other kind of query plugins/special handlers.
views_handler::$relationship public property The relationship used for this field.
views_handler::$table_alias public property The alias of the table of this handler which is used in the query.
views_handler::$view public property The top object of a view. Overrides views_object::$view
views_handler::access public function Check whether current user has access to this handler. 10
views_handler::broken public function Determine if the handler is considered 'broken'. 6
views_handler::case_transform public function Transform a string by a certain method.
views_handler::ensure_my_table public function Ensure the main table for this handler is in the query. This is used a lot. 8
views_handler::exposed_submit public function Submit the exposed handler form.
views_handler::exposed_validate public function Validate the exposed handler form. 4
views_handler::expose_submit public function Perform any necessary changes to the form exposes prior to storage. There is no need for this function to actually store the data.
views_handler::extra_options public function Provide defaults for the handler.
views_handler::extra_options_form public function Provide a form for setting options. 1
views_handler::extra_options_submit public function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_handler::extra_options_validate public function Validate the options form.
views_handler::get_field public function Shortcut to get a handler's raw field value.
views_handler::get_join public function Get the join object that should be used for this handler.
views_handler::groupby_form public function Provide a form for aggregation settings. 1
views_handler::groupby_form_submit public function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. 1
views_handler::has_extra_options public function If a handler has 'extra options' it will get a little settings widget and another form called extra_options. 1
views_handler::is_exposed public function Determine if this item is 'exposed', meaning it provides form elements to let users modify the view.
views_handler::needs_style_plugin public function Determine if the argument needs a style plugin. 1
views_handler::placeholder public function Provides a unique placeholders for handlers.
views_handler::post_execute public function Run after the view is executed, before the result is cached. 1
views_handler::pre_query public function Run before the view is built. 1
views_handler::sanitize_value public function Sanitize the value for output.
views_handler::set_relationship public function Called just prior to query(), this lets a handler set up any relationship it needs.
views_handler::show_expose_form public function Shortcut to display the exposed options form.
views_handler::ui_name public function Return a string representing this handler's name in the UI. 9
views_handler::use_group_by public function Provides the handler some groupby. 2
views_handler::validate public function Validates the handler against the complete View. 1
views_handler_filter::$always_required public property Disable the possibility to allow a exposed input to be optional.
views_handler_filter::$group_info public property Contains the information of the selected item in a gruped filter.
views_handler_filter::$no_operator public property Disable the possibility to use operators. 2
views_handler_filter::$operator public property Contains the operator which is used on the query.
views_handler_filter::$value public property Contains the actual value of the field.
views_handler_filter::accept_exposed_input public function Check to see if input from the exposed filters should change the behavior. Overrides views_handler::accept_exposed_input 2
views_handler_filter::build_group_form public function Build the form to let users create the group of exposed filters.
views_handler_filter::build_group_options public function Provide default options for exposed filters.
views_handler_filter::build_group_submit public function Save new group items, re-enumerates and remove groups marked to delete.
views_handler_filter::build_group_validate public function Validate the build group options form. 1
views_handler_filter::can_build_group public function Determine if a filter can be converted into a group.
views_handler_filter::can_group public function Can this filter be used in OR groups? 1
views_handler_filter::convert_exposed_input public function Transform the input from a grouped filter into a standard filter.
views_handler_filter::exposed_form public function Render our chunk of the exposed filter form when selecting. Overrides views_handler::exposed_form
views_handler_filter::exposed_info public function Tell the renderer about our exposed form. Overrides views_handler::exposed_info
views_handler_filter::exposed_translate public function Make some translations to a form item to make it more suitable to exposing.
views_handler_filter::expose_form public function Options form subform for exposed filter options. Overrides views_handler::expose_form 2
views_handler_filter::expose_options public function Provide default options for exposed filters. Overrides views_handler::expose_options 2
views_handler_filter::expose_validate public function Validate the options form. Overrides views_handler::expose_validate
views_handler_filter::group_form public function Build a form with a group of operator | values to apply as a single filter.
views_handler_filter::group_multiple_exposed_input public function Options available for a grouped filter which uses checkboxes.
views_handler_filter::init public function Provide some extra help to get the operator/value easier to use. Overrides views_handler::init 2
views_handler_filter::is_a_group public function Returns TRUE if the exposed filter works like a grouped filter. Overrides views_handler::is_a_group
views_handler_filter::multiple_exposed_input public function Indicate whether users can select multiple group items. Overrides views_handler::multiple_exposed_input
views_handler_filter::operator_form public function Options form subform for setting the operator. 6
views_handler_filter::operator_submit public function Perform any necessary changes to the form values prior to storage.
views_handler_filter::operator_validate public function Validate the operator form.
views_handler_filter::options_form public function Provide the basic form which calls through to subforms. Overrides views_handler::options_form 4
views_handler_filter::options_submit public function Simple submit handler. Overrides views_handler::options_submit
views_handler_filter::options_validate public function Simple validate handler. Overrides views_handler::options_validate 1
views_handler_filter::option_definition public function Information about options for all kinds of purposes will be held here. Overrides views_handler::option_definition 7
views_handler_filter::prepare_filter_select_options public function Sanitizes the HTML select element's options.
views_handler_filter::show_build_group_button public function Shortcut to display the build_group/hide button.
views_handler_filter::show_build_group_form public function Shortcut to display the exposed options form.
views_handler_filter::show_expose_button public function Shortcut to display the expose/hide button. Overrides views_handler::show_expose_button
views_handler_filter::show_operator_form public function Shortcut to display the operator form.
views_handler_filter::show_value_form public function Shortcut to display the value form.
views_handler_filter::store_exposed_input public function Store the exposed input for processing later. Overrides views_handler::store_exposed_input
views_handler_filter::store_group_input public function If set to remember exposed input in the session, store it there.
views_handler_filter::value_submit public function Perform any necessary changes to the form values prior to storage. 1
views_handler_filter::value_validate public function Validate the options form. 3
views_handler_filter_equality::$always_multiple public property Exposed filter options. Overrides views_handler_filter::$always_multiple
views_menu_reference_handler_filter_path::admin_summary function Display the filter on the administrative summary. Overrides views_handler_filter::admin_summary
views_menu_reference_handler_filter_path::can_expose function This filter cannot be exposed to users! Overrides views_handler_filter::can_expose
views_menu_reference_handler_filter_path::operator_options function Provide simple equality operator. Overrides views_handler_filter_equality::operator_options
views_menu_reference_handler_filter_path::query public function Add the filtering to the query. This is quite complex, because we have to find all matching fields by the given path, which seems to be the best and fastest solution. Overrides views_handler_filter::query
views_menu_reference_handler_filter_path::value_form function Provide a text field to enter the path to filter on. Overrides views_handler_filter_equality::value_form
views_object::$definition public property Handler's definition.
views_object::$options public property Except for displays, options for the object will be held here. 1
views_object::altered_option_definition function Collect this handler's option definition and alter them, ready for use.
views_object::construct public function Views handlers use a special construct function. 4
views_object::destroy public function Destructor. 2
views_object::export_option public function 1
views_object::export_options public function
views_object::export_option_always public function Always exports the option, regardless of the default value.
views_object::options Deprecated public function Set default options on this object. 1
views_object::set_default_options public function Set default options.
views_object::set_definition public function Let the handler know what its full definition is.
views_object::unpack_options public function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away.
views_object::unpack_translatable public function Unpack a single option definition.
views_object::unpack_translatables public function Unpacks each handler to store translatable texts.
views_object::_set_option_defaults public function