本文整理汇总了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;
}