From 75c0fcd0526812c7ed1e2724a3f4cbd56e879f97 Mon Sep 17 00:00:00 2001 From: Stig Lindqvist Date: Tue, 27 Sep 2011 15:14:01 +1300 Subject: [PATCH] MINOR Better isset checks on Versioned#allVersions() due to changes in SQLQuery --- model/Versioned.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/model/Versioned.php b/model/Versioned.php index 08606a797..620fa2c07 100644 --- a/model/Versioned.php +++ b/model/Versioned.php @@ -679,7 +679,7 @@ class Versioned extends DataExtension { * Return a list of all the versions available. * @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) $oldMode = self::get_reading_mode(); self::reading_stage('Stage'); @@ -687,8 +687,11 @@ class Versioned extends DataExtension { $query = $this->owner->extendedSQL($filter, $sort, $limit, $join, $having); foreach($query->from as $table => $tableJoin) { - if($tableJoin[0] == '"') $baseTable = str_replace('"','',$tableJoin); - 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\""; + if(is_string($tableJoin) && $tableJoin[0] == '"') { + $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'); }