OSDN Git Service

PKWK_READONLY prohibits basic_auth
[pukiwiki/pukiwiki.git] / plugin / new.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // $Id: new.inc.php,v 1.6 2004/12/25 05:56:50 henoheno Exp $
4 //
5 // New! plugin
6
7 define('PLUGIN_NEW_FORMAT', '<span class="comment_date">%s</span>');
8
9 function plugin_new_init()
10 {
11         // Elapsed time => New! message with CSS
12         $messages['_plugin_new_elapses'] = array(
13                 60 * 60 * 24 * 1 => ' <span class="new1" title="%s">New!</span>',  // 1day
14                 60 * 60 * 24 * 5 => ' <span class="new5" title="%s">New</span>');  // 5days
15         set_plugin_messages($messages);
16 }
17
18 function plugin_new_inline()
19 {
20         global $vars, $_plugin_new_elapses;
21
22         $retval = '';
23         $args = func_get_args();
24         $date = array_pop($args); // {date} always exists
25
26         if($date !== '') {
27                 $usage = '&new([nodate]){date};';
28                 if (func_num_args() > 2) return $usage;
29                 $timestamp = strtotime($date);
30         } else {
31                 $usage = '&new(pagename[,nolink]);';
32                 if (func_num_args() > 3) return $usage;
33         }
34
35         if (isset($timestamp) && $timestamp !== -1) {
36                 // &new([nodate]){date};
37                 $timestamp -= ZONETIME;
38                 $nodate = in_array('nodate', $args);
39                 $retval = $nodate ? '' : htmlspecialchars($date);
40         } else {
41                 // &new(pagename[,nolink]);
42                 $timestamp = 0;
43                 $name = strip_bracket(! empty($args) ? array_shift($args) : $vars['page']);
44                 $page = get_fullname($name, $vars['page']);
45                 $nolink = in_array('nolink', $args);
46                 if (substr($page, -1) == '/') {
47                         foreach (preg_grep('/^' . preg_quote($page, '/') . '/',
48                             get_existpages()) as $page) {
49                                 $_timestamp = get_filetime($page);
50                                 if ($timestamp < $_timestamp) {
51                                         // Show the latest page
52                                         $retval    = $nolink ? '' : make_pagelink($page);
53                                         $timestamp = $_timestamp;
54                                 }
55                         }
56                 } else if (is_page($page)) {
57                         $retval    = $nolink ? '' : make_pagelink($page, $name);
58                         $timestamp = get_filetime($page);
59                 }
60                 if ($timestamp == 0) return '';
61         }
62
63         $erapse = UTIME - $timestamp;
64         foreach ($_plugin_new_elapses as $limit=>$tag) {
65                 if ($erapse <= $limit) {
66                         $retval .= sprintf($tag, get_passage($timestamp));
67                         break;
68                 }
69         }
70         return sprintf(PLUGIN_NEW_FORMAT, $retval);
71 }
72 ?>