silverstripe-subsites/code/extensions/SiteConfigSubsites.php
Ed c9d3a1f854 BUG: More SS 3.0 modifications
Fixes for SS 3.0 beta 3

Fixed compatibility issues with ss3.0 rc1

fixed potential issue caused by the from array format changing in 3.0

Fixed strict standards warnings

Fixed strict notice "Only variables should be passed by reference"

Fixed strict notice "Only variables should be passed by reference"

Fixed strict notice caused by SubsiteAdmin not declaring all of the properties for getCMSFields()

Made Subsite::accessible_sites() static

Fixed issue caused when trying to add a domain before saving for the first time

Fixed undefined property ParentID
2012-07-16 11:21:24 +12:00

42 lines
1.4 KiB
PHP

<?php
/**
* Extension for the SiteConfig object to add subsites support
*/
class SiteConfigSubsites extends DataExtension {
public static $has_one=array(
'Subsite' => 'Subsite', // The subsite that this page belongs to
);
/**
* Update any requests to limit the results to the current site
*/
function augmentSQL(SQLQuery &$query) {
if(Subsite::$disable_subsite_filter) return;
// If you're querying by ID, ignore the sub-site - this is a bit ugly...
if (!$query->where || (!preg_match('/\.(\'|"|`|)ID(\'|"|`|)( ?)=/', $query->where[0]) && !preg_match('/\.?(\'|"|`|)SubsiteID(\'|"|`|)( ?)=/', $query->where[0]))) {
/*if($context = DataObject::context_obj()) $subsiteID = (int)$context->SubsiteID;
else */$subsiteID = (int)Subsite::currentSubsiteID();
$froms=$query->getFrom();
$froms=array_keys($froms);
$tableName = array_shift($froms);
if($tableName != 'SiteConfig') return;
$query->addWhere("\"$tableName\".\"SubsiteID\" IN ($subsiteID)");
}
}
function onBeforeWrite() {
if((!is_numeric($this->owner->ID) || !$this->owner->ID) && !$this->owner->SubsiteID) $this->owner->SubsiteID = Subsite::currentSubsiteID();
}
/**
* Return a piece of text to keep DataObject cache keys appropriately specific
*/
function cacheKeyComponent() {
return 'subsite-'.Subsite::currentSubsiteID();
}
}