OSDN Git Service

BugTrack/696 Ignore case about #freeze flag
[pukiwiki/pukiwiki.git] / plugin / template.inc.php
1 <?php
2 // $Id: template.inc.php,v 1.18 2004/10/09 08:25:29 henoheno Exp $
3
4 define('MAX_LEN',60);
5
6 function plugin_template_action()
7 {
8         global $script,$vars;
9         global $_title_edit;
10         global $_msg_template_start,$_msg_template_end,$_msg_template_page,$_msg_template_refer;
11         global $_btn_template_create,$_title_template;
12         global $_err_template_already,$_err_template_invalid,$_msg_template_force;
13
14         if (!array_key_exists('refer',$vars) or !is_page($vars['refer']))
15         {
16                 return FALSE;
17         }
18
19         $lines = get_source($vars['refer']);
20
21         // #freeze¤òºï½ü
22         if (! empty($lines) && strtolower(rtrim($lines[0])) == '#freeze')
23                 array_shift($lines);
24
25         $begin = (array_key_exists('begin',$vars) and is_numeric($vars['begin'])) ? $vars['begin'] : 0;
26         $end = (array_key_exists('end',$vars) and is_numeric($vars['end'])) ? $vars['end'] : count($lines) - 1;
27         if ($begin > $end)
28         {
29                 $temp = $begin;
30                 $begin = $end;
31                 $end = $temp;
32         }
33         $page = array_key_exists('page',$vars) ? $vars['page'] : '';
34         $is_page = is_page($page);
35
36         // edit
37         if ($is_pagename = is_pagename($page) and (!$is_page or !empty($vars['force'])))
38         {
39                 $postdata = join('',array_splice($lines,$begin,$end - $begin + 1));
40                 $retvar['msg'] = $_title_edit;
41                 $retvar['body'] = edit_form($vars['page'],$postdata);
42                 $vars['refer'] = $vars['page'];
43                 return $retvar;
44         }
45         $begin_select = $end_select = '';
46         for ($i = 0; $i < count($lines); $i++)
47         {
48                 $line = htmlspecialchars(mb_strimwidth($lines[$i],0,MAX_LEN,'...'));
49
50                 $tag = ($i == $begin) ? ' selected="selected"' : '';
51                 $begin_select .= "<option value=\"$i\"$tag>$line</option>\n";
52
53                 $tag = ($i == $end) ? ' selected="selected"' : '';
54                 $end_select .= "<option value=\"$i\"$tag>$line</option>\n";
55         }
56
57         $_page = htmlspecialchars($page);
58         $msg = $tag = '';
59         if ($is_page)
60         {
61                 $msg = $_err_template_already;
62                 $tag = '<input type="checkbox" name="force" value="1" />'.$_msg_template_force;
63         }
64         else if ($page != '' and !$is_pagename)
65         {
66                 $msg = str_replace('$1',$_page,$_err_template_invalid);
67         }
68
69         $s_refer = htmlspecialchars($vars['refer']);
70         $s_page = ($page == '') ? str_replace('$1',$s_refer,$_msg_template_page) : $_page;
71         $ret = <<<EOD
72 <form action="$script" method="post">
73  <div>
74   <input type="hidden" name="plugin" value="template" />
75   <input type="hidden" name="refer" value="$s_refer" />
76   $_msg_template_start <select name="begin" size="10">$begin_select</select><br /><br />
77   $_msg_template_end <select name="end" size="10">$end_select</select><br /><br />
78   $_msg_template_refer <input type="text" name="page" value="$s_page" />
79   <input type="submit" name="submit" value="$_btn_template_create" /> $tag
80  </div>
81 </form>
82 EOD;
83
84         $retvar['msg'] = ($msg == '') ? $_title_template : $msg;
85         $retvar['body'] = $ret;
86
87         return $retvar;
88 }
89 ?>