OSDN Git Service

Set dev site name - PukiWiki Developers' site
[pukiwiki/pukiwiki.git] / plugin / yetlist.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone
3 // $Id: yetlist.inc.php,v 1.29 2011/01/25 15:01:01 henoheno Exp $
4 // Copyright (C) 2001-2006 PukiWiki Developers Team
5 // License: GPL v2 or (at your option) any later version
6 //
7 // Yet list plugin - Show a list of dangling links (not yet created)
8
9 function plugin_yetlist_action()
10 {
11         global $_title_yetlist, $_err_notexist, $_symbol_noexists, $non_list;
12         global $whatsdeleted;
13
14         $retval = array('msg' => $_title_yetlist, 'body' => '');
15
16         // Diff
17         $pages = array_diff(get_existpages(CACHE_DIR, '.ref'), get_existpages());
18         if (empty($pages)) {
19                 $retval['body'] = $_err_notexist;
20                 return $retval;
21         }
22
23         $empty = TRUE;
24
25         // Load .ref files and Output
26         $script      = get_script_uri();
27         $refer_regex = '/' . $non_list . '|^' . preg_quote($whatsdeleted, '/') . '$/S';
28         asort($pages, SORT_STRING);
29         foreach ($pages as $file=>$page) {
30                 $refer = array();
31                 foreach (file(CACHE_DIR . $file) as $line) {
32                         list($_page) = explode("\t", rtrim($line));
33                         $refer[] = $_page;
34                 }
35                 // Diff
36                 $refer = array_diff($refer, preg_grep($refer_regex, $refer));
37                 if (! empty($refer)) {
38                         $empty = FALSE;
39                         $refer = array_unique($refer);
40                         sort($refer, SORT_STRING);
41
42                         $r_refer = '';
43                         $link_refs = array();
44                         foreach ($refer as $_refer) {
45                                 $r_refer = pagename_urlencode($_refer);
46                                 $link_refs[] = '<a href="' . $script . '?' . $r_refer . '">' .
47                                         htmlsc($_refer) . '</a>';
48                         }
49                         $link_ref = join(' ', $link_refs);
50                         unset($link_refs);
51
52                         $s_page = htmlsc($page);
53                         if (PKWK_READONLY) {
54                                 $href = $s_page;
55                         } else {
56                                 // Dangling link
57                                 $href = '<span class="noexists">' . $s_page . '<a href="' .
58                                         $script . '?cmd=edit&amp;page=' . rawurlencode($page) .
59                                         '&amp;refer=' . $r_refer . '">' . $_symbol_noexists .
60                                         '</a></span>';
61                         }
62                         $retval['body'] .= '<li>' . $href . ' <em>(' . $link_ref . ')</em></li>' . "\n";
63                 }
64         }
65
66         if ($empty) {
67                 $retval['body'] = $_err_notexist;
68                 return $retval;
69         }
70
71         if ($retval['body'] != '')
72                 $retval['body'] = '<ul>' . "\n" . $retval['body'] . '</ul>' . "\n";
73
74         return $retval;
75 }
76