本文整理汇总了PHP中P2Util类的典型用法代码示例。如果您正苦于以下问题:PHP P2Util类的具体用法?PHP P2Util怎么用?PHP P2Util使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了P2Util类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: deleteThisKey
/**
* 指定したキーのスレッドログ(idx (,dat))を削除する
*
* 通常は、この関数を直接呼び出すことはない。deleteLogs() から呼び出される。
*
* @see deleteLogs()
* @return integer|false 削除できたら1, 削除対象がなければ2を返す。失敗があればfalse。
*/
function deleteThisKey($host, $bbs, $key)
{
global $_conf;
$anidx = P2Util::idxDirOfHostBbs($host, $bbs) . $key . '.idx';
$adat = P2Util::datDirOfHostBbs($host, $bbs) . $key . '.dat';
// Fileの削除処理
// idx(個人用設定)
if (file_exists($anidx)) {
if (unlink($anidx)) {
$deleted_flag = true;
} else {
$failed_flag = true;
}
}
// datの削除処理
if (file_exists($adat)) {
if (unlink($adat)) {
$deleted_flag = true;
} else {
$failed_flag = true;
}
}
// 失敗があれば
if (!empty($failed_flag)) {
return false;
// 削除できたら
} elseif (!empty($deleted_flag)) {
return 1;
// 削除対象がなければ
} else {
return 2;
}
}
示例2: deleMsg
/**
* チェックした書き込み記事を削除する
*
* @access public
* @return boolean
*/
function deleMsg($checked_hists)
{
global $_conf;
if (!($reslines = file($_conf['p2_res_hist_dat']))) {
p2die(sprintf('%s を開けませんでした', $_conf['p2_res_hist_dat']));
return false;
}
$reslines = array_map('rtrim', $reslines);
// ファイルの下に記録されているものが新しいので逆順にする
$reslines = array_reverse($reslines);
$neolines = array();
// チェックして整えて
if ($reslines) {
$rmnums = _getRmNums($checked_hists, $reslines);
$neolines = _rmLine($rmnums, $reslines);
P2Util::pushInfoHtml("<p>p2 info: " . count($rmnums) . "件のレス記事を削除しました</p>");
}
if (is_array($neolines)) {
// 行順を戻す
$neolines = array_reverse($neolines);
$cont = "";
if ($neolines) {
$cont = implode("\n", $neolines) . "\n";
}
// 書き込み処理
if (false === FileCtl::filePutRename($_conf['p2_res_hist_dat'], $cont)) {
$errmsg = sprintf('p2 error: %s(), FileCtl::filePutRename() failed.', __FUNCTION__);
trigger_error($errmsg, E_USER_WARNING);
return false;
}
}
return true;
}
示例3: wordForMatch
/**
* フォームから送られてきたワードをマッチ関数に適合させる
*
* @static
* @access public
* @return string $word_fm 適合パターン。SJISで返す。
*/
function wordForMatch($word, $method = 'regex')
{
$word_fm = $word;
// 「そのまま」でなければ、全角空白を半角空白に矯正
if ($method != 'just') {
$word_fm = mb_convert_kana($word_fm, 's');
}
$word_fm = trim($word_fm);
$word_fm = htmlspecialchars($word_fm, ENT_NOQUOTES);
if (in_array($method, array('and', 'or', 'just'))) {
// preg_quote()で2バイト目が0x5B("[")の"ー"なども変換されてしまうので
// UTF-8にしてから正規表現の特殊文字をエスケープ
$word_fm = mb_convert_encoding($word_fm, 'UTF-8', 'SJIS-win');
if (P2_MBREGEX_AVAILABLE == 1) {
$word_fm = preg_quote($word_fm);
} else {
$word_fm = preg_quote($word_fm, '/');
}
$word_fm = mb_convert_encoding($word_fm, 'SJIS-win', 'UTF-8');
// 他、regex(正規表現)なら
} else {
$word_fm = str_replace('/', '\\/', $word_fm);
$tmp_pattern = '/' . mb_convert_encoding($word_fm, 'UTF-8', 'SJIS-win') . '/u';
if (false === @preg_match($tmp_pattern, '.')) {
P2Util::pushInfoHtml(sprintf('p2 warning: フィルタ語句の正規表\現に誤りがあります "%s"', hs($word_fm)));
$word_fm = '';
}
if (P2_MBREGEX_AVAILABLE == 0) {
$word_fm = str_replace('/', '\\/', $word_fm);
}
// 末尾のワイルドカードは除去してしまう
$word_fm = rtrim($word_fm, '.+*');
}
return $word_fm;
}
示例4: cacheDownload
/**
* Wiki:Last-Modifiedをチェックしてキャッシュする
* time:チェックしない期間(unixtime)
*/
function cacheDownload($url, $path, $time = 0)
{
global $_conf;
$filetime = @filemtime($path);
// キャッシュ有効期間ならチェックしない
if ($filetime > 0 && $filetime > time() - $time) {
return;
}
if (!class_exists('HTTP_Request', false)) {
require 'HTTP/Request.php';
}
$req =& new HTTP_Request($url, array('timeout' => $_conf['fsockopen_time_limit']));
$req->setMethod('HEAD');
$now = time();
$req->sendRequest();
$unixtime = strtotime($req->getResponseHeader('Last-Modified'));
// 新しければ取得
if ($unixtime > $filetime) {
P2Util::fileDownload($url, $path);
// 最終更新日時を設定
// touch($path, $unixtime);
} else {
// touch($path, $now);
}
touch($path, $now);
}
示例5: downloadDatCha2
/**
* チャットちゃんねる cha2.net の dat を読んで保存する関数
* (差分取得には未対応)
* ※2ch互換として読み込んでいるので現在この関数は利用はしていない。@see TreadRead->downloadDat()
*
* @access public
* @return boolean
*/
function downloadDatCha2(&$ThreadRead)
{
// {{{ 既得datの取得レス数が適性かどうかを念のためチェック
if (file_exists($ThreadRead->keydat)) {
$dls = file($ThreadRead->keydat);
if (sizeof($dls) != $ThreadRead->gotnum) {
// echo 'bad size!<br>';
unlink($ThreadRead->keydat);
$ThreadRead->gotnum = 0;
}
} else {
$ThreadRead->gotnum = 0;
}
// }}}
if ($ThreadRead->gotnum == 0) {
$file_append = false;
$START = 1;
} else {
$file_append = true;
$START = $ThreadRead->gotnum + 1;
}
// チャットちゃんねる
$cha2url = "http://{$ThreadRead->host}/cgi-bin/{$ThreadRead->bbs}/dat/{$ThreadRead->key}.dat";
$datfile = $ThreadRead->keydat;
FileCtl::mkdirFor($datfile);
$cha2url_res = P2Util::fileDownload($cha2url, $datfile);
if (!$cha2url_res or !$cha2url_res->is_success()) {
$ThreadRead->diedat = true;
return false;
}
$ThreadRead->isonline = true;
return true;
}
示例6: fixed_name_convert_trip
/**
* コテハンの'#'より後をトリップに変換する
*
* @param string $name 生のコテハン
* @return string トリップ変換済みのコテハン
*/
function fixed_name_convert_trip($name)
{
$pos = strpos($name, '#');
if ($pos === false) {
return $name;
}
return substr($name, 0, $pos) . '◆' . P2Util::mkTrip(substr($name, $pos + 1));
}
示例7: isEnable
/**
* IDストーカーに対応しているか調べる
* $boardがなければloadも実行される
*/
function isEnable()
{
if ($this->host) {
if (!P2Util::isHost2chs($this->host)) {
return false;
}
}
return preg_match('/plus$/', $this->bbs);
}
示例8: settaborn_off
/**
* ■スレッドあぼーんを複数一括解除する
*/
function settaborn_off($host, $bbs, $taborn_off_keys)
{
if (!$taborn_off_keys) {
return;
}
// p2_threads_aborn.idx のパス取得
$taborn_idx = P2Util::idxDirOfHostBbs($host, $bbs) . 'p2_threads_aborn.idx';
// p2_threads_aborn.idx がなければ
if (!file_exists($taborn_idx)) {
p2die('あぼーんリストが見つかりませんでした。');
}
// p2_threads_aborn.idx 読み込み
$taborn_lines = FileCtl::file_read_lines($taborn_idx, FILE_IGNORE_NEW_LINES);
// 指定keyを削除
foreach ($taborn_off_keys as $val) {
$neolines = array();
if ($taborn_lines) {
foreach ($taborn_lines as $line) {
$lar = explode('<>', $line);
if ($lar[1] == $val) {
// key発見
// echo "key:{$val} のスレッドをあぼーん解除しました。<br>";
$kaijo_attayo = true;
continue;
}
if (!$lar[1]) {
continue;
}
// keyのないものは不正データ
$neolines[] = $line;
}
}
$taborn_lines = $neolines;
}
// 書き込む
if (file_exists($taborn_idx)) {
copy($taborn_idx, $taborn_idx . '.bak');
// 念のためバックアップ
}
$cont = '';
if (is_array($taborn_lines)) {
foreach ($taborn_lines as $l) {
$cont .= $l . "\n";
}
}
if (FileCtl::file_write_contents($taborn_idx, $cont) === false) {
p2die('cannot write file.');
}
/*
if (!$kaijo_attayo) {
// echo "指定されたスレッドは既にあぼーんリストに載っていないようです。";
} else {
// echo "あぼーん解除、完了しました。";
}
*/
}
示例9: cacheDownload
/**
* Wiki:Last-Modifiedをチェックしてキャッシュする
* time:チェックしない期間(unixtime)
*/
public static function cacheDownload($url, $path, $time = 0)
{
$filetime = @filemtime($path);
// キャッシュ有効期間ならダウンロードしない
if ($filetime !== false && $filetime > time() - $time) {
return;
}
// 新しければ取得
P2Util::fileDownload($url, $path);
}
示例10: setBbsNonameName
/**
* @access protected
* @return void
*/
function setBbsNonameName()
{
if (P2Util::isHost2chs($this->thread->host)) {
require_once P2_LIB_DIR . '/SettingTxt.php';
$SettingTxt = new SettingTxt($this->thread->host, $this->thread->bbs);
if (array_key_exists('BBS_NONAME_NAME', $SettingTxt->setting_array)) {
$this->BBS_NONAME_NAME = $SettingTxt->setting_array['BBS_NONAME_NAME'];
}
}
}
示例11: setPalace
/**
* スレを殿堂入りにセットする関数
*
* $set は、0(解除), 1(追加), top, up, down, bottom
*
* @access public
* @return boolean
*/
function setPalace($host, $bbs, $key, $set)
{
global $_conf;
$idxfile = P2Util::getKeyIdxFilePath($host, $bbs, $key);
// 既に key.idx データがあるなら読み込む
if (file_exists($idxfile) and $lines = file($idxfile)) {
$l = rtrim($lines[0]);
$data = explode('<>', $l);
}
if (false === FileCtl::make_datafile($_conf['palace_file'], $_conf['palace_perm'])) {
return false;
}
if (false === ($pallines = file($_conf['palace_file']))) {
return false;
}
$newlines = array();
$before_line_num = 0;
// {{{ 最初に重複要素を削除しておく
if (!empty($pallines)) {
$i = -1;
foreach ($pallines as $l) {
$i++;
$l = rtrim($l);
$lar = explode('<>', $l);
// 重複回避
if ($lar[1] == $key && $lar[11] == $bbs) {
$before_line_num = $i;
// 移動前の行番号をセット
continue;
// keyのないものは不正データなのでスキップ
} elseif (!$lar[1]) {
continue;
} else {
$newlines[] = $l;
}
}
}
// }}}
if (!empty($GLOBALS['brazil'])) {
//$newlines = _removeLargePallistData($newlines);
}
// 新規データ設定
if ($set) {
$newdata = implode('<>', array(geti($data[0]), $key, geti($data[2]), geti($data[3]), geti($data[4]), geti($data[5]), geti($data[6]), geti($data[7]), geti($data[8]), geti($data[9]), $host, $bbs));
require_once P2_LIB_DIR . '/getSetPosLines.func.php';
$rec_lines = getSetPosLines($newlines, $newdata, $before_line_num, $set);
} else {
$rec_lines = $newlines;
}
if (false === FileCtl::filePutRename($_conf['palace_file'], $rec_lines ? implode("\n", $rec_lines) . "\n" : '')) {
trigger_error(sprintf('p2 error: %s(), FileCtl::filePutRename() failed.', __FUNCTION__), E_USER_WARNING);
return false;
}
return true;
}
示例12: fetchSubjectTxt
/**
* subject.txtの並列ダウンロードを実行する
*
* @param string $mode
* @param array $_conf
* @return bool
*/
public static function fetchSubjectTxt($mode, array $_conf)
{
// コマンド生成
$args = array(escapeshellarg($_conf['expack.php_cli_path']));
if ($_conf['expack.dl_pecl_http']) {
$args[] = '-d';
$args[] = 'extension=' . escapeshellarg('http.' . PHP_SHLIB_SUFFIX);
}
$args[] = escapeshellarg(P2_CLI_DIR . DIRECTORY_SEPARATOR . 'fetch-subject-txt.php');
switch ($mode) {
case 'fav':
case 'recent':
case 'res_hist':
case 'merge_favita':
$args[] = sprintf('--mode=%s', $mode);
break;
default:
return false;
}
if ($_conf['expack.misc.multi_favs']) {
switch ($mode) {
case 'fav':
$args[] = sprintf('--set=%d', $_conf['m_favlist_set']);
break;
case 'merge_favita':
$args[] = sprintf('--set=%d', $_conf['m_favita_set']);
break;
}
}
// 標準エラー出力を標準出力にリダイレクト
$args[] = '2>&1';
$command = implode(' ', $args);
//P2Util::pushInfoHtml('<p>' . htmlspecialchars($command, ENT_QUOTES) . '</p>');
// 実行
$pipe = popen($command, 'r');
if (!is_resource($pipe)) {
p2die('コマンドを実行できませんでした。', $command);
}
$output = '';
while (!feof($pipe)) {
$output .= fgets($pipe);
}
$status = pclose($pipe);
if ($status != 0) {
P2Util::pushInfoHtml(sprintf('<p>%s(): ERROR(%d)</p>', __METHOD__, $status));
}
if ($output !== '') {
if ($status == 2) {
P2Util::pushInfoHtml($output);
} else {
P2Util::pushInfoHtml('<p>' . nl2br(htmlspecialchars($output, ENT_QUOTES)) . '</p>');
}
}
return $status == 0;
}
示例13: isEnable
/**
* 必死チェッカーに対応しているか調べる
* $boardがなければloadも実行される
*/
function isEnable()
{
if ($this->host) {
if (!P2Util::isHost2chs($this->host)) {
return false;
}
}
if (!isset($this->boards)) {
$this->load();
}
$this->enabled = in_array($this->bbs, $this->boards) ? true : false;
return $this->enabled;
}
示例14: _getSkinFilePath
/**
* @return string
*/
function _getSkinFilePath($skin = null)
{
global $_conf;
$skinFilePath = '';
if ($skin) {
$skinFilePath = P2Util::getSkinFilePathBySkinName($skin);
} elseif ($skin_setting_path = _getSkinSettingPath()) {
$skinFilePath = P2Util::getSkinFilePathBySkinName($skin_setting_path);
}
if (!$skinFilePath || !is_file($skinFilePath)) {
$skinFilePath = $_conf['conf_user_style_inc_php'];
}
return $skinFilePath;
}
示例15: _read_filter_setup
function _read_filter_setup()
{
$host = $_GET['host'];
$bbs = $_GET['bbs'];
$key = $_GET['key'];
$resnum = (int) $_GET['resnum'];
$field = $_GET['field'];
$aThread = new ThreadRead();
$aThread->setThreadPathInfo($host, $bbs, $key);
$aThread->readDat($aThread->keydat);
$i = $resnum - 1;
if (!($i >= 0 && $i < count($aThread->datlines) && isset($_GET['rf']) && is_array($_GET['rf']))) {
P2Util::pushInfoHtml('<p>フィルタリングの指定が変です。</p>');
unset($_GET['rf'], $_REQUEST['rf']);
return;
}
$ares = $aThread->datlines[$i];
$resar = $aThread->explodeDatLine($ares);
$name = $resar[0];
$mail = $resar[1];
$date_id = $resar[2];
$msg = $resar[3];
$params = $_GET['rf'];
$include = ResFilter::INCLUDE_NONE;
$fields = explode(':', $field);
$field = array_shift($fields);
if (in_array('refs', $fields)) {
$include |= ResFilter::INCLUDE_REFERENCES;
}
if (in_array('refed', $fields)) {
$include |= ResFilter::INCLUDE_REFERENCED;
}
$params['field'] = $field;
$params['include'] = $include;
$resFilter = ResFilter::configure($params);
$target = $resFilter->getTarget($ares, $resnum, $name, $mail, $date_id, $msg);
if ($field == 'date') {
$date_part = explode(' ', trim($target));
$word = $date_part[0];
} else {
$word = $target;
}
$params['word'] = $word;
$_REQUEST['rf'] = $params;
}