OSDN Git Service

BugTrack/2514 PHP8: uasort with non-static comparison func
[pukiwiki/pukiwiki.git] / plugin / back.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // back.inc.php
4 // Copyright
5 //   2003-2018 PukiWiki Development Team
6 //   2002      Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
7 //
8 // back plugin
9
10 // Allow specifying back link by page name and anchor, or
11 // by relative or site-abusolute path
12 define('PLUGIN_BACK_ALLOW_PAGELINK', PKWK_SAFE_MODE); // FALSE(Compat), TRUE
13
14 // Allow JavaScript (Compat)
15 define('PLUGIN_BACK_ALLOW_JAVASCRIPT', TRUE); // TRUE(Compat), FALSE
16
17 // ----
18 define('PLUGIN_BACK_USAGE', '#back([text],[center|left|right][,0(no hr)[,Page-or-URI-to-back]])');
19 function plugin_back_convert()
20 {
21         global $_msg_back_word, $script;
22
23         if (func_num_args() > 4) return PLUGIN_BACK_USAGE;
24         list($word, $align, $hr, $href) = array_pad(func_get_args(), 4, '');
25
26         $word = trim($word);
27         $word = ($word == '') ? $_msg_back_word : htmlsc($word);
28
29         $align = strtolower(trim($align));
30         switch($align){
31         case ''      : $align = 'center';
32                        /*FALLTHROUGH*/
33         case 'center': /*FALLTHROUGH*/
34         case 'left'  : /*FALLTHROUGH*/
35         case 'right' : break;
36         default      : return PLUGIN_BACK_USAGE;
37         }
38
39         $hr = (trim($hr) != '0') ? '<hr class="full_hr" />' . "\n" : '';
40
41         $link = TRUE;
42         $href = trim($href);
43         if ($href != '') {
44                 if (PLUGIN_BACK_ALLOW_PAGELINK) {
45                         if (is_url($href)) {
46                                 $href = htmlsc($href);
47                         } else {
48                                 $refer = isset($vars['page']) ? $vars['page'] : '';
49                                 $array = anchor_explode($href);
50                                 $page = get_fullname($array[0], $refer);
51                                 if (! is_pagename($page)) {
52                                         return PLUGIN_BACK_USAGE;
53                                 }
54                                 $anchor = ($array[1] != '') ? '#' . rawurlencode($array[1]) : '';
55                                 $href = get_page_uri($page) .  $anchor;
56                                 $link = is_page($page);
57                         }
58                 } else {
59                         if (is_url($href)) {
60                                 $href = htmlsc($href);
61                         } else {
62                                 return PLUGIN_BACK_USAGE . ': Set a page name or an URI';
63                         }
64                 }
65         } else {
66                 if (! PLUGIN_BACK_ALLOW_JAVASCRIPT)
67                         return PLUGIN_BACK_USAGE . ': Set a page name or an URI';
68                 $href  = 'javascript:history.go(-1)';
69         }
70
71         if($link){
72                 // Normal link
73                 return $hr . '<div style="text-align:' . $align . '">' .
74                         '[ <a href="' . $href . '">' . $word . '</a> ]</div>' . "\n";
75         } else {
76                 // Dangling link
77                 return $hr . '<div style="text-align:' . $align . '">' .
78                         '[ <span class="noexists">' . $word . '<a href="' . $href .
79                         '">?</a></span> ]</div>' . "\n";
80         }
81 }