Ejemplo n.º 1
0
 /**
  * オンライン板リストを読込む
  */
 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;
 }
Ejemplo n.º 2
0
Archivo: BrdCtl.php Proyecto: poppen/p2
 /**
  * オンライン板リストを読み込む
  *
  * @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;
 }