/** * boardを全て読み込む */ public static function read_brds() { $brd_menus_dir = BrdCtl::read_brd_dir(); $brd_menus_online = BrdCtl::read_brd_online(); $brd_menus = array_merge($brd_menus_dir, $brd_menus_online); return $brd_menus; }
<a href="iv2.php" target="_blank">画像キャッシュ一覧</a><br> <a href="ic2_setter.php">アップローダ</a> (<a href="#" onclick="return OpenSubWin('ic2_setter.php?popup=1', 480, 320, 1, 1);">p</a>)<br> <a href="ic2_getter.php">ダウンローダ</a> (<a href="#" onclick="return OpenSubWin('ic2_getter.php?popup=1', 480, 320, 1, 1);">p</a>)<br> <a href="ic2_manager.php">データベース管理</a> </div> </div> EOP; } //============================================================== // ■カテゴリと板を表示 //============================================================== // brd読み込み $brd_menus_dir = BrdCtl::read_brd_dir(); $brd_menus_online = BrdCtl::read_brd_online(); $brd_menus = array_merge($brd_menus_dir, $brd_menus_online); //=========================================================== // ■プリント //=========================================================== // {{{ 検索ワードがあれば if (isset($word) && strlen($word) > 0) { $msg_ht .= '<p>'; if (empty($GLOBALS['ita_mikke']['num'])) { if (empty($GLOBALS['threti_match_ita_num'])) { $msg_ht .= "\"{$hd['word']}\"を含む板は見つかりませんでした。\n"; } } else { $match_cates = array(); $match_cates[0] = new BrdMenuCate(""{$hd['word']}"を含む板 {$GLOBALS['ita_mikke']['num']}hit!\n"); $match_cates[0]->is_open = true;
/** * p2 - 携帯用インデックスをHTMLプリントする関数 * * @access public * @return void */ function index_print_k() { global $_conf, $_login; $menuKLinkHtmls = getIndexMenuKLinkHtmls(getIndexMenuKIni()); $ptitle = $_conf['p2name'] . 'iPhone'; // ログインユーザ情報 $auth_user_ht = sprintf('<p>ログインユーザ: %s - %s</p>', hs($_login->user_u), date('Y/m/d (D) G:i:s')); // p2ログイン用URL $login_url = rtrim(dirname(UriUtil::getMyUri()), '/') . '/'; $login_url_pc = UriUtil::buildQueryUri($login_url, array(UA::getQueryKey() => 'pc')); $login_url_k = UriUtil::buildQueryUri($login_url, array(UA::getQueryKey() => 'k', 'user' => $_login->user_u)); // 前回のログイン情報 if ($_conf['login_log_rec'] && $_conf['last_login_log_show']) { if (false !== ($log = P2Util::getLastAccessLog($_conf['login_log_file']))) { $log_hs = array_map('htmlspecialchars', $log); $htm['last_login'] = <<<EOP <font color="#888888"> 前回のログイン情報 - {$log_hs['date']}<br> ユーザ: {$log_hs['user']}<br> IP: {$log_hs['ip']}<br> HOST: {$log_hs['host']}<br> UA: {$log_hs['ua']}<br> REFERER: {$log_hs['referer']} </font> EOP; } } // 古いセッションIDがキャッシュされていることを考慮して、ユーザ情報を付加しておく // (リファラを考慮して、つけないほうがいい場合もあるので注意) $narabikae_uri = UriUtil::buildQueryUri('edit_indexmenui.php', array('user' => $_login->user_u, UA::getQueryKey() => UA::getQueryValue())); require_once P2_LIB_DIR . '/BrdCtl.php'; $search_form_htm = BrdCtl::getMenuKSearchFormHtml('menu_i.php'); $body_at = P2View::getBodyAttrK(); $hr = P2View::getHrHtmlK(); //========================================================= // 携帯用 HTML出力 //========================================================= P2Util::headerNoCache(); P2View::printDoctypeTag(); ?> <html> <head> <?php P2View::printExtraHeadersHtml(); ?> <script type="text/javascript"> <!-- window.onload = function() { setTimeout(scrollTo, 100, 0, 1); } // --> </script> <style type="text/css" media="screen">@import "./iui/iui.css";</style> <title><?php eh($ptitle); ?> </title> </head> <body> <div class="toolbar"> <h1 id="pageTitle"><?php eh($ptitle); ?> </h1> <a class="button" href="<?php eh($narabikae_uri); ?> ">並替</a> </div> <ul id="home"> <li class="group">メニュー</li> <?php P2Util::printInfoHtml(); foreach ($menuKLinkHtmls as $v) { ?> <li><?php echo $v; ?> </li><?php } ?> <li class="group">検索</li> <?php echo $search_form_htm; ?> </ul> <br> </body> </html> <?php }
/** * brdファイルを生成する * * @access public * @return string|false 成功したら生成したbrdファイルのパスを返す */ function makeBrdFile($cachefile) { global $_conf; $cont = ''; $data = file($cachefile); $this->setBrdMatch($cachefile); // パターンマッチ形式を登録 $this->setBrdList($data); // カテゴリーと板をセット if ($this->categories) { foreach ($this->categories as $cate) { if ($cate->num > 0) { $cont .= $cate->name . "\t0\n"; foreach ($cate->menuitas as $mita) { $cont .= "\t{$mita->host}\t{$mita->bbs}\t{$mita->itaj}\n"; } } } } if (!$cont) { // 2008/07/14 なぜここでこんな条件が必要だったのか不明。コメントアウトしてみる。 //if (strlen($GLOBALS['word']) > 0) { P2Util::pushInfoHtml(sprintf("<p>p2 error: %s から板メニューを生成することはできませんでした。</p>\n", hs($cachefile))); //} unlink($cachefile); return false; } $p2brdfile = BrdCtl::getP2BrdFile($cachefile); if (false === FileCtl::make_datafile($p2brdfile, $_conf['p2_perm'])) { return false; } if (false === FileCtl::filePutRename($p2brdfile, $cont)) { die(sprintf('p2 error: %s を更新できませんでした', hs($p2brdfile))); return false; } return $p2brdfile; }
/** * キーワードにマッチした板リストを表示する * * @param string $word * @return void */ function menu_iphone_show_matched_boards($word) { global $_conf; $brd_menus = BrdCtl::read_brds(); $word_ht = p2h($word); $title = $word_ht . ' (板)'; if (!$brd_menus) { echo "<div class=\"panel\" title=\"{$title}\">板リストは空です。</div>\n"; return; } if ($GLOBALS['ita_mikke']['num'] == 0) { echo "<div class=\"panel\" title=\"{$title}\">", ""{$word_ht}" にマッチする板はありませんでした。</div>\n"; return; } printf('<ul id="foundbrd%u" title="%s">', crc32($word . microtime()), $title); foreach ($brd_menus as $a_brd_menu) { foreach ($a_brd_menu->categories as $category) { $t = false; foreach ($category->menuitas as $mita) { if (!$t) { echo "<li class=\"group\">{$category->name}</li>"; $t = true; } echo "<li><a href=\"{$_conf['subject_php']}?host={$mita->host}&bbs={$mita->bbs}", "&itaj_en={$mita->itaj_en}\" target=\"_self\">{$mita->itaj_ht}</a></li>"; $i++; } } } echo "</ul>\n"; }
/** * p2 - 携帯用インデックスをHTMLプリントする関数 */ function index_print_k() { global $_conf, $_login; $newtime = date('gis'); $body = ""; $ptitle = "rep2phone"; // ログインユーザ情報 $htm['auth_user'] = "******" . date("Y/m/d (D) G:i:s") . "</p>\n"; // p2ログイン用URL $login_url = rtrim(dirname(P2Util::getMyUrl()), '/') . '/'; $login_url_pc = $login_url . '?b=pc'; $login_url_pc_hs = hs($login_url_pc); $login_url_k = $login_url . '?b=k&user='******'login_log_rec'] && $_conf['last_login_log_show']) { if (($log = P2Util::getLastAccessLog($_conf['login_log_file'])) !== false) { $log_hd = array_map('htmlspecialchars', $log); $htm['last_login'] = <<<EOP <font color="#888888"> 前回のログイン情報 - {$log_hd['date']}<br> ユーザ: {$log_hd['user']}<br> IP: {$log_hd['ip']}<br> HOST: {$log_hd['host']}<br> UA: {$log_hd['ua']}<br> REFERER: {$log_hd['referer']} </font> EOP; } } // 古いセッションIDがキャッシュされていることを考慮して、ユーザ情報を付加しておく // (リファラを考慮して、つけないほうがいい場合もあるので注意) $user_at_a = '&user='******'?user='******'/brdctl.class.php'; $search_form_htm = BrdCtl::getMenuKSearchFormHtml('menu_k.php'); //========================================================= // 携帯用 HTML プリント //========================================================= P2Util::header_nocache(); echo $_conf['doctype']; echo <<<EOP <html> <head> {$_conf['meta_charset_ht']} <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> <script type="text/javascript"> <!-- window.onload = function() { setTimeout(scrollTo, 100, 0, 1); } // --> </script> <style type="text/css" media="screen">@import "./iui/iui.css";@import "./iui/index.css";</style> <title>{$ptitle}</title> </head> <body> <div class="toolbar"> <h1 id="pageTitle">{$ptitle}</h1> <a class="button" href="editpref_i.php?dummy=1{$user_at_a}{$_conf['k_at_a']}">設定管理 </a> </div> EOP; P2Util::printInfoHtml(); echo <<<EOP <ul id="other" class="hidden"> <li class="group">その他</li> <li><a href="subject.php?spmode=res_hist{$_conf['k_at_a']}{$user_at_a}">書込履歴</a> </li> <li><a href="read_res_hist.php?nt={$newtime}{$_conf['k_at_a']}">ログ</a></li> <li><a href="subject.php?spmode=palace&norefresh=1{$_conf['k_at_a']}{$user_at_a}">スレの殿堂</a></li> <li><a href="editfavita_i.php?k=1">お気に入り編集</a></li> <li><a href="setting.php?dummy=1{$user_at_a}{$_conf['k_at_a']}">ログイン管理</a></li> <li class="group">板検索</li> {$search_form_htm} </ul> <ul id="fav" class="hidden"> EOP; printFavItaHtml(); echo <<<EOP </ul> <ul id="home"> <li class="group">メニュー</li> <li><a href="menu_k.php?view=cate{$_conf['k_at_a']}{$user_at_a}">板リスト</a></li> <li><a href="subject.php?spmode=fav&norefresh=1{$_conf['k_at_a']}{$user_at_a}">お気にスレの全て</a></li> <li><a href="subject.php?spmode=fav&sb_view=shinchaku{$_conf['k_at_a']}{$user_at_a}">お気にスレの新着</a></li> <li><a href="subject.php?spmode=recent&sb_view=shinchaku{$_conf['k_at_a']}{$user_at_a}">最近読んだスレの新着</a></li> <li><a href="subject.php?spmode=recent&norefresh=1{$_conf['k_at_a']}{$user_at_a}">最近読んだスレの全て</a></li> </ul> <div id="foot"> <div class="foot_index"> <span class="top"><a onclick="all.item('home').style.visibility='visible';all.item('other').style.visibility='hidden';all.item('fav').style.visibility='hidden'">Top</a></span> <span class="fav"><a onclick="all.item('fav').style.visibility='visible';all.item('home').style.visibility='hidden';all.item('other').style.visibility='hidden'">Top</a></span> <span class="other"><a onclick="all.item('other').style.visibility='visible';all.item('home').style.visibility='hidden';all.item('fav').style.visibility='hidden'">Top</a></span> </div> </div> </body> </html> EOP; }
<div class="toolbar"><h1 id="pageTitle">{$ptitle}</h1></div> EEE; P2Util::printInfoHtml(); // お気に板をHTML表示する if ($get['view'] == 'favita') { $aShowBrdMenuK->printFavItaHtml(); echo '<p><a id="backButton"class="button" href="iphone.php">TOP</a></p>'; // それ以外ならbrd読み込み } else { $brd_menus = BrdCtl::readBrdMenus(); } // 板検索フォームをHTML表示 if ($get['view'] != 'favita' && $get['view'] != 'rss' && empty($_GET['cateid'])) { echo '<ul><li class="group">検索</li></ul>'; echo '<div id="usage" class="panel"><filedset>'; echo BrdCtl::getMenuKSearchFormHtml(); echo '</filedset></div>'; } //=========================================================== // 検索結果をHTML表示 //=========================================================== // {{{ 検索ワードがあれば if (strlen($GLOBALS['word']) > 0) { $word_hs = htmlspecialchars($word, ENT_QUOTES); if ($GLOBALS['ita_mikke']['num']) { $hit_ht = "\"{$word_hs}\" {$GLOBALS['ita_mikke']['num']}hit!"; } echo '<div id="usage" class="panel">'; echo "<h2>板リスト検索結果{$hit_ht}</h2>"; echo '</div>'; // 板名を検索して表示する
eh($_conf['subject_php']); ?> ?spmode=palace&norefresh=1" title="DAT落ちしたスレ用のお気に入り">スレの殿堂</a><br> <a href="setting.php">ログイン管理</a><br> <a href="<?php eh($_conf['editpref_php']); ?> ">設定管理</a><br> <a href="http://find.2ch.net/" target="_blank" title="find.2ch.net">2ch検索</a> </div> </div> <?php //============================================================== // カテゴリと板をHTML表示 //============================================================== $brd_menus = BrdCtl::readBrdMenus(); // {{{ 検索ワードがあれば if (strlen($GLOBALS['word'])) { $msg_ht = '<p>'; if (empty($GLOBALS['ita_mikke']['num'])) { if (empty($GLOBALS['threti_match_ita_num'])) { $msg_ht .= sprintf('"%s"を含む板は見つかりませんでした。', hs($word)); } } else { $msg_ht .= sprintf('"%s"を含む板 %shit!', hs($word), hs($GLOBALS['ita_mikke']['num'])); // 検索結果が一つなら、自動で板一覧を開く if ($GLOBALS['ita_mikke']['num'] == 1) { $msg_ht .= '(自動オープンするよ)'; $location_uri = UriUtil::buildQueryUri($_conf['subject_php'], array('host' => $GLOBALS['ita_mikke']['host'], 'bbs' => $GLOBALS['ita_mikke']['bbs'], 'itaj_en' => $GLOBALS['ita_mikke']['itaj_en'])); $msg_ht .= <<<EOP <script type="text/javascript">
EOP; P2Util::printInfoHtml(); //============================================================== // お気に板をプリントする //============================================================== if ($_GET['view'] == "favita") { $aShowBrdMenuK->printFavIta(); //RSSリスト読み込み } elseif ($_GET['view'] == "rss" && $_conf['expack.rss.enabled']) { if ($_conf['view_forced_by_query']) { output_add_rewrite_var('b', $_conf['b']); } require_once P2EX_LIB_DIR . '/rss/menu.inc.php'; // それ以外ならbrd読み込み } else { $brd_menus = BrdCtl::read_brds(); } //=========================================================== // 板検索 //=========================================================== if ($_GET['view'] != "favita" && $_GET['view'] != "rss" && !$_GET['cateid']) { $kensaku_form_ht = <<<EOFORM <form method="GET" action="{$_SERVER['SCRIPT_NAME']}" accept-charset="{$_conf['accept_charset']}"> <input type="hidden" name="nr" value="1"> <input type="text" id="word" name="word" value="{$word}" size="12"> <input type="submit" name="submit" value="板検索"> {$_conf['detect_hint_input_ht']}{$_conf['k_input_ht']} </form> EOFORM; echo $kensaku_form_ht;
/** * オンライン板リストを読み込む * * @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; }