--- views_node.inc.old	2007-05-05 01:54:53.000000000 +0100
+++ views_node.inc	2007-06-11 00:24:42.000000000 +0100
@@ -298,6 +298,11 @@
       'handler' => 'views_handler_arg_month',
       'help' => t("Months are specified by the numbers 1-12. Since this argument does not specify a year, it is recommended that it usually follow a 'Year' argument."),
     ),
+    'day' => array(
+      'name' => t('Node: Posted Day'),
+      'handler' => 'views_handler_arg_day',
+      'help' => t("Days are specified by the numbers 1-31. Since this argument does not specify a month, it is recommended that it usually follow a 'Month' argument."),
+    ),
     'week' => array(
       'name' => t('Node: Posted Week'),
       'handler' => 'views_handler_arg_week',
@@ -570,6 +575,46 @@
       return format_date(strtotime("2005{$month}15"), 'custom', 'F', 0);
   }
 }
+function views_handler_arg_day($op, &$query, $argtype, $arg = '') {
+  $timezone = _views_get_timezone();
+
+  switch($op) {
+    case 'summary':
+      $fieldinfo['field'] = "DAY(FROM_UNIXTIME(node.created+$timezone))";
+      $fieldinfo['fieldname'] = 'day';
+      $query->add_field('created');
+      return $fieldinfo;
+      break;
+    case 'sort':
+      $query->add_orderby(NULL, "DAY(FROM_UNIXTIME(node.created+$timezone))", $argtype, 'day');
+      break;
+    case 'filter':
+      $day = intval($arg);
+      $query->add_where("DAY(FROM_UNIXTIME(node.created+$timezone)) = $day");
+      break;
+    case 'link':
+      return l(format_date($query->created, 'custom', 'l j'), "$arg/$query->day");
+    case 'title':
+      $day = str_pad($query, 2, '0', STR_PAD_LEFT);
+      $view = $GLOBALS['current_view'];
+      for($i = 0; $i < count($view->argument); $i++) {
+        if($view->argument[$i]['type'] == 'month') {
+          if ($i < count($view->args) && $v=intval($view->args[$i])) {
+            $month = $v;
+          }
+        } elseif($view->argument[$i]['type'] == 'year') {
+          if ($i < count($view->args) && $v=intval($view->args[$i])) {
+            $year = $v;
+          }
+        }
+      }
+      if(isset($month) && isset($year)) {
+        $month = str_pad($month, 2, '0', STR_PAD_LEFT);
+        return format_date(strtotime("{$year}{$month}{$day}"), 'custom', 'l j', 0);
+      }
+      return format_date(strtotime("200501{$day}"), 'custom', 'j', 0);
+  }
+}
 function views_handler_arg_week($op, &$query, $argtype, $arg = '') {
   $timezone = _views_get_timezone();
 
