OSDN Git Service

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