mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 09:05:55 +00:00
BUGFIX Fixed SQL queries with backticks that don't need them, and fixed queries on decorators that require double quote escaping
This commit is contained in:
parent
6e1499822f
commit
acbfe35f4d
@ -48,7 +48,12 @@ class FileSubsites extends DataObjectDecorator {
|
||||
|
||||
// The foreach is an ugly way of getting the first key :-)
|
||||
foreach($query->from as $tableName => $info) {
|
||||
$query->where[] = "`$tableName`.SubsiteID IN (0, $subsiteID)";
|
||||
$where = "`$tableName`.SubsiteID IN (0, $subsiteID)";
|
||||
if(defined('Database::USE_ANSI_SQL')) {
|
||||
$where = "\"$tableName\".\"SubsiteID\" IN (0, $subsiteID)";
|
||||
}
|
||||
|
||||
$query->where[] = $where;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,12 @@ class GroupSubsites extends DataObjectDecorator {
|
||||
|
||||
// The foreach is an ugly way of getting the first key :-)
|
||||
foreach($query->from as $tableName => $info) {
|
||||
$query->where[] = "`$tableName`.SubsiteID IN (0, $subsiteID)";
|
||||
$where = "`$tableName`.SubsiteID IN (0, $subsiteID)";
|
||||
if(defined('Database::USE_ANSI_SQL')) {
|
||||
$where = "\"$tableName\".\"SubsiteID\" IN (0, $subsiteID)";
|
||||
}
|
||||
|
||||
$query->where[] = $where;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -48,14 +48,19 @@ class SiteTreeSubsites extends DataObjectDecorator {
|
||||
// If you're querying by ID, ignore the sub-site - this is a bit ugly...
|
||||
if(!$query->where || (strpos($query->where[0], ".\"ID\" = ") === false && strpos($query->where[0], ".`ID` = ") === false && strpos($query->where[0], ".ID = ") === false && strpos($query->where[0], "ID = ") !== 0)) {
|
||||
|
||||
if($context = DataObject::context_obj()) $subsiteID = (int)$context->SubsiteID;
|
||||
else $subsiteID = (int)Subsite::currentSubsiteID();
|
||||
if($context = DataObject::context_obj()) $subsiteID = (int) $context->SubsiteID;
|
||||
else $subsiteID = (int) Subsite::currentSubsiteID();
|
||||
|
||||
// The foreach is an ugly way of getting the first key :-)
|
||||
foreach($query->from as $tableName => $info) {
|
||||
$where = "`$tableName`.SubsiteID IN ($subsiteID)";
|
||||
if(defined('Database::USE_ANSI_SQL')) {
|
||||
$where = "\"$tableName\".\"SubsiteID\" IN ($subsiteID)";
|
||||
}
|
||||
|
||||
// The tableName should be SiteTree or SiteTree_Live...
|
||||
if(strpos($tableName,'SiteTree') === false) break;
|
||||
$query->where[] = "`$tableName`.SubsiteID IN ($subsiteID)";
|
||||
$query->where[] = $where;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -317,13 +317,13 @@ JS;
|
||||
|
||||
$subsite = null;
|
||||
if(self::$use_domain) {
|
||||
$subsite = DataObject::get_one('Subsite',"`Subdomain` = '$SQL_subdomain' AND `Domain`='$SQL_domain' AND `IsPublic`=1");
|
||||
$subsite = DataObject::get_one('Subsite', "Subdomain = '$SQL_subdomain' AND Domain = '$SQL_domain' AND IsPublic = 1");
|
||||
}
|
||||
if(!$subsite) {
|
||||
$subsite = DataObject::get_one('Subsite',"`Subdomain` = '$SQL_subdomain' AND `IsPublic`");
|
||||
$subsite = DataObject::get_one('Subsite', "Subdomain = '$SQL_subdomain' AND IsPublic = 1");
|
||||
}
|
||||
if(!$subsite) {
|
||||
$subsite = DataObject::get_one('Subsite',"`DefaultSite` AND `IsPublic`");
|
||||
$subsite = DataObject::get_one('Subsite', "DefaultSite = 1 AND IsPublic = 1");
|
||||
}
|
||||
|
||||
if($subsite) {
|
||||
@ -355,24 +355,23 @@ JS;
|
||||
*
|
||||
* @return DataObjectSet Subsite instances
|
||||
*/
|
||||
static function getSubsitesForMember( $member = null) {
|
||||
static function getSubsitesForMember($member = null) {
|
||||
if(!$member && $member !== FALSE) $member = Member::currentMember();
|
||||
|
||||
if(!$member) return false;
|
||||
|
||||
if(self::hasMainSitePermission($member)) {
|
||||
return DataObject::get('Subsite');
|
||||
} else {
|
||||
return DataObject::get(
|
||||
'Subsite',
|
||||
"`MemberID` = {$member->ID}",
|
||||
'',
|
||||
"LEFT JOIN `Group` ON `Subsite`.`ID` = `SubsiteID`
|
||||
LEFT JOIN `Group_Members` ON `Group`.`ID` = `Group_Members`.`GroupID`"
|
||||
);
|
||||
}
|
||||
|
||||
return DataObject::get(
|
||||
'Subsite',
|
||||
"MemberID = {$member->ID}",
|
||||
'',
|
||||
"LEFT JOIN `Group` ON `Subsite`.`ID` = `SubsiteID`
|
||||
LEFT JOIN `Group_Members` ON `Group`.`ID` = `Group_Members`.`GroupID`"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
static function hasMainSitePermission($member = null, $permissionCodes = array('ADMIN')) {
|
||||
if(!is_array($permissionCodes))
|
||||
user_error('Permissions must be passed to Subsite::hasMainSitePermission as an array', E_USER_ERROR);
|
||||
@ -426,7 +425,7 @@ JS;
|
||||
while(count($stack) > 0) {
|
||||
list($sourceParentID, $destParentID) = array_pop($stack);
|
||||
|
||||
$children = Versioned::get_by_stage('Page', 'Live', "`ParentID`=$sourceParentID", '');
|
||||
$children = Versioned::get_by_stage('Page', 'Live', "ParentID = $sourceParentID", '');
|
||||
|
||||
if($children) {
|
||||
foreach($children as $child) {
|
||||
@ -545,7 +544,7 @@ class Subsite_Template extends Subsite {
|
||||
while(count($stack) > 0) {
|
||||
list($sourceParentID, $destParentID) = array_pop($stack);
|
||||
|
||||
$children = Versioned::get_by_stage('SiteTree', 'Live', "`ParentID`=$sourceParentID", '');
|
||||
$children = Versioned::get_by_stage('SiteTree', 'Live', "ParentID = $sourceParentID", '');
|
||||
|
||||
if($children) {
|
||||
foreach($children as $child) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user