4 * PukiWiki - Yet another WikiWikiWeb clone.
8 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò´ÉÍý¤¹¤ë
10 * @package org.pukiwiki
19 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë
22 * @param String $page ¥Ú¡¼¥¸Ì¾
23 * @param Boolean $delete TRUE:¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºï½ü¤¹¤ë
27 function make_backup($page,$delete = FALSE)
29 global $splitter,$cycle,$maxage;
30 global $do_backup,$del_backup;
36 if ($del_backup and $delete) {
41 if (!is_page($page)) {
47 $lastmod = backup_get_filetime($page);
48 if (($lastmod == 0) or (UTIME - $lastmod) > (60 * 60 * $cycle)) {
49 //ľ¸å¤Ë1·ïÄɲ乤ë¤Î¤Ç¡¢ºÇÂç·ï¿ô-1¤ÇÀÚ¤ë
50 $backups = array_splice(get_backup($page),0,$maxage - 1);
53 foreach($backups as $age=>$data) {
54 $strout .= "$splitter {$data['time']}\n";
55 $strout .= join('',$data['data']);
57 $strout = trim($strout);
62 $body = "$splitter ".get_filetime($page)."\n".join('',get_source($page));
63 $body = preg_replace("/\n*$/","\n",$body);
65 $fp = backup_fopen($page,'w')
66 or die_message('cannot write file '.htmlspecialchars($realfilename).'<br>maybe permission is not writable or filename is too long');
67 backup_fputs($fp,$strout);
68 backup_fputs($fp,$body);
75 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼èÆÀ¤¹¤ë
76 * $age=0¤Þ¤¿¤Ï¾Êά : Á´¤Æ¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤òÇÛÎó¤Ç¼èÆÀ¤¹¤ë
77 * $age>0 : »ØÄꤷ¤¿À¤Âå¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë
80 * @param String $page ¥Ú¡¼¥¸Ì¾
81 * @param Integer $age ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎÀ¤ÂåÈÖ¹æ ¾Êά»þ¤ÏÁ´¤Æ
83 * @return String ¥Ð¥Ã¥¯¥¢¥Ã¥×($age!=0)
84 * Array ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎÇÛÎó($age==0)
86 function get_backup($page,$age = 0)
90 $lines = backup_file($page);
92 if (!is_array($lines)) {
99 foreach($lines as $line) {
100 if (preg_match("/^$splitter\s(\d+)$/",trim($line),$match)) {
102 if ($age > 0 and $_age > $age) {
103 return $retvars[$age];
105 $retvars[$_age]['time'] = $match[1];
108 $retvars[$_age]['data'][] = $line;
116 * backup_get_filename
117 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ¤¹¤ë
120 * @param String $page ¥Ú¡¼¥¸Ì¾
122 * @return String ¥Ð¥Ã¥¯¥¢¥Ã¥×¤Î¥Õ¥¡¥¤¥ë̾
124 function backup_get_filename($page)
126 return BACKUP_DIR.encode($page).BACKUP_EXT;
131 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¤«
134 * @param String $page ¥Ú¡¼¥¸Ì¾
136 * @return Boolean TRUE:¤¢¤ë FALSE:¤Ê¤¤
138 function backup_file_exists($page)
140 return file_exists(backup_get_filename($page));
144 * backup_get_filetime
145 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤Î¹¹¿·»þ¹ï¤òÆÀ¤ë
148 * @param String $page ¥Ú¡¼¥¸Ì¾
150 * @return Integer ¥Õ¥¡¥¤¥ë¤Î¹¹¿·»þ¹ï(GMT)
153 function backup_get_filetime($page)
155 return backup_file_exists($page) ?
156 filemtime(backup_get_filename($page)) - LOCALZONE :
162 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë
165 * @param String $page ¥Ú¡¼¥¸Ì¾
167 * @return Boolean FALSE:¼ºÇÔ
169 function backup_delete($page)
171 return unlink(backup_get_filename($page));
174 /////////////////////////////////////////////////
176 if (function_exists('gzfile')) {
177 // ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à´Ø¿ô
179 define('BACKUP_EXT','.gz');
183 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ò³«¤¯
186 * @param String $page ¥Ú¡¼¥¸Ì¾
187 * @param String $mode ¥â¡¼¥É
189 * @return Boolean FALSE:¼ºÇÔ
191 function backup_fopen($page,$mode)
193 return gzopen(backup_get_filename($page),$mode);
198 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤Ë½ñ¤¹þ¤à
201 * @param Integer $zp ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿
202 * @param String $str ʸ»úÎó
204 * @return Boolean FALSE:¼ºÇÔ ¤½¤Î¾:½ñ¤¹þ¤ó¤À¥Ð¥¤¥È¿ô
206 function backup_fputs($zp,$str)
208 return gzputs($zp,$str);
213 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤òÊĤ¸¤ë
216 * @param Integer $zp ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿
218 * @return Boolean FALSE:¼ºÇÔ
220 function backup_fclose($zp)
227 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ÎÆâÍƤò¼èÆÀ¤¹¤ë
230 * @param String $page ¥Ú¡¼¥¸Ì¾
232 * @return Array ¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ
234 function backup_file($page)
236 return backup_file_exists($page) ?
237 gzfile(backup_get_filename($page)) :
241 /////////////////////////////////////////////////
243 // ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à´Ø¿ô
244 define('BACKUP_EXT','.txt');
248 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ò³«¤¯
251 * @param String $page ¥Ú¡¼¥¸Ì¾
252 * @param String $mode ¥â¡¼¥É
254 * @return Boolean FALSE:¼ºÇÔ
256 function backup_fopen($page,$mode)
258 return fopen(backup_get_filename($page),$mode);
263 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤Ë½ñ¤¹þ¤à
266 * @param Integer $zp ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿
267 * @param String $str ʸ»úÎó
269 * @return Boolean FALSE:¼ºÇÔ ¤½¤Î¾:½ñ¤¹þ¤ó¤À¥Ð¥¤¥È¿ô
271 function backup_fputs($zp,$str)
273 return fputs($zp,$str);
278 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤òÊĤ¸¤ë
281 * @param Integer $zp ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿
283 * @return Boolean FALSE:¼ºÇÔ
285 function backup_fclose($zp)
292 * ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤ÎÆâÍƤò¼èÆÀ¤¹¤ë
295 * @param String $page ¥Ú¡¼¥¸Ì¾
297 * @return Array ¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ
299 function backup_file($page)
301 return backup_file_exists($page) ?
302 file(backup_get_filename($page)) :