本文整理汇总了PHP中Block::forUpdate方法的典型用法代码示例。如果您正苦于以下问题:PHP Block::forUpdate方法的具体用法?PHP Block::forUpdate怎么用?PHP Block::forUpdate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Block
的用法示例。
在下文中一共展示了Block::forUpdate方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getBlockedStatus
/**
* Get blocking information
* @access private
* @param bool $bFromSlave Specify whether to check slave or master. To improve performance,
* non-critical checks are done against slaves. Check when actually saving should be done against
* master.
*
* Note that even if $bFromSlave is false, the check is done first against slave, then master.
* The logic is that if blocked on slave, we'll assume it's either blocked on master or
* just slightly outta sync and soon corrected - safer to block slightly more that less.
* And it's cheaper to check slave first, then master if needed, than master always.
*/
function getBlockedStatus($bFromSlave = true)
{
global $wgIP, $wgBlockCache, $wgProxyList, $wgEnableSorbs, $wgProxyWhitelist;
if (-1 != $this->mBlockedby) {
return;
}
$this->mBlockedby = 0;
# User blocking
if ($this->mId) {
$block = new Block();
$block->forUpdate($bFromSlave);
if ($block->load($wgIP, $this->mId)) {
$this->mBlockedby = $block->mBy;
$this->mBlockreason = $block->mReason;
$this->spreadBlock();
}
}
# IP/range blocking
if (!$this->mBlockedby) {
# Check first against slave, and optionally from master.
$block = $wgBlockCache->get($wgIP, true);
if (!$block && !$bFromSlave) {
# Not blocked: check against master, to make sure.
$wgBlockCache->clearLocal();
$block = $wgBlockCache->get($wgIP, false);
}
if ($block !== false) {
$this->mBlockedby = $block->mBy;
$this->mBlockreason = $block->mReason;
}
}
# Proxy blocking
if (!$this->isSysop() && !in_array($wgIP, $wgProxyWhitelist)) {
# Local list
if (array_key_exists($wgIP, $wgProxyList)) {
$this->mBlockedby = wfMsg('proxyblocker');
$this->mBlockreason = wfMsg('proxyblockreason');
}
# DNSBL
if (!$this->mBlockedby && $wgEnableSorbs && !$this->getID()) {
if ($this->inSorbsBlacklist($wgIP)) {
$this->mBlockedby = wfMsg('sorbs');
$this->mBlockreason = wfMsg('sorbsreason');
}
}
}
}
示例2: enumBlocks
function enumBlocks($callback, $tag, $flags = 0)
{
global $wgAntiLockFlags;
$block = new Block();
if ($flags & EB_FOR_UPDATE) {
$db =& wfGetDB(DB_MASTER);
if ($wgAntiLockFlags & ALF_NO_BLOCK_LOCK) {
$options = '';
} else {
$options = 'FOR UPDATE';
}
$block->forUpdate(true);
} else {
$db =& wfGetDB(DB_SLAVE);
$options = '';
}
$ipblocks = $db->tableName('ipblocks');
$sql = "SELECT * FROM {$ipblocks} ORDER BY ipb_timestamp DESC {$options}";
$res = $db->query($sql, 'Block::enumBans');
while ($row = $db->fetchObject($res)) {
$block->initFromRow($row);
if (!($flags & EB_KEEP_EXPIRED)) {
if (!$block->deleteIfExpired()) {
$callback($block, $tag);
}
} else {
$callback($block, $tag);
}
}
wfFreeResult($res);
}
示例3: enumBlocks
function enumBlocks($callback, $tag, $flags = 0)
{
global $wgAntiLockFlags;
$block = new Block();
if ($flags & Block::EB_FOR_UPDATE) {
$db = wfGetDB(DB_MASTER);
if ($wgAntiLockFlags & ALF_NO_BLOCK_LOCK) {
$options = '';
} else {
$options = 'FOR UPDATE';
}
$block->forUpdate(true);
} else {
$db = wfGetDB(DB_SLAVE);
$options = '';
}
if ($flags & Block::EB_RANGE_ONLY) {
$cond = " AND ipb_range_start <> ''";
} else {
$cond = '';
}
$now = wfTimestampNow();
list($ipblocks, $user) = $db->tableNamesN('ipblocks', 'user');
$sql = "SELECT {$ipblocks}.*,user_name FROM {$ipblocks},{$user} " . "WHERE user_id=ipb_by {$cond} ORDER BY ipb_timestamp DESC {$options}";
$res = $db->query($sql, 'Block::enumBlocks');
$num_rows = $db->numRows($res);
while ($row = $db->fetchObject($res)) {
$block->initFromRow($row);
if ($flags & Block::EB_RANGE_ONLY && $block->mRangeStart == '') {
continue;
}
if (!($flags & Block::EB_KEEP_EXPIRED)) {
if ($block->mExpiry && $now > $block->mExpiry) {
$block->delete();
} else {
call_user_func($callback, $block, $tag);
}
} else {
call_user_func($callback, $block, $tag);
}
}
$db->freeResult($res);
return $num_rows;
}
示例4: get
/**
* Find out if a given IP address is blocked
*
* @param String $ip IP address
* @param bool $bFromSlave True means to load check against slave, else check against master.
*/
function get($ip, $bFromSlave)
{
$this->load($bFromSlave);
$ipint = ip2long($ip);
$blocked = false;
foreach ($this->mData as $networkBits => $blockInts) {
if (array_key_exists($ipint >> 32 - $networkBits, $blockInts)) {
$blocked = true;
break;
}
}
if ($blocked) {
# Clear low order bits
if ($networkBits != 32) {
$ip .= '/' . $networkBits;
$ip = Block::normaliseRange($ip);
}
$block = new Block();
$block->forUpdate($bFromSlave);
$block->load($ip);
} else {
$block = false;
}
return $block;
}