예제 #1
0
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);
}
예제 #2
0
/**
 * 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);
    }
}
예제 #3
0
파일: backup.inc.php 프로젝트: big2men/qhm
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&amp;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);
}
예제 #4
0
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);
}
예제 #5
0
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);
}