Пример #1
0
function plugin_edit_write()
{
    global $vars, $trackback, $layout_pages;
    global $notimeupdate, $do_update_diff_table;
    global $qblog_defaultpage, $date_format, $qblog_menubar;
    $qm = get_qm();
    $page = isset($vars['page']) ? $vars['page'] : '';
    $add = isset($vars['add']) ? $vars['add'] : '';
    $digest = isset($vars['digest']) ? $vars['digest'] : '';
    $vars['msg'] = preg_replace(PLUGIN_EDIT_FREEZE_REGEX, '', $vars['msg']);
    $msg =& $vars['msg'];
    // Reference
    $retvars = array();
    // Collision Detection
    $oldpagesrc = join('', get_source($page));
    $oldpagemd5 = md5($oldpagesrc);
    if ($digest != $oldpagemd5) {
        $vars['digest'] = $oldpagemd5;
        // Reset
        $original = isset($vars['original']) ? $vars['original'] : '';
        list($postdata_input, $auto) = do_update_diff($oldpagesrc, $msg, $original);
        $retvars['msg'] = $qm->m['fmt_title_collided'];
        $retvars['body'] = ($auto ? $qm->m['fmt_msg_collided_auto'] : $qm->m['fmt_msg_collided']) . "\n";
        $retvars['body'] .= $do_update_diff_table;
        $retvars['body'] .= edit_form($page, $postdata_input, $oldpagemd5, FALSE);
        return $retvars;
    }
    // Action?
    if ($add) {
        // Add
        if (isset($vars['add_top']) && $vars['add_top']) {
            $postdata = $msg . "\n\n" . @join('', get_source($page));
        } else {
            $postdata = @join('', get_source($page)) . "\n\n" . $msg;
        }
    } else {
        // Edit or Remove
        $postdata =& $msg;
        // Reference
    }
    //ブログの時は、タイトルを足す
    if ($page !== $qblog_defaultpage && is_qblog()) {
        global $qblog_default_cat;
        $title = trim($vars['title']);
        $image = trim($vars['image']);
        $cat = trim($vars['category']);
        $cat = $cat === '' ? $qblog_default_cat : $cat;
        if ($postdata !== '') {
            $postdata = 'TITLE:' . $title . "\n" . $postdata;
        }
    }
    // NULL POSTING, OR removing existing page
    if ($postdata == '') {
        page_write($page, $postdata);
        $retvars['msg'] = $qm->m['fmt_title_deleted'];
        $retvars['body'] = str_replace('$1', htmlspecialchars($page), $qm->m['fmt_title_deleted']);
        if ($trackback) {
            tb_delete($page);
        }
        return $retvars;
    }
    // $notimeupdate: Checkbox 'Do not change timestamp'
    $notimestamp = isset($vars['notimestamp']) && $vars['notimestamp'] != '';
    if ($notimeupdate > 1 && $notimestamp && !pkwk_login($vars['pass'])) {
        // Enable only administrator & password error
        $retvars['body'] = '<p><strong>' . $qm->m['fmt_msg_invalidpass'] . '</strong></p>' . "\n";
        $retvars['body'] .= edit_form($page, $msg, $digest, FALSE);
        return $retvars;
    }
    page_write($page, $postdata, $notimeupdate != 0 && $notimestamp);
    //ブログの場合
    if ($page !== $qblog_defaultpage && is_qblog()) {
        // 日付の変更があったら、ページ名の変更
        $page_date = get_qblog_date($date_format, $page);
        if ($page_date and $vars['qblog_date'] != $page_date) {
            // ページ名の変更
            if (exist_plugin('rename')) {
                // ! renameのために $vasの値を変更
                $vars['page'] = $newpage = qblog_get_newpage($vars['qblog_date']);
                $vars['refer'] = $refer = $page;
                $vars['exist'] = 1;
                $pages = array();
                $pages[encode($refer)] = encode($newpage);
                $files = plugin_rename_get_files($pages);
                $exists = array();
                foreach ($files as $_page => $arr) {
                    foreach ($arr as $old => $new) {
                        if (file_exists($new)) {
                            $exists[$_page][$old] = $new;
                        }
                    }
                }
                plugin_rename_proceed($pages, $files, $exists, FALSE);
                //保留コメントリスト内のページ名を変更
                $datafile = CACHEQBLOG_DIR . 'qblog_pending_comments.dat';
                $pending_comments = unserialize(file_get_contents($datafile));
                foreach ($pending_comments as $i => $comment) {
                    if ($comment['page'] == $page) {
                        $pending_comments[$i]['page'] = $newpage;
                    }
                }
                file_put_contents($datafile, serialize($pending_comments), LOCK_EX);
                //最新コメントリスト内のページ名を変更
                $datafile = CACHEQBLOG_DIR . 'qblog_recent_comments.dat';
                file_put_contents($datafile, str_replace($page, $newpage, file_get_contents($datafile)), LOCK_EX);
                //変数を格納し直す
                $page = $newpage;
            }
        }
        //ブログの時は、ポストキャッシュを書き換える
        $option = array('category' => $cat, 'image' => $image);
        qblog_update_post($force, $page, $option);
        //Ping送信を行う
        if (!$notimestamp) {
            send_qblog_ping();
        }
    }
    pkwk_headers_sent();
    //ブログメニューの場合、ブログトップへ移動する
    if ($page === $qblog_menubar) {
        header('Location: ' . get_script_uri() . '?' . $qblog_defaultpage);
    } else {
        if (array_key_exists($page, $layout_pages)) {
            header('Location: ' . get_script_uri());
        } else {
            header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
        }
    }
    exit;
}
Пример #2
0
function plugin_qblog_update_ping()
{
    global $vars, $qblog_enable_ping, $qblog_ping;
    $vars['hash'] = 'external';
    $enable_ping = $vars['qblog_enable_ping'];
    $pingstr = $vars['ping'];
    //フラグ保存
    if (exist_plugin("qhmsetting")) {
        $params = array();
        $params['qblog_enable_ping'] = $enable_ping;
        $_SESSION['qhmsetting'] = $params;
        plugin_qhmsetting_update_ini();
        $vars['phase'] = 'ping';
        $qblog_enable_ping = $enable_ping;
    }
    if (!$enable_ping) {
        return array('msg' => '', 'body' => '');
    }
    $default_ping = plugin_qblog_get_default_ping();
    //初期Ping から変更があれば保存
    if (md5($default_ping) !== md5($pingstr)) {
        //ping 保存
        if (exist_plugin("qhmsetting")) {
            $params = array();
            $params['qblog_ping'] = $pingstr;
            $_SESSION['qhmsetting'] = $params;
            plugin_qhmsetting_update_ini();
            $qblog_ping = $pingstr;
            //ping 送信
            send_qblog_ping();
        }
    }
    return array('msg' => '', 'body' => '');
}