Exemple #1
0
$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', 'あぼーん対象ホストです。');
        }
Exemple #2
0
 /**
  * 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());
     }
 }
Exemple #3
0
            $_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);
Exemple #4
0
            $_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();
Exemple #5
0
$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('&amp;', '&', $skin_en));
}
Exemple #6
0
 /**
  * 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;
 }