function plugin_doc_ini_exec($page) { global $_doc_ini_msg; $backup = $diff = true; if (_backup_file_exists($page)) { $backup = _backup_delete($page); } $filename = DIFF_DIR . encode($page) . '.txt'; if (file_exists($filename)) { $diff = unlink($filename); } if ($backup && $diff) { $msg_body = sprintf($_doc_ini_msg['msg_end'], $page); return array('msg' => $_doc_ini_msg['title_end'], 'body' => $msg_body); } $msg_body = '<ul>'; if (!$backup) { $msg_body .= '<li>' . $_doc_ini_msg['msg_abend_backup'] . '</li>'; } if (!$diff) { $msg_body .= '<li>' . $_doc_ini_msg['msg_abend_diff'] . '<li>'; } $msg_body .= '</ul>'; return array('msg' => $_doc_ini_msg['title_end'], 'body' => $msg_body); }
/** * make_backup * バックアップを作成する * * @access public * @param String $page ページ名 * @param Boolean $delete TRUE:バックアップを削除する * * @return Void */ function make_backup($page, $delete = FALSE) { global $cycle, $maxage; global $do_backup, $del_backup; // if (PKWK_READONLY || ! $do_backup) return; if (auth::check_role('readonly') || !$do_backup) { return; } if ($del_backup && $delete) { _backup_delete($page); return; } if (!is_page($page)) { return; } $lastmod = _backup_get_filetime($page); if ($lastmod == 0 || UTIME - $lastmod > 60 * 60 * $cycle) { $backups = get_backup($page); $count = count($backups) + 1; // 直後に1件追加するので、(最大件数 - 1)を超える要素を捨てる if ($count > $maxage) { array_splice($backups, 0, $count - $maxage); } $strout = ''; foreach ($backups as $age => $data) { // BugTrack/685 by UPK //$strout .= PKWK_SPLITTER . ' ' . $data['time'] . "\n"; // Splitter format $strout .= PKWK_SPLITTER . ' ' . $data['time'] . ' ' . $data['real'] . "\n"; // Splitter format $strout .= join('', $data['data']); unset($backups[$age]); } $strout = preg_replace("/([^\n])\n*\$/", "\$1\n", $strout); // Escape 'lines equal to PKWK_SPLITTER', by inserting a space $body = preg_replace('/^(' . preg_quote(PKWK_SPLITTER) . "\\s\\d+(\\s(\\d+)|))\$/", '$1 ', get_source($page)); // BugTrack/685 by UPK // $body = PKWK_SPLITTER . ' ' . get_filetime($page) . "\n" . join('', $body); $body = PKWK_SPLITTER . ' ' . get_filetime($page) . ' ' . UTIME . "\n" . join('', $body); $body = preg_replace("/\n*\$/", "\n", $body); $fp = _backup_fopen($page, 'wb') or die_message('Cannot open ' . htmlspecialchars(_backup_get_filename($page)) . '<br />Maybe permission is not writable or filename is too long'); _backup_fputs($fp, $strout); _backup_fputs($fp, $body); _backup_fclose($fp); } }
function plugin_backup_delete($page) { global $vars, $layout_pages; $is_layout = FALSE; if (isset($layout_pages) && isset($layout_pages[$page])) { $is_layout = TRUE; } $qm = get_qm(); if (!_backup_file_exists($page)) { return array('msg' => $qm->m['plg_backup']['title_pagebackuplist'], 'body' => plugin_backup_get_list($page)); } // Say "is not found" $body = ''; if (isset($vars['pass'])) { if (pkwk_login($vars['pass'])) { _backup_delete($page); $pagelink = $is_layout ? h($layout_pages[$page]) : make_pagelink($page); $addlink = $is_layout ? "\n" . '<p><a href="' . h($script) . '?cmd=edit&page=' . rawurlencode($page) . '">戻る</a></p>' : ''; return array('msg' => $is_layout ? h($layout_pages[$page]) . ' のバックアップを削除' : $qm->m['plg_backup']['title_backup_delete'], 'body' => str_replace('$1', $pagelink, $qm->m['plg_backup']['backup_deleted']) . $addlink); } else { $body = '<p><strong>' . $qm->m['fmt_err_invalidpass'] . '</strong></p>' . "\n"; } } $script = get_script_uri(); $s_page = htmlspecialchars($page); $body .= <<<EOD <p>{$qm->m['plg_backup']['backup_adminpass']}</p> <form action="{$script}" method="post"> <div> <input type="hidden" name="cmd" value="backup" /> <input type="hidden" name="page" value="{$s_page}" /> <input type="hidden" name="action" value="delete" /> <input type="password" name="pass" size="12" /> <input type="submit" name="ok" value="{$qm->m['fmt_btn_delete']}" /> </div> </form> EOD; $title = $is_layout ? h($layout_pages[$page]) . ' のバックアップを削除' : $qm->m['plg_backup']['title_backup_delete']; return array('msg' => $title, 'body' => $body); }
function plugin_backup_delete($page) { global $vars, $script; // global $_title_backup_delete, $_title_pagebackuplist, $_msg_backup_deleted; // global $_msg_backup_adminpass, $_btn_delete, $_msg_invalidpass; $_title_backup_delete = _('Deleting backup of $1'); $_title_pagebackuplist = _('Backup list of $1'); $_title_backuplist = _('Backup list'); $_msg_backup_deleted = _('Backup of $1 has been deleted.'); $_msg_backup_adminpass = _('Please input the password for deleting.'); $_btn_delete = _('Delete'); $_msg_invalidpass = _('Invalid password.'); if (!_backup_file_exists($page)) { return array('msg' => $_title_pagebackuplist, 'body' => plugin_backup_get_list($page)); } // Say "is not found" $body = ''; if (!auth::check_role('role_adm_contents')) { _backup_delete($page); return array('msg' => $_title_backup_delete, 'body' => str_replace('$1', make_pagelink($page), $_msg_backup_deleted)); } if (isset($vars['pass'])) { if (pkwk_login($vars['pass'])) { _backup_delete($page); return array('msg' => $_title_backup_delete, 'body' => str_replace('$1', make_pagelink($page), $_msg_backup_deleted)); } else { $body = '<p><strong>' . $_msg_invalidpass . '</strong></p>' . "\n"; } } $s_page = htmlspecialchars($page); $body .= <<<EOD <p>{$_msg_backup_adminpass}</p> <form action="{$script}" method="post"> <div> <input type="hidden" name="cmd" value="backup" /> <input type="hidden" name="page" value="{$s_page}" /> <input type="hidden" name="action" value="delete" /> <input type="password" name="pass" size="12" /> <input type="submit" name="ok" value="{$_btn_delete}" /> </div> </form> EOD; return array('msg' => $_title_backup_delete, 'body' => $body); }
function plugin_backup_delete($page) { global $vars, $_title_backup_delete, $_title_pagebackuplist, $_msg_backup_deleted; global $_msg_backup_adminpass, $_btn_delete, $_msg_invalidpass; if (!_backup_file_exists($page)) { return array('msg' => $_title_pagebackuplist, 'body' => plugin_backup_get_list($page)); } // Say "is not found" $body = ''; if (isset($vars['pass'])) { if (pkwk_login($vars['pass'])) { _backup_delete($page); return array('msg' => $_title_backup_delete, 'body' => str_replace('$1', make_pagelink($page), $_msg_backup_deleted)); } else { $body = '<p><strong>' . $_msg_invalidpass . '</strong></p>' . "\n"; } } $script = get_script_uri(); $s_page = htmlsc($page); $body .= <<<EOD <p>{$_msg_backup_adminpass}</p> <form action="{$script}" method="post"> <div> <input type="hidden" name="cmd" value="backup" /> <input type="hidden" name="page" value="{$s_page}" /> <input type="hidden" name="action" value="delete" /> <input type="password" name="pass" size="12" /> <input type="submit" name="ok" value="{$_btn_delete}" /> </div> </form> EOD; return array('msg' => $_title_backup_delete, 'body' => $body); }