mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-02 14:18:48 +02:00
API CHANGE: Added includeMainSite argument to Subsite::accessible_sites() and replaced all usage of hasMainSitePermission with this method. (from r88971)
This commit is contained in:
parent
2b97d272f2
commit
7d46edfd0e
@ -19,14 +19,8 @@ class GroupSubsites extends DataObjectDecorator implements PermissionProvider {
|
|||||||
|
|
||||||
function updateCMSFields(&$fields) {
|
function updateCMSFields(&$fields) {
|
||||||
if($this->owner->canEdit() ){
|
if($this->owner->canEdit() ){
|
||||||
$subsiteMap = array();
|
$subsites = Subsite::accessible_sites(array('ADMIN', 'SECURITY_SUBSITE_GROUP'), true);
|
||||||
if(Subsite::hasMainSitePermission(Member::currentUser(), array('ADMIN', 'SECURITY_SUBSITE_GROUP'))) {
|
$subsiteMap = $subsites->toDropdownMap();
|
||||||
$subsiteMap[0] = 'Main site';
|
|
||||||
}
|
|
||||||
$subsites = Subsite::accessible_sites(array('ADMIN', 'SECURITY_SUBSITE_GROUP'));
|
|
||||||
if($subsites) foreach($subsites as $subsite) {
|
|
||||||
$subsiteMap[$subsite->ID] = $subsite->Title;
|
|
||||||
}
|
|
||||||
|
|
||||||
$tab = $fields->findOrMakeTab(
|
$tab = $fields->findOrMakeTab(
|
||||||
'Root.Subsites',
|
'Root.Subsites',
|
||||||
|
@ -56,39 +56,33 @@ class LeftAndMainSubsites extends Extension {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function Subsites() {
|
public function Subsites() {
|
||||||
$siteList = new DataObjectSet();
|
$accessPerm = 'CMS_ACCESS_'. $this->owner->class;
|
||||||
$subsites = Subsite::accessible_sites('CMS_ACCESS_' . $this->owner->class);
|
|
||||||
|
|
||||||
if(defined('DB::USE_ANSI_SQL'))
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
$q="\"";
|
$q="\"";
|
||||||
else $q='`';
|
else $q='`';
|
||||||
|
|
||||||
$mainSiteTitle = null;
|
|
||||||
switch($this->owner->class) {
|
switch($this->owner->class) {
|
||||||
case "AssetAdmin":
|
case "AssetAdmin":
|
||||||
$mainSiteTitle = "Shared files & images"; break;
|
$subsites = Subsite::accessible_sites($accessPerm, true, "Shared files & images");
|
||||||
case "SecurityAdmin":
|
|
||||||
$mainSiteTitle = "Groups accessing all sites";
|
|
||||||
$siteList->push(new ArrayData(array('Title' => 'All groups', 'ID' => -1)));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "SecurityAdmin":
|
||||||
|
$subsites = Subsite::accessible_sites($accessPerm, true, "Groups accessing all sites");
|
||||||
|
$subsites->push(new ArrayData(array('Title' => 'All groups', 'ID' => -1)));
|
||||||
|
break;
|
||||||
|
|
||||||
case "CMSMain":
|
case "CMSMain":
|
||||||
// If there's a default site then main site has no meaning
|
// If there's a default site then main site has no meaning
|
||||||
if(!DataObject::get_one('Subsite', "{$q}DefaultSite{$q} = 1 AND {$q}IsPublic{$q} = 1")) {
|
$showMainSite = !DataObject::get_one('Subsite',"{$q}DefaultSite{$q} AND {$q}IsPublic{$q}");
|
||||||
$mainSiteTitle = "Main site";
|
$subsites = Subsite::accessible_sites($accessPerm, $showMainSite);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$mainSiteTitle = "Main site";
|
$subsites = Subsite::accessible_sites($accessPerm);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($mainSiteTitle && Subsite::hasMainSitePermission(Member::currentUser(), array('CMS_ACCESS_' . $this->owner->class, 'ADMIN')))
|
return $subsites;
|
||||||
$siteList->push(new ArrayData(array('Title' => $mainSiteTitle, 'ID' => 0)));
|
|
||||||
|
|
||||||
if($subsites)
|
|
||||||
$siteList->merge($subsites);
|
|
||||||
|
|
||||||
return $siteList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function SubsiteList() {
|
public function SubsiteList() {
|
||||||
|
@ -18,13 +18,9 @@ class RelatedPageLink extends DataObject {
|
|||||||
);
|
);
|
||||||
|
|
||||||
function getCMSFields() {
|
function getCMSFields() {
|
||||||
$subsites = Subsite::accessible_sites("CMS_ACCESS_CMSMain");
|
$subsites = Subsite::accessible_sites("CMS_ACCESS_CMSMain", true);
|
||||||
if(!$subsites) $subsites = new DataObjectSet();
|
if(!$subsites) $subsites = new DataObjectSet();
|
||||||
|
|
||||||
if(Subsite::hasMainSitePermission(null, array("CMS_ACCESS_CMSMain"))) {
|
|
||||||
$subsites->push(new ArrayData(array('Title' => 'Main site', 'ID' => 0)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if($subsites->Count()) {
|
if($subsites->Count()) {
|
||||||
$subsiteSelectionField = new DropdownField(
|
$subsiteSelectionField = new DropdownField(
|
||||||
"CopyContentFromID_SubsiteID",
|
"CopyContentFromID_SubsiteID",
|
||||||
|
@ -417,8 +417,10 @@ JS;
|
|||||||
* Sites and Templates will only be included if they have a Title
|
* Sites and Templates will only be included if they have a Title
|
||||||
*
|
*
|
||||||
* @param $permCode array|string Either a single permission code or an array of permission codes.
|
* @param $permCode array|string Either a single permission code or an array of permission codes.
|
||||||
|
* @param $includeMainSite If true, the main site will be included if appropriate.
|
||||||
|
* @param $mainSiteTitle The label to give to the main site
|
||||||
*/
|
*/
|
||||||
function accessible_sites($permCode) {
|
function accessible_sites($permCode, $includeMainSite = false, $mainSiteTitle = "Main site") {
|
||||||
$member = Member::currentUser();
|
$member = Member::currentUser();
|
||||||
|
|
||||||
if(is_array($permCode)) $SQL_codes = "'" . implode("', '", Convert::raw2sql($permCode)) . "'";
|
if(is_array($permCode)) $SQL_codes = "'" . implode("', '", Convert::raw2sql($permCode)) . "'";
|
||||||
@ -426,10 +428,6 @@ JS;
|
|||||||
|
|
||||||
if(!$member) return new DataObjectSet();
|
if(!$member) return new DataObjectSet();
|
||||||
|
|
||||||
if (Permission::check('ADMIN') || Permission::check('SUBSITE_ACCESS_ALL')) {
|
|
||||||
return DataObject::get('Subsite');
|
|
||||||
}
|
|
||||||
|
|
||||||
$templateClassList = "'" . implode("', '", ClassInfo::subclassesFor("Subsite_Template")) . "'";
|
$templateClassList = "'" . implode("', '", ClassInfo::subclassesFor("Subsite_Template")) . "'";
|
||||||
|
|
||||||
if(defined('DB::USE_ANSI_SQL'))
|
if(defined('DB::USE_ANSI_SQL'))
|
||||||
@ -468,6 +466,17 @@ JS;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Include the main site
|
||||||
|
if(!$subsites) $subsites = new DataObjectSet();
|
||||||
|
if($includeMainSite) {
|
||||||
|
if(!is_array($permCode)) $permCode = array($permCode);
|
||||||
|
if(self::hasMainSitePermission($member, $permCode)) {
|
||||||
|
$mainSite = new Subsite();
|
||||||
|
$mainSite->Title = $mainSiteTitle;
|
||||||
|
$subsites->insertFirst($mainSite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $subsites;
|
return $subsites;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user