annotate sites/all/modules/views/handlers/views_handler_argument_date.inc @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Definition of views_handler_argument_date.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Abstract argument handler for dates.
danielebarchiesi@0 10 *
danielebarchiesi@0 11 * Adds an option to set a default argument based on the current date.
danielebarchiesi@0 12 *
danielebarchiesi@0 13 * @param $arg_format
danielebarchiesi@0 14 * The format string to use on the current time when
danielebarchiesi@0 15 * creating a default date argument.
danielebarchiesi@0 16 *
danielebarchiesi@0 17 * Definitions terms:
danielebarchiesi@0 18 * - many to one: If true, the "many to one" helper will be used.
danielebarchiesi@0 19 * - invalid input: A string to give to the user for obviously invalid input.
danielebarchiesi@0 20 * This is deprecated in favor of argument validators.
danielebarchiesi@0 21 *
danielebarchiesi@0 22 * @see views_many_to_one_helper()
danielebarchiesi@0 23 *
danielebarchiesi@0 24 * @ingroup views_argument_handlers
danielebarchiesi@0 25 */
danielebarchiesi@0 26 class views_handler_argument_date extends views_handler_argument_formula {
danielebarchiesi@0 27 var $option_name = 'default_argument_date';
danielebarchiesi@0 28 var $arg_format = 'Y-m-d';
danielebarchiesi@0 29
danielebarchiesi@0 30 /**
danielebarchiesi@0 31 * Add an option to set the default value to the current date.
danielebarchiesi@0 32 */
danielebarchiesi@0 33 function default_argument_form(&$form, &$form_state) {
danielebarchiesi@0 34 parent::default_argument_form($form, $form_state);
danielebarchiesi@0 35 $form['default_argument_type']['#options'] += array('date' => t('Current date'));
danielebarchiesi@0 36 $form['default_argument_type']['#options'] += array('node_created' => t("Current node's creation time"));
danielebarchiesi@0 37 $form['default_argument_type']['#options'] += array('node_changed' => t("Current node's update time")); }
danielebarchiesi@0 38
danielebarchiesi@0 39 /**
danielebarchiesi@0 40 * Set the empty argument value to the current date,
danielebarchiesi@0 41 * formatted appropriately for this argument.
danielebarchiesi@0 42 */
danielebarchiesi@0 43 function get_default_argument($raw = FALSE) {
danielebarchiesi@0 44 if (!$raw && $this->options['default_argument_type'] == 'date') {
danielebarchiesi@0 45 return date($this->arg_format, REQUEST_TIME);
danielebarchiesi@0 46 }
danielebarchiesi@0 47 else if (!$raw && in_array($this->options['default_argument_type'], array('node_created', 'node_changed'))) {
danielebarchiesi@0 48 foreach (range(1, 3) as $i) {
danielebarchiesi@0 49 $node = menu_get_object('node', $i);
danielebarchiesi@0 50 if (!empty($node)) {
danielebarchiesi@0 51 continue;
danielebarchiesi@0 52 }
danielebarchiesi@0 53 }
danielebarchiesi@0 54
danielebarchiesi@0 55 if (arg(0) == 'node' && is_numeric(arg(1))) {
danielebarchiesi@0 56 $node = node_load(arg(1));
danielebarchiesi@0 57 }
danielebarchiesi@0 58
danielebarchiesi@0 59 if (empty($node)) {
danielebarchiesi@0 60 return parent::get_default_argument();
danielebarchiesi@0 61 }
danielebarchiesi@0 62 elseif ($this->options['default_argument_type'] == 'node_created') {
danielebarchiesi@0 63 return date($this->arg_format, $node->created);
danielebarchiesi@0 64 }
danielebarchiesi@0 65 elseif ($this->options['default_argument_type'] == 'node_changed') {
danielebarchiesi@0 66 return date($this->arg_format, $node->changed);
danielebarchiesi@0 67 }
danielebarchiesi@0 68 }
danielebarchiesi@0 69
danielebarchiesi@0 70 return parent::get_default_argument($raw);
danielebarchiesi@0 71 }
danielebarchiesi@0 72
danielebarchiesi@0 73 /**
danielebarchiesi@0 74 * The date handler provides some default argument types, which aren't argument default plugins,
danielebarchiesi@0 75 * so addapt the export mechanism.
danielebarchiesi@0 76 */
danielebarchiesi@0 77 function export_plugin($indent, $prefix, $storage, $option, $definition, $parents) {
danielebarchiesi@0 78
danielebarchiesi@0 79 // Only use a special behaviour for the special argument types, else just
danielebarchiesi@0 80 // use the default behaviour.
danielebarchiesi@0 81 if ($option == 'default_argument_type') {
danielebarchiesi@0 82 $type = 'argument default';
danielebarchiesi@0 83 $option_name = 'default_argument_options';
danielebarchiesi@0 84
danielebarchiesi@0 85 $plugin = $this->get_plugin($type);
danielebarchiesi@0 86 $name = $this->options[$option];
danielebarchiesi@0 87 if (in_array($name, array('date', 'node_created', 'node_changed'))) {
danielebarchiesi@0 88
danielebarchiesi@0 89 // Write which plugin to use.
danielebarchiesi@0 90 $output = $indent . $prefix . "['$option'] = '$name';\n";
danielebarchiesi@0 91 return $output;
danielebarchiesi@0 92 }
danielebarchiesi@0 93 }
danielebarchiesi@0 94 return parent::export_plugin($indent, $prefix, $storage, $option, $definition, $parents);
danielebarchiesi@0 95 }
danielebarchiesi@0 96
danielebarchiesi@0 97
danielebarchiesi@0 98 function get_sort_name() {
danielebarchiesi@0 99 return t('Date', array(), array('context' => 'Sort order'));
danielebarchiesi@0 100 }
danielebarchiesi@0 101 }