本文整理匯總了PHP中FileCtl類的典型用法代碼示例。如果您正苦於以下問題:PHP FileCtl類的具體用法?PHP FileCtl怎麽用?PHP FileCtl使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了FileCtl類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: set
/**
* ImageCache2 の一時的な有効・無効を切り替える
*
* @param bool $switch
* @param bool $mobile
* @return bool
*/
public static function set($switch, $mobile = false)
{
global $_conf;
$switch_file = $_conf['expack.ic2.switch_path'];
if (!file_exists($switch_file)) {
FileCtl::make_datafile($switch_file);
$flags = self::ENABLED_ALL;
} else {
$flags = self::ENABLED_ALL & filesize($switch_file);
}
if ($switch) {
if ($mobile) {
$flags |= self::ENABLED_MOBILE;
} else {
$flags |= self::ENABLED_PC;
}
} else {
if ($mobile) {
$flags &= ~self::ENABLED_MOBILE;
} else {
$flags &= ~self::ENABLED_PC;
}
}
if ($flags > 0) {
$data = str_repeat('*', $flags);
} else {
$data = '';
}
return file_put_contents($switch_file, $data, LOCK_EX) === $flags;
}
示例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: 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;
}
示例4: makeDenyHtaccess
/**
* ディレクトリに(アクセス拒否のための) .htaccess がなければ、自動で生成する
*
* @return void
*/
function makeDenyHtaccess($dir)
{
$hta = $dir . '/.htaccess';
if (!file_exists($hta)) {
$data = 'Order allow,deny' . "\n" . 'Deny from all' . "\n";
FileCtl::file_write_contents($hta, $data);
}
}
示例5: setFav
/**
* お気にスレをセットする関數
*
* $setfav は、'0'(解除), '1'(追加), 'top', 'up', 'down', 'bottom'
*
* @access public
* @return boolean
*/
function setFav($host, $bbs, $key, $setfav)
{
global $_conf;
if (P2Validate::host($host) || P2Validate::bbs($bbs) || P2Validate::key($key)) {
return false;
}
// スレッド.idx 記録
$data = _setFavToKeyIdx($host, $bbs, $key, $setfav);
$newlines = array();
$before_line_num = 0;
if (false === FileCtl::make_datafile($_conf['favlist_file'], $_conf['favlist_perm'])) {
return false;
}
if (false === ($favlines = file($_conf['favlist_file']))) {
return false;
}
// 最初に重複要素を削除しておく
if (!empty($favlines)) {
$i = -1;
foreach ($favlines as $line) {
$i++;
$line = rtrim($line);
$lar = explode('<>', $line);
// 重複回避
if ($lar[1] == $key && $lar[11] == $bbs) {
$before_line_num = $i;
// 移動前の行番號をセット
continue;
// keyのないものは不正データなのでスキップ
} elseif (!$lar[1]) {
continue;
} elseif (P2Validate::host($lar[10]) || P2Validate::bbs($lar[11]) || P2Validate::key($lar[1])) {
continue;
} else {
$newlines[] = $line;
}
}
}
if (!empty($GLOBALS['brazil'])) {
//$newlines = _removeLargeFavlistData($newlines);
}
// 記録データ設定
if ($setfav) {
$newdata = implode('<>', array(geti($data[0]), $key, geti($data[2]), geti($data[3]), geti($data[4]), geti($data[5]), 1, 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, $setfav);
} else {
$rec_lines = $newlines;
}
if (false === file_put_contents($_conf['favlist_file'], $rec_lines ? implode("\n", $rec_lines) . "\n" : '', LOCK_EX)) {
trigger_error(sprintf('file_put_contents(%s)', $_conf['favlist_file']), E_USER_WARNING);
return false;
}
// お気にスレ共有
_setFavRank($host, $bbs, $key, $setfav, geti($data[0]));
return true;
}
示例6: tgrep_read_recent_list
/**
* 検索履歴を読み込む
*/
function tgrep_read_recent_list()
{
global $_conf;
$list = FileCtl::file_read_lines($_conf['expack.tgrep.recent_file'], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!is_array($list)) {
return array();
}
return $list;
}
示例7: 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 "あぼーん解除、完了しました。";
}
*/
}
示例8: editFile
/**
* ファイル內容を読み込んで編集する関數
*/
function editFile($path, $encode, $title)
{
global $_conf, $modori_url, $rows, $cols, $csrfid;
if ($path == '') {
p2die('path が指定されていません');
}
$filename = basename($path);
$ptitle = 'Edit: ' . p2h($title) . ' (' . $filename . ')';
//ファイル內容読み込み
FileCtl::make_datafile($path) or p2die("cannot make file. ({$path})");
$cont = file_get_contents($path);
if ($encode == "EUC-JP") {
$cont = mb_convert_encoding($cont, 'CP932', 'CP51932');
}
$cont_area = p2h($cont);
if ($modori_url) {
$modori_url_ht = "<p><a href=\"{$modori_url}\">Back</a></p>\n";
} else {
$modori_url_ht = '';
}
$rows_at = $rows > 0 ? sprintf(' rows="%d"', $rows) : '';
$cols_at = $cols > 0 ? sprintf(' cols="%d"', $cols) : '';
// プリント
echo $_conf['doctype'];
echo <<<EOHEADER
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
{$_conf['extra_headers_ht']}
<title>{$ptitle}</title>
</head>
<body onload="top.document.title=self.document.title;">
EOHEADER;
$info_msg_ht = P2Util::getInfoHtml();
echo $modori_url_ht;
echo $ptitle;
echo <<<EOFORM
<form action="{$_SERVER['SCRIPT_NAME']}" method="post" accept-charset="{$_conf['accept_charset']}">
<input type="hidden" name="file" value="{$filename}">
<input type="hidden" name="modori_url" value="{$modori_url}">
<input type="hidden" name="encode" value="{$encode}">
<input type="hidden" name="rows" value="{$rows}">
<input type="hidden" name="cols" value="{$cols}">
<input type="hidden" name="csrfid" value="{$csrfid}">
<input type="submit" name="submit" value="Save">
{$info_msg_ht}<br>
<textarea style="font-size:9pt;" id="filecont" name="filecont" wrap="off"{$rows_at}{$cols_at}>{$cont_area}</textarea>
{$_conf['detect_hint_input_ht']}{$_conf['k_input_ht']}
</form>
EOFORM;
echo '</body></html>';
return true;
}
示例9: 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;
}
示例10: __construct
/**
* コンストラクタ
*
* @param string $name ロック名(≒排他処理したいファイル名)
* @param bool $remove ロックファイルを自動で削除するかどうか
* @param string $suffix ロックファイル名の接尾辭
*/
public function __construct($name, $remove = true, $suffix = '.lck')
{
$this->_filename = p2_realpath($name . $suffix);
$this->_remove = $remove;
FileCtl::mkdirFor($this->_filename);
$this->_fh = fopen($this->_filename, 'wb');
if (!$this->_fh) {
p2die("cannot create lockfile ({$this->_filename}).");
}
if (!flock($this->_fh, LOCK_EX)) {
p2die("cannot get lock ({$this->_filename}).");
}
}
示例11: save
public function save($data)
{
global $_conf;
$path = $_conf['pref_dir'] . '/' . $this->filename;
$newdata = '';
foreach ($data as $na_info) {
$a[0] = strtr(trim($na_info['match'], "\t\r\n"), "\t\r\n", " ");
$a[1] = strtr(trim($na_info['replace'], "\t\r\n"), "\t\r\n", " ");
if ($na_info['del'] || ($a[0] === '' || $a[1] === '')) {
continue;
}
$newdata .= implode("\t", $a) . "\n";
}
return FileCtl::file_write_contents($path, $newdata);
}
示例12: _getKVS
/**
* データを保存するP2KeyValueStoreオブジェクトを取得する
*
* @param string $databasePath
* @param string $codec
* @param string $tableName
* @return P2KeyValueStore
*/
protected static function _getKVS($databasePath, $codec = P2KeyValueStore::CODEC_SERIALIZING, $tableName = null)
{
global $_conf;
$id = $codec . ':' . $databasePath;
if (array_key_exists($id, self::$_kvs)) {
return self::$_kvs[$id];
}
if (!file_exists($databasePath) && !is_dir(dirname($databasePath))) {
FileCtl::mkdirFor($databasePath);
}
try {
$kvs = P2KeyValueStore::getStore($databasePath, $codec, $tableName);
self::$_kvs[$id] = $kvs;
} catch (Exception $e) {
p2die(get_class($e) . ': ' . $e->getMessage());
}
return $kvs;
}
示例13: print_rss_list_k
/**
* 登録されているRSS一覧を表示(攜帯用)
*/
function print_rss_list_k()
{
global $_conf;
$pageTitle = $_conf['expack.misc.multi_favs'] ? FavSetManager::getFavSetPageTitleHt('m_rss_set', 'RSS') : 'RSS';
echo $pageTitle;
echo '<hr>';
$i = 1;
if ($rss_list = FileCtl::file_read_lines($_conf['expack.rss.setting_path'], FILE_IGNORE_NEW_LINES)) {
foreach ($rss_list as $rss_info) {
$p = explode("\t", $rss_info);
if (count($p) > 1) {
$site = $p[0];
$xml = $p[1];
if (!empty($p[2])) {
$atom = 1;
$atom_q = '&atom=1';
} else {
$atom = 0;
$atom_q = '';
}
if ($i <= 9) {
$accesskey_at = $_conf['k_accesskey_at'][$i];
$accesskey_st = "{$i} ";
} else {
$accesskey_at = '';
$accesskey_st = '';
}
$localpath = rss_get_save_path($xml);
if (PEAR::isError($localpath)) {
echo $accesskey_st . $site . ' ' . $localpath->getMessage() . "<br>\n";
} else {
$mtime = file_exists($localpath) ? filemtime($localpath) : 0;
$site_en = UrlSafeBase64::encode($site);
$xml_en = rawurlencode($xml);
$rss_q = sprintf('?xml=%s&site_en=%s%s&mt=%d', $xml_en, $site_en, $atom_q, $mtime);
$rss_q_ht = p2h($rss_q);
echo "{$accesskey_st}<a href=\"subject_rss.php{$rss_q_ht}\"{$accesskey_at}>{$site}</a><br>\n";
}
$i++;
}
}
}
}
示例14: changeSkin
/**
* スキンを切り替える
*/
function changeSkin($skin)
{
global $_conf;
if (!preg_match('/^\\w+$/', $skin)) {
return "p2 error: 不正なスキン ({$skin}) が指定されました。";
}
if ($skin == 'conf_style') {
$newskin = './conf/conf_user_style.php';
} else {
$newskin = './skin/' . $skin . '.php';
}
if (file_exists($newskin)) {
if (FileCtl::file_write_contents($_conf['expack.skin.setting_path'], $skin) !== FALSE) {
return $skin;
} else {
return "p2 error: {$_conf['expack.skin.setting_path']} にスキン設定を書き込めませんでした。";
}
} else {
return "p2 error: 不正なスキン ({$skin}) が指定されました。";
}
}
示例15: viewTxtFile
/**
* ファイル內容を読み込んで表示する関數
*/
function viewTxtFile($file, $encode)
{
if ($file == '') {
p2die('file が指定されていません');
}
$filename = basename($file);
$ptitle = $filename;
//ファイル內容読み込み
$cont = FileCtl::file_read_contents($file);
if ($cont === false) {
$cont_area = '';
} else {
if ($encode == 'EUC-JP') {
$cont = mb_convert_encoding($cont, 'CP932', 'CP51932');
} elseif ($encode == 'UTF-8') {
$cont = mb_convert_encoding($cont, 'CP932', 'UTF-8');
}
$cont_area = htmlspecialchars($cont, ENT_QUOTES);
}
// プリント
echo <<<EOHEADER
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
{$_conf['extra_headers_ht']}
<title>{$ptitle}</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
</head>
<body onload="top.document.title=self.document.title;">
EOHEADER;
P2Util::printInfoHtml();
echo "<pre>";
echo $cont_area;
echo "</pre>";
echo '</body></html>';
return TRUE;
}