OSDN Git Service

Cleanup and correct secret 'x*y' view
authorhenoheno <henoheno>
Wed, 11 Aug 2004 13:36:38 +0000 (22:36 +0900)
committerhenoheno <henoheno>
Wed, 11 Aug 2004 13:36:38 +0000 (22:36 +0900)
plugin/calendar_viewer.inc.php

index fe8bcb4..0a09667 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * PukiWiki calendar_viewer¥×¥é¥°¥¤¥ó
- * $Id: calendar_viewer.inc.php,v 1.23 2004/08/11 12:12:57 henoheno Exp $
+ * $Id: calendar_viewer.inc.php,v 1.24 2004/08/11 13:36:38 henoheno Exp $
  * calendarrecent¥×¥é¥°¥¤¥ó¤ò¸µ¤ËºîÀ®
  */
 
   calendar¥×¥é¥°¥¤¥ó¤äcalendar2¥×¥é¥°¥¤¥ó¤ÇºîÀ®¤·¤¿¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¤Ç¤¹¡£
 
  * »È¤¤Êý
-    #calendar_viewer(pagename,(yyyy-mm|n|this),[mode],[separater])
+    #calendar_viewer(pagename,(this|yyyy-mm|n|x*y),[mode],[separater])
 
  ** pagename
   calendar or calendar2¥×¥é¥°¥¤¥ó¤òµ­½Ò¤·¤Æ¤ë¥Ú¡¼¥¸Ì¾
 
  ** (yyyy-mm|n|this)
+  - this
+  -- º£·î¤Î¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨
   - yyyy-mm
   -- yyyy-mm¤Ç»ØÄꤷ¤¿Ç¯·î¤Î¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨
   - n
-  -- n·ï¤Î°ìÍ÷ɽ¼¨
-  - this
-  -- º£·î¤Î¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨
+  -- ÀèƬ¤«¤én·ï¤ò°ìÍ÷ɽ¼¨
+  - x*n
+  -- ÀèƬ¤è¤ê¿ô¤¨¤Æ x ¥Ú¡¼¥¸ÌÜ(ÀèƬ¤Ï0)¤«¤é¡¢y·ï¤Å¤Ä°ìÍ÷ɽ¼¨
 
  ** [mode]
   ¾Êά²Äǽ¤Ç¤¹¡£¾Êά»þ¤Î¥Ç¥Õ¥©¥ë¥È¤Ïpast
@@ -30,7 +32,7 @@
   - future
   -- º£Æü°Ê¹ß¤Î¥Ú¡¼¥¸¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£¥¤¥Ù¥ó¥ÈͽÄê¤ä¥¹¥±¥¸¥å¡¼¥ë¸þ¤­
   - view
-  -- ²áµî¤«¤é̤Íè¤Ø¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£É½¼¨Í޻ߤ¹¤ë¥Ú¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+  -- ²áµî¤«¤é̤Íè¤Ø¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£É½¼¨Í޻ߤ¹¤ë¥Ú¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó
 
  ** [separater]
   - Ç¯·îÆü¤ò¶èÀڤ륻¥Ñ¥ì¡¼¥¿¤ò»ØÄê¡£
@@ -55,11 +57,13 @@ function plugin_calendar_viewer_convert()
        $func_args = func_get_args();
 
        // ¥Ç¥Õ¥©¥ë¥ÈÃÍ
-       $pagename = $func_args[0];      // ´ð½à¤È¤Ê¤ë¥Ú¡¼¥¸Ì¾
-       $limit_page = 7;        // É½¼¨¤¹¤ë·ï¿ôÀ©¸Â
-       $date_YM    = '';       // °ìÍ÷ɽ¼¨¤¹¤ëǯ·î
-       $mode       = 'past';   // Æ°ºî¥â¡¼¥É
-       $date_sep   = '-';      // ÆüÉդΥ»¥Ñ¥ì¡¼¥¿ calendar2¤Ê¤é '-', calendar¤Ê¤é ''
+       $pagename    = $func_args[0];   // ´ð½à¤È¤Ê¤ë¥Ú¡¼¥¸Ì¾
+       $page_YM     = '';      // °ìÍ÷ɽ¼¨¤¹¤ëǯ·î
+       $limit_base  = 0;       // ÀèƬ¤«¤é¿ô¤¨¤Æ²¿¥Ú¡¼¥¸Ìܤ«¤éɽ¼¨¤¹¤ë¤« (ÀèƬ)
+       $limit_pitch = 0;       // ²¿·ï¤Å¤Äɽ¼¨¤¹¤ë¤«
+       $limit_page  = 0;       // ¥µ¡¼¥Á¤¹¤ë¥Ú¡¼¥¸¿ô
+       $mode        = 'past';  // Æ°ºî¥â¡¼¥É
+       $date_sep    = '-';     // ÆüÉդΥ»¥Ñ¥ì¡¼¥¿ calendar2¤Ê¤é '-', calendar¤Ê¤é ''
 
        if (isset($func_args[3])) {
                $date_sep = $func_args[3];
@@ -68,24 +72,20 @@ function plugin_calendar_viewer_convert()
        if (preg_match('/[0-9]{4}' . $date_sep . '[0-9]{2}/', $func_args[1])) {
                // »ØÄêǯ·î¤Î°ìÍ÷ɽ¼¨
                $page_YM     = $func_args[1];
-               $limit_page  = 31;      // ¼êÈ´¤­¡£31Æüʬ¤ò¥ê¥ß¥Ã¥È¤È¤¹¤ë¡£
-               $limit_base  = 0;
+               $limit_page  = 31;
        } else if (preg_match('/this/si', $func_args[1])) {
                // º£·î¤Î°ìÍ÷ɽ¼¨
                $page_YM     = get_date('Y' . $date_sep . 'm');
                $limit_page  = 31;
-               $limit_base  = 0;
        } else if (preg_match('/^[0-9]+$/', $func_args[1])) {
                // nÆüʬɽ¼¨
-               $page_YM     = '';
-               $limit_page  = $func_args[1];
-               $limit_base  = 0;
                $limit_pitch = $func_args[1];
-       } else if (preg_match('/([0-9]+)\*([0-9]+)/', $func_args[1], $reg_array)) {
-               $page_YM     = '';
-               $limit_page  = $reg_array[1] + $reg_array[2];
-               $limit_base  = $reg_array[1];
-               $limit_pitch = $reg_array[2];
+               $limit_page  = $func_args[1];
+       } else if (preg_match('/(-?[0-9]+)\*([0-9]+)/', $func_args[1], $matches)) {
+               // ÀèƬ¤è¤ê¿ô¤¨¤Æ x ¥Ú¡¼¥¸Ìܤ«¤é¡¢y·ï¤Å¤Äɽ¼¨
+               $limit_base  = $matches[1];
+               $limit_pitch = $matches[2];
+               $limit_page  = $matches[1] + $matches[2]; // ÆɤßÈô¤Ð¤¹ + É½¼¨¤¹¤ë
        } else {
                return '#calendar_viewer(): ' . $_err_calendar_viewer_param2 . '<br />';
        }
@@ -96,7 +96,6 @@ function plugin_calendar_viewer_convert()
                $mode = $func_args[2];
        }
 
-
        // °ìÍ÷ɽ¼¨¤¹¤ë¥Ú¡¼¥¸Ì¾¤È¥Õ¥¡¥¤¥ë̾¤Î¥Ñ¥¿¡¼¥ó¡¡¥Õ¥¡¥¤¥ë̾¤Ë¤Ïǯ·î¤ò´Þ¤à
        if ($pagename == '') {
                // pagename̵¤·¤Îyyyy-mm-dd¤ËÂбþ¤¹¤ë¤¿¤á¤Î½èÍý
@@ -115,7 +114,6 @@ function plugin_calendar_viewer_convert()
        // ¥Ú¡¼¥¸¥ê¥¹¥È¤Î¼èÆÀ
        //echo $pagepattern;
        //echo $filepattern;
-
        $pagelist = array();
        if ($dir = @opendir(DATA_DIR)) {
                $_date = get_date('Y' . $date_sep . 'm' . $date_sep . 'd');
@@ -147,23 +145,23 @@ function plugin_calendar_viewer_convert()
        closedir($dir);
        //echo count($pagelist);
 
-       // ¤³¤³¤«¤é¥¤¥ó¥¯¥ë¡¼¥É³«»Ï
-       $tmppage = $vars['page'];
-       $return_body = '';
-
-       // ¤Þ¤º¥½¡¼¥È
+       // ¥½¡¼¥È
        if ($mode == 'past') {
                rsort($pagelist);       // past mode¤Ç¤Ï¿·¢ªµì
        } else {
                sort($pagelist);        // view mode ¤È future mode ¤Ç¤Ï¡¢µì¢ª¿·
        }
 
+       // ¤³¤³¤«¤é¥¤¥ó¥¯¥ë¡¼¥É³«»Ï
+       $tmppage = $vars['page'];
+       $return_body = '';
+
        // $limit_page¤Î·ï¿ô¤Þ¤Ç¥¤¥ó¥¯¥ë¡¼¥É
-       $tmp = $limit_base;
+       $tmp = max($limit_base, 0); // Skip minus
        while ($tmp < $limit_page) {
-               if (empty($pagelist[$tmp])) break;
-               $page = $pagelist[$tmp];
+               if (! isset($pagelist[$tmp])) break;
 
+               $page = $pagelist[$tmp];
                $get['page'] = $post['page'] = $vars['page'] = $page;
 
                // ¸½¾õ¤Ç±ÜÍ÷µö²Ä¤¬¤¢¤ë¾ì¹ç¤À¤±É½¼¨¤¹¤ë
@@ -222,22 +220,19 @@ function plugin_calendar_viewer_convert()
                }
        } else {
                // n·ïɽ¼¨»þ
-               if ($limit_base >= count($pagelist)) {
-                       $right_YM = ''; // É½¼¨¤·¤Ê¤¤
+               if ($limit_base < 0) {
+                       $left_YM = ''; // É½¼¨¤·¤Ê¤¤ (¤½¤ì¤è¤êÁ°¤Î¹àÌܤϤʤ¤)
                } else {
-                       $right_base = $limit_base + $limit_pitch;
-                       $right_YM   = $right_base . '*' . $limit_pitch;
-                       $right_text = sprintf($_msg_calendar_viewer_right, $limit_pitch);
-               }
-               $left_base  = $limit_base - $limit_pitch;
-               if ($left_base < 0) {
-                       $left_YM = ''; // É½¼¨¤·¤Ê¤¤
-               } else {
-                       $left_YM   = $left_base . '*' . $limit_pitch;
+                       $left_YM   = $limit_base - $limit_pitch . '*' . $limit_pitch;
                        $left_text = sprintf($_msg_calendar_viewer_left, $limit_pitch);
 
                }
-
+               if ($limit_base + $limit_pitch >= count($pagelist)) {
+                       $right_YM = ''; // É½¼¨¤·¤Ê¤¤ (¤½¤ì¤è¤ê¸å¤Î¹àÌܤϤʤ¤)
+               } else {
+                       $right_YM   = $limit_base + $limit_pitch . '*' . $limit_pitch;
+                       $right_text = sprintf($_msg_calendar_viewer_right, $limit_pitch);
+               }
        }
 
        // ¥Ê¥Ó¥²¡¼¥ÈÍѤΥê¥ó¥¯¤òËöÈø¤ËÄɲÃ