/** * Update any requests to limit the results to the current site */ public function augmentSQL(SQLSelect $query) { if (Subsite::$disable_subsite_filter) { return; } // If you're querying by ID, ignore the sub-site - this is a bit ugly... if ($query->filtersOnID()) { return; } $regexp = '/^(.*\\.)?("|`)?SubsiteID("|`)?\\s?=/'; foreach ($query->getWhereParameterised($parameters) as $predicate) { if (preg_match($regexp, $predicate)) { return; } } /*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})"); }
/** * Update any requests to limit the results to the current site */ public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = NULL) { if (Subsite::$disable_subsite_filter) { return; } // If you're querying by ID, ignore the sub-site - this is a bit ugly... if ($query->filtersOnID()) { return; } $regexp = '/^(.*\\.)?("|`)?SubsiteID("|`)?\\s?=/'; foreach ($query->getWhereParameterised($parameters) as $predicate) { if (preg_match($regexp, $predicate)) { return; } } try { $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})"); } catch (UnexpectedValueException $e) { // No subsites exist yet } }