• Main Page
  • Related Pages
  • Modules
  • Classes
  • Files
  • File List
  • File Members

handlers/views_handler_argument_date.inc

00001 <?php
00019 class views_handler_argument_date extends views_handler_argument_formula {
00020   var $option_name = 'default_argument_date';
00021   var $arg_format = 'Y-m-d';
00022 
00026   function default_argument_form(&$form, &$form_state) {
00027     parent::default_argument_form($form, $form_state);
00028     $form['default_argument_type']['#options'] += array('date' => t('Current date'));
00029     $form['default_argument_type']['#options'] += array('node_created' => t("Current node's creation time"));
00030     $form['default_argument_type']['#options'] += array('node_changed' => t("Current node's update time"));  }
00031 
00036   function get_default_argument($raw = FALSE) {
00037     if (!$raw && $this->options['default_argument_type'] == 'date') {
00038       return date($this->arg_format, REQUEST_TIME);
00039     }
00040     else if (!$raw && in_array($this->options['default_argument_type'], array('node_created', 'node_changed'))) {
00041       foreach (range(1, 3) as $i) {
00042         $node = menu_get_object('node', $i);
00043         if (!empty($node)) {
00044           continue;
00045         }
00046       }
00047 
00048       if (arg(0) == 'node' && is_numeric(arg(1))) {
00049         $node = node_load(arg(1));
00050       }
00051 
00052       if (empty($node)) {
00053         return parent::get_default_argument();
00054       }
00055       elseif ($this->options['default_argument_type'] == 'node_created') {
00056         return date($this->arg_format, $node->created);
00057       }
00058       elseif ($this->options['default_argument_type'] == 'node_changed') {
00059         return date($this->arg_format, $node->changed);
00060       }
00061     }
00062 
00063     return parent::get_default_argument($raw);
00064   }
00065 
00070   function export_plugin($indent, $prefix, $storage, $option, $definition, $parents) {
00071 
00072     // Only use a special behaviour for the special argument types, else just
00073     // use the default behaviour.
00074     if ($option == 'default_argument_type') {
00075       $type = 'argument default';
00076       $option_name = 'default_argument_options';
00077 
00078       $plugin = $this->get_plugin($type);
00079       $name = $this->options[$option];
00080       if (in_array($name, array('date', 'node_created', 'node_changed'))) {
00081 
00082         // Write which plugin to use.
00083         $output = $indent . $prefix . "['$option'] = '$name';\n";
00084         return $output;
00085       }
00086     }
00087     return parent::export_plugin($indent, $prefix, $storage, $option, $definition, $parents);
00088   }
00089 
00090 
00091   function get_sort_name() {
00092     return t('Date', array(), array('context' => 'Sort order'));
00093   }
00094 }

Generated on Sun Feb 26 2012 12:52:51 for Views by  doxygen 1.7.1