OSDN Git Service

Avoid loop etc.
authorhenoheno <henoheno>
Wed, 11 Aug 2004 14:19:48 +0000 (23:19 +0900)
committerhenoheno <henoheno>
Wed, 11 Aug 2004 14:19:48 +0000 (23:19 +0900)
plugin/calendar_viewer.inc.php

index 0a09667..a0825b8 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * PukiWiki calendar_viewer¥×¥é¥°¥¤¥ó
- * $Id: calendar_viewer.inc.php,v 1.24 2004/08/11 13:36:38 henoheno Exp $
+ * $Id: calendar_viewer.inc.php,v 1.25 2004/08/11 14:19:48 henoheno Exp $
  * calendarrecent¥×¥é¥°¥¤¥ó¤ò¸µ¤ËºîÀ®
  */
 
@@ -50,6 +50,8 @@ function plugin_calendar_viewer_convert()
        global $_msg_calendar_viewer_right, $_msg_calendar_viewer_left;
        global $_msg_calendar_viewer_restrict;
 
+       static $viewed = array();
+
        // °ú¿ô¤Î³Îǧ
        if (func_num_args() < 2)
                return '#calendar_viewer(): ' . $_err_calendar_viewer_param . '<br />';
@@ -65,10 +67,7 @@ function plugin_calendar_viewer_convert()
        $mode        = 'past';  // Æ°ºî¥â¡¼¥É
        $date_sep    = '-';     // ÆüÉդΥ»¥Ñ¥ì¡¼¥¿ calendar2¤Ê¤é '-', calendar¤Ê¤é ''
 
-       if (isset($func_args[3])) {
-               $date_sep = $func_args[3];
-       }
-
+       // $func_args[1] ¤Î¥Á¥§¥Ã¥¯
        if (preg_match('/[0-9]{4}' . $date_sep . '[0-9]{2}/', $func_args[1])) {
                // »ØÄêǯ·î¤Î°ìÍ÷ɽ¼¨
                $page_YM     = $func_args[1];
@@ -96,6 +95,18 @@ function plugin_calendar_viewer_convert()
                $mode = $func_args[2];
        }
 
+       if (isset($func_args[3])) {
+               $date_sep = $func_args[3];
+       }
+
+       // Avoid Loop etc.
+       if (isset($viewed[$pagename])) {
+               $s_page = htmlspecialchars($pagename);
+               return "#calendar_viewer(): You already view: $s_page<br />";
+       } else {
+               $viewed[$pagename] = TRUE; // Valid
+       }
+
        // °ìÍ÷ɽ¼¨¤¹¤ë¥Ú¡¼¥¸Ì¾¤È¥Õ¥¡¥¤¥ë̾¤Î¥Ñ¥¿¡¼¥ó¡¡¥Õ¥¡¥¤¥ë̾¤Ë¤Ïǯ·î¤ò´Þ¤à
        if ($pagename == '') {
                // pagename̵¤·¤Îyyyy-mm-dd¤ËÂбþ¤¹¤ë¤¿¤á¤Î½èÍý