<?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
- future
-- º£Æü°Ê¹ß¤Î¥Ú¡¼¥¸¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£¥¤¥Ù¥ó¥ÈͽÄê¤ä¥¹¥±¥¸¥å¡¼¥ë¸þ¤
- view
- -- ²áµî¤«¤é̤Íè¤Ø¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£É½¼¨Í޻ߤ¹¤ë¥Ú¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+ -- ²áµî¤«¤é̤Íè¤Ø¤Î°ìÍ÷ɽ¼¨¥â¡¼¥É¡£É½¼¨Í޻ߤ¹¤ë¥Ú¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó
** [separater]
- ǯ·îÆü¤ò¶èÀڤ륻¥Ñ¥ì¡¼¥¿¤ò»ØÄê¡£
$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];
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 />';
}
$mode = $func_args[2];
}
-
// °ìÍ÷ɽ¼¨¤¹¤ë¥Ú¡¼¥¸Ì¾¤È¥Õ¥¡¥¤¥ë̾¤Î¥Ñ¥¿¡¼¥ó¡¡¥Õ¥¡¥¤¥ë̾¤Ë¤Ïǯ·î¤ò´Þ¤à
if ($pagename == '') {
// pagename̵¤·¤Îyyyy-mm-dd¤ËÂбþ¤¹¤ë¤¿¤á¤Î½èÍý
// ¥Ú¡¼¥¸¥ê¥¹¥È¤Î¼èÆÀ
//echo $pagepattern;
//echo $filepattern;
-
$pagelist = array();
if ($dir = @opendir(DATA_DIR)) {
$_date = get_date('Y' . $date_sep . 'm' . $date_sep . 'd');
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;
// ¸½¾õ¤Ç±ÜÍ÷µö²Ä¤¬¤¢¤ë¾ì¹ç¤À¤±É½¼¨¤¹¤ë
}
} 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);
+ }
}
// ¥Ê¥Ó¥²¡¼¥ÈÍѤΥê¥ó¥¯¤òËöÈø¤ËÄɲÃ