OSDN Git Service

7440fb4342b34e9c9c6f1a27ba5b6de880c15931
[pukiwiki/pukiwiki.git] / plugin / yetlist.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone
3 // $Id: yetlist.inc.php,v 1.24 2006/05/05 02:32:52 henoheno Exp $
4 // Copyright (C) 2001-2005 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_notexisto, $_symbol_noexists, $non_list;
12
13         $retval = array('msg' => $_title_yetlist, 'body' => '');
14
15         // Diff
16         $pages = get_existpages(CACHE_DIR, '.ref');
17         $pages = array_diff($pages, preg_grep('/' . $non_list . '/S', $pages), get_existpages());
18         asort($pages, SORT_STRING);
19
20         // Load .ref files
21         $refer = array();
22         foreach ($pages as $file=>$page) {
23                 foreach (file(CACHE_DIR . $file) as $line) {
24                         list($_page) = explode("\t", rtrim($line));
25                         $refer[$page][] = $_page;
26                 }
27                 if (isset($refer[$page])) {
28                         $refer[$page] = array_unique($refer[$page]);
29                         sort($refer[$page], SORT_STRING);
30                 }
31         }
32         if (empty($refer)) {
33                 $retval['body'] = $_err_notexist;
34                 return $retval;
35         }
36
37         // Output
38         $script = get_script_uri();
39         foreach ($refer as $page=>$refs) {
40                 $r_page = rawurlencode($page);
41                 $s_page = htmlspecialchars($page);
42
43                 $r_refer = '';
44                 $link_refs = array();
45                 foreach ($refs as $_refer) {
46                         $r_refer = rawurlencode($_refer);
47                         $link_refs[] = '<a href="' . $script . '?' . $r_refer . '">' .
48                                 htmlspecialchars($_refer) . '</a>';
49                 }
50                 $link_ref = join(' ', $link_refs);
51
52                 if (PKWK_READONLY) {
53                         $href = $s_page;
54                 } else {
55                         // Show edit link
56                         // $r_refer is the last one if there're multiple refer pages
57                         $href = '<span class="noexists">' . $s_page . '<a href="' .
58                                 $script . '?cmd=edit&amp;page=' . $r_page .
59                                 '&amp;refer=' . $r_refer . '">' . $_symbol_noexists .
60                                 '</a></span>';
61                 }
62                 $retval['body'] .= '<li>' . $href . ' <em>(' . $link_ref . ')</em></li>' . "\n";
63                 unset($refer[$page]);
64         }
65
66         if ($retval['body'] != '')
67                 $retval['body'] = '<ul>' . "\n" . $retval['body'] . '</ul>' . "\n";
68
69         return $retval;
70 }
71 ?>