mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 11:05:55 +02:00
API CHANGE: column names quoted properly
This commit is contained in:
parent
beffd4e526
commit
1b7408dfb1
@ -58,7 +58,7 @@ class FileSubsites extends DataObjectDecorator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(sizeof($query->select) > 1 && $query->select[0] != 'COUNT(*)'){
|
if(sizeof($query->select) > 1 && $query->select[0] != 'COUNT(*)'){
|
||||||
$query->orderby = 'SubsiteID' . ($query->orderby ? ', ' : '') . $query->orderby;
|
$query->orderby = "{$q}SubsiteID{$q}" . ($query->orderby ? ', ' : '') . $query->orderby;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -314,16 +314,20 @@ JS;
|
|||||||
|
|
||||||
$SQL_subdomain = Convert::raw2sql(array_shift($domainNameParts));
|
$SQL_subdomain = Convert::raw2sql(array_shift($domainNameParts));
|
||||||
$SQL_domain = join('.', Convert::raw2sql($domainNameParts));
|
$SQL_domain = join('.', Convert::raw2sql($domainNameParts));
|
||||||
|
|
||||||
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
|
$q="\"";
|
||||||
|
else $q='`';
|
||||||
|
|
||||||
$subsite = null;
|
$subsite = null;
|
||||||
if(self::$use_domain) {
|
if(self::$use_domain) {
|
||||||
$subsite = DataObject::get_one('Subsite', "Subdomain = '$SQL_subdomain' AND Domain = '$SQL_domain' AND IsPublic = 1");
|
$subsite = DataObject::get_one('Subsite', "{$q}Subdomain{$q} = '$SQL_subdomain' AND {$q}Domain{$q} = '$SQL_domain' AND {$q}IsPublic{$q} = 1");
|
||||||
}
|
}
|
||||||
if(!$subsite) {
|
if(!$subsite) {
|
||||||
$subsite = DataObject::get_one('Subsite', "Subdomain = '$SQL_subdomain' AND IsPublic = 1");
|
$subsite = DataObject::get_one('Subsite', "{$q}Subdomain{$q} = '$SQL_subdomain' AND {$q}IsPublic{$q} = 1");
|
||||||
}
|
}
|
||||||
if(!$subsite) {
|
if(!$subsite) {
|
||||||
$subsite = DataObject::get_one('Subsite', "DefaultSite = 1 AND IsPublic = 1");
|
$subsite = DataObject::get_one('Subsite', "{$q}DefaultSite{$q} = 1 AND {$q}IsPublic{$q} = 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
if($subsite) {
|
if($subsite) {
|
||||||
@ -398,26 +402,18 @@ JS;
|
|||||||
$SQL_perms = join("','", $SQLa_perm);
|
$SQL_perms = join("','", $SQLa_perm);
|
||||||
$memberID = (int)$member->ID;
|
$memberID = (int)$member->ID;
|
||||||
|
|
||||||
if(defined('DB::USE_ANSI_SQL')) {
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
$groupCount = DB::query("
|
$q="\"";
|
||||||
SELECT COUNT(\"Permission\".\"ID\")
|
else $q='`';
|
||||||
FROM \"Permission\"
|
|
||||||
INNER JOIN \"Group\" ON \"Group\".\"ID\" = \"Permission\".\"GroupID\" AND \"Group\".\"SubsiteID\" = 0
|
|
||||||
INNER JOIN \"Group_Members\" USING(\"GroupID\")
|
|
||||||
WHERE \"Permission\".\"Code\" IN ('$SQL_perms') AND \"MemberID\" = {$memberID}
|
|
||||||
")->value();
|
|
||||||
} else {
|
|
||||||
$groupCount = DB::query("
|
|
||||||
SELECT COUNT(`Permission`.`ID`)
|
|
||||||
FROM `Permission`
|
|
||||||
INNER JOIN `Group` ON `Group`.`ID` = `Permission`.`GroupID` AND `Group`.`SubsiteID` = 0
|
|
||||||
INNER JOIN `Group_Members` USING(`GroupID`)
|
|
||||||
WHERE
|
|
||||||
`Permission`.`Code` IN ('$SQL_perms')
|
|
||||||
AND `MemberID` = {$memberID}
|
|
||||||
")->value();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$groupCount = DB::query("
|
||||||
|
SELECT COUNT({$q}Permission{$q}.{$q}ID{$q})
|
||||||
|
FROM {$q}Permission{$q}
|
||||||
|
INNER JOIN {$q}Group{$q} ON {$q}Group{$q}.{$q}ID{$q} = {$q}Permission{$q}.{$q}GroupID{$q} AND {$q}Group{$q}.{$q}SubsiteID{$q} = 0
|
||||||
|
INNER JOIN {$q}Group_Members{$q} USING({$q}GroupID{$q})
|
||||||
|
WHERE {$q}Permission{$q}.{$q}Code{$q} IN ('$SQL_perms') AND {$q}MemberID{$q} = {$memberID}
|
||||||
|
")->value();
|
||||||
|
|
||||||
return ($groupCount > 0);
|
return ($groupCount > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -434,6 +430,10 @@ JS;
|
|||||||
$oldSubsiteID = Session::get('SubsiteID');
|
$oldSubsiteID = Session::get('SubsiteID');
|
||||||
self::changeSubsite($this->ID);
|
self::changeSubsite($this->ID);
|
||||||
|
|
||||||
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
|
$q="\"";
|
||||||
|
else $q='`';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy data from this template to the given subsite. Does this using an iterative depth-first search.
|
* Copy data from this template to the given subsite. Does this using an iterative depth-first search.
|
||||||
* This will make sure that the new parents on the new subsite are correct, and there are no funny
|
* This will make sure that the new parents on the new subsite are correct, and there are no funny
|
||||||
@ -444,7 +444,7 @@ JS;
|
|||||||
while(count($stack) > 0) {
|
while(count($stack) > 0) {
|
||||||
list($sourceParentID, $destParentID) = array_pop($stack);
|
list($sourceParentID, $destParentID) = array_pop($stack);
|
||||||
|
|
||||||
$children = Versioned::get_by_stage('Page', 'Live', "ParentID = $sourceParentID", '');
|
$children = Versioned::get_by_stage('Page', 'Live', "{$q}ParentID{$q} = $sourceParentID", '');
|
||||||
|
|
||||||
if($children) {
|
if($children) {
|
||||||
foreach($children as $child) {
|
foreach($children as $child) {
|
||||||
@ -555,6 +555,10 @@ class Subsite_Template extends Subsite {
|
|||||||
$oldSubsiteID = Session::get('SubsiteID');
|
$oldSubsiteID = Session::get('SubsiteID');
|
||||||
self::changeSubsite($this->ID);
|
self::changeSubsite($this->ID);
|
||||||
|
|
||||||
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
|
$q="\"";
|
||||||
|
else $q='`';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy site content from this template to the given subsite. Does this using an iterative depth-first search.
|
* Copy site content from this template to the given subsite. Does this using an iterative depth-first search.
|
||||||
* This will make sure that the new parents on the new subsite are correct, and there are no funny
|
* This will make sure that the new parents on the new subsite are correct, and there are no funny
|
||||||
@ -565,7 +569,7 @@ class Subsite_Template extends Subsite {
|
|||||||
while(count($stack) > 0) {
|
while(count($stack) > 0) {
|
||||||
list($sourceParentID, $destParentID) = array_pop($stack);
|
list($sourceParentID, $destParentID) = array_pop($stack);
|
||||||
|
|
||||||
$children = Versioned::get_by_stage('SiteTree', 'Live', "ParentID = $sourceParentID", '');
|
$children = Versioned::get_by_stage('SiteTree', 'Live', "{$q}ParentID{$q} = $sourceParentID", '');
|
||||||
|
|
||||||
if($children) {
|
if($children) {
|
||||||
foreach($children as $child) {
|
foreach($children as $child) {
|
||||||
@ -582,7 +586,7 @@ class Subsite_Template extends Subsite {
|
|||||||
* Copy groups from the template to the given subsites. Each of the groups will be created and left
|
* Copy groups from the template to the given subsites. Each of the groups will be created and left
|
||||||
* empty.
|
* empty.
|
||||||
*/
|
*/
|
||||||
$groups = DataObject::get("Group", "SubsiteID = '$this->ID'");
|
$groups = DataObject::get("Group", "{$q}SubsiteID{$q} = '$this->ID'");
|
||||||
if($groups) foreach($groups as $group) {
|
if($groups) foreach($groups as $group) {
|
||||||
$group->duplicateToSubsite($intranet);
|
$group->duplicateToSubsite($intranet);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,11 @@ class SubsiteTest extends SapphireTest {
|
|||||||
// Test that changeSubsite is working
|
// Test that changeSubsite is working
|
||||||
Subsite::changeSubsite($template->ID);
|
Subsite::changeSubsite($template->ID);
|
||||||
|
|
||||||
$tmplHome = DataObject::get_one('SiteTree', "URLSegment = 'home'");
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
|
$q="\"";
|
||||||
|
else $q='`';
|
||||||
|
|
||||||
|
$tmplHome = DataObject::get_one('SiteTree', "{$q}URLSegment{$q} = 'home'");
|
||||||
|
|
||||||
// Publish all the pages in the template, testing that DataObject::get only returns pages from the chosen subsite
|
// Publish all the pages in the template, testing that DataObject::get only returns pages from the chosen subsite
|
||||||
$pages = DataObject::get("SiteTree");
|
$pages = DataObject::get("SiteTree");
|
||||||
@ -65,7 +69,7 @@ class SubsiteTest extends SapphireTest {
|
|||||||
// Another test that changeSubsite is working
|
// Another test that changeSubsite is working
|
||||||
Subsite::changeSubsite($subsite->ID);
|
Subsite::changeSubsite($subsite->ID);
|
||||||
|
|
||||||
$siteHome = DataObject::get_one('SiteTree', "URLSegment = 'home'");
|
$siteHome = DataObject::get_one('SiteTree', "{$q}URLSegment{$q} = 'home'");
|
||||||
$this->assertNotNull($siteHome);
|
$this->assertNotNull($siteHome);
|
||||||
$this->assertEquals($subsite->ID, $siteHome->SubsiteID,
|
$this->assertEquals($subsite->ID, $siteHome->SubsiteID,
|
||||||
'createInstance() copies existing pages retaining the same URLSegment'
|
'createInstance() copies existing pages retaining the same URLSegment'
|
||||||
@ -74,7 +78,7 @@ class SubsiteTest extends SapphireTest {
|
|||||||
|
|
||||||
// Check linking of child pages
|
// Check linking of child pages
|
||||||
$tmplStaff = $this->objFromFixture('SiteTree','staff');
|
$tmplStaff = $this->objFromFixture('SiteTree','staff');
|
||||||
$siteStaff = DataObject::get_one('SiteTree', "URLSegment = '" . Convert::raw2sql($tmplStaff->URLSegment) . "'");
|
$siteStaff = DataObject::get_one('SiteTree', "{$q}URLSegment{$q} = '" . Convert::raw2sql($tmplStaff->URLSegment) . "'");
|
||||||
$this->assertEquals($siteStaff->MasterPageID, $tmplStaff->ID);
|
$this->assertEquals($siteStaff->MasterPageID, $tmplStaff->ID);
|
||||||
|
|
||||||
Subsite::changeSubsite(0);
|
Subsite::changeSubsite(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user