<?php
-/*
- * PukiWiki calendar_viewer¥×¥é¥°¥¤¥ó
- *
- *
- *$Id: calendar_viewer.inc.php,v 1.1 2002/12/05 05:02:27 panda Exp $
- calendarrecent¥×¥é¥°¥¤¥ó¤ò¸µ¤ËºîÀ®
- */
+// PukiWiki - Yet another WikiWikiWeb clone
+// calendar_viewer.inc.php
+// Copyright 2002-2021 PukiWiki Development Team
+// License: GPL v2 or (at your option) any later version
+//
+// Calendar viewer plugin - List pages that calendar/calnedar2 plugin created
+// (Based on calendar and recent plugin)
+
+// Page title's date format
+// * See PHP date() manual for detail
+// * '$\w' = weeklabel defined in $_msg_week
+define('PLUGIN_CALENDAR_VIEWER_DATE_FORMAT',
+ // FALSE // 'pagename/2004-02-09' -- As is
+ // 'D, d M, Y' // 'Mon, 09 Feb, 2004'
+ // 'F d, Y' // 'February 09, 2004'
+ // '[Y-m-d]' // '[2004-02-09]'
+ 'Y/n/j ($\w)' // '2004/2/9 (Mon)'
+ );
/**
- *³µÍ×
- calendar¥×¥é¥°¥¤¥ó¤äcalendar2¥×¥é¥°¥¤¥ó¤ÇºîÀ®¤·¤¿¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¤Ç¤¹¡£
- *¹¹¿·ÍúÎò
- -2002-11-13
- --Á°¸å¤Ø¤Î¥ê¥ó¥¯¤Ëǯ·î¤ä¡Ö¼¡¤În·ï¡×¤Èɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£
- *»È¤¤Êý
- /// #calendar_viewer(pagename,(yyyy-mm|n|this),[mode],[separater])
- **pagename
- calendar or calendar2¥×¥é¥°¥¤¥ó¤òµ½Ò¤·¤Æ¤ë¥Ú¡¼¥¸Ì¾
- **(yyyy-mm|n|this)
- -yyyy-mm
- --yyyy-mm¤Ç»ØÄꤷ¤¿Ç¯·î¤Î¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨
- -n
- --n·ï¤Î°ìÍ÷ɽ¼¨
- -this
- --º£·î¤Î¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨
- **[mode]
- ¾Êά²Äǽ¤Ç¤¹¡£¾Êά»þ¤Î¥Ç¥Õ¥©¥ë¥È¤Ïpast
- -past
- --º£Æü°ÊÁ°¤Î¥Ú¡¼¥¸¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£¹¹¿·ÍúÎò¤äÆüµ¸þ¤
- -future
- --º£Æü°Ê¹ß¤Î¥Ú¡¼¥¸¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£¥¤¥Ù¥ó¥ÈͽÄê¤ä¥¹¥±¥¸¥å¡¼¥ë¸þ¤
- -view
- --²áµî¤«¤é̤Íè¤Ø¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£É½¼¨Í޻ߤ¹¤ë¥Ú¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó¡£
- -[separater]
- ¾Êά²Äǽ¡£¥Ç¥Õ¥©¥ë¥È¤Ï-¡£¡Êcalendar2¤Ê¤é¾Êά¤ÇOK¡Ë
- --ǯ·îÆü¤ò¶èÀڤ륻¥Ñ¥ì¡¼¥¿¤ò»ØÄê¡£
-
- *todo
- past or future ¤Ç·îñ°Ìɽ¼¨¤¹¤ë¤È¤¤Ë¡¢¤½¤ì¤¾¤ìÍè·î¡¢Àè·î¤Î°ìÍ÷¤Ø¤Î¥ê¥ó¥¯¤òɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
-
+ * Limit of show count per pagename
*/
+define('PLUGIN_CALENDAR_VIEWER_MAX_SHOW_COUNT', 4);
+// ----
-
+define('PLUGIN_CALENDAR_VIEWER_USAGE',
+ '#calendar_viewer(pagename,this|yyyy-mm|n|x*y[,mode[,separater]])');
+/*
+ ** pagename
+ * - A working root of calendar or calendar2 plugin
+ * pagename/2004-12-30
+ * pagename/2004-12-31
+ * ...
+ *
+ ** (yyyy-mm|n|this)
+ * this - Show 'this month'
+ * yyyy-mm - Show pages at year:yyyy and month:mm
+ * n - Show first n pages
+ * x*n - Show first n pages from x-th page (0 = first)
+ *
+ ** [mode]
+ * past - Show today, and the past below. Recommended for ChangeLogs and diaries (default)
+ * future - Show today, and the future below. Recommended for event planning and scheduling
+ * view - Show all, from the past to the future
+ *
+ ** [separater]
+ * - Specify separator of yyyy/mm/dd
+ * - Default: '-' (yyyy-mm-dd)
+ *
+ * TODO
+ * Stop showing links 'next month' and 'previous month' with past/future mode for 'this month'
+ * #calendar_viewer(pagename,this,past)
+ */
function plugin_calendar_viewer_convert()
{
- global $WikiName,$BracketName,$vars,$get,$post,$hr,$script;
- //*¥Ç¥Õ¥©¥ë¥ÈÃͤò¥»¥Ã¥È
- //´ð½à¤È¤Ê¤ë¥Ú¡¼¥¸Ì¾
- $pagename = "";
- //ɽ¼¨¤¹¤ë·ï¿ôÀ©¸Â
- $limit_page = 7;
- //°ìÍ÷ɽ¼¨¤¹¤ëǯ·î
- $date_YM = "";
- //Æ°ºî¥â¡¼¥É
- $mode = "past";
- //ÆüÉդΥ»¥Ñ¥ì¡¼¥¿ calendar2¤Ê¤é"-" calendar¤Ê¤é""
- $date_sep = "-";
-
-
- //*°ú¿ô¤Î³Îǧ
- if(func_num_args()>=2){
- $func_vars_array = func_get_args();
-
- $pagename = $func_vars_array[0];
-
- if (isset($func_vars_array[3])){
- $date_sep = $func_vars_array[3];
- }
- if (preg_match("/[0-9]{4}".$date_sep."[0-9]{2}/",$func_vars_array[1])){
- //»ØÄêǯ·î¤Î°ìÍ÷ɽ¼¨
- $page_YM = $func_vars_array[1];
- $limit_base = 0;
- $limit_page = 31; //¼êÈ´¤¡£31Æüʬ¤ò¥ê¥ß¥Ã¥È¤È¤¹¤ë¡£
- }else if (preg_match("/this/si",$func_vars_array[1])){
- //º£·î¤Î°ìÍ÷ɽ¼¨
- $page_YM = date("Y".$date_sep."m");
- $limit_base = 0;
- $limit_page = 31;
- }else if (preg_match("/^[0-9]+$/",$func_vars_array[1])){
- //nÆüʬɽ¼¨
- $limit_pitch = $func_vars_array[1];
- $limit_page = $limit_pitch;
- $limit_base = 0;
- $page_YM = "";
- }else if (preg_match("/([0-9]+)\*([0-9]+)/",$func_vars_array[1],$reg_array)){
- $limit_pitch = $reg_array[2];
- $limit_page = $reg_array[1] + $limit_pitch;
- $limit_base = $reg_array[1];
- $page_YM = "";
- }else{
- return "Âè2°ú¿ô¤¬ÊѤÀ¤è";
- }
- if (isset($func_vars_array[2])&&preg_match("/past|view|future/si",$func_vars_array[2])){
- //¥â¡¼¥É»ØÄê
- $mode = $func_vars_array[2];
- }
-
-
- }else{
- return "°ú¿ô»ØÄꤷ¤Æ¤Í";
- }
-
- //*°ìÍ÷ɽ¼¨¤¹¤ë¥Ú¡¼¥¸Ì¾¤È¥Õ¥¡¥¤¥ë̾¤Î¥Ñ¥¿¡¼¥ó¡¡¥Õ¥¡¥¤¥ë̾¤Ë¤Ïǯ·î¤ò´Þ¤à
- if ($pagename == ""){
- //pagename̵¤·¤Îyyyy-mm-dd¤ËÂбþ¤¹¤ë¤¿¤á¤Î½èÍý
- $pagepattern = "";
- $pagepattern_len = 0;
- $filepattern = encode('[['.$page_YM);
- $filepattern_len = strlen($filepattern);
- }else{
- $pagepattern = strip_bracket($pagename) .'/';
- $pagepattern_len = strlen($pagepattern);
- $filepattern = encode('[['.$pagepattern.$page_YM);
- $filepattern_len = strlen($filepattern);
- }
-
- //echo "$pagename:$page_YM:$mode:$date_sep:$limit_base:$limit_page";
- //*¥Ú¡¼¥¸¥ê¥¹¥È¤Î¼èÆÀ
- //echo $pagepattern;
- //echo $filepattern;
-
- $pagelist = array();
- if ($dir = @opendir(DATA_DIR))
- {
- while($file = readdir($dir))
- {
- if($file == ".." || $file == ".") continue;
- if(substr($file,0,$filepattern_len)!=$filepattern) continue;
- //echo "OK";
- $page = decode(trim(preg_replace("/\.txt$/"," ",$file)));
- //$page¤¬¥«¥ì¥ó¥À¡¼·Á¼°¤Ê¤Î¤«¥Á¥§¥Ã¥¯ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ yyyy-mm-dd
- $page = strip_bracket($page);
- if (plugin_calendar_viewer_isValidDate(substr($page,$pagepattern_len),$date_sep) == false) continue;
-
- //*modeËè¤ËÊ̾ò·ï¤Ç¤Ï¤¸¤¯
- //past mode¤Ç¤Ï̤Íè¤Î¥Ú¡¼¥¸¤ÏNG
- if (((substr($page,$pagepattern_len)) > date("Y".$date_sep."m".$date_sep."d"))&&($mode=="past") )continue;
- //future mode¤Ç¤Ï²áµî¤Î¥Ú¡¼¥¸¤ÏNG
- if (((substr($page,$pagepattern_len)) < date("Y".$date_sep."m".$date_sep."d"))&&($mode=="future") )continue;
- //view mode¤Ê¤éall OK
- $pagelist[] = $page;
- }
- }
- closedir($dir);
- //echo count($pagelist);
- //*¤³¤³¤«¤é¥¤¥ó¥¯¥ë¡¼¥É³«»Ï
-
- $tmppage = $vars["page"];
- $return_body = "";
- //¤Þ¤º¥½¡¼¥È
- if ($mode == "past"){
- //past mode¤Ç¤Ï¿·¢ªµì
- rsort ($pagelist);
- }else {
- //view mode ¤È future mode ¤Ç¤Ï¡¢µì¢ª¿·
- sort ($pagelist);
- }
-
- //$limit_page¤Î·ï¿ô¤Þ¤Ç¥¤¥ó¥¯¥ë¡¼¥É
- $tmp = $limit_base;
- while ($tmp < $limit_page){
- if (empty($pagelist[$tmp])) break;
- $page = "[[" . $pagelist[$tmp] . "]]";
-
- $get["page"] = $page;
- $post["page"] = $page;
- $vars["page"] = $page;
-
- $body = @join("",@file(get_filename(encode($page))));
- $body = convert_html($body);
- $link = "<a href=\"$script?cmd=edit&page=".rawurlencode($page)."\">".strip_bracket($page)."</a>";
- $head = "<h1>$link</h1>\n";
- $return_body .= $head . $body;
-
- $tmp++;
- }
-
- //¤³¤³¤Ç¡¢Á°¸å¤Î¥ê¥ó¥¯¤òɽ¼¨
- //?plugin=calendar_viewer&file=¥Ú¡¼¥¸Ì¾&date=yyyy-mm
- $enc_pagename = rawurlencode(substr($pagepattern,0,$pagepattern_len -1));
-
- if ($page_YM != ""){
- //ǯ·îɽ¼¨»þ
- $date_sep_len = strlen($date_sep);
- $this_year = substr($page_YM,0,4);
- $this_month = substr($page_YM,4+$date_sep_len,2);
- //¼¡·î
- $next_year = $this_year;
- $next_month = $this_month + 1;
- if ($next_month >12){
- $next_year ++;
- $next_month = 1;
- }
- $next_YM = sprintf("%04d%s%02d",$next_year,$date_sep,$next_month);
-
- //Á°·î
- $prev_year = $this_year;
- $prev_month = $this_month -1;
- if ($prev_month < 1){
- $prev_year --;
- $prev_month = 12;
- }
- $prev_YM = sprintf("%04d%s%02d",$prev_year,$date_sep,$prev_month);
- if ($mode == "past"){
- $right_YM = $prev_YM;
- $right_text = $prev_YM.">>";
- $left_YM = $next_YM;
- $left_text = "<<".$next_YM;
- }else{
- $left_YM = $prev_YM;
- $left_text = "<<".$prev_YM;
- $right_YM = $next_YM;
- $right_text = $next_YM.">>";
- }
- }else{
- //n·ïɽ¼¨»þ
- if ($limit_base >= count($pagelist)){
- $right_YM = "";
- }else{
- $right_base = $limit_base + $limit_pitch;
- $right_YM = $right_base ."*".$limit_pitch;
- $right_text = "¼¡¤Î".$limit_pitch."·ï>>";
- }
- $left_base = $limit_base - $limit_pitch;
- if ($left_base >= 0) {
- $left_YM = $left_base . "*" . $limit_pitch;
- $left_text = "<<Á°¤Î".$limit_pitch."·ï";
-
- }else{
- $left_YM = "";
- }
-
- }
- //¥ê¥ó¥¯ºîÀ®
- if ($left_YM != ""){
- $left_link = "<a href=\"". $script."?plugin=calendar_viewer&file=".$enc_pagename."&date=".$left_YM ."&date_sep=".$date_sep."&mode=".$mode."\">".$left_text."</a>";
- }else{
- $left_link = "";
- }
- if ($right_YM != ""){
- $right_link = "<a href=\"". $script."?plugin=calendar_viewer&file=".$enc_pagename."&date=".$right_YM ."&date_sep=".$date_sep."&mode=".$mode."\">".$right_text."</a>";
- }else {
- $right_link = "";
- }
-
- //past mode¤Ï<<¿· µì>> ¾¤Ï<<µì ¿·>>
- $return_body .= "<table width =\"100%\"><tr><td align=\"left\">";
- $return_body .= $left_link;
- $return_body .= "</td><td align=\"right\">";
- $return_body .= $right_link;
- $return_body .= "</td></tr></table>";
-
-
- $get["page"] = $tmppage;
- $post["page"] = $tmppage;
- $vars["page"] = $tmppage;
-
-
- return $return_body;
+ global $vars, $get, $post, $weeklabels;
+ global $_msg_calendar_viewer_right, $_msg_calendar_viewer_left;
+ global $_msg_calendar_viewer_restrict, $_err_calendar_viewer_param2;
+
+ static $show_count = array();
+
+ if (func_num_args() < 2)
+ return PLUGIN_CALENDAR_VIEWER_USAGE . '<br />' . "\n";
+
+ $func_args = func_get_args();
+
+ // Default values
+ $pagename = $func_args[0]; // 基準となるページ名
+ $page_YM = ''; // 一覧表示する年月
+ $limit_base = 0; // 先頭から数えて何ページ目から表示するか (先頭)
+ $limit_pitch = 0; // 何件づつ表示するか
+ $limit_page = 0; // サーチするページ数
+ $mode = 'past'; // 動作モード
+ $date_sep = '-'; // 日付のセパレータ calendar2なら '-', calendarなら ''
+
+ // Check $func_args[1]
+ $matches = array();
+ if (preg_match('/[0-9]{4}' . $date_sep . '[0-9]{2}/', $func_args[1])) {
+ // 指定年月の一覧表示
+ $page_YM = $func_args[1];
+ $limit_page = 31;
+ } else if (preg_match('/this/si', $func_args[1])) {
+ // 今月の一覧表示
+ $page_YM = get_date('Y' . $date_sep . 'm');
+ $limit_page = 31;
+ } else if (preg_match('/^[0-9]+$/', $func_args[1])) {
+ // n日分表示
+ $limit_pitch = $func_args[1];
+ $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 />' . "\n";
+ }
+
+ // $func_args[2]: Mode setting
+ if (isset($func_args[2]) && preg_match('/^(past|view|future)$/si', $func_args[2]))
+ $mode = $func_args[2];
+
+ // $func_args[3]: Change default delimiter
+ if (isset($func_args[3])) $date_sep = $func_args[3];
+
+ // Avoid Loop etc.
+ if (!isset($show_count[$pagename])) {
+ $show_count[$pagename] = 0;
+ }
+ $show_count[$pagename] += 1;
+ if ($show_count[$pagename] > PLUGIN_CALENDAR_VIEWER_MAX_SHOW_COUNT) {
+ $s_page = htmlsc($pagename);
+ return "#calendar_viewer(): Exceeded the limit of show count: $s_page<br />";
+ }
+ // page name pattern
+ $simple_pagename = strip_bracket($pagename);
+ if ($pagename === '') {
+ // Support non-pagename yyyy-mm-dd pattern
+ $pagepattern = $page_YM;
+ $page_datestart_idx = 0;
+ } else {
+ $pagepattern = $simple_pagename . '/' . $page_YM;
+ $page_datestart_idx = strlen($simple_pagename) + 1;
+ }
+ $pagepattern_len = strlen($pagepattern);
+ // Get pagelist
+ $pagelist = array();
+ $_date = get_date('Y' . $date_sep . 'm' . $date_sep . 'd');
+ foreach (get_existpages() as $page) {
+ if (strncmp($page, $pagepattern, $pagepattern_len) !== 0) continue;
+ $page_date = substr($page, $page_datestart_idx);
+ // Verify the $page_date pattern (Default: yyyy-mm-dd).
+ // Past-mode hates the future, and
+ // Future-mode hates the past.
+ if ((plugin_calendar_viewer_isValidDate($page_date, $date_sep) === FALSE) ||
+ ($page_date > $_date && ($mode === 'past')) ||
+ ($page_date < $_date && ($mode === 'future'))) {
+ continue;
+ }
+ $pagelist[] = $page;
+ }
+ if ($mode == 'past') {
+ rsort($pagelist, SORT_STRING); // New => Old
+ } else {
+ sort($pagelist, SORT_STRING); // Old => New
+ }
+ // Include start
+ $tmppage = $vars['page'];
+ $return_body = '';
+
+ // $limit_page の件数までインクルード
+ $tmp = max($limit_base, 0); // Skip minus
+ while ($tmp < $limit_page) {
+ if (! isset($pagelist[$tmp])) break;
+
+ $page = $pagelist[$tmp];
+ $get['page'] = $post['page'] = $vars['page'] = $page;
+
+ // 現状で閲覧許可がある場合だけ表示する
+ if (check_readable($page, FALSE, FALSE)) {
+ $body = convert_html(get_source($page));
+ } else {
+ $body = str_replace('$1', $page, $_msg_calendar_viewer_restrict);
+ }
+ if (PLUGIN_CALENDAR_VIEWER_DATE_FORMAT !== FALSE) {
+ $time = strtotime(basename($page)); // $date_sep must be assumed '-' or ''!
+ if ($time === FALSE || $time === -1) {
+ $s_page = htmlsc($page); // Failed. Why?
+ } else {
+ $week = $weeklabels[date('w', $time)];
+ $s_page = htmlsc(str_replace(
+ array('$w' ),
+ array($week),
+ date(PLUGIN_CALENDAR_VIEWER_DATE_FORMAT, $time)
+ ));
+ }
+ } else {
+ $s_page = htmlsc($page);
+ }
+
+ if (PKWK_READONLY) {
+ $link = get_page_uri($page);
+ } else {
+ $link = get_base_uri() . '?cmd=edit&page=' . pagename_urlencode($page);
+ }
+ $link_html = '<a href="' . $link . '">' . $s_page . '</a>';
+ $head = '<h1>' . $link_html . '</h1>' . "\n";
+ $return_body .= $head . $body;
+ ++$tmp;
+ }
+
+ // ここで、前後のリンクを表示
+ // ?plugin=calendar_viewer&file=ページ名&date=yyyy-mm
+ if ($page_YM != '') {
+ // 年月表示時
+ $date_sep_len = strlen($date_sep);
+ $this_year = substr($page_YM, 0, 4);
+ $this_month = substr($page_YM, 4 + $date_sep_len, 2);
+
+ // 次月
+ $next_year = $this_year;
+ $next_month = $this_month + 1;
+ if ($next_month > 12) {
+ ++$next_year;
+ $next_month = 1;
+ }
+ $next_YM = sprintf('%04d%s%02d', $next_year, $date_sep, $next_month);
+
+ // 前月
+ $prev_year = $this_year;
+ $prev_month = $this_month - 1;
+ if ($prev_month < 1) {
+ --$prev_year;
+ $prev_month = 12;
+ }
+ $prev_YM = sprintf('%04d%s%02d', $prev_year, $date_sep, $prev_month);
+ if ($mode == 'past') {
+ $right_YM = $prev_YM;
+ $right_text = $prev_YM . '>>'; // >>
+ $left_YM = $next_YM;
+ $left_text = '<<' . $next_YM; // <<
+ } else {
+ $left_YM = $prev_YM;
+ $left_text = '<<' . $prev_YM; // <<
+ $right_YM = $next_YM;
+ $right_text = $next_YM . '>>'; // >>
+ }
+ } else {
+ // n件表示時
+ if ($limit_base <= 0) {
+ $left_YM = ''; // 表示しない (それより前の項目はない)
+ } else {
+ $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);
+ }
+ }
+
+ // ナビゲート用のリンクを末尾に追加
+ if ($left_YM != '' || $right_YM != '') {
+ $s_date_sep = htmlsc($date_sep);
+ $left_link = $right_link = '';
+ $link = get_base_uri() . '?plugin=calendar_viewer&mode=' . $mode .
+ '&file=' . rawurlencode($simple_pagename) .
+ '&date_sep=' . $s_date_sep . '&';
+ if ($left_YM != '')
+ $left_link = '<a href="' . $link .
+ 'date=' . $left_YM . '">' . $left_text . '</a>';
+ if ($right_YM != '')
+ $right_link = '<a href="' . $link .
+ 'date=' . $right_YM . '">' . $right_text . '</a>';
+ // past modeは<<新 旧>> 他は<<旧 新>>
+ $return_body .=
+ '<div class="calendar_viewer">' .
+ '<span class="calendar_viewer_left">' . $left_link . '</span>' .
+ '<span class="calendar_viewer_right">' . $right_link . '</span>' .
+ '</div>';
+ }
+
+ $get['page'] = $post['page'] = $vars['page'] = $tmppage;
+
+ return $return_body;
}
-function plugin_calendar_viewer_action(){
- global $WikiName,$BracketName,$vars,$get,$post,$hr,$script;
- $date_sep = "-";
+function plugin_calendar_viewer_action()
+{
+ global $vars, $get, $post;
+ $date_sep = '-';
- $return_vars_array = array();
+ $return_vars_array = array();
- $page = strip_bracket($vars['page']);
- $vars['page'] = '*';
- if(isset($vars['file'])) $vars['page'] = $vars['file'];
+ $page = strip_bracket($vars['page']);
+ $vars['page'] = '*';
+ if (isset($vars['file'])) $vars['page'] = $vars['file'];
- $date_sep = $vars["date_sep"];
+ $date_sep = $vars['date_sep'];
- $page_YM = $vars["date"];
- if ($page_YM == ""){
- $page_YM = date("Y".$date_sep."m");
- }
- $mode = $vars["mode"];
+ $page_YM = $vars['date'];
+ if ($page_YM == '') $page_YM = get_date('Y' . $date_sep . 'm');
+ $mode = $vars['mode'];
- $args_array = array($vars["page"], $page_YM,$mode, $date_sep);
- $return_vars_array["body"] = call_user_func_array("plugin_calendar_viewer_convert",$args_array);
+ $args_array = array($vars['page'], $page_YM, $mode, $date_sep);
+ $return_vars_array['body'] = call_user_func_array('plugin_calendar_viewer_convert', $args_array);
- //$return_vars_array["msg"] = "calendar_viewer ".$vars["page"]."/".$page_YM;
- $return_vars_array["msg"] = "calendar_viewer ".$vars["page"];
- if ($vars["page"] != ""){
- $return_vars_array["msg"] .= "/";
- }
- if(preg_match("/\*/",$page_YM)){
- //¤¦¡¼¤ó¡¢n·ïɽ¼¨¤Î»þ¤Ï¤Ê¤ó¤Æ¥Ú¡¼¥¸Ì¾¤Ë¤·¤¿¤é¤¤¤¤¡©
- }else{
- $return_vars_array["msg"] .= $page_YM;
- }
+ //$return_vars_array['msg'] = 'calendar_viewer ' . $vars['page'] . '/' . $page_YM;
+ $return_vars_array['msg'] = 'calendar_viewer ' . htmlsc($vars['page']);
+ if ($vars['page'] != '') $return_vars_array['msg'] .= '/';
+ if (preg_match('/\*/', $page_YM)) {
+ // うーん、n件表示の時はなんてページ名にしたらいい?
+ } else {
+ $return_vars_array['msg'] .= htmlsc($page_YM);
+ }
- $vars['page'] = $page;
- return $return_vars_array;
+ $vars['page'] = $page;
+ return $return_vars_array;
}
-function plugin_calendar_viewer_isValidDate($aStr, $aSepList="-/ .") {
- //$aSepList=""¤Ê¤é¡¢yyyymmdd¤È¤·¤Æ¥Á¥§¥Ã¥¯¡Ê¼êÈ´¤(^^;¡Ë
- if($aSepList == "") {
- //yyyymmdd¤È¤·¤Æ¥Á¥§¥Ã¥¯
- return checkdate(substr($aStr,4,2),substr($aStr,6,2),substr($aStr,0,4));
- }
- if( ereg("^([0-9]{2,4})[$aSepList]([0-9]{1,2})[$aSepList]([0-9]{1,2})$", $aStr, $m) ) {
- return checkdate($m[2], $m[3], $m[1]);
- }
- return false;
+function plugin_calendar_viewer_isValidDate($aStr, $aSepList = '-/ .')
+{
+ $matches = array();
+ if ($aSepList == '') {
+ // yyymmddとしてチェック(手抜き(^^;)
+ return checkdate(substr($aStr, 4, 2), substr($aStr, 6, 2), substr($aStr, 0, 4));
+ } else if (preg_match("#^([0-9]{2,4})[$aSepList]([0-9]{1,2})[$aSepList]([0-9]{1,2})$#", $aStr, $matches) ) {
+ return checkdate($matches[2], $matches[3], $matches[1]);
+ } else {
+ return FALSE;
+ }
}
-
-?>