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
00073
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
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 }