OSDN Git Service

BugTrack2/175: Correct r1.25
[pukiwiki/pukiwiki.git] / plugin / yetlist.inc.php
index db76313..4accf43 100644 (file)
@@ -1,71 +1,76 @@
 <?php
-/////////////////////////////////////////////////
-// PukiWiki - Yet another WikiWikiWeb clone.
-//
-// $Id: yetlist.inc.php,v 1.12 2003/03/02 02:41:30 panda Exp $
+// PukiWiki - Yet another WikiWikiWeb clone
+// $Id: yetlist.inc.php,v 1.28 2006/05/07 03:55:26 henoheno Exp $
+// Copyright (C) 2001-2006 PukiWiki Developers Team
+// License: GPL v2 or (at your option) any later version
 //
+// Yet list plugin - Show a list of dangling links (not yet created)
 
-function plugin_yetlist_init()
-{
-       if (LANG == 'ja')
-       {
-               $messages = array(
-                       '_title_yetlist'    => '̤ºîÀ®¤Î¥Ú¡¼¥¸°ìÍ÷'
-               );
-       }
-       else
-       {
-               $messages = array(
-                       '_title_yetlist'    => 'List of pages, are not made yet'
-               );
-       }
-       set_plugin_messages($messages);
-}
 function plugin_yetlist_action()
 {
-       global $script;
-       global $_title_yetlist;
-       
-       $ret['msg'] = $_title_yetlist;
-       $ret['body'] = '';
-       
-       $refer = array();
-       foreach (get_existpages() as $page) {
-               $obj = new InlineConverter(array('page','auto'));
-               $source = join("\n",preg_replace('/^(\s|\/\/|#).*$/','',get_source($page)));
-               foreach ($obj->get_objects($source,$page) as $_obj) {
-                       if (($_obj->name != '') and ($_obj->type == 'pagename') and !is_page($_obj->name)) {
-                               $refer[$_obj->name][] = $page;
-                       }
-               }
-       }
-       
-       if (count($refer) == 0) {
-               return $ret;
+       global $_title_yetlist, $_err_notexist, $_symbol_noexists, $non_list;
+       global $whatsdeleted;
+
+       $retval = array('msg' => $_title_yetlist, 'body' => '');
+
+       // Diff
+       $pages = array_diff(get_existpages(CACHE_DIR, '.ref'), get_existpages());
+       if (empty($pages)) {
+               $retval['body'] = $_err_notexist;
+               return $retval;
        }
-       
-       ksort($refer);
-       
-       foreach($refer as $page=>$refs) {
-               $r_page = rawurlencode($page);
-               $s_page = htmlspecialchars($page);
-               
-               $link_refs = array();
-               foreach(array_unique($refs) as $_refer) {
-                       $r_refer = rawurlencode($_refer);
-                       $s_refer = htmlspecialchars($_refer);
-                       
-                       $link_refs[] = "<a href=\"$script?$r_refer\">$s_refer</a>";
+
+       $empty = TRUE;
+
+       // Load .ref files and Output
+       $script      = get_script_uri();
+       $refer_regex = '/' . $non_list . '|^' . preg_quote($whatsdeleted, '/') . '$/S';
+       asort($pages, SORT_STRING);
+       foreach ($pages as $file=>$page) {
+               $refer = array();
+               foreach (file(CACHE_DIR . $file) as $line) {
+                       list($_page) = explode("\t", rtrim($line));
+                       $refer[] = $_page;
+               }
+               // Diff
+               $refer = array_diff($refer, preg_grep($refer_regex, $refer));
+               if (! empty($refer)) {
+                       $empty = FALSE;
+                       $refer = array_unique($refer);
+                       sort($refer, SORT_STRING);
+
+                       $r_refer = '';
+                       $link_refs = array();
+                       foreach ($refer as $_refer) {
+                               $r_refer = rawurlencode($_refer);
+                               $link_refs[] = '<a href="' . $script . '?' . $r_refer . '">' .
+                                       htmlspecialchars($_refer) . '</a>';
+                       }
+                       $link_ref = join(' ', $link_refs);
+                       unset($link_refs);
+
+                       $s_page = htmlspecialchars($page);
+                       if (PKWK_READONLY) {
+                               $href = $s_page;
+                       } else {
+                               // Dangling link
+                               $href = '<span class="noexists">' . $s_page . '<a href="' .
+                                       $script . '?cmd=edit&amp;page=' . rawurlencode($page) .
+                                       '&amp;refer=' . $r_refer . '">' . $_symbol_noexists .
+                                       '</a></span>';
+                       }
+                       $retval['body'] .= '<li>' . $href . ' <em>(' . $link_ref . ')</em></li>' . "\n";
                }
-               $link_ref = join(' ',$link_refs);
-               // »²¾È¸µ¥Ú¡¼¥¸¤¬Ê£¿ô¤¢¤Ã¤¿¾ì¹ç¡¢refer¤ÏºÇ¸å¤Î¥Ú¡¼¥¸¤ò»Ø¤¹(¤¤¤¤¤Î¤«¤Ê)
-               $ret['body'] .= "<li><a href=\"$script?cmd=edit&amp;page=$r_page&amp;refer=$r_refer\">$s_page</a> <em>($link_ref)</em></li>\n";
        }
-       
-       if ($ret['body'] != '') {
-               $ret['body'] = "<ul>\n{$ret['body']}</ul>\n";
+
+       if ($empty) {
+               $retval['body'] = $_err_notexist;
+               return $retval;
        }
-       
-       return $ret;
+
+       if ($retval['body'] != '')
+               $retval['body'] = '<ul>' . "\n" . $retval['body'] . '</ul>' . "\n";
+
+       return $retval;
 }
 ?>