$_GET['mode'] = $_GET['ktool_name']; include $www_dir_s . 'info_sp.php'; exit; default: p2die('不正なコマンド'); } } //================================================= // スレの指定 //================================================= kspDetectThread(); // global $host, $bbs, $key, $ls $aThread = new Thread(); // hostを分解してidxファイルのパスを求める if (!isset($aThread->keyidx)) { $aThread->setThreadPathInfo($host, $bbs, $key); } $aThread->itaj = P2Util::getItaName($host, $bbs); if (!$aThread->itaj) { $aThread->itaj = $aThread->bbs; } // idxファイルがあれば読み込む if ($lines = FileCtl::file_read_lines($aThread->keyidx, FILE_IGNORE_NEW_LINES)) { $idx_data = explode('<>', $lines[0]); } else { p2die('指定されたスレッドのidxがありません。'); } $aThread->getThreadInfoFromIdx(); //================================================= // 表示用変数を設定 //=================================================
</thead> <tbody> <?php $R = true; foreach ($threads as $o => $t) { $new = ''; $turl = sprintf('%s?host=%s&bbs=%s&key=%d', $_conf['read_php'], $t->host, $t->bbs, $t->tkey); $burl = sprintf('%s?host=%s&bbs=%s&itaj_en=%s&word=%s', $_conf['subject_php'], $t->host, $t->bbs, UrlSafeBase64::encode($t->ita), $htm['query_en']); if (P2Util::isHostMachiBbs($t->host)) { $ourl = sprintf('http://%s/bbs/read.cgi/%s/%s/', $t->host, $t->bbs, $t->tkey); } else { $ourl = sprintf('http://%s/test/read.cgi/%s/%s/', $t->host, $t->bbs, $t->tkey); } $iurl = P2Util::throughIme($ourl); $aThread = new Thread(); $aThread->setThreadPathInfo($t->host, $t->bbs, $t->tkey); if ($aThread->getThreadInfoFromIdx() && $aThread->isKitoku()) { $rnum = max($t->resnum, $aThread->readnum); $nnum = max(0, $rnum - $aThread->readnum); } else { $rnum = $t->resnum; $nnum = ''; } ?> <tr class="<?php echo $R ? 'r1 r_odd' : 'r2 r_even'; $R = !$R; ?> "> <td class="ti"><?php echo $nnum;
/** * 既読数をセットする * * @param string $host; * @param string $bbs; * @param int $key * @param int $readnum * @return bool */ function httpcmd_set_readnum($host, $bbs, $key, $readnum) { if (!is_numeric($readnum) || ($readnum = intval($readnum)) < 0) { return false; } $aThread = new Thread(); $aThread->setThreadPathInfo($host, $bbs, $key); $lines = FileCtl::file_read_lines($aThread->keyidx, FILE_IGNORE_NEW_LINES); if (!$lines) { return false; } $idx_data = explode('<>', $lines[0]); if (count($idx_data) < 12) { return false; } $idx_data[5] = $readnum; $idx_data[9] = $readnum > 0 ? $readnum - 1 : 0; P2Util::recKeyIdx($aThread->keyidx, $idx_data); return true; }
/** * スレッド情報を取得する * * @param string $host * @param string $bbs * @param string $key * @return object スレッド情報 */ function get_thread_info($host, $bbs, $key) { global $_conf; $group = P2Util::getHostGroupName($host); $info = new stdClass(); $info->type = 'thread'; $info->group = $group; $info->host = $host; $info->bbs = $bbs; $info->key = $key; $aThread = new Thread(); // hostを分解してidxファイルのパスを求める $aThread->setThreadPathInfo($host, $bbs, $key); $key_line = $aThread->getThreadInfoFromIdx(); // $aThread->length をset $aThread->getDatBytesFromLocalDat(); // 板名を取得 $aThread->itaj = P2Util::getItaName($host, $bbs); if (!$aThread->itaj) { if (isset($_GET['itaj_en'])) { $aThread->itaj = UrlSafeBase64::decode($_GET['itaj_en']); } else { $aThread->itaj = $bbs; } } $info->itaj = $aThread->itaj; // スレタイトルを取得 if (!$aThread->ttitle) { if (isset($_GET['ttitle_en'])) { $aThread->setTtitle(UrlSafeBase64::decode($_GET['ttitle_en'])); } else { $aThread->setTitleFromLocal(); } } $info->ttitle = $aThread->ttitle; // お気にスレ登録状況を取得 $favs = array(); if ($_conf['expack.misc.multi_favs']) { $favlist_titles = FavSetManager::getFavSetTitles('m_favlist_set'); for ($i = 0; $i <= $_conf['expack.misc.favset_num']; $i++) { if (!isset($favlist_titles[$i]) || $favlist_titles[$i] == '') { if ($i == 0) { $favtitle = 'お気にスレ'; } else { $favtitle = "お気にスレ{$i}"; } } else { $favtitle = $favlist_titles[$i]; } $favs[$i] = array('title' => $favtitle, 'set' => !empty($aThread->favs[$i])); } } else { $favs[0] = array('title' => 'お気にスレ', 'set' => !empty($aThread->fav)); } $info->favs = $favs; // 殿堂チェック $info->palace = false; if ($pallines = FileCtl::file_read_lines($_conf['palace_idx'], FILE_IGNORE_NEW_LINES)) { foreach ($pallines as $l) { $palarray = explode('<>', $l); if ($aThread->key == $palarray[1] && $aThread->bbs == $palarray[11]) { if (P2Util::getHostGroupName($palarray[10]) == $group) { $info->palace = true; break; } } } } // スレッドあぼーんチェック $info->taborn = false; $taborn_idx = P2Util::idxDirOfHostBbs($host, $bbs) . 'p2_threads_aborn.idx'; if ($tabornlines = FileCtl::file_read_lines($taborn_idx, FILE_IGNORE_NEW_LINES)) { foreach ($tabornlines as $l) { $tabornarray = explode('<>', $l); if ($key == $tabornarray[1]) { $info->taborn = true; break; } } } // ログ関連 $hasLog = false; if (file_exists($aThread->keydat)) { $info->keydat = $aThread->keydat; $info->length = $aThread->length; $hasLog = true; } else { $info->keydat = null; $info->length = -1; } if (file_exists($aThread->keyidx)) { $info->keyidx = $aThread->keyidx; $hasLog = true; } else { $info->keyidx = null; } if ($aThread->gotnum) { $info->gotnum = $aThread->gotnum; } elseif ($hasLog) { $info->gotnum = 0; } else { $info->gotnum = -1; } return $info; }