OSDN Git Service

BugTrack/2348 Remove limitation of Search box count
[pukiwiki/pukiwiki.git] / plugin / calendar.inc.php
index c263151..26d3d8a 100644 (file)
-<?\r
-function plugin_calendar_convert()\r
-{\r
-       global $script,$weeklabels,$vars,$command,$WikiName,$BracketName;\r
-       \r
-       $args = func_get_args();\r
-       \r
-       if(func_num_args() == 0)\r
-       {\r
-               $date_str = date("Ym");\r
-               $pre = $vars[page];\r
-               $prefix = preg_replace("/^\[\[(.*)\]\]$/","$1",$vars[page])."/";\r
-       }\r
-       else if(func_num_args() == 1)\r
-       {\r
-               if(is_numeric($args[0]) && strlen($args[0]) == 6)\r
-               {\r
-                       $date_str = $args[0];\r
-                       $pre = $vars[page];\r
-                       $prefix = preg_replace("/^\[\[(.*)\]\]$/","$1",$vars[page])."/";\r
-               }\r
-               else\r
-               {\r
-                       $date_str = date("Ym");\r
-                       $pre = $args[0];\r
-                       $prefix = $args[0];\r
-               }\r
-       }\r
-       else if(func_num_args() == 2)\r
-       {\r
-               if(is_numeric($args[0]) && strlen($args[0]) == 6)\r
-               {\r
-                       $date_str = $args[0];\r
-                       $pre = $args[1];\r
-                       $prefix = $args[1];\r
-               }\r
-               else if(is_numeric($args[1]) && strlen($args[1]) == 6)\r
-               {\r
-                       $date_str = $args[1];\r
-                       $pre = $args[0];\r
-                       $prefix = $args[0];\r
-               }\r
-               else\r
-               {\r
-                       $date_str = date("Ym");\r
-                       $pre = $vars[page];\r
-                       $prefix = preg_replace("/^\[\[(.*)\]\]$/","$1",$vars[page])."/";\r
-               }\r
-       }\r
-       else\r
-       {\r
-               return FALSE;\r
-       }\r
-\r
-       if(!$command) $cmd = "read";\r
-       else          $cmd = $command;\r
-       \r
-       $prefix = strip_tags($prefix);\r
-       \r
-       $yr = substr($date_str,0,4);\r
-       $mon = substr($date_str,4,2);\r
-       if($yr != date("Y") || $mon != date("m"))\r
-       {\r
-               $now_day = 1;\r
-               $other_month = 1;\r
-       }\r
-       else\r
-       {\r
-               $now_day = date("d");\r
-               $other_month = 0;\r
-       }\r
-       $today = getdate(mktime(0,0,0,$mon,$now_day,$yr));\r
-       \r
-       $m_num = $today[mon];\r
-       $d_num = $today[mday];\r
-       $year = $today[year];\r
-       $f_today = getdate(mktime(0,0,0,$m_num,1,$year));\r
-       $wday = $f_today[wday];\r
-       $day = 1;\r
-       $fweek = true;\r
-\r
-       $m_name = "$year.$m_num ($cmd)";\r
-\r
-       if(!preg_match("/^(($WikiName)|($BracketName))$/",$pre))\r
-               $prefix_url = "[[".$pre."]]";\r
-       else\r
-               $prefix_url = $pre;\r
-\r
-       $prefix_url = rawurlencode($prefix_url);\r
-       $pre = strip_bracket($pre);\r
-\r
-       $ret .= '\r
-<table class="style_calendar" cellspacing="1" width="150" border="0">\r
-  <tbody>\r
-  <tr>\r
-    <td align="middle" class="style_td_caltop" colspan="7" height="15">\r
-      <div align="center"><small><b>'.$m_name.'</b><br>[<a href="'.$script.'?'.$prefix_url.'">'.$pre.'</a>]</small></div>\r
-    </td>\r
-  </tr>\r
-  <tr>\r
-';\r
-\r
-       foreach($weeklabels as $label)\r
-       {\r
-               $ret .= '\r
-    <td align="middle" class="style_td_week" height="15">\r
-      <div align="center"><small><b>'.$label.'</b></small></div>\r
-    </td>';\r
-       }\r
-\r
-       $ret .= "</tr>\n<tr>\n";\r
-\r
-       while(checkdate($m_num,$day,$year))\r
-       {\r
-               $dt = sprintf("%4d%02d%02d", $year, $m_num, $day);\r
-               $name = "$prefix$dt";\r
-               $page = "[[$prefix$dt]]";\r
-               $page_url = rawurlencode("[[$prefix$dt]]");\r
-               \r
-               if($cmd == "edit") $refer = "&refer=$page_url";\r
-               else               $refer = "";\r
-               \r
-               if($cmd == "read" && !is_page($page))\r
-                       $link = "<b>$day</b>";\r
-               else\r
-                       $link = "<a href=\"$script?cmd=$cmd&page=$page_url$refer\" title=\"$name\"><b>$day</b></a>";\r
-\r
-               if($fweek)\r
-               {\r
-                       for($i=0;$i<$wday;$i++)\r
-                       { // Blank \r
-                               $ret .= "    <td width=\"14%\" align=\"center\" class=\"style_td_blank\" height=\"19\">\81@</td>\n"; \r
-                       } \r
-               $fweek=false;\r
-               }\r
-\r
-               if($wday == 0) $ret .= "  </tr><tr>\n";\r
-               if(!$other_month && ($day == $today[mday]) && ($m_num == $today[mon]) && ($year == $today[year]))\r
-               {\r
-                       //  Today \r
-                       $ret .= "    <td width=\"14%\" align=\"center\" class=\"style_td_today\" height=\"19\"><small>$link</small></td>\n"; \r
-               }\r
-               else if($wday == 0)\r
-               {\r
-                       //  Sunday \r
-                       $ret .= "    <td width=\"14%\" align=\"center\" class=\"style_td_sun\" height=\"19\"><small>$link</small></td>\n";\r
-               }\r
-               else if($wday == 6)\r
-               {\r
-                       //  Saturday \r
-                       $ret .= "    <td width=\"14%\" align=\"center\" class=\"style_td_sat\" height=\"19\"><small>$link</small></td>\n";\r
-               }\r
-               else\r
-               {\r
-                       // Weekday \r
-                       $ret .= "    <td width=\"14%\" align=\"center\" class=\"style_td\" height=\"19\"><small>$link</small></td>\n";\r
-               }\r
-               $day++;\r
-               $wday++;\r
-               $wday = $wday % 7;\r
-       }\r
-       if($wday > 0)\r
-       {\r
-               while($wday < 7)\r
-               { // Blank \r
-                       $ret .= "    <td width=\"14%\" align=\"center\" class=\"style_td_blank\" height=\"19\">\81@</td>\n";\r
-               $wday++;\r
-               } \r
-       }\r
-\r
-       $ret .= "  </tr>\n</table>\n";\r
-       return $ret;\r
-}\r
-?>
\ No newline at end of file
+<?php
+// PukiWiki - Yet another WikiWikiWeb clone
+// calendar.inc.php
+// Copyright
+//   2002-2017 PukiWiki Development Team
+//   2001-2002 Originally written by yu-ji
+// License: GPL v2 or (at your option) any later version
+//
+// Calendar plugin
+
+function plugin_calendar_convert()
+{
+       global $weeklabels, $vars, $command;
+
+       $script   = get_base_uri();
+       $args     = func_get_args();
+       $date_str = get_date('Ym');
+       $page     = '';
+
+       if (func_num_args() == 1) {
+               if (is_numeric($args[0]) && strlen($args[0]) == 6) {
+                       $date_str = $args[0];
+               } else {
+                       $page     = $args[0];
+               }
+       } else if (func_num_args() == 2) {
+               if (is_numeric($args[0]) && strlen($args[0]) == 6) {
+                       $date_str = $args[0];
+                       $page     = $args[1];
+               } else if (is_numeric($args[1]) && strlen($args[1]) == 6) {
+                       $date_str = $args[1];
+                       $page     = $args[0];
+               }
+       }
+
+       if ($page == '') {
+               $page = $vars['page'];
+       } else if (! is_pagename($page)) {
+               return FALSE;
+       }
+       $pre    = $page;
+       $prefix = $page . '/';
+
+
+       if (! $command) {
+               $cmd = 'read';
+       } else {
+               $cmd = $command;
+       }
+
+       $prefix = strip_tags($prefix);
+
+       $yr  = substr($date_str, 0, 4);
+       $mon = substr($date_str, 4, 2);
+       if ($yr != get_date('Y') || $mon != get_date('m')) {
+               $now_day = 1;
+               $other_month = 1;
+       } else {
+               $now_day     = get_date('d');
+               $other_month = 0;
+       }
+       $today = getdate(mktime(0, 0, 0, $mon, $now_day, $yr) - LOCALZONE + ZONETIME);
+
+       $m_num = $today['mon'];
+       $d_num = $today['mday'];
+       $year  = $today['year'];
+       $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $year) - LOCALZONE + ZONETIME);
+       $wday  = $f_today['wday'];
+       $day   = 1;
+
+       $m_name = $year . '.' . $m_num . ' (' . $cmd . ')';
+
+       $pre = strip_bracket($pre);
+       $page_uri = get_page_uri($pre);
+
+       $ret = <<<EOD
+<table class="style_calendar" cellspacing="1" width="150" border="0">
+ <tr>
+  <td class="style_td_caltop" colspan="7">
+   <strong>$m_name</strong><br />
+   [<a href="$page_uri">$pre</a>]
+  </td>
+ </tr>
+ <tr>
+EOD;
+
+       foreach($weeklabels as $label)
+               $ret .= '  <td class="style_td_week"><strong>' .
+                       $label . '</strong></td>' . "\n";
+
+       $ret .= ' </tr>' . "\n" .
+               ' <tr>'  . "\n";
+
+       // Blank
+       for ($i = 0; $i < $wday; $i++)
+               $ret .= '    <td class="style_td_blank">&nbsp;</td>' . "\n";
+
+       while(checkdate($m_num, $day, $year)) {
+               $dt     = sprintf('%04d%02d%02d', $year, $m_num, $day);
+               $name   = $prefix . $dt;
+               $r_page = rawurlencode($name);
+               $s_page = htmlsc($name);
+
+               $refer = ($cmd == 'edit') ? '&amp;refer=' . rawurlencode($page) : '';
+
+               if ($cmd == 'read' && ! is_page($name)) {
+                       $link = '<strong>' . $day . '</strong>';
+               } else {
+                       $link = '<a href="' . $script . '?cmd=' . $cmd .
+                               '&amp;page=' . $r_page . $refer . '" title="' .
+                               $s_page . '"><strong>' . $day . '</strong></a>';
+               }
+
+               if ($wday == 0 && $day > 1) {
+                       $ret .= '  </tr><tr>' . "\n";
+               }
+               if (! $other_month && ($day == $today['mday']) &&
+                       ($m_num == $today['mon']) && ($year == $today['year']))
+               {
+                       //  Today
+                       $ret .= '    <td class="style_td_today"><span class="small">' .
+                               $link . '</span></td>' . "\n";
+               } else if ($wday == 0) {
+                       //  Sunday
+                       $ret .= '    <td class="style_td_sun"><span class="small">' .
+                               $link . '</span></td>' . "\n";
+               } else if ($wday == 6) {
+                       //  Saturday
+                       $ret .= '    <td class="style_td_sat"><span class="small">' .
+                               $link . '</span></td>' . "\n";
+               } else {
+                       // Weekday
+                       $ret .= '    <td class="style_td_day"><span class="small">' .
+                               $link . '</span></td>' . "\n";
+               }
+               ++$day;
+               ++$wday;
+               $wday = $wday % 7;
+       }
+
+       if ($wday > 0) {
+               while($wday < 7){
+                       // Blank
+                       $ret .= '    <td class="style_td_blank">&nbsp;</td>' . "\n";
+                       ++$wday;
+               }
+       }
+
+       $ret .= '  </tr>'  . "\n" .
+               '</table>' . "\n";
+
+       return $ret;
+}