$redirect = isset($_REQUEST['r']) ? intval($_REQUEST['r']) : 1; // 表示方法 $rank = isset($_REQUEST['rank']) ? intval($_REQUEST['rank']) : 0; // レーティング $memo = isset($_REQUEST['memo']) && strlen($_REQUEST['memo']) > 0 ? $_REQUEST['memo'] : null; // メモ $referer = isset($_REQUEST['ref']) && strlen($_REQUEST['ref']) > 0 ? $_REQUEST['ref'] : null; // リファラ /*if (!isset($uri) && false !== ($url = getenv('PATH_INFO'))) { $uri = 'http:/' . $url; }*/ if (empty($id) && empty($uri) && empty($file)) { ic2_error('x06', 'URLまたはファイル名がありません。', false); } if (!is_dir($_conf['tmp_dir'])) { FileCtl::mkdirRecursive($_conf['tmp_dir']); } if (!empty($uri)) { $uri = preg_replace('{^(https?://)ime\\.(?:nu|st)/}', '\\1', $uri); $pURL = @parse_url($uri); if (!$pURL || $pURL['scheme'] != 'http' && $pURL['scheme'] != 'https' || empty($pURL['host']) || empty($pURL['path'])) { ic2_error('x06', '不正なURLです。', false); } // 強制あぼーんホストのとき if ($ini['Getter']['reject_hosts']) { $pattern = preg_quote($ini['Getter']['reject_hosts'], '/'); $pattern = str_replace(',', '|', $pattern); $pattern = '/(' . $pattern . ')$/i'; if (preg_match($pattern, $pURL['host'])) { ic2_error('x01', 'あぼーん対象ホストです。'); }
/** * P2Clientクラスのインスタンスを生成する * * @param void * @return P2Client */ public static function getP2Client() { global $_conf; if (!is_dir($_conf['db_dir'])) { FileCtl::mkdirRecursive($_conf['db_dir']); } try { return new P2Client("http://{$_conf['p2_2ch_host']}/p2/", $_conf['p2_2ch_mail'], $_conf['p2_2ch_pass'], $_conf['db_dir'], (bool) $_conf['p2_2ch_ignore_cip']); } catch (P2Exception $e) { p2die($e->getMessage()); } }
$_v = $_GET[$_K]; if (is_string($_v) && strlen($_v) > 0 && $_v != '0') { $query_params[$_k] = $_v; } else { unset($_GET[$_K]); } } } mb_convert_variables('UTF-8', 'CP932', $query_params); ini_set('arg_separator.output', '&'); // ≒ ini_restore('arg_separator.output'); $query = http_build_query($query_params); ini_set('arg_separator.output', '&'); $cache_options = array('cacheDir' => $_conf['cache_dir'] . DIRECTORY_SEPARATOR . 'tgrep' . DIRECTORY_SEPARATOR, 'lifeTime' => 3600, 'fileNameProtection' => false, 'automaticSerialization' => true); if (!is_dir($cache_options['cacheDir'])) { FileCtl::mkdirRecursive($cache_options['cacheDir']); } $cache = new Cache_Lite($cache_options); $cache_id_result = md5($query); $cache_id_profile = md5($query_params['q']); $cache_group_result = 'tgrep2result'; $cache_group_profile = 'tgrep2profile'; } else { $query = null; } // }}} // {{{ 検索&キャッシュ if ($query) { // キャッシュを取得 $search_result = $cache->get($cache_id_result, $cache_group_result); $search_profile = $cache->get($cache_id_profile, $cache_group_profile);
$_conf['k_filter_marker'] = '<span class="matched">\\1</span>'; } else { $_conf['k_filter_marker'] = '<font color="' . htmlspecialchars($_conf['mobile.match_color']) . '">\\1</font>'; } } else { $_conf['k_filter_marker'] = false; } } // }}} // {{{ セッション // 名前は、セッションクッキーを破棄するときのために、セッション利用の有無に関わらず設定する session_name('PS'); // {{{ セッションデータ保存ディレクトリをチェック if ($_conf['session_save'] == 'p2' and session_module_name() == 'files') { if (!is_dir($_conf['session_dir'])) { FileCtl::mkdirRecursive($_conf['session_dir']); } elseif (!is_writable($_conf['session_dir'])) { p2die("セッションデータ保存ディレクトリ ({$_conf['session_dir']}) に書き込み権限がありません。"); } session_save_path($_conf['session_dir']); } // }}} $_p2session = new Session(null, null, $_conf['use_cookies']); // }}} // {{{ お気にセット // 複数のお気にセットを使うとき if ($_conf['expack.misc.multi_favs']) { // 切り替え表示用に全てのお気にスレ・お気に板を読み込んでおく FavSetManager::loadAllFavSet(); // お気にセットを切り替える FavSetManager::switchFavSet();
$qfe['cngmode'] = $qf->addElement('submit', 'cngmode'); // フォームのルール $qf->addRule('cols', '1 to 20', 'numberInRange', array('min' => 1, 'max' => 20), 'client', true); $qf->addRule('rows', '1 to 100', 'numberInRange', array('min' => 1, 'max' => 100), 'client', true); $qf->addRule('order', 'invalid order.', 'arrayKeyExists', $_order); $qf->addRule('sort', 'invalid sort.', 'arrayKeyExists', $_sort); $qf->addRule('field', 'invalid field.', 'arrayKeyExists', $_field); $qf->addRule('threshold', '-1 to 5', 'numberInRange', array('min' => -1, 'max' => 5)); $qf->addRule('compare', 'invalid compare.', 'arrayKeyExists', $_compare); $qf->addRule('mode', 'invalid mode.', 'arrayKeyExists', $_mode); $qf->addRule('thumbtype', 'invalid thumbtype.', 'arrayKeyExists', $_thumbtype); // Flexy $_flexy_options =& PEAR5::getStaticProperty('HTML_Template_Flexy', 'options'); $_flexy_options = array('locale' => 'ja', 'charset' => 'Shift_JIS', 'compileDir' => $_conf['compile_dir'] . DIRECTORY_SEPARATOR . 'iv2', 'templateDir' => P2EX_LIB_DIR . '/ImageCache2/templates', 'numberFormat' => '', 'plugins' => array('P2Util' => P2_LIB_DIR . '/P2Util.php')); if (!is_dir($_conf['compile_dir'])) { FileCtl::mkdirRecursive($_conf['compile_dir']); } $flexy = new HTML_Template_Flexy(); $flexy->setData('php_self', $_SERVER['SCRIPT_NAME']); $flexy->setData('base_dir', dirname($_SERVER['SCRIPT_NAME'])); $flexy->setData('p2vid', P2_VERSION_ID); $flexy->setData('_hint', $_conf['detect_hint']); if ($_conf['iphone']) { $flexy->setData('top_url', 'index.php'); } elseif ($_conf['ktai']) { $flexy->setData('k_color', array('c_bgcolor' => !empty($_conf['mobile.background_color']) ? $_conf['mobile.background_color'] : '#ffffff', 'c_text' => !empty($_conf['mobile.text_color']) ? $_conf['mobile.text_color'] : '#000000', 'c_link' => !empty($_conf['mobile.link_color']) ? $_conf['mobile.link_color'] : '#0000ff', 'c_vlink' => !empty($_conf['mobile.vlink_color']) ? $_conf['mobile.vlink_color'] : '#9900ff')); $flexy->setData('top_url', dirname($_SERVER['SCRIPT_NAME']) . '/index.php'); $flexy->setData('accesskey', $_conf['accesskey']); } else { $flexy->setData('skin', str_replace('&', '&', $skin_en)); }
/** * Gzip圧縮されたレスポンスボディをデコードする * * @param string $body * @param string $caller * @return string */ protected static function _decodeGzip($body, $url) { global $_conf; if (function_exists('http_inflate')) { // pecl_http の http_inflate() で展開 $body = http_inflate($body); } else { // gzip tempファイルに保存・PHPで解凍読み込み if (!is_dir($_conf['tmp_dir'])) { FileCtl::mkdirRecursive($_conf['tmp_dir']); } $gztempfile = tempnam($_conf['tmp_dir'], 'gz_'); if (false === $gztempfile) { p2die('一時ファイルを作成できませんでした。'); } if (false === file_put_contents($gztempfile, $body)) { unlink($gztempfile); p2die('一時ファイルに書き込めませんでした。'); } $body = file_get_contents('compress.zlib://' . $gztempfile); if (false === $body) { $body = null; } unlink($gztempfile); } if (is_null($body)) { $summary = 'gzip展開エラー'; $description = self::_urlToAnchor($url) . ' をgzipデコードできませんでした。'; self::_pushInfoMessage($summary, $description); } return $body; }