/** * 書き込みデータの保存形式を変更する * * @param string $post_db_path * @return void */ function _100120_0700_convert_post_data_store($post_db_path) { if (!file_exists($post_db_path)) { return; } $oldKvs = P2KeyValueStore::getStore($post_db_path, P2KeyValueStore::CODEC_SERIALIZING); $newKvs = PostDataStore::getKVS(); foreach ($oldKvs as $key => $value) { $newKvs->set($key, $value); } if ($oldKvs->getTableName() != $newKvs->getTableName()) { $oldKvs->prepare('DROP TABLE $__table')->execute(); } // プリペアードステートメントを破棄するために optimize() $newKvs->optimize(); }
// }}} // {{{ 初期化 $post_param_keys = array('bbs', 'key', 'time', 'FROM', 'mail', 'MESSAGE', 'subject', 'submit'); $post_internal_keys = array('host', 'sub', 'popup', 'rescount', 'ttitle_en'); foreach ($post_param_keys as $pk) { ${$pk} = isset($_POST[$pk]) ? mb_convert_encoding($_POST[$pk], 'CP932', 'UTF-8') : ''; } foreach ($post_internal_keys as $pk) { ${$pk} = isset($_POST[$pk]) ? $_POST[$pk] : ''; } // したらばのlivedoor移転に対応。post先をlivedoorとする。 $host = P2Util::adjustHostJbbs($host); // machibbs、JBBS@したらば なら if (P2Util::isHostMachiBbs($host) or P2Util::isHostJbbsShitaraba($host)) { /* compact() と array_combine() でPOSTする値の配列を作るので、 $post_param_keys と $post_send_keys の値の順序は揃える! */ //$post_param_keys = array('bbs', 'key', 'time', 'FROM', 'mail', 'MESSAGE', 'subject', 'submit'); $post_send_keys = array('BBS', 'KEY', 'TIME', 'NAME', 'MAIL', 'MESSAGE', 'SUBJECT', 'submit'); // 2ch } else { $post_send_keys = $post_param_keys; } $post = array_combine($post_send_keys, compact($post_param_keys)); unset($post['submit']); // }}} // {{{ execute $post_backup_key = PostDataStore::getKeyForBackup($host, $bbs, $key, !empty($_REQUEST['newthread'])); PostDataStore::set($post_backup_key, $post); echo '1'; exit; // }}}
$hd['FROM'] = htmlspecialchars($line[7], ENT_QUOTES); $hd['mail'] = htmlspecialchars($line[8], ENT_QUOTES); } // }}} // {{{ データベースから前回のPOST失敗データとberes/p2resの設定を読込み $post_backup_key = PostDataStore::getKeyForBackup($host, $bbs, $key, !empty($_REQUEST['newthread'])); $post_config_key = PostDataStore::getKeyForConfig($host, $bbs); // 前回のPOST失敗データ if ($post_backup = PostDataStore::get($post_backup_key)) { $hd['FROM'] = htmlspecialchars($post_backup['FROM'], ENT_QUOTES, 'Shift_JIS'); $hd['mail'] = htmlspecialchars($post_backup['mail'], ENT_QUOTES, 'Shift_JIS'); $hd['MESSAGE'] = htmlspecialchars($post_backup['MESSAGE'], ENT_QUOTES, 'Shift_JIS'); $hd['subject'] = htmlspecialchars($post_backup['subject'], ENT_QUOTES, 'Shift_JIS'); } // beres/p2res if ($post_config = PostDataStore::get($post_config_key)) { if ($post_config['beres']) { $hd['beres_checked'] = ' checked'; } if ($post_config['p2res']) { $hd['p2res_checked'] = ' checked'; } } // }}} // {{{ 名前とメールの最終調整 // 空白はユーザ設定値に変換 if ($hd['FROM'] === '') { $hd['FROM'] = htmlspecialchars($_conf['my_FROM'], ENT_QUOTES, 'Shift_JIS'); } if ($hd['mail'] === '') { $hd['mail'] = htmlspecialchars($_conf['my_mail'], ENT_QUOTES, 'Shift_JIS');
CookieDataStore::delete($cookie_key); $p2cookies = null; } } else { $p2cookies = null; } // 直接書き込み $posted = postIt($host, $bbs, $key, $post); // cookie 保存 if ($p2cookies) { CookieDataStore::set($cookie_key, $p2cookies); } } // 投稿失敗記録を削除 if ($posted) { PostDataStore::delete($post_backup_key); } //============================================= // スレ立て成功なら、subjectからkeyを取得 //============================================= if (!empty($_POST['newthread']) && $posted) { sleep(1); $key = getKeyInSubject(); } //============================================= // key.idx 保存 //============================================= // <> を外す。。 $tag_rec['FROM'] = str_replace('<>', '', $FROM); $tag_rec['mail'] = str_replace('<>', '', $mail); // 名前とメール、空白時は P2NULL を記録