OSDN Git Service

PKWK_READONLY prohibits basic_auth
[pukiwiki/pukiwiki.git] / plugin / new.inc.php
index 80862c6..219576f 100644 (file)
@@ -1,59 +1,72 @@
 <?php
-/////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
+// $Id: new.inc.php,v 1.6 2004/12/25 05:56:50 henoheno Exp $
 //
-// $Id: new.inc.php,v 1.1 2003/04/13 04:47:58 arino Exp $
-//
-
-// ¿·Ãåɽ¼¨¤Î´ü¸Â(Æü¿ô)
-define('NEW_LIMIT',3);
-
-// ´ü¸ÂÆâ¤Î¤È¤­É½¼¨¤¹¤ë¥¿¥°
-define('NEW_FORMAT','<span class="new">%s</span>');
+// New! plugin
 
-// É½¼¨¥Õ¥©¡¼¥Þ¥Ã¥È
-define('NEW_MESSAGE','<span class="comment_date">%s</span>');
+define('PLUGIN_NEW_FORMAT', '<span class="comment_date">%s</span>');
 
-// ¥Ç¥Õ¥©¥ë¥È¤Îɽ¼¨Ê¸»úÎó
-define('NEW_STR','New');
+function plugin_new_init()
+{
+       // Elapsed time => New! message with CSS
+       $messages['_plugin_new_elapses'] = array(
+               60 * 60 * 24 * 1 => ' <span class="new1" title="%s">New!</span>',  // 1day
+               60 * 60 * 24 * 5 => ' <span class="new5" title="%s">New</span>');  // 5days
+       set_plugin_messages($messages);
+}
 
 function plugin_new_inline()
 {
-       if (func_num_args() < 1)
-       {
-               return FALSE;
-       }
-       
+       global $vars, $_plugin_new_elapses;
+
+       $retval = '';
        $args = func_get_args();
-       
-       $date = array_pop($args);
-       if (($timestamp = strtotime($date)) === -1)
-       {
-               return FALSE;
+       $date = array_pop($args); // {date} always exists
+
+       if($date !== '') {
+               $usage = '&new([nodate]){date};';
+               if (func_num_args() > 2) return $usage;
+               $timestamp = strtotime($date);
+       } else {
+               $usage = '&new(pagename[,nolink]);';
+               if (func_num_args() > 3) return $usage;
        }
-       $timestamp -= LOCALZONE;
 
-       $str = NEW_STR;
-       $limit = NEW_LIMIT;
-       
-       switch (count($args))
-       {
-               case 2:
-                       $str = $args[1];
-               case 1:
-                       if (is_numeric($args[0]))
-                       {
-                               $limit = $args[0];
+       if (isset($timestamp) && $timestamp !== -1) {
+               // &new([nodate]){date};
+               $timestamp -= ZONETIME;
+               $nodate = in_array('nodate', $args);
+               $retval = $nodate ? '' : htmlspecialchars($date);
+       } else {
+               // &new(pagename[,nolink]);
+               $timestamp = 0;
+               $name = strip_bracket(! empty($args) ? array_shift($args) : $vars['page']);
+               $page = get_fullname($name, $vars['page']);
+               $nolink = in_array('nolink', $args);
+               if (substr($page, -1) == '/') {
+                       foreach (preg_grep('/^' . preg_quote($page, '/') . '/',
+                           get_existpages()) as $page) {
+                               $_timestamp = get_filetime($page);
+                               if ($timestamp < $_timestamp) {
+                                       // Show the latest page
+                                       $retval    = $nolink ? '' : make_pagelink($page);
+                                       $timestamp = $_timestamp;
+                               }
                        }
+               } else if (is_page($page)) {
+                       $retval    = $nolink ? '' : make_pagelink($page, $name);
+                       $timestamp = get_filetime($page);
+               }
+               if ($timestamp == 0) return '';
        }
-       $limit *= 60 * 60 * 24;
-       
-       $retval = htmlspecialchars($date);
-       
-       if ((UTIME - $timestamp) <= $limit)
-       {
-               $retval .= sprintf(NEW_FORMAT,htmlspecialchars($str));
+
+       $erapse = UTIME - $timestamp;
+       foreach ($_plugin_new_elapses as $limit=>$tag) {
+               if ($erapse <= $limit) {
+                       $retval .= sprintf($tag, get_passage($timestamp));
+                       break;
+               }
        }
-       return sprintf(NEW_MESSAGE,$retval);
+       return sprintf(PLUGIN_NEW_FORMAT, $retval);
 }
 ?>