OSDN Git Service

ぱんだ:開発日記/2002-11-29参照
[pukiwiki/pukiwiki.git] / plugin / calendar2.inc.php
1 <?php
2 // $Id: calendar2.inc.php,v 1.11 2002/11/29 00:09:01 panda Exp $
3
4 function plugin_calendar2_convert()
5 {
6         global $script,$weeklabels,$vars,$command,$WikiName,$BracketName,$post,$get;
7         global $_calendar2_plugin_edit, $_calendar2_plugin_empty;
8         
9         $args = func_get_args();
10         
11         if(func_num_args() == 0)
12         {
13                 $date_str = date("Ym");
14                 $pre = strip_bracket($vars['page']);
15                 $prefix = strip_bracket($vars['page'])."/";
16         }
17         else if(func_num_args() == 1)
18         {
19                 if(is_numeric($args[0]) && strlen($args[0]) == 6)
20                 {
21                         $date_str = $args[0];
22                         $pre = strip_bracket($vars['page']);
23                         $prefix = strip_bracket($vars['page'])."/";
24                 }
25                 else
26                 {
27                         $date_str = date("Ym");
28                         $pre = strip_bracket($args[0]);
29                         $prefix = strip_bracket($args[0])."/";
30                 }
31         }
32         else if(func_num_args() == 2)
33         {
34                 if(is_numeric($args[0]) && strlen($args[0]) == 6)
35                 {
36                         $date_str = $args[0];
37                         $pre = strip_bracket($args[1]);
38                         $prefix = strip_bracket($args[1])."/";
39                 }
40                 else if(is_numeric($args[1]) && strlen($args[1]) == 6)
41                 {
42                         $date_str = $args[1];
43                         $pre = strip_bracket($args[0]);
44                         $prefix = strip_bracket($args[0]).'/';
45                 }
46                 else
47                 {
48                         $date_str = date("Ym");
49                         $pre = strip_bracket($vars[page]);
50                         $prefix = strip_bracket($vars[page])."/";
51                 }
52         }
53         else
54         {
55                 return FALSE;
56         }
57         if($pre == "*") {
58                 $prefix = '';
59                 $pre = '';
60         }
61         $prefix_ = rawurlencode($pre);
62         $prefix = strip_tags($prefix);
63         
64         if(!$command) $cmd = "read";
65         else          $cmd = $command;
66         
67         
68         $yr = substr($date_str,0,4);
69         $mon = substr($date_str,4,2);
70         if($yr != date("Y") || $mon != date("m")) {
71                 $now_day = 1;
72                 $other_month = 1;
73         }
74         else {
75                 $now_day = date("d");
76                 $other_month = 0;
77         }
78         $today = getdate(mktime(0,0,0,$mon,$now_day,$yr));
79         
80         $m_num = $today[mon];
81         $d_num = $today[mday];
82         $year = $today[year];
83         $f_today = getdate(mktime(0,0,0,$m_num,1,$year));
84         $wday = $f_today[wday];
85         $day = 1;
86         $fweek = true;
87
88         $m_name = "$year.$m_num ($cmd)";
89
90         if(!preg_match("/^(($WikiName)|($BracketName))$/",$pre))
91                 $prefix_url = "[[".$pre."]]";
92         else
93                 $prefix_url = $pre;
94
95         $prefix_url = rawurlencode($prefix_url);
96         $pre = strip_bracket($pre);
97         
98         $ret .= '<table border="0" width="100%"><tr><td valign="top">';
99         
100         $y = substr($date_str,0,4)+0;
101         $m = substr($date_str,4,2)+0;
102         
103         $prev_date_str = sprintf("%04d%02d",$y,$m-1);
104         if($m-1<1) {
105                 $prev_date_str = sprintf("%04d%02d",$y-1,12);
106         }
107         $next_date_str = sprintf("%04d%02d",$y,$m+1);
108         if($m+1>12) {
109                 $next_date_str = sprintf("%04d%02d",$y+1,1);
110         }
111         
112         if($prefix == "") {
113                 $ret .= '
114 <table class="style_calendar" cellspacing="1" width="150" border="0">
115   <tr>
116     <td align="middle" class="style_td_caltop" colspan="7">
117       <div class="small" style="text-align:center"><a href="'.$script.'?plugin=calendar2&amp;file='.$prefix_.'&amp;date='.$prev_date_str.'">&lt;&lt;</a> <strong>'.$m_name.'</strong> <a href="'.$script.'?plugin=calendar2&amp;file='.$prefix_.'&amp;date='.$next_date_str.'">&gt;&gt;</a></div>
118     </td>
119   </tr>
120   <tr>
121 ';
122         }
123         else {
124                 $ret .= '
125 <table class="style_calendar" cellspacing="1" width="150" border="0">
126   <tbody>
127   <tr>
128     <td align="middle" class="style_td_caltop" colspan="7">
129       <div class="small" style="text-align:center"><a href="'.$script.'?plugin=calendar2&amp;file='.$prefix_.'&amp;date='.$prev_date_str.'">&lt;&lt;</a> <strong>'.$m_name.'</strong> <a href="'.$script.'?plugin=calendar2&amp;file='.$prefix_.'&amp;date='.$next_date_str.'">&gt;&gt;</a><br />[<a href="'.$script.'?'.$prefix_url.'">'.$pre.'</a>]</div>
130     </td>
131   </tr>
132   <tr>
133 ';
134         }
135         
136         foreach($weeklabels as $label)
137         {
138                 $ret .= '
139     <td align="middle" class="style_td_week">
140       <div class="small" style="text-align:center"><strong>'.$label.'</strong></div>
141     </td>';
142         }
143
144         $ret .= "</tr>\n<tr>\n";
145
146         while(checkdate($m_num,$day,$year))
147         {
148                 $dt = sprintf("%4d-%02d-%02d", $year, $m_num, $day);
149                 $name = "$prefix$dt";
150                 $page = "[[$prefix$dt]]";
151                 $page_url = rawurlencode("[[$prefix$dt]]");
152                 
153                 if($cmd == "edit") $refer = "&amp;refer=$page_url";
154                 else               $refer = "";
155                 
156                 if($cmd == "read" && !is_page($page))
157                         $link = "<a href=\"$script?cmd=$cmd&amp;page=$page_url$refer\" title=\"$name\" class=\"small\">$day</a>";
158                 else
159                         $link = "<a href=\"$script?cmd=$cmd&amp;page=$page_url$refer\" title=\"$name\"><strong>$day</strong></a>";
160
161                 if($fweek)
162                 {
163                         for($i=0;$i<$wday;$i++)
164                         { // Blank 
165                                 $ret .= "    <td align=\"center\" class=\"style_td_blank\">&nbsp;</td>\n"; 
166                         } 
167                 $fweek=false;
168                 }
169
170                 if($wday == 0) $ret .= "  </tr><tr>\n";
171                 if(!$other_month && ($day == $today[mday]) && ($m_num == $today[mon]) && ($year == $today[year]))
172                 {
173                         //  Today 
174                         $ret .= "    <td align=\"center\" class=\"style_td_today\">$link</td>\n"; 
175                 }
176                 else if($wday == 0)
177                 {
178                         //  Sunday 
179                         $ret .= "    <td align=\"center\" class=\"style_td_sun\">$link</td>\n";
180                 }
181                 else if($wday == 6)
182                 {
183                         //  Saturday 
184                         $ret .= "    <td align=\"center\" class=\"style_td_sat\">$link</td>\n";
185                 }
186                 else
187                 {
188                         // Weekday 
189                         $ret .= "    <td align=\"center\" class=\"style_td\">$link</td>\n";
190                 }
191                 $day++;
192                 $wday++;
193                 $wday = $wday % 7;
194         }
195         if($wday > 0)
196         {
197                 while($wday < 7)
198                 { // Blank 
199                         $ret .= "    <td align=\"center\" class=\"style_td_blank\">&nbsp;</td>\n";
200                 $wday++;
201                 } 
202         }
203
204         $ret .= "  </tr>\n</table>\n";
205         
206         $page = sprintf("[[%s%4d-%02d-%02d]]", $prefix, $today[year], $today[mon], $today[mday]);
207         $page_url = rawurlencode($page);
208         if(is_page($page)) {
209                 $page_ = $vars['page'];
210                 $get['page'] = $post['page'] = $vars['page'] = $page;
211                 $str = convert_html(join("",file(get_filename(encode($page)))));
212                 $str .= "<hr /><a class=\"small\" href=\"$script?cmd=edit&amp;page=".rawurlencode($page)."\">$_calendar2_plugin_edit</a>";
213                 $get['page'] = $post['page'] = $vars['page'] = $page_;
214         }
215         else {
216                 $str = make_link(sprintf($_calendar2_plugin_empty,sprintf('[[%s%4d-%02d-%02d]]',$prefix, $today[year], $today[mon], $today[mday])));
217         }
218         
219         $ret .= "</td><td valign=\"top\">".$str."</td></tr></table>";
220         
221         return $ret;
222 }
223
224 function plugin_calendar2_action()
225 {
226         global $command,$vars;
227         
228         $command = 'read';
229         $page = strip_bracket($vars['page']);
230         $vars['page'] = '*';
231         if($vars['file']) $vars['page'] = $vars['file'];
232         
233         $date = $vars['date'];
234         if($date=='') {
235                 $date = date("Ym");
236         }
237         $yy = sprintf("%04d.%02d",substr($date,0,4),substr($date,4,2));
238         
239         $aryargs = array($vars['page'],$date);
240         $ret["msg"] = "calendar ".$vars['page']."/".$yy;
241         $ret["body"] = call_user_func_array("plugin_calendar2_convert",$aryargs);
242         
243         $vars['page'] = $page;
244         
245         return $ret;
246 }
247
248 ?>