function plugin_minicalendar_convert() { global $script, $vars, $post, $get, $weeklabels, $WikiName, $BracketName; // global $_minicalendar_plugin_edit, $_minicalendar_plugin_empty; $_minicalendar_plugin_edit = _('[edit]'); $_minicalendar_plugin_empty = _('%s is empty.'); $today_view = TRUE; $today_args = 'viewex'; $date_str = get_date('Ym'); $base = strip_bracket($vars['page']); if (func_num_args() > 0) { $args = func_get_args(); foreach ($args as $arg) { if (is_numeric($arg) && strlen($arg) == 6) { $date_str = $arg; } else { if ($arg == 'off') { $today_view = FALSE; } else { if ($arg == 'past' || $arg == 'pastex' || $arg == 'future' || $arg == 'futureex' || $arg == 'view' || $arg == 'viewex') { $today_args = $arg; } else { $base = strip_bracket($arg); } } } } } if ($base == '*') { $base = ''; $prefix = ''; } else { $prefix = $base . '/'; } $r_base = rawurlencode($base); $s_base = htmlspecialchars($base); $r_prefix = rawurlencode($prefix); $s_prefix = htmlspecialchars($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)); $m_num = $today['mon']; $d_num = $today['mday']; $year = $today['year']; $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $year)); $wday = $f_today['wday']; $day = 1; $m_name = $year . '.' . $m_num; $y = substr($date_str, 0, 4) + 0; $m = substr($date_str, 4, 2) + 0; $prev_date_str = $m == 1 ? sprintf('%04d%02d', $y - 1, 12) : sprintf('%04d%02d', $y, $m - 1); $next_date_str = $m == 12 ? sprintf('%04d%02d', $y + 1, 1) : sprintf('%04d%02d', $y, $m + 1); $this_date_str = sprintf('%04d%02d', $y, $m); $page_YM = sprintf('%04d-%02d', $y, $m); $ret = ''; if (!defined('UA_MOBILE') || UA_MOBILE == 0) { if ($today_view) { if (exist_plugin('topicpath')) { $ret = "<div id=\"topicpath\"><a href=\"" . $script . "\">" . PLUGIN_TOPICPATH_TOP_LABEL . "</a>" . PLUGIN_TOPICPATH_TOP_SEPARATOR . "calendar - " . $s_base . "</div>\n"; } $ret .= "<h2>" . sprintf(_('%04d/%02d %s'), $y, $m, $s_base) . "</h2>\n"; $ret .= "<table style=\"width:92%\" border=\"0\" cellspacing=\"0\" cellpadding=\"8\" summary=\"calendar frame\">\n <tr>\n <td valign=\"top\" width=\"160\">\n"; } $ret .= <<<EOD <table class="ministyle_calendar" cellspacing="1" width="150" border="0" summary="calendar body"> <tr> <td class="ministyle_td_caltop" colspan="7"> <a href="{$script}?plugin=minicalendar&file={$r_base}&date={$prev_date_str}&mode={$today_args}"><<</a> <strong>{$m_name}</strong> <a href="{$script}?plugin=minicalendar&file={$r_base}&date={$next_date_str}&mode={$today_args}">>></a> EOD; if ($prefix) { // $ret .= "\n <br />[<a href=\"" . get_page_uri($base) . "\">$s_base</a>]"; $ret .= "\n <br />[<a href=\"{$script}?plugin=minicalendar&file={$r_base}&date={$this_date_str}&mode={$today_args}\">{$s_base}</a>]"; } $ret .= "\n </td>\n </tr>\n <tr>\n"; foreach ($weeklabels as $label) { $ret .= " <td class=\"ministyle_td_week\">{$label}</td>\n"; } $ret .= " </tr>\n <tr>\n"; // Blank for ($i = 0; $i < $wday; $i++) { $ret .= " <td class=\"ministyle_td_blank\"> </td>\n"; } while (checkdate($m_num, $day, $year)) { $dt = sprintf('%4d-%02d-%02d', $year, $m_num, $day); $page = $prefix . $dt; $r_page = rawurlencode($page); $s_page = htmlspecialchars($page); $h_today = public_holiday($year, $m_num, $day); $hday = $h_today['rc']; if ($wday == 0 and $day > 1) { $ret .= " </tr>\n <tr>\n"; } $style = 'ministyle_td_day'; // Weekday if (!$other_month && $day == $today['mday'] && $m_num == $today['mon'] && $year == $today['year']) { // Today $style = 'ministyle_td_today'; } else { if ($hday != 0) { // Holiday $style = 'ministyle_td_sun'; } else { if ($wday == 0) { // Sunday $style = 'ministyle_td_sun'; } else { if ($wday == 6) { // Saturday $style = 'ministyle_td_sat'; } } } } if (is_page($page)) { $link = "<a class=\"small\" href=\"" . get_page_uri($page) . "\" title=\"{$s_page}\"><strong>{$day}</strong></a>"; } else { $link = "<a class=\"small\" href=\"{$script}?cmd=edit&page={$r_page}&refer={$r_base}\" title=\"{$s_page}\">{$day}</a>"; } // $ret .= " <td class=\"$style\">\n $link\n </td>\n"; $ret .= " <td class=\"{$style}\">{$link}</td>\n"; $day++; $wday = ++$wday % 7; } if ($wday > 0) { while ($wday++ < 7) { // Blank // $ret .= " <td class=\"ministyle_td_blank\"> </td>\n"; $ret .= " <td class=\"ministyle_td_blank\"> </td>\n"; } } $ret .= " </tr>\n </table>\n"; if ($today_view) { if ($today_args == '') { $tpage = $prefix . sprintf("%4d-%02d-%02d", $today['year'], $today['mon'], $today['mday']); $r_tpage = rawurlencode($tpage); if (is_page($tpage)) { $_page = $vars['page']; $get['page'] = $post['page'] = $vars['page'] = $tpage; $str = convert_html(get_source($tpage)); $str .= "<hr /><a class=\"small\" href=\"{$script}?cmd=edit&page={$r_tpage}\">{$_minicalendar_plugin_edit}</a>"; $get['page'] = $post['page'] = $vars['page'] = $_page; } else { $str = sprintf($_minicalendar_plugin_empty, make_pagelink(sprintf('%s%4d-%02d-%02d', $prefix, $today['year'], $today['mon'], $today['mday']))); } } else { $aryargs = array(rawurldecode($r_base), $page_YM, $today_args); if (exist_plugin('minicalendar_viewer')) { bindtextdomain('minicalendar_viewer', LANG_DIR); bind_textdomain_codeset('minicalendar_viewer', SOURCE_ENCODING); textdomain('minicalendar_viewer'); $str = call_user_func_array('plugin_minicalendar_viewer_convert', $aryargs); textdomain('minicalendar'); } } $ret .= " </td>\n <td valign=\"top\">{$str}</td>\n </tr>\n</table>\n"; } } else { // // for non-default profile // $ret .= <<<EOD <a href="{$script}?plugin=minicalendar&file={$r_base}&date={$prev_date_str}&mode={$today_args}"><<</a> <strong>{$m_name}</strong> <a href="{$script}?plugin=minicalendar&file={$r_base}&date={$next_date_str}&mode={$today_args}">>></a> EOD; if ($prefix) { // $ret .= "\n <br />[<a href=\"" . get_page_uri($base) . "\">$s_base</a>]"; $ret .= "\n <br />[<a href=\"{$script}?plugin=minicalendar&file={$r_base}&date={$this_date_str}&mode={$today_args}\">{$s_base}</a>]"; } $ret .= "<br />\n"; foreach ($weeklabels as $label) { $ret .= " {$label}\n"; } $ret .= "<br />\n"; // Blank for ($i = 0; $i < $wday; $i++) { $ret .= " \n"; } while (checkdate($m_num, $day, $year)) { $dt = sprintf('%4d-%02d-%02d', $year, $m_num, $day); $page = $prefix . $dt; $r_page = rawurlencode($page); $s_page = htmlspecialchars($page); $h_today = public_holiday($year, $m_num, $day); $hday = $h_today['rc']; if ($wday == 0 and $day > 1) { $ret .= " <br />\n"; } $style = 'ministyle_td_day'; // Weekday if (!$other_month && $day == $today['mday'] && $m_num == $today['mon'] && $year == $today['year']) { // Today $style = 'ministyle_td_today'; } else { if ($hday != 0) { // Holiday $style = 'ministyle_td_sun'; } else { if ($wday == 0) { // Sunday $style = 'ministyle_td_sun'; } else { if ($wday == 6) { // Saturday $style = 'ministyle_td_sat'; } } } } if (is_page($page)) { if ($day < 10) { $spc = ' '; } else { $spc = ''; } $link = "{$spc}<a class=\"small\" href=\"" . get_page_uri($page) . "\" title=\"{$s_page}\"><font color=\"red\">{$day}</font></a>"; } else { if ($day < 10) { $spc = ' '; } else { $spc = ''; } $link = "{$spc}<a class=\"small\" href=\"{$script}?cmd=edit&page={$r_page}&refer={$r_base}\" title=\"{$s_page}\">{$day}</a>"; } $ret .= $link . "\n"; $day++; $wday = ++$wday % 7; } if ($wday > 0) { while ($wday++ < 7) { // Blank $ret .= " \n"; } } $ret .= "<br /><br />\n"; if ($today_view) { if ($today_args == '') { $tpage = $prefix . sprintf("%4d-%02d-%02d", $today['year'], $today['mon'], $today['mday']); $r_tpage = rawurlencode($tpage); if (is_page($tpage)) { $_page = $vars['page']; $get['page'] = $post['page'] = $vars['page'] = $tpage; $str = convert_html(get_source($tpage)); $str .= "<hr /><a class=\"small\" href=\"{$script}?cmd=edit&page={$r_tpage}\">{$_minicalendar_plugin_edit}</a>"; $get['page'] = $post['page'] = $vars['page'] = $_page; } else { $str = sprintf($_minicalendar_plugin_empty, make_pagelink(sprintf('%s%4d-%02d-%02d', $prefix, $today['year'], $today['mon'], $today['mday']))); } } else { $aryargs = array(rawurldecode($r_base), $page_YM, $today_args); if (exist_plugin('minicalendar_viewer')) { bindtextdomain('minicalendar_viewer', LANG_DIR); bind_textdomain_codeset('minicalendar_viewer', SOURCE_ENCODING); textdomain('minicalendar_viewer'); $str = call_user_func_array('plugin_minicalendar_viewer_convert', $aryargs); textdomain('minicalendar'); } } $ret .= $str . "\n"; } } return $ret; }
function plugin_calendar2_convert() { global $script, $vars, $post, $get, $weeklabels, $WikiName, $BracketName; // global $_calendar2_plugin_edit, $_calendar2_plugin_empty; $_calendar2_plugin_edit = _('[edit]'); $_calendar2_plugin_empty = _('%s is empty.'); $date_str = get_date('Ym'); $base = strip_bracket($vars['page']); $today_view = TRUE; if (func_num_args()) { $args = func_get_args(); foreach ($args as $arg) { if (is_numeric($arg) && strlen($arg) == 6) { $date_str = $arg; } else { if ($arg == 'off') { $today_view = FALSE; } else { $base = strip_bracket($arg); } } } } if ($base == '*') { $base = ''; $prefix = ''; } else { $prefix = $base . '/'; } $r_base = rawurlencode($base); $s_base = htmlspecialchars($base); $r_prefix = rawurlencode($prefix); $s_prefix = htmlspecialchars($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)); $m_num = $today['mon']; $d_num = $today['mday']; $year = $today['year']; $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $year)); $wday = $f_today['wday']; $day = 1; $m_name = $year . '.' . $m_num; $y = substr($date_str, 0, 4) + 0; $m = substr($date_str, 4, 2) + 0; $prev_date_str = $m == 1 ? sprintf('%04d%02d', $y - 1, 12) : sprintf('%04d%02d', $y, $m - 1); $next_date_str = $m == 12 ? sprintf('%04d%02d', $y + 1, 1) : sprintf('%04d%02d', $y, $m + 1); $ret = ''; if ($today_view) { $ret = '<table border="0" summary="calendar frame">' . "\n" . ' <tr>' . "\n" . ' <td valign="top">' . "\n"; } $ret .= <<<EOD <table class="style_calendar" cellspacing="1" width="150" border="0" summary="calendar body"> <tr> <td class="style_td_caltop" colspan="7"> <a href="{$script}?plugin=calendar2&file={$r_base}&date={$prev_date_str}"><<</a> <strong>{$m_name}</strong> <a href="{$script}?plugin=calendar2&file={$r_base}&date={$next_date_str}">>></a> EOD; if ($prefix) { $ret .= "\n" . ' <br />[<a href="' . get_page_uri($base) . '">' . $s_base . '</a>]'; } $ret .= "\n" . ' </td>' . "\n" . ' </tr>' . "\n" . ' <tr>' . "\n"; foreach ($weeklabels as $label) { $ret .= ' <td class="style_td_week">' . $label . '</td>' . "\n"; } $ret .= ' </tr>' . "\n" . ' <tr>' . "\n"; // Blank for ($i = 0; $i < $wday; $i++) { $ret .= ' <td class="style_td_blank"> </td>' . "\n"; } while (checkdate($m_num, $day, $year)) { $dt = sprintf('%4d-%02d-%02d', $year, $m_num, $day); $page = $prefix . $dt; $r_page = rawurlencode($page); $s_page = htmlspecialchars($page); $h_today = public_holiday($year, $m_num, $day); $hday = $h_today['rc']; if ($wday == 0 && $day > 1) { $ret .= ' </tr>' . "\n" . ' <tr>' . "\n"; } $style = 'style_td_day'; // Weekday if (!$other_month && $day == $today['mday'] && $m_num == $today['mon'] && $year == $today['year']) { // Today $style = 'style_td_today'; } else { if ($hday != 0) { // Holiday $style = 'style_td_sun'; } else { if ($wday == 0) { // Sunday $style = 'style_td_sun'; } else { if ($wday == 6) { // Saturday $style = 'style_td_sat'; } } } } if (is_page($page)) { $link = '<a href="' . get_page_uri($page) . '" title="' . $s_page . '"><strong>' . $day . '</strong></a>'; } else { // if (PKWK_READONLY) { if (auth::check_role('readonly')) { $link = '<span class="small">' . $day . '</small>'; } else { $link = $script . '?cmd=edit&page=' . $r_page . '&refer=' . $r_base; $link = '<a class="small" href="' . $link . '" title="' . $s_page . '">' . $day . '</a>'; } } $ret .= ' <td class="' . $style . '">' . "\n" . ' ' . $link . "\n" . ' </td>' . "\n"; ++$day; $wday = ++$wday % 7; } if ($wday > 0) { while ($wday++ < 7) { // Blank $ret .= ' <td class="style_td_blank"> </td>' . "\n"; } } $ret .= ' </tr>' . "\n" . ' </table>' . "\n"; if ($today_view) { $tpage = $prefix . sprintf('%4d-%02d-%02d', $today['year'], $today['mon'], $today['mday']); $r_tpage = rawurlencode($tpage); if (is_page($tpage)) { $_page = $vars['page']; $get['page'] = $post['page'] = $vars['page'] = $tpage; $str = convert_html(get_source($tpage)); $str .= '<hr /><a class="small" href="' . $script . '?cmd=edit&page=' . $r_tpage . '">' . $_calendar2_plugin_edit . '</a>'; $get['page'] = $post['page'] = $vars['page'] = $_page; } else { $str = sprintf($_calendar2_plugin_empty, make_pagelink(sprintf('%s%4d-%02d-%02d', $prefix, $today['year'], $today['mon'], $today['mday']))); } $ret .= ' </td>' . "\n" . ' <td valign="top">' . $str . '</td>' . "\n" . ' </tr>' . "\n" . '</table>' . "\n"; } return $ret; }
function plugin_minicalendar_viewer_convert() { global $vars, $get, $post, $script, $weeklabels; global $_err_calendar_viewer_param, $_err_calendar_viewer_param2; global $_msg_calendar_viewer_right, $_msg_calendar_viewer_left; global $_msg_calendar_viewer_restrict; global $_symbol_paraedit, $trackback; static $viewed = array(); if (func_num_args() < 2) { return PLUGIN_MINICALENDAR_VIEWER_USAGE . '<br />' . "\n"; } $func_vars_array = func_get_args(); // デフォルト値をセット $pagename = $func_vars_array[0]; // 基準となるページ名 $limit_page = 7; // 表示する件数制限 $date_YM = ''; // 一覧表示する年月 $mode = 'past'; // 動作モード $date_sep = '-'; // 日付のセパレータ calendar2なら"-" calendarなら"" // Check $func_args[1] 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 = get_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 '#calendar_viewer(): ' . $_err_calendar_viewer_param2 . '<br />' . "\n"; } } } } // $func_args[2]: Change default delimiter if (isset($func_vars_array[2]) && preg_match("/^(past|pastex|view|viewex|future|futureex)\$/si", $func_vars_array[2])) { $mode = $func_vars_array[2]; } // $func_args[3]: Change default delimiter if (isset($func_vars_array[3])) { $date_sep = $func_vars_array[3]; } // Avoid Loop etc. if (isset($viewed[$pagename])) { if ($viewed[$pagename] > PLUGIN_MINICALENDAR_MAX_VIEWS) { $s_page = htmlspecialchars($pagename); return '#calendar_viewer(): You already view: ' . $s_page . '<br />'; } $viewed[$pagename]++; // Valid } else { $viewed[$pagename] = 1; // Valid } // 一覧表示するページ名とファイル名のパターン ファイル名には年月を含む 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); } // ページリストの取得 $pagelist = array(); if ($dir = @opendir(DATA_DIR)) { $_date = get_date('Y' . $date_sep . 'm' . $date_sep . 'd'); $page_date = ''; while ($file = readdir($dir)) { if ($file == '..' || $file == '.') { continue; } if (substr($file, 0, $filepattern_len) != $filepattern) { continue; } $page = decode(trim(preg_replace("/\\.txt\$/", " ", $file))); $page_date = substr($page, $pagepattern_len); // $pageがカレンダー形式なのかチェック デフォルトでは yyyy-mm-dd if (plugin_minicalendar_viewer_isValidDate($page_date, $date_sep) == FALSE) { continue; } // mode毎に別条件ではじく // pastex modeでは今日を含む未来のページはNG // futureex modeでは今日を含む過去のページはNG // past modeでは未来のページはNG // future modeでは過去のページはNG if ($page_date >= $_date && $mode == 'pastex') { continue; } if ($page_date <= $_date && $mode == 'futureex') { continue; } if ($page_date > $_date && $mode == 'past') { continue; } if ($page_date < $_date && $mode == 'future') { continue; } $pagelist[] = $page; } } closedir($dir); // まずソート if ($mode == 'past' || $mode == 'pastex' || $mode == 'viewex') { rsort($pagelist); } else { sort($pagelist); } // ここからインクルード $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)) { if (function_exists('convert_filter')) { $body = convert_html(convert_filter(get_source($page))); } else { $body = convert_html(get_source($page)); } } else { $body = str_replace('$1', $page, $_msg_calendar_viewer_restrict); } $r_page = rawurlencode($page); $s_page = htmlspecialchars($page); if (PLUGIN_MINICALENDAR_VIEWER_DATE_FORMAT !== FALSE) { $time = strtotime(basepagename($page)); // $date_sep must be assumed '-' or ''! if ($time == -1 || $time == FALSE) { $s_page = htmlspecialchars($page); // Failed. Why? } else { $week = $weeklabels[date('w', $time)]; $s_page = htmlspecialchars(str_replace(array('$w'), array($week), date(PLUGIN_CALENDAR_VIEWER_DATE_FORMAT, $time))); } } $refpage = rawurlencode($tmppage); $page_title = basepagename($page); $s_page_title = htmlspecialchars($page_title); // if (PKWK_READONLY) { if (auth::check_role('readonly')) { $link = get_page_uri($page); } else { $link = get_cmd_uri('edit', $page, '', 'refpage=' . $refpage); } $link = '<a class="anchor_super" href="' . $link . '">' . $_symbol_paraedit . '</a>'; $head = '<h3 class="minicalendar">' . $s_page_title . ' ' . $link . '</h3>' . "\n"; $tail = ''; if (PLUGIN_MINICALENDAR_VIEWER_HOLIDAYVIEW === TRUE) { $time = strtotime($page_title); if ($time != -1) { $yy = intval(date('Y', $time)); $mm = intval(date('n', $time)); $dd = intval(date('d', $time)); $monthlabel = array(1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); $mmstr = $monthlabel[$mm]; $h_today = public_holiday($yy, $mm, $dd); if ($h_today['rc'] != 0) { $classname = 'date_holiday'; } else { if ($h_today['w'] == 0) { $classname = 'date_holiday'; } else { if ($h_today['w'] == 6) { $classname = 'date_weekend'; } else { $classname = 'date_weekday'; } } } $head = '<h3 class="' . $classname . '"><span class="day">' . sprintf('%02d', $dd) . '</span> <br />' . '<b>' . $mmstr . '</b>, <b>' . $yy . '</b>' . $link . '</h3>' . "\n"; } } if (PLUGIN_MINICALENDAR_VIEWER_COMMENT === TRUE) { if (is_page(':config/plugin/addline/comment') && exist_plugin_inline('addline')) { $comm = convert_html(array('&addline(comment,above){comment};')); $comm = preg_replace(array("'<p>'si", "'</p>'si"), array("", ""), $comm); $tail .= str_replace('>comment', '><img src="' . IMAGE_URI . 'plus/comment.png" width="15" height="15" alt="Comment" title="Comment" />Comment', $comm); } } if (PLUGIN_MINICALENDAR_VIEWER_TRACKBACK === TRUE) { if ($trackback) { $tb_id = tb_get_id($page); $tail .= '<a href="' . $script . '?plugin=tb&__mode=view&tb_id=' . $tb_id . '">' . '<img src="' . IMAGE_URI . 'plus/trackback.png" width="15" height="15" alt="" title="" />Trackback(' . tb_count($page) . ')' . '</a>' . "\n"; } } if ($tail != '') { $tail = '<div class="trackback">' . $tail . '</div>'; } $return_body .= $head . '<div class="minicalendar_viewer">' . $body . '</div>' . $tail; ++$tmp; } //ここで、前後のリンクを表示 //?plugin=minicalendar_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); $next_YMX = sprintf('%04d%02d', $next_year, $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); $prev_YMX = sprintf('%04d%02d', $prev_year, $prev_month); // if ($mode == "past" || $mode == "pastex") { // $right_YM = $prev_YM; // $right_YMX = $prev_YMX; // $right_text = $prev_YM.">>"; // $left_YM = $next_YM; // $left_YMX = $next_YMX; // $left_text = "<<".$next_YM; // } else { $left_YM = $prev_YM; $left_YMX = $prev_YMX; $left_text = '<<' . $prev_YM; $right_YM = $next_YM; $right_YMX = $next_YMX; $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 = sprintf($_msg_calendar_viewer_right, $limit_pitch); } $left_base = $limit_base - $limit_pitch; if ($left_base >= 0) { $left_YM = $left_base . '*' . $limit_pitch; $left_text = sprintf($_msg_calendar_viewer_left, $limit_pitch); } else { $left_YM = ''; } $prev_YMX = ''; $next_YMX = ''; } // ナビゲート用のリンクを末尾に追加 $s_date_sep = htmlspecialchars($date_sep); if ($left_YM != '') { if ($left_YMX != '') { $left_link = '<a href="' . $script . '?plugin=minicalendar&file=' . $enc_pagename . '&date=' . $left_YMX . '">' . $left_text . '</a>'; } else { $left_link = '<a href="' . $script . '?plugin=minicalendar_viewer&file=' . $enc_pagename . '&date=' . $left_YM . '&date_sep=' . $s_date_sep . '&mode=' . $mode . '">' . $left_text . '</a>'; } } else { $left_link = ''; } if ($right_YM != '') { if ($right_YMX != '') { $right_link = '<a href="' . $script . '?plugin=minicalendar&file=' . $enc_pagename . '&date=' . $right_YMX . '">' . $right_text . '</a>'; } else { $right_link = '<a href="' . $script . '?plugin=minicalendar_viewer&file=' . $enc_pagename . '&date=' . $right_YM . '&date_sep=' . $s_date_sep . '&mode=' . $mode . '">' . $right_text . '</a>'; } } else { $right_link = ''; } //past modeは<<新 旧>> 他は<<旧 新>> $return_body .= '<div class="prevnext">'; $return_body .= '<div class="prevnext_r">' . $right_link . '</div>'; $return_body .= '<div class="prevnext_l">' . $left_link . '</div>'; $return_body .= '</div><br style="display:block;clear:both" />'; $get['page'] = $post['page'] = $vars['page'] = $tmppage; return $return_body; }
function plugin_calendar_convert() { global $vars, $weeklabels; $read_only = 0; $around = 0; $align = ''; $mode = 'viewex'; $summary = 'calendar body'; $date_str = get_date('Ym'); $base = strip_bracket($vars['page']); // First Arguments are "PAGE" $attr = func_get_args(); if (func_num_args()) { $argv = array_shift($attr); if ($argv) { $base = strip_bracket($argv); } } // Vaildate argument(s) foreach ($attr as $argv) { if (is_numeric($argv) && strlen($argv) == 6) { $date_str = $argv; } else { if ($argv == 'noedit') { $read_only = 1; } else { if ($argv == 'around') { $around = 1; } else { if ($argv == 'left' || $argv == 'center' || $argv == 'right') { $align = $argv; } else { $summary = htmlspecialchars($argv); } } } } } if ($base == '*') { $prefix = $base = ''; } else { $prefix = $base . '/'; } $r_base = rawurlencode($base); $s_base = htmlspecialchars($base); $r_prefix = rawurlencode($prefix); $s_prefix = htmlspecialchars($prefix); $yy = substr($date_str, 0, 4); $mm = substr($date_str, 4, 2); if ($yy != get_date('Y') || $mm != get_date('m')) { $other_month = 1; $now_day = 1; } else { $other_month = 0; $now_day = get_date('d'); } $today = getdate(mktime(0, 0, 0, $mm, $now_day, $yy)); $m_num = $today['mon']; $d_num = $today['mday']; $y_num = $today['year']; $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $y_num)); $wday = $f_today['wday']; $day = 1; $m_name = $y_num . '/' . $m_num; $y = substr($date_str, 0, 4) + 0; $m = substr($date_str, 4, 2) + 0; $prev_date_str = $m == 1 ? sprintf('%04d%02d', $y - 1, 12) : sprintf('%04d%02d', $y, $m - 1); $next_date_str = $m == 12 ? sprintf('%04d%02d', $y + 1, 1) : sprintf('%04d%02d', $y, $m + 1); $this_date_str = sprintf('%04d%02d', $y, $m); $page_YM = sprintf('%04d-%02d', $y, $m); $calendar_head = $calendar_week = $calendar_body = ''; // create header $calendar_head .= ' <a href="' . get_cmd_uri(PLUGIN_CALENDAR_ACTION, '', '', 'file=' . $r_base . '&date=' . $prev_date_str . '&mode=' . $mode) . '"><<</a>' . "\n" . ' <strong>' . $m_name . '</strong>' . "\n" . ' <a href="' . get_cmd_uri(PLUGIN_CALENDAR_ACTION, '', '', 'file=' . $r_base . '&date=' . $next_date_str . '&mode=' . $mode) . '">>></a>'; if ($prefix) { $calendar_head .= "\n" . ' <br />' . "\n" . '[<a href="' . get_cmd_uri(PLUGIN_CALENDAR_ACTION, '', '', 'file=' . $r_base . '&date=' . $this_date_str . '&mode=' . $mode) . '">' . $s_base . '</a>]'; } // create week label foreach ($weeklabels as $label) { $calendar_week .= ' <td class="calendar_td_week">' . $label . '</td>' . "\n"; } // Blank for ($i = 0; $i < $wday; $i++) { $calendar_body .= ' <td class="calendar_td_blank"> </td>' . "\n"; } while (checkdate($m_num, $day, $y_num)) { $dt = sprintf('%4d-%02d-%02d', $y_num, $m_num, $day); $page = $prefix . $dt; $s_page = htmlspecialchars($page); $h_today = public_holiday($y_num, $m_num, $day); $hday = $h_today['rc']; if ($wday == 0 and $day > 1) { $calendar_body .= " </tr>\n <tr>\n"; } $style = 'calendar_td_day'; // Weekday if (!$other_month && $day == $today['mday'] && $m_num == $today['mon'] && $y_num == $today['year']) { $style = 'calendar_td_today'; // Today } else { if ($hday != 0) { $style = 'calendar_td_sun'; // Holiday } else { if ($wday == 0) { $style = 'calendar_td_sun'; // Sunday } else { if ($wday == 6) { $style = 'calendar_td_sat'; // Saturday } } } } if (is_page($page)) { $link = '<a href="' . get_page_uri($page) . '" title="' . $s_page . '"><strong>' . $day . '</strong></a>'; } elseif ($read_only) { $link = $day; } else { $link = '<a href="' . get_cmd_uri('edit', $page, '', 'refer=' . $base) . '" title="' . $s_page . '">' . $day . '</a>'; } $calendar_body .= ' <td class="' . $style . '">' . $link . '</td>' . "\n"; $day++; $wday = ++$wday % 7; } if ($wday > 0) { while ($wday++ < 7) { $calendar_body .= ' <td class="calendar_td_blank"> </td>' . "\n"; } } $calstyle = ''; if ($align != '') { if ($around && $align != 'center') { $calstyle = 'float:' . $align . ';'; } $ex = $around ? '1ex' : 'auto'; if ($align == 'left') { $calstyle .= "margin:auto {$ex} auto 0px;"; } if ($align == 'right') { $calstyle .= "margin:auto 0px auto {$ex};"; } } if ($calstyle != '') { $calstyle = ' style="' . $calstyle . '"'; } $output .= <<<EOD <div class="ie5"> <table class="calendar"{$calstyle} border="0" cellspacing="1" summary="{$summary}"> <tr> <td class="calendar_td_caltop" colspan="7"> {$calendar_head} </td> </tr> <tr> {$calendar_week} </tr> <tr> {$calendar_body} </tr> </table> </div><!--/ie5/--> EOD; return $output; }