FALSE); $options['not'] = array('default' => FALSE); return $options; } function options_form(&$form, &$form_state) { parent::options_form($form, $form_state); // allow + for or, , for and $form['break_phrase'] = array( '#type' => 'checkbox', '#title' => t('Allow multiple terms per argument.'), '#description' => t('If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3.'), '#default_value' => !empty($this->options['break_phrase']), ); $form['not'] = array( '#type' => 'checkbox', '#title' => t('Exclude the argument'), '#description' => t('If selected, the numbers entered in the argument will be excluded rather than limiting the view.'), '#default_value' => !empty($this->options['not']), ); } function title() { if (!$this->argument) { return !empty($this->definition['empty field name']) ? $this->definition['empty field name'] : t('Uncategorized'); } if (!empty($this->options['break_phrase'])) { views_break_phrase($this->argument, $this); } else { $this->value = array($this->argument); $this->operator = 'or'; } if (empty($this->value)) { return !empty($this->definition['empty field name']) ? $this->definition['empty field name'] : t('Uncategorized'); } if ($this->value === array(-1)) { return !empty($this->definition['invalid input']) ? $this->definition['invalid input'] : t('Invalid input'); } return implode($this->operator == 'or' ? ' + ' : ', ', $this->title_query()); } /** * Override for specific title lookups. */ function title_query() { return $this->value; } function query() { $this->ensure_my_table(); if (!empty($this->options['break_phrase'])) { views_break_phrase($this->argument, $this); } else { $this->value = array($this->argument); } if (count($this->value) > 1) { $operator = empty($this->options['not']) ? 'IN' : 'NOT IN'; $placeholders = implode(', ', array_fill(0, sizeof($this->value), '%d')); $this->query->add_where(0, "$this->table_alias.$this->real_field $operator ($placeholders)", $this->value); } else { $operator = empty($this->options['not']) ? '=' : '!='; $this->query->add_where(0, "$this->table_alias.$this->real_field $operator %d", $this->argument); } } }