/[drupal]/contributions/modules/views/handlers/views_handler_argument_numeric.inc
ViewVC logotype

Contents of /contributions/modules/views/handlers/views_handler_argument_numeric.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download) (as text)
Wed Sep 3 19:21:28 2008 UTC (14 months, 3 weeks ago) by merlinofchaos
Branch: MAIN
CVS Tags: DRUPAL-6--2-7, DRUPAL-6--2-6, DRUPAL-6--2-5, DRUPAL-6--2-4, DRUPAL-6--2-3, DRUPAL-6--2-2, DRUPAL-6--2-1, DRUPAL-6--2-0, DRUPAL-6--3-0-ALPHA1, DRUPAL-6--2-0-RC5, DRUPAL-6--2-0-RC4, DRUPAL-6--2-0-RC3, DRUPAL-6--2-0-RC2, HEAD
Branch point for: DRUPAL-6--2, DRUPAL-6--3, DRUPAL-7--3
File MIME type: text/x-php
Major re-organization of handlers. PLEASE NOTE: This drastically affected the Views module API and until modules are updated to match, they will stop working. Efforts have been made to ensure that this won't cause your site to crash, but that's partly up to the individual module as well.
1 <?php
2 // $Id: comment.views_default.inc,v 1.6 2008/06/10 21:30:43 merlinofchaos Exp $
3 /**
4 * @file
5 * Contains the numeric argument handler.
6 */
7
8 /**
9 * Basic argument handler for arguments that are numeric. Incorporates
10 * break_phrase.
11 *
12 * @ingroup views_argument_handlers
13 */
14 class views_handler_argument_numeric extends views_handler_argument {
15 function option_definition() {
16 $options = parent::option_definition();
17
18 $options['break_phrase'] = array('default' => FALSE);
19 $options['not'] = array('default' => FALSE);
20
21 return $options;
22 }
23
24 function options_form(&$form, &$form_state) {
25 parent::options_form($form, $form_state);
26
27 // allow + for or, , for and
28 $form['break_phrase'] = array(
29 '#type' => 'checkbox',
30 '#title' => t('Allow multiple terms per argument.'),
31 '#description' => t('If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3.'),
32 '#default_value' => !empty($this->options['break_phrase']),
33 );
34
35 $form['not'] = array(
36 '#type' => 'checkbox',
37 '#title' => t('Exclude the argument'),
38 '#description' => t('If selected, the numbers entered in the argument will be excluded rather than limiting the view.'),
39 '#default_value' => !empty($this->options['not']),
40 );
41 }
42
43 function title() {
44 if (!$this->argument) {
45 return !empty($this->definition['empty field name']) ? $this->definition['empty field name'] : t('Uncategorized');
46 }
47
48 if (!empty($this->options['break_phrase'])) {
49 views_break_phrase($this->argument, $this);
50 }
51 else {
52 $this->value = array($this->argument);
53 $this->operator = 'or';
54 }
55
56 if (empty($this->value)) {
57 return !empty($this->definition['empty field name']) ? $this->definition['empty field name'] : t('Uncategorized');
58 }
59
60 if ($this->value === array(-1)) {
61 return !empty($this->definition['invalid input']) ? $this->definition['invalid input'] : t('Invalid input');
62 }
63
64 return implode($this->operator == 'or' ? ' + ' : ', ', $this->title_query());
65 }
66
67 /**
68 * Override for specific title lookups.
69 */
70 function title_query() {
71 return $this->value;
72 }
73
74 function query() {
75 $this->ensure_my_table();
76
77 if (!empty($this->options['break_phrase'])) {
78 views_break_phrase($this->argument, $this);
79 }
80 else {
81 $this->value = array($this->argument);
82 }
83
84 if (count($this->value) > 1) {
85 $operator = empty($this->options['not']) ? 'IN' : 'NOT IN';
86 $placeholders = implode(', ', array_fill(0, sizeof($this->value), '%d'));
87 $this->query->add_where(0, "$this->table_alias.$this->real_field $operator ($placeholders)", $this->value);
88 }
89 else {
90 $operator = empty($this->options['not']) ? '=' : '!=';
91 $this->query->add_where(0, "$this->table_alias.$this->real_field $operator %d", $this->argument);
92 }
93 }
94 }

  ViewVC Help
Powered by ViewVC 1.1.2