OSDN Git Service

BugTrack/791: Fix typo 0,91 => 0.91
[pukiwiki/pukiwiki.git] / plugin / calendar2.inc.php
1 <?php
2 // $Id: calendar2.inc.php,v 1.22 2005/01/26 13:20:26 henoheno Exp $
3 // *°ú¿ô¤Ëoff¤È½ñ¤¯¤³¤È¤Çº£Æü¤ÎÆüµ­¤òɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë¤·¤¿¡£
4 function plugin_calendar2_convert()
5 {
6         global $script,$vars,$post,$get,$weeklabels,$WikiName,$BracketName;
7         global $_calendar2_plugin_edit, $_calendar2_plugin_empty;
8
9         $today_view = TRUE;
10
11         $date_str = get_date('Ym');
12         $base = strip_bracket($vars['page']);
13
14         if (func_num_args() > 0) {
15                 $args = func_get_args();
16                 foreach ($args as $arg) {
17                         if (is_numeric($arg) && strlen($arg) == 6) {
18                                 $date_str = $arg;
19                         }
20                         else if ($arg == 'off') {
21                                 $today_view = FALSE;
22                         }
23                         else {
24                                 $base = strip_bracket($arg);
25                         }
26                 }
27         }
28         if ($base == '*') {
29                 $base = '';
30                 $prefix = '';
31         }
32         else {
33                 $prefix = $base.'/';
34         }
35         $r_base = rawurlencode($base);
36         $s_base = htmlspecialchars($base);
37         $r_prefix = rawurlencode($prefix);
38         $s_prefix = htmlspecialchars($prefix);
39
40         $yr = substr($date_str,0,4);
41         $mon = substr($date_str,4,2);
42
43         if ($yr != get_date('Y') || $mon != get_date('m')) {
44                 $now_day = 1;
45                 $other_month = 1;
46         }
47         else {
48                 $now_day = get_date('d');
49                 $other_month = 0;
50         }
51
52         $today = getdate(mktime(0,0,0,$mon,$now_day,$yr) - LOCALZONE + ZONETIME);
53
54         $m_num = $today['mon'];
55         $d_num = $today['mday'];
56         $year = $today['year'];
57
58         $f_today = getdate(mktime(0,0,0,$m_num,1,$year) - LOCALZONE + ZONETIME);
59         $wday = $f_today['wday'];
60         $day = 1;
61
62         $m_name = "$year.$m_num";
63
64         $y = substr($date_str,0,4)+0;
65         $m = substr($date_str,4,2)+0;
66
67         $prev_date_str = ($m == 1) ?
68                 sprintf('%04d%02d',$y - 1,12) : sprintf('%04d%02d',$y,$m - 1);
69
70         $next_date_str = ($m == 12) ?
71                 sprintf('%04d%02d',$y + 1,1) : sprintf('%04d%02d',$y,$m + 1);
72
73         $ret = '';
74         if ($today_view) {
75                 $ret = "<table border=\"0\" summary=\"calendar frame\">\n <tr>\n  <td valign=\"top\">\n";
76         }
77         $ret .= <<<EOD
78    <table class="style_calendar" cellspacing="1" width="150" border="0" summary="calendar body">
79     <tr>
80      <td class="style_td_caltop" colspan="7">
81       <a href="$script?plugin=calendar2&amp;file=$r_base&amp;date=$prev_date_str">&lt;&lt;</a>
82       <strong>$m_name</strong>
83       <a href="$script?plugin=calendar2&amp;file=$r_base&amp;date=$next_date_str">&gt;&gt;</a>
84 EOD;
85
86         if ($prefix) {
87                 $ret .= "\n      <br />[<a href=\"$script?$r_base\">$s_base</a>]";
88         }
89
90         $ret .= "\n     </td>\n    </tr>\n    <tr>\n";
91
92         foreach($weeklabels as $label) {
93                 $ret .= "     <td class=\"style_td_week\">$label</td>\n";
94         }
95
96         $ret .= "    </tr>\n    <tr>\n";
97         // Blank
98         for ($i = 0; $i < $wday; $i++) {
99                 $ret .= "     <td class=\"style_td_blank\">&nbsp;</td>\n";
100         }
101
102         while (checkdate($m_num,$day,$year)) {
103                 $dt = sprintf('%4d-%02d-%02d', $year, $m_num, $day);
104                 $page = $prefix.$dt;
105                 $r_page = rawurlencode($page);
106                 $s_page = htmlspecialchars($page);
107
108                 if ($wday == 0 and $day > 1) {
109                         $ret .= "    </tr>\n    <tr>\n";
110                 }
111
112                 $style = 'style_td_day'; // Weekday
113                 if (!$other_month && ($day == $today['mday']) && ($m_num == $today['mon']) && ($year == $today['year'])) { // Today
114                         $style = 'style_td_today';
115                 }
116                 else if ($wday == 0) { // Sunday
117                         $style = 'style_td_sun';
118                 }
119                 else if ($wday == 6) { //  Saturday
120                         $style = 'style_td_sat';
121                 }
122
123                 if (is_page($page)) {
124                         $link = '<a href="' . $script . '?' . $r_page . '" title="' . $s_page .
125                                 '"><strong>' . $day . '</strong></a>';
126                 } else {
127                         if (PKWK_READONLY) {
128                                 $link = '<span class="small">' . $day . '</small>';
129                         } else {
130                                 $link = $script . '?cmd=edit&amp;page=' . $r_page . '&amp;refer=' . $r_base;
131                                 $link = '<a class="small" href="' . $link . '" title="' . $s_page . '">' . $day . '</a>';
132                         }
133                 }
134
135                 $ret .= '     <td class="' . $style . '">' . "\n" .
136                         '      ' . $link . "\n" .
137                         '     </td>' . "\n";
138                 ++$day;
139                 $wday = ++$wday % 7;
140         }
141         if ($wday > 0) {
142                 while ($wday++ < 7) { // Blank
143                         $ret .= "     <td class=\"style_td_blank\">&nbsp;</td>\n";
144                 }
145         }
146
147         $ret .= "    </tr>\n   </table>\n";
148
149         if ($today_view) {
150                 $tpage = $prefix.sprintf("%4d-%02d-%02d", $today['year'], $today['mon'], $today['mday']);
151                 $r_tpage = rawurlencode($tpage);
152                 if (is_page($tpage)) {
153                         $_page = $vars['page'];
154                         $get['page'] = $post['page'] = $vars['page'] = $tpage;
155                         $str = convert_html(get_source($tpage));
156                         $str .= "<hr /><a class=\"small\" href=\"$script?cmd=edit&amp;page=$r_tpage\">$_calendar2_plugin_edit</a>";
157                         $get['page'] = $post['page'] = $vars['page'] = $_page;
158                 }
159                 else {
160                         $str = sprintf($_calendar2_plugin_empty,make_pagelink(sprintf('%s%4d-%02d-%02d',$prefix, $today['year'], $today['mon'], $today['mday'])));
161                 }
162                 $ret .= "  </td>\n  <td valign=\"top\">$str</td>\n </tr>\n</table>\n";
163         }
164
165         return $ret;
166 }
167
168 function plugin_calendar2_action()
169 {
170         global $vars;
171
172         $page = strip_bracket($vars['page']);
173         $vars['page'] = '*';
174         if ($vars['file'])
175         {
176                 $vars['page'] = $vars['file'];
177         }
178
179         $date = $vars['date'];
180
181         if ($date == '')
182         {
183                 $date = get_date("Ym");
184         }
185         $yy = sprintf("%04d.%02d",substr($date,0,4),substr($date,4,2));
186
187         $aryargs = array($vars['page'],$date);
188         $s_page = htmlspecialchars($vars['page']);
189
190         $ret['msg'] = "calendar $s_page/$yy";
191         $ret['body'] = call_user_func_array('plugin_calendar2_convert',$aryargs);
192
193         $vars['page'] = $page;
194
195         return $ret;
196 }
197
198 ?>