MINOR Better isset checks on Versioned#allVersions() due to changes in SQLQuery

This commit is contained in:
Stig Lindqvist 2011-09-27 15:14:01 +13:00 committed by Stig Lindqvist
parent 8d7bfd4ffa
commit 75c0fcd052

View File

@ -679,7 +679,7 @@ class Versioned extends DataExtension {
* Return a list of all the versions available. * Return a list of all the versions available.
* @param string $filter * @param string $filter
*/ */
function allVersions($filter = "", $sort = "", $limit = "", $join = "", $having = "") { public function allVersions($filter = "", $sort = "", $limit = "", $join = "", $having = "") {
// Make sure the table names are not postfixed (e.g. _Live) // Make sure the table names are not postfixed (e.g. _Live)
$oldMode = self::get_reading_mode(); $oldMode = self::get_reading_mode();
self::reading_stage('Stage'); self::reading_stage('Stage');
@ -687,8 +687,11 @@ class Versioned extends DataExtension {
$query = $this->owner->extendedSQL($filter, $sort, $limit, $join, $having); $query = $this->owner->extendedSQL($filter, $sort, $limit, $join, $having);
foreach($query->from as $table => $tableJoin) { foreach($query->from as $table => $tableJoin) {
if($tableJoin[0] == '"') $baseTable = str_replace('"','',$tableJoin); if(is_string($tableJoin) && $tableJoin[0] == '"') {
else if (substr($tableJoin,0,5) != 'INNER') $query->from[$table] = "LEFT JOIN \"$table\" ON \"$table\".\"RecordID\" = \"{$baseTable}_versions\".\"RecordID\" AND \"$table\".\"Version\" = \"{$baseTable}_versions\".\"Version\""; $baseTable = str_replace('"','',$tableJoin);
} elseif(is_string($tableJoin) && substr($tableJoin,0,5) != 'INNER') {
$query->from[$table] = "LEFT JOIN \"$table\" ON \"$table\".\"RecordID\" = \"{$baseTable}_versions\".\"RecordID\" AND \"$table\".\"Version\" = \"{$baseTable}_versions\".\"Version\"";
}
$query->renameTable($table, $table . '_versions'); $query->renameTable($table, $table . '_versions');
} }