本文整理匯總了PHP中Versioned::augmentSQL方法的典型用法代碼示例。如果您正苦於以下問題:PHP Versioned::augmentSQL方法的具體用法?PHP Versioned::augmentSQL怎麽用?PHP Versioned::augmentSQL使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Versioned
的用法示例。
在下文中一共展示了Versioned::augmentSQL方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: augmentSQL
/**
* augmentSQL alters read requests to return the 'correct' DataObject, given the current Moderatable state setting
*/
function augmentSQL(SQLQuery &$query)
{
/* If its disjunctive, throw an error. That would mean all approved objects would be included on all queries. */
if ($query->connective == "OR") {
throw new Exception("Moderatable can't filter on a disjunctive query");
}
$savedstage = Versioned::$reading_stage;
$stageTable = $this->baseTable($this->defaultStage);
$liveTable = $this->baseTable($this->liveStage);
/* Handle the 'approved' & 'approved_if_latest' selections */
if (ModeratableState::$state == 'approved' || ModeratableState::$state == 'approved_if_latest') {
Versioned::$reading_stage = $this->liveStage;
parent::augmentSQL($query);
if (ModeratableState::$state == 'approved_if_latest') {
$query->from["{$stageTable}VMVerCheck"] = "LEFT JOIN `{$stageTable}` ON `{$stageTable}`.ID = `{$liveTable}`.ID";
$query->where['VMVerCheck'] = "`{$stageTable}`.Version <= `{$liveTable}`.Version";
}
} else {
Versioned::$reading_stage = $this->defaultStage;
parent::augmentSQL($query);
if (ModeratableState::$state != 'any') {
$query->where['VMSpamSplit'] = $this->where(ModeratableState::$state);
$query->leftJoin($liveTable, "`{$stageTable}`.ID = `{$liveTable}`.ID");
$query->where['VMVerCheck'] = "`{$liveTable}`.Version IS NULL OR `{$stageTable}`.Version > `{$liveTable}`.Version";
}
}
Versioned::$reading_stage = $savedstage;
}