OSDN Git Service

Set dev site name - PukiWiki Developers' site
[pukiwiki/pukiwiki.git] / plugin / calendar.inc.php
1 <?php
2 // $Id: calendar.inc.php,v 1.22 2011/01/25 15:01:01 henoheno Exp $
3 // Copyright (C)
4 //   2002-2003,2005 PukiWiki Developers Team
5 //   2001-2002 Originally written by yu-ji
6 // License: GPL v2 or (at your option) any later version
7 //
8 // Calendar plugin
9
10 function plugin_calendar_convert()
11 {
12         global $script, $weeklabels, $vars, $command;
13
14         $args     = func_get_args();
15         $date_str = get_date('Ym');
16         $page     = '';
17
18         if (func_num_args() == 1) {
19                 if (is_numeric($args[0]) && strlen($args[0]) == 6) {
20                         $date_str = $args[0];
21                 } else {
22                         $page     = $args[0];
23                 }
24         } else if (func_num_args() == 2) {
25                 if (is_numeric($args[0]) && strlen($args[0]) == 6) {
26                         $date_str = $args[0];
27                         $page     = $args[1];
28                 } else if (is_numeric($args[1]) && strlen($args[1]) == 6) {
29                         $date_str = $args[1];
30                         $page     = $args[0];
31                 }
32         }
33
34         if ($page == '') {
35                 $page = $vars['page'];
36         } else if (! is_pagename($page)) {
37                 return FALSE;
38         }
39         $pre    = $page;
40         $prefix = $page . '/';
41
42
43         if (! $command) {
44                 $cmd = 'read';
45         } else {
46                 $cmd = $command;
47         }
48
49         $prefix = strip_tags($prefix);
50
51         $yr  = substr($date_str, 0, 4);
52         $mon = substr($date_str, 4, 2);
53         if ($yr != get_date('Y') || $mon != get_date('m')) {
54                 $now_day = 1;
55                 $other_month = 1;
56         } else {
57                 $now_day     = get_date('d');
58                 $other_month = 0;
59         }
60         $today = getdate(mktime(0, 0, 0, $mon, $now_day, $yr) - LOCALZONE + ZONETIME);
61
62         $m_num = $today['mon'];
63         $d_num = $today['mday'];
64         $year  = $today['year'];
65         $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $year) - LOCALZONE + ZONETIME);
66         $wday  = $f_today['wday'];
67         $day   = 1;
68
69         $m_name = $year . '.' . $m_num . ' (' . $cmd . ')';
70
71         $prefix_url = rawurlencode(is_pagename($pre) ? $pre : '[[' . $pre . ']]');
72         $pre = strip_bracket($pre);
73
74         $ret = <<<EOD
75 <table class="style_calendar" cellspacing="1" width="150" border="0">
76  <tr>
77   <td class="style_td_caltop" colspan="7">
78    <strong>$m_name</strong><br />
79    [<a href="$script?$prefix_url">$pre</a>]
80   </td>
81  </tr>
82  <tr>
83 EOD;
84
85         foreach($weeklabels as $label)
86                 $ret .= '  <td class="style_td_week"><strong>' .
87                         $label . '</strong></td>' . "\n";
88
89         $ret .= ' </tr>' . "\n" .
90                 ' <tr>'  . "\n";
91
92         // Blank
93         for ($i = 0; $i < $wday; $i++)
94                 $ret .= '    <td class="style_td_blank">&nbsp;</td>' . "\n";
95
96         while(checkdate($m_num, $day, $year)) {
97                 $dt     = sprintf('%04d%02d%02d', $year, $m_num, $day);
98                 $name   = $prefix . $dt;
99                 $r_page = rawurlencode($name);
100                 $s_page = htmlsc($name);
101
102                 $refer = ($cmd == 'edit') ? '&amp;refer=' . rawurlencode($page) : '';
103
104                 if ($cmd == 'read' && ! is_page($name)) {
105                         $link = '<strong>' . $day . '</strong>';
106                 } else {
107                         $link = '<a href="' . $script . '?cmd=' . $cmd .
108                                 '&amp;page=' . $r_page . $refer . '" title="' .
109                                 $s_page . '"><strong>' . $day . '</strong></a>';
110                 }
111
112                 if ($wday == 0 && $day > 1) {
113                         $ret .= '  </tr><tr>' . "\n";
114                 }
115                 if (! $other_month && ($day == $today['mday']) &&
116                         ($m_num == $today['mon']) && ($year == $today['year']))
117                 {
118                         //  Today
119                         $ret .= '    <td class="style_td_today"><span class="small">' .
120                                 $link . '</span></td>' . "\n";
121                 } else if ($wday == 0) {
122                         //  Sunday
123                         $ret .= '    <td class="style_td_sun"><span class="small">' .
124                                 $link . '</span></td>' . "\n";
125                 } else if ($wday == 6) {
126                         //  Saturday
127                         $ret .= '    <td class="style_td_sat"><span class="small">' .
128                                 $link . '</span></td>' . "\n";
129                 } else {
130                         // Weekday
131                         $ret .= '    <td class="style_td_day"><span class="small">' .
132                                 $link . '</span></td>' . "\n";
133                 }
134                 ++$day;
135                 ++$wday;
136                 $wday = $wday % 7;
137         }
138
139         if ($wday > 0) {
140                 while($wday < 7){
141                         // Blank
142                         $ret .= '    <td class="style_td_blank">&nbsp;</td>' . "\n";
143                         ++$wday;
144                 }
145         }
146
147         $ret .= '  </tr>'  . "\n" .
148                 '</table>' . "\n";
149
150         return $ret;
151 }
152 ?>