/** * オンライン板リストを読込む */ public static function read_brd_online() { global $_conf; $brd_menus = array(); $isNewDL = false; if ($_conf['brdfile_online']) { $cachefile = P2Util::cacheFileForDL($_conf['brdfile_online']); $noDL = false; $read_html_flag = false; // キャッシュがある場合 if (file_exists($cachefile . '.p2.brd')) { // norefreshならDLしない if (!empty($_GET['nr'])) { $noDL = true; // キャッシュの更新が指定時間以内ならDLしない } elseif (@filemtime($cachefile . '.p2.brd') > time() - 60 * 60 * $_conf['menu_dl_interval']) { $noDL = true; } } // DLしない if ($noDL) { // DLする } else { //echo "DL!<br>";// $brdfile_online_res = P2Util::fileDownload($_conf['brdfile_online'], $cachefile); if ($brdfile_online_res->isSuccess() && $brdfile_online_res->code != 304) { $isNewDL = true; } } // html形式なら if (preg_match('/html?$/', $_conf['brdfile_online'])) { // 更新されていたら新規キャッシュ作成 if ($isNewDL) { // 検索結果がキャッシュされるのを回避 if (isset($GLOBALS['word']) && strlen($GLOBALS['word']) > 0) { $_tmp = array($GLOBALS['word'], $GLOBALS['word_fm'], $GLOBALS['words_fm']); $GLOBALS['word'] = null; $GLOBALS['word_fm'] = null; $GLOBALS['words_fm'] = null; } else { $_tmp = null; } //echo "NEW!<br>"; // $aBrdMenu = new BrdMenu(); // クラス BrdMenu のオブジェクトを生成 $aBrdMenu->makeBrdFile($cachefile); // .p2.brdファイルを生成 $brd_menus[] = $aBrdMenu; unset($aBrdMenu); if ($_tmp) { list($GLOBALS['word'], $GLOBALS['word_fm'], $GLOBALS['words_fm']) = $_tmp; $brd_menus = array(); } else { $read_html_flag = true; } } if (file_exists($cachefile . '.p2.brd')) { $cache_brd = $cachefile . '.p2.brd'; } else { $cache_brd = $cachefile; } } else { $cache_brd = $cachefile; } if (!$read_html_flag) { if ($data = FileCtl::file_read_lines($cache_brd)) { $aBrdMenu = new BrdMenu(); // クラス BrdMenu のオブジェクトを生成 $aBrdMenu->setBrdMatch($cache_brd); // パターンマッチ形式を登録 $aBrdMenu->setBrdList($data); // カテゴリーと板をセット if ($aBrdMenu->num) { $brd_menus[] = $aBrdMenu; } else { P2Util::pushInfoHtml("<p>p2 error: {$cache_brd} から板メニューを生成することはできませんでした。</p>"); } unset($data, $aBrdMenu); } else { P2Util::pushInfoHtml("<p>p2 error: {$cachefile} は読み込めませんでした。</p>"); } } } return $brd_menus; }
/** * オンライン板リストを読み込む * * @static * @access private * @return array */ function readBrdOnline() { global $_conf; if (!$_conf['brdfile_online']) { return array(); } $brd_menus = array(); $cachefile = P2Util::cacheFileForDL($_conf['brdfile_online']); $noDL = false; $isNewDL = false; $read_html_flag = false; $p2brdfile = BrdCtl::getP2BrdFile($cachefile); // キャッシュがある場合 if (file_exists($p2brdfile)) { // norefreshならDLしない if (!empty($_GET['nr'])) { $noDL = true; // キャッシュの更新が指定時間以内ならDLしない } elseif (filemtime($p2brdfile) > time() - 60 * 60 * $_conf['menu_dl_interval']) { $noDL = true; } } // DLしない if ($noDL) { // DLする } else { //echo "DL!<br>";// $brdfile_online_res = P2Util::fileDownload($_conf['brdfile_online'], $cachefile, array('disp_error' => true, 'use_tmp_file' => true)); if ($brdfile_online_res and $brdfile_online_res->is_success() && $brdfile_online_res->code != '304') { $isNewDL = true; } } // html形式なら if (preg_match('/html?$/', $_conf['brdfile_online'])) { // 更新されていたら新規キャッシュ作成 if ($isNewDL) { //echo "NEW!<br>"; // $aBrdMenu = new BrdMenu(); $aBrdMenu->makeBrdFile($cachefile); // .p2.brdファイルを生成 $brd_menus[] = $aBrdMenu; $read_html_flag = true; } if (file_exists($p2brdfile)) { $cache_brd = $p2brdfile; } else { $cache_brd = $cachefile; } } else { $cache_brd = $cachefile; } if (!$read_html_flag) { if ($data = file($cache_brd)) { $aBrdMenu = new BrdMenu(); $aBrdMenu->setBrdMatch($cache_brd); // パターンマッチ形式を登録 $aBrdMenu->setBrdList($data); // カテゴリーと板をセット if ($aBrdMenu->num) { $brd_menus[] = $aBrdMenu; } else { P2Util::pushInfoHtml(sprintf("<p>p2 error: %s から板メニューを生成することはできませんでした。</p>\n", hs($cache_brd))); } } else { P2Util::pushInfoHtml(sprintf("<p>p2 error: %s は読み込めませんでした。</p>\n", hs($cachefile))); } } return $brd_menus; }