2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: backup.inc.php,v 1.14 2004/07/31 03:09:20 henoheno Exp $
8 function plugin_backup_action()
10 global $script, $vars, $do_backup, $hr;
11 global $_msg_backuplist, $_msg_diff, $_msg_nowdiff, $_msg_source, $_msg_backup;
12 global $_msg_view, $_msg_goto, $_msg_deleted, $_msg_addline, $_msg_delline;
13 global $_title_backupdiff, $_title_backupnowdiff, $_title_backupsource;
14 global $_title_backup, $_title_pagebackuplist, $_title_backuplist;
19 $page = isset($vars['page']) ? $vars['page'] : '';
20 $s_page = $r_page = '';
22 check_readable($page, true, true);
23 $s_page = htmlspecialchars($page);
24 $r_page = rawurlencode($page);
26 return array('msg'=>$_title_backuplist, 'body'=>get_backup_list_all());
29 $action = isset($vars['action']) ? $vars['action'] : '';
30 $s_action = $r_action = '';
32 if ($action == 'delete') {
33 return plugin_backup_delete($page);
35 $s_action = htmlspecialchars($action);
36 $r_action = rawurlencode($action);
39 $s_age = (isset($vars['age']) && is_numeric($vars['age'])) ? $vars['age'] : 0;
41 return array( 'msg'=>$_title_pagebackuplist, 'body'=>get_backup_list($page));
45 $body .= " <li><a href=\"$script?cmd=backup\">$_msg_backuplist</a></li>\n";
47 $href = "$script?cmd=backup&page=$r_page&age=$s_age";
48 $is_page = is_page($page);
51 if ($action != 'diff')
52 $body .= ' <li>' . str_replace('$1', "<a href=\"$href&action=diff\">$_msg_diff</a>", $_msg_view) . "</li>\n";
53 if ($action != 'nowdiff')
54 $body .= ' <li>' . str_replace('$1', "<a href=\"$href&action=nowdiff\">$_msg_nowdiff</a>", $_msg_view) . "</li>\n";
57 if ($action != 'source')
58 $body .= ' <li>' . str_replace('$1', "<a href=\"$href&action=source\">$_msg_source</a>", $_msg_view) . "</li>\n";
61 $body .= ' <li>' . str_replace('$1', "<a href=\"$href\">$_msg_backup</a>", $_msg_view) . "</li>\n";
64 $body .= ' <li>' . str_replace('$1', "<a href=\"$script?$r_page\">$s_page</a>", $_msg_goto) . "\n";
66 $body .= ' <li>' . str_replace('$1', $s_page, $_msg_deleted) . "\n";
69 $backups = get_backup($page);
70 if (count($backups) > 0)
73 foreach($backups as $age => $val)
75 $date = format_date($val['time'],TRUE);
76 $body .= ($age == $s_age) ?
77 " <li><em>$age $date</em></li>\n" :
78 " <li><a href=\"$script?cmd=backup&action=$r_action&page=$r_page&age=$age\">$age $date</a></li>\n";
85 if ($action == 'diff')
87 $old = ($s_age > 1) ? join('',$backups[$s_age - 1]['data']) : '';
88 $cur = join('',$backups[$s_age]['data']);
89 $body .= plugin_backup_diff(do_diff($old,$cur));
91 return array('msg'=>str_replace('$2',$s_age,$_title_backupdiff),'body'=>$body);
93 else if ($s_action == 'nowdiff')
95 $old = join('',$backups[$s_age]['data']);
96 $cur = join('',get_source($page));
97 $body .= plugin_backup_diff(do_diff($old,$cur));
99 return array('msg'=>str_replace('$2',$s_age,$_title_backupnowdiff),'body'=>$body);
101 else if ($s_action == 'source')
103 $body .= "<pre>".htmlspecialchars(join('',$backups[$s_age]['data']))."</pre>\n";
105 return array('msg'=>str_replace('$2',$s_age,$_title_backupsource),'body'=>$body);
108 $body .= "$hr\n".drop_submit(convert_html($backups[$s_age]['data']));
110 return array('msg'=>str_replace('$2',$s_age,$_title_backup),'body'=>$body);
113 // ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºï½ü
114 function plugin_backup_delete($page)
116 global $script, $vars;
117 global $_title_backup_delete, $_msg_backup_deleted, $_msg_backup_delete;
118 global $_msg_backup_adminpass, $_btn_delete, $_msg_invalidpass;
120 if (!backup_file_exists($page))
121 return array('msg'=>$_title_pagebackuplist, 'body'=>get_backup_list($page)); // Say "is not found"
124 if (isset($vars['pass'])) {
125 if (pkwk_login($vars['pass'])) {
126 backup_delete($page);
128 'msg' => $_title_backup_delete,
129 'body' => str_replace('$1',make_pagelink($page),$_msg_backup_deleted)
132 $body = "<p><strong>$_msg_invalidpass</strong></p>\n";
136 $s_page = htmlspecialchars($page);
138 <p>$_msg_backup_adminpass</p>
139 <form action="$script" method="post">
141 <input type="hidden" name="cmd" value="backup" />
142 <input type="hidden" name="page" value="$s_page" />
143 <input type="hidden" name="action" value="delete" />
144 <input type="password" name="pass" size="12" />
145 <input type="submit" name="ok" value="$_btn_delete" />
149 return array('msg'=>$_title_backup_delete,'body'=>$body);
152 function plugin_backup_diff($str)
154 global $_msg_addline, $_msg_delline,$hr;
156 $str = htmlspecialchars($str);
157 $str = preg_replace('/^(\-)(.*)$/m', '<span class="diff_removed"> $2</span>', $str);
158 $str = preg_replace('/^(\+)(.*)$/m', '<span class="diff_added"> $2</span>', $str);
163 <li>$_msg_addline</li>
164 <li>$_msg_delline</li>
172 // ¥Ð¥Ã¥¯¥¢¥Ã¥×°ìÍ÷¤ò¼èÆÀ
173 function get_backup_list($page)
176 global $_msg_backuplist, $_msg_diff, $_msg_nowdiff, $_msg_source, $_msg_nobackup;
177 global $_title_backup_delete;
179 $r_page = rawurlencode($page);
180 $s_page = htmlspecialchars($page);
184 <li><a href="$script?cmd=backup">$_msg_backuplist</a>
194 $backups = backup_file_exists($page) ? get_backup($page) : array();
195 if (count($backups) == 0)
197 $msg = str_replace('$1',make_pagelink($page), $_msg_nobackup);
198 $retval[1] .= " <li>$msg</li>\n";
199 return join('',$retval);
201 $retval[1] .= " <li><a href=\"$script?cmd=backup&action=delete&page=$r_page\">";
202 $retval[1] .= str_replace('$1',$s_page,$_title_backup_delete);
203 $retval[1] .= "</a></li>\n";
204 foreach ($backups as $age=>$data) {
205 $date = format_date($data['time'],TRUE);
206 $href = "$script?cmd=backup&page=$r_page&age=$age";
208 <li><a href="$href">$age $date</a>
209 [ <a href="$href&action=diff">$_msg_diff</a>
210 | <a href="$href&action=nowdiff">$_msg_nowdiff</a>
211 | <a href="$href&action=source">$_msg_source</a>
216 return join('',$retval);
219 // Á´¥Ú¡¼¥¸¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×°ìÍ÷¤ò¼èÆÀ
220 function get_backup_list_all($withfilename = FALSE)
224 $pages = array_diff(get_existpages(BACKUP_DIR, BACKUP_EXT), $cantedit);
226 if (count($pages) == 0)
229 return page_list($pages,'backup',$withfilename);