OSDN Git Service

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