function testEachSubsiteHasAUniqueSiteConfig()
 {
     $subsite1 = $this->objFromFixture('Subsite', 'domaintest1');
     $subsite2 = $this->objFromFixture('Subsite', 'domaintest2');
     $this->assertTrue(is_array(singleton('SiteConfigSubsites')->extraStatics()));
     Subsite::changeSubsite(0);
     $sc = SiteConfig::current_site_config();
     $sc->Title = 'RootSite';
     $sc->write();
     Subsite::changeSubsite($subsite1->ID);
     $sc = SiteConfig::current_site_config();
     $sc->Title = 'Subsite1';
     $sc->write();
     Subsite::changeSubsite($subsite2->ID);
     $sc = SiteConfig::current_site_config();
     $sc->Title = 'Subsite2';
     $sc->write();
     Subsite::changeSubsite(0);
     $this->assertEquals(SiteConfig::current_site_config()->Title, 'RootSite');
     Subsite::changeSubsite($subsite1->ID);
     $this->assertEquals(SiteConfig::current_site_config()->Title, 'Subsite1');
     Subsite::changeSubsite($subsite2->ID);
     $this->assertEquals(SiteConfig::current_site_config()->Title, 'Subsite2');
     $keys = SiteConfig::current_site_config()->extend('cacheKeyComponent');
     $this->assertContains('subsite-' . $subsite2->ID, $keys);
 }
 /**
  * Alter file path to generated a static (static) error page file to handle error page template on different sub-sites 
  *
  * @see Error::get_filepath_for_errorcode()
  *
  * FIXME since {@link Subsite::currentSubsite()} partly relies on Session, viewing other sub-site (including main site) between 
  * opening ErrorPage in the CMS and publish ErrorPage causes static error page to get generated incorrectly. 
  */
 function alternateFilepathForErrorcode($statusCode, $locale = null)
 {
     $static_filepath = Object::get_static($this->owner->ClassName, 'static_filepath');
     $subdomainPart = "";
     // Try to get current subsite from session
     $subsite = Subsite::currentSubsite(false);
     // since this function is called from Page class before the controller is created, we have to get subsite from domain instead
     if (!$subsite) {
         $subsiteID = Subsite::getSubsiteIDForDomain();
         if ($subsiteID != 0) {
             $subsite = DataObject::get_by_id("Subsite", $subsiteID);
         } else {
             $subsite = null;
         }
     }
     if ($subsite) {
         $subdomain = $subsite->domain();
         $subdomainPart = "-{$subdomain}";
     }
     if (singleton('SiteTree')->hasExtension('Translatable') && $locale && $locale != Translatable::default_locale()) {
         $filepath = $static_filepath . "/error-{$statusCode}-{$locale}{$subdomainPart}.html";
     } else {
         $filepath = $static_filepath . "/error-{$statusCode}{$subdomainPart}.html";
     }
     return $filepath;
 }
 public function getURLPrefix()
 {
     $url = parent::getURLPrefix();
     if (Director::isDev() || Director::isTest()) {
         $urlarray = parse_url($url);
         // define override
         if (defined('DEV_SUBSITE_' . Subsite::currentSubsiteID())) {
             $subsiteurl = 'DEV_SUBSITE_' . Subsite::currentSubsiteID();
             return constant($subsiteurl) . $urlarray['path'];
         }
         if (!Subsite::currentSubsite() instanceof Subsite) {
             return $url;
         }
         // if set in config settings
         $currentDomain = Subsite::currentSubsite()->getPrimarySubsiteDomain();
         if (Director::isTest()) {
             $currentDomain = Subsite::currentSubsite()->TestDomainID ? Subsite::currentSubsite()->TestDomain() : $currentDomain;
         }
         if (Director::isDev()) {
             $currentDomain = Subsite::currentSubsite()->DevDomainID ? Subsite::currentSubsite()->DevDomain() : $currentDomain;
         }
         if (!$currentDomain) {
             return $url;
         }
         return $currentDomain->getFullProtocol() . $currentDomain->Domain . $urlarray['path'];
     }
     return $url;
 }
 function updateCMSFields(FieldList $fields)
 {
     if (class_exists('Subsite')) {
         $fields->push(new HiddenField('SubsiteID', 'SubsiteID', Subsite::currentSubsiteID()));
     }
     return $fields;
 }
 function testWritingSubsiteID()
 {
     $this->objFromFixture('Member', 'admin')->logIn();
     $subsite = $this->objFromFixture('Subsite', 'domaintest1');
     FileSubsites::$default_root_folders_global = true;
     Subsite::changeSubsite(0);
     $file = new File();
     $file->write();
     $file->onAfterUpload();
     $this->assertEquals((int) $file->SubsiteID, 0);
     Subsite::changeSubsite($subsite->ID);
     $this->assertTrue($file->canEdit());
     $file = new File();
     $file->write();
     $this->assertEquals((int) $file->SubsiteID, 0);
     $this->assertTrue($file->canEdit());
     FileSubsites::$default_root_folders_global = false;
     Subsite::changeSubsite($subsite->ID);
     $file = new File();
     $file->write();
     $this->assertEquals($file->SubsiteID, $subsite->ID);
     // Test inheriting from parent folder
     $folder = new Folder();
     $folder->write();
     $this->assertEquals($folder->SubsiteID, $subsite->ID);
     FileSubsites::$default_root_folders_global = true;
     $file = new File();
     $file->ParentID = $folder->ID;
     $file->onAfterUpload();
     $this->assertEquals($folder->SubsiteID, $file->SubsiteID);
 }
 function onBeforeWrite()
 {
     if (!$this->owner->ID && !$this->owner->SubsiteID) {
         $this->owner->SubsiteID = Subsite::currentSubsiteID();
     }
     parent::onBeforeWrite();
 }
 public function getEditForm($id = null, $fields = null)
 {
     $form = parent::getEditForm($id, $fields);
     if ($this->modelClass == 'Order') {
         $fields = $form->Fields();
         $gridField = $fields->fieldByName('Order');
         // Bulk manager
         $manager = new GridFieldBulkManager();
         $manager->removeBulkAction("bulkEdit");
         $manager->removeBulkAction("unLink");
         $manager->removeBulkAction("delete");
         $manager->addBulkAction('paid', 'Mark Paid', 'CommerceGridFieldBulkAction_Paid');
         $manager->addBulkAction('processing', 'Mark Processing', 'CommerceGridFieldBulkAction_Processing');
         $manager->addBulkAction('dispatched', 'Mark Dispatched', 'CommerceGridFieldBulkAction_Dispatched');
         // Add dispatch button
         $field_config = $gridField->getConfig();
         $field_config->addComponent($manager);
         // Update list of items for subsite (if used)
         if (class_exists('Subsite')) {
             $list = $gridField->getList()->filter(array('SubsiteID' => Subsite::currentSubsiteID()));
             $gridField->setList($list);
         }
     }
     $this->extend("updateEditForm", $form);
     return $form;
 }
 public function updateCMSFields(FieldList $fields)
 {
     $fields->removeByName('SubsiteID');
     if (class_exists('Subsite')) {
         $fields->push(new HiddenField('SubsiteID', 'SubsiteID', Subsite::currentSubsiteID()));
     }
 }
 public function subsiteCMSShowInMenu()
 {
     if (Subsite::currentSubsite()) {
         return false;
     }
     return true;
 }
 /**
  * @return void
  */
 public function onBeforeInit()
 {
     // Check if we are runing a dev build, if so check if DB needs
     // upgrading
     $controller = $this->owner->request->param("Controller");
     $action = $this->owner->request->param("Action");
     global $project;
     // Only check if the DB needs upgrading on a dev build
     if ($controller == "DevelopmentAdmin" && $action == "build") {
         // Now check if the files we need are installed
         // Check if we have the files we need, if not, create them
         if (!class_exists("Category")) {
             copy(BASE_PATH . "/catalogue/scaffold/Category", BASE_PATH . "/{$project}/code/model/Category.php");
         }
         if (!class_exists("Category_Controller")) {
             copy(BASE_PATH . "/catalogue/scaffold/Category_Controller", BASE_PATH . "/{$project}/code/control/Category_Controller.php");
         }
         if (!class_exists("Product")) {
             copy(BASE_PATH . "/catalogue/scaffold/Product", BASE_PATH . "/{$project}/code/model/Product.php");
         }
         if (!class_exists("Product_Controller")) {
             copy(BASE_PATH . "/catalogue/scaffold/Product_Controller", BASE_PATH . "/{$project}/code/control/Product_Controller.php");
         }
     }
     if ($controller != "DevelopmentAdmin") {
         if (class_exists('Subsite') && Subsite::currentSubsite()) {
             // Set the location
             i18n::set_locale(Subsite::currentSubsite()->Language);
         }
     }
 }
 /**
  * Avoid subsites filtering on fixture fetching.
  */
 function objFromFixture($class, $id)
 {
     Subsite::disable_subsite_filter(true);
     $obj = parent::objFromFixture($class, $id);
     Subsite::disable_subsite_filter(false);
     return $obj;
 }
 public function updateCMSFields(FieldList $fields)
 {
     $subsites = class_exists('Subsite');
     $onMainSite = TRUE;
     $currentSubsiteID = 0;
     $currentSiteConfig = SiteConfig::current_site_config();
     if ($subsites) {
         $currentSubsiteID = Subsite::currentSubsiteID();
         if ($currentSubsiteID) {
             $onMainSite = FALSE;
         }
         $mainSiteConfig = SiteConfig::get()->filter('SubsiteID', 0)->first();
     } else {
         $mainSiteConfig = $currentSiteConfig;
     }
     // Add mailblock CMS fields.
     if (Permission::check('MANAGE_MAILBLOCK') && ($mainSiteConfig->getField('MailblockApplyPerSubsite') || $onMainSite)) {
         $enabled = $currentSiteConfig->getField('MailblockEnabled');
         $tabSet = new TabSet('Mailblock', $settingsTab = $this->basicSettingsFields(), $advancedSettingsTab = $this->advancedSettingsFields($onMainSite, $currentSubsiteID), $testTab = $this->testEmailCMSFields($enabled));
         $fields->addFieldToTab('Root', $tabSet);
         $hiddenFields = array('MailblockEnabledOnLive', 'MailblockOverrideConfiguration', 'MailblockRecipients', 'MailblockWhitelist');
         if ($subsites && $currentSubsiteID == 0) {
             $hiddenFields[] = 'MailblockApplyPerSubsite';
         }
         foreach ($hiddenFields as $field) {
             $field = $fields->dataFieldByName($field);
             $field->displayIf('MailblockEnabled')->isChecked();
         }
     }
 }
 function getCMSFields()
 {
     $subsites = Subsite::accessible_sites("CMS_ACCESS_CMSMain");
     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()) {
         $subsiteSelectionField = new DropdownField("CopyContentFromID_SubsiteID", "Subsite", $subsites->toDropdownMap('ID', 'Title'), $this->CopyContentFromID ? $this->CopyContentFrom()->SubsiteID : Session::get('SubsiteID'));
     }
     // Setup the linking to the original page.
     $pageSelectionField = new SubsitesTreeDropdownField("RelatedPageID", _t('VirtualPage.CHOOSE', "Choose a page to link to"), "SiteTree", "ID", "MenuTitle");
     if (isset($_GET['RelatedPageID_SubsiteID'])) {
         $pageSelectionField->setSubsiteID($_GET['RelatedPageID_SubsiteID']);
     }
     $pageSelectionField->setFilterFunction(create_function('$item', 'return $item->ClassName != "VirtualPage";'));
     if ($subsites->Count()) {
         $fields = new FieldSet($subsiteSelectionField, $pageSelectionField);
     } else {
         $fields = new FieldSet($pageSelectionField);
     }
     return $fields;
 }
 /**
  * To process this job, we need to get the next page whose ID is the next greater than the last
  * processed. This way we don't need to remember a bunch of data about what we've processed
  */
 public function process()
 {
     if (ClassInfo::exists('Subsite')) {
         Subsite::disable_subsite_filter();
     }
     $class = $this->reindexType;
     $pages = $class::get();
     $pages = $pages->filter(array('ID:GreaterThan' => $this->lastIndexedID));
     $pages = $pages->limit(Config::inst()->get(__CLASS__, 'at_a_time'));
     $pages = $pages->sort('ID ASC');
     if (ClassInfo::exists('Subsite')) {
         Subsite::$disable_subsite_filter = false;
     }
     if (!$pages || !$pages->count()) {
         $this->isComplete = true;
         return;
     }
     $mode = Versioned::get_reading_mode();
     Versioned::reading_stage('Stage');
     // index away
     $service = singleton('SolrSearchService');
     $live = array();
     $stage = array();
     $all = array();
     foreach ($pages as $page) {
         // Make sure the current page is not orphaned.
         if ($page->ParentID > 0) {
             $parent = $page->getParent();
             if (is_null($parent) || $parent === false) {
                 continue;
             }
         }
         // Appropriately index the current page, taking versioning into account.
         if ($page->hasExtension('Versioned')) {
             $stage[] = $page;
             $base = $page->baseTable();
             $idField = '"' . $base . '_Live"."ID"';
             $livePage = Versioned::get_one_by_stage($page->ClassName, 'Live', $idField . ' = ' . $page->ID);
             if ($livePage) {
                 $live[] = $livePage;
             }
         } else {
             $all[] = $page;
         }
         $this->lastIndexedID = $page->ID;
     }
     if (count($all)) {
         $service->indexMultiple($all);
     }
     if (count($stage)) {
         $service->indexMultiple($stage, 'Stage');
     }
     if (count($live)) {
         $service->indexMultiple($live, 'Live');
     }
     Versioned::set_reading_mode($mode);
     $this->lastIndexedID = $page->ID;
     $this->currentStep += $pages->count();
 }
 public function run($request)
 {
     $groups = Group::get();
     echo 'Pass ?drop=1 to drop groups without members<br/>';
     echo 'Want more dropping? Pass ?permission=1 to also drop groups without permissions even if they have members<br/>';
     echo 'Pass ?merge=1 to merge groups with the same code<br/>';
     echo 'Want to merge across subsites ? Pass ?subsite=1 to disable subsite filters<br/>';
     echo '<hr/>';
     $merge = $request->getVar('merge');
     $drop = $request->getVar('drop');
     $dropNoPermission = $request->getVar('permission');
     $subsite = $request->getVar('subsite');
     if (class_exists('Subsite') && $subsite) {
         Subsite::$disable_subsite_filter = true;
     }
     if ($drop) {
         DB::alteration_message("Dropping groups with no members");
         if ($dropNoPermission) {
             DB::alteration_message("Also dropping groups with no permissions");
         }
         foreach ($groups as $group) {
             if (!$group->Members()->count()) {
                 DB::alteration_message("Removing group  {$group->ID} because it has no members", "deleted");
                 $group->delete();
             }
             if ($dropNoPermission) {
                 $c = $group->Permissions()->count();
                 if (!$c) {
                     DB::alteration_message("Removing group {$group->ID} because it has no permissions", "deleted");
                     $group->delete();
                 }
             }
         }
     }
     if ($merge) {
         DB::alteration_message("Merging groups with duplicated codes");
         $index = array();
         /* @var $group Group */
         foreach ($groups as $group) {
             DB::alteration_message("Found group " . $group->Code);
             if (!isset($index[$group->Code])) {
                 $index[$group->Code] = $group;
                 DB::alteration_message("First instance of group, do not merge");
                 continue;
             }
             $mergeGroup = $index[$group->Code];
             DB::alteration_message('Merge group ' . $group->ID . ' with ' . $mergeGroup->ID, 'repaired');
             $i = 0;
             foreach ($group->Members() as $m) {
                 $i++;
                 $mergeGroup->Members()->add($m);
             }
             DB::alteration_message('Added ' . $i . ' members to group', 'created');
             DB::alteration_message("Group " . $group->ID . ' was deleted', 'deleted');
             $group->delete();
         }
     }
     DB::alteration_message('All done!');
 }
 function getQuery()
 {
     $oldState = Subsite::$disable_subsite_filter;
     Subsite::$disable_subsite_filter = true;
     $return = parent::getQuery();
     Subsite::$disable_subsite_filter = $oldState;
     return $return;
 }
 public function updateEditForm($form)
 {
     $gridField = $form->Fields()->fieldByName($this->sanitiseClassNameExtension($this->owner->modelClass));
     if (class_exists('Subsite')) {
         $list = $gridField->getList()->filter(array('SubsiteID' => Subsite::currentSubsiteID()));
         $gridField->setList($list);
     }
 }
 /**
  * @param SQLQuery $query
  * @param DataQuery $dataQuery
  */
 function augmentSQL(SQLQuery &$query, DataQuery &$dataQuery = null)
 {
     $baseTable = ClassInfo::baseDataClass($dataQuery->dataClass());
     if (class_exists('Subsite')) {
         $currentSubsiteID = Subsite::currentSubsiteID();
         $query->addWhere("\"{$baseTable}\".\"SubsiteID\" = '{$currentSubsiteID}'");
     }
 }
 /**
  * @param array $compatibility
  */
 public static function done(array $compatibility)
 {
     if (class_exists("Subsite")) {
         Subsite::$disable_subsite_filter = $compatibility[self::SUBSITES];
     }
     if (class_exists("Translatable")) {
         Translatable::enable_locale_filter($compatibility[self::TRANSLATABLE]);
     }
 }
 /**
  * make the form a bit more usable.
  *
  * @return FieldList
  */
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     // remove it and, if needed re-add it as a hidden field
     $fields->removeByName('SubsiteID');
     if (class_exists('Subsite')) {
         $fields->push(new HiddenField('SubsiteID', 'SubsiteID', Subsite::currentSubsiteID()));
     }
     return $fields;
 }
 public function onBeforeWrite()
 {
     parent::onBeforeWrite();
     // If subsites enabled
     if (class_exists('Subsite') && ($subsite = Subsite::currentSubsite())) {
         $this->SubsiteID = $subsite->ID;
     }
     // Ensure the slug is URL safe
     $this->Slug = $this->Slug ? Convert::raw2url($this->Slug) : Convert::raw2url($this->Title);
 }
 /**
  * Modify the content to include subsite links
  * @global array $subsiteDomainIDs
  * @param array $arguments
  * @param string $content
  * @param type $parser
  * @return string links
  */
 public static function link_shortcode_handler($arguments, $content = null, $parser = null)
 {
     if (!isset($arguments['id'])) {
         return;
     }
     $argumentarray = explode('-', $arguments['id']);
     if (count($argumentarray) != 2) {
         return;
     }
     $subsiteid = $argumentarray[0];
     $id = $argumentarray[1];
     $page = null;
     if ($id) {
         $page = DataObject::get_by_id('SiteTree', $id);
         // Get the current page by ID.
         if (!$page) {
             $page = Versioned::get_latest_version('SiteTree', $id);
             // Attempt link to old version.
         }
     } else {
         $page = DataObject::get_one('ErrorPage', '"ErrorPage"."ErrorCode" = \'404\'');
         // Link to 404 page.
     }
     if (!$page) {
         return;
         // There were no suitable matches at all.
     }
     $currentSubsite = Subsite::get()->byID((int) $subsiteid);
     $currenturl = null;
     if ($currentSubsite) {
         if (Director::isDev()) {
             $currenturl = $currentSubsite->DevDomainID ? $currentSubsite->DevDomain() : null;
         }
         if (Director::isTest()) {
             $currenturl = $currentSubsite->TestDomainID ? $currentSubsite->TestDomain() : null;
         }
         if (!$currenturl) {
             $currenturl = $currentSubsite->getPrimarySubsiteDomain();
         }
         $currenturl = $currenturl->getFullProtocol() . $currenturl->Domain;
         // override
         if (Director::isDev() || Director::isTest()) {
             if (defined('DEV_SUBSITE_' . (int) $subsiteid)) {
                 $subsiteurl = 'DEV_SUBSITE_' . (int) $subsiteid;
                 $currenturl = constant($subsiteurl);
             }
         }
     }
     $link = Convert::raw2att($page->Link());
     if ($content) {
         return sprintf('<a href="%s">%s</a>', $currenturl . $link, $parser->parse($content));
     } else {
         return $currenturl . $link;
     }
 }
 function doSave($data, $form)
 {
     $new_record = $this->record->ID == 0;
     if ($new_record && isset($data['TemplateID']) && !empty($data['TemplateID'])) {
         $template = Subsite::get()->byID(intval($data['TemplateID']));
         if ($template) {
             $this->record = $template->duplicate();
         }
     }
     return parent::doSave($data, $form);
 }
 function Items()
 {
     if (class_exists('Subsite')) {
         Subsite::$disable_subsite_filter = true;
     }
     $items = parent::Items();
     if (class_exists('Subsite')) {
         Subsite::$disable_subsite_filter = false;
     }
     return $items;
 }
 protected function getItem()
 {
     if (ClassInfo::exists('Subsite')) {
         Subsite::disable_subsite_filter(true);
     }
     $item = DataObject::get_by_id($this->itemType, $this->itemID);
     if (ClassInfo::exists('Subsite')) {
         Subsite::disable_subsite_filter(false);
     }
     return $item;
 }
 /**
  * Test Subsite::accessible_sites()
  */
 function testAccessibleSites()
 {
     $member1Sites = Subsite::accessible_sites("CMS_ACCESS_CMSMain", false, null, $this->objFromFixture('Member', 'subsite1member'));
     $member1SiteTitles = $member1Sites->column("Title");
     sort($member1SiteTitles);
     $this->assertEquals(array('Subsite1 Template'), $member1SiteTitles);
     $adminSites = Subsite::accessible_sites("CMS_ACCESS_CMSMain", false, null, $this->objFromFixture('Member', 'admin'));
     $adminSiteTitles = $adminSites->column("Title");
     sort($adminSiteTitles);
     $this->assertEquals(array('Subsite1 Template', 'Subsite2 Template', 'Template', 'Test 1', 'Test 2', 'Test 3'), $adminSiteTitles);
 }
 /**
  * Test generation of the view
  */
 function testBasicView()
 {
     Subsite::$write_hostmap = false;
     $subsite1ID = $this->objFromFixture('Subsite', 'domaintest1')->ID;
     // Open the admin area logged in as admin
     $response1 = Director::test('admin/subsites/', null, $this->adminLoggedInSession());
     // Confirm that this URL gets you the entire page, with the edit form loaded
     $response2 = Director::test("admin/subsites/Subsite/{$subsite1ID}/edit", null, $this->adminLoggedInSession());
     $this->assertTrue(strpos($response2->getBody(), 'id="Form_EditForm_ID"') !== false, "Testing Form_EditForm_ID exists");
     $this->assertTrue(strpos($response2->getBody(), '<head') !== false, "Testing <head> exists");
 }
 /**
  * List only newsitems from current subsite.
  *
  * @author Marcio Barrientos
  * @return ArrayList $list
  */
 public function getList()
 {
     /** @var DataList $list */
     $list = parent::getList();
     if ($this->modelClass === 'News' && class_exists('Subsite') && Subsite::currentSubsiteID() > 0) {
         $pages = NewsHolderPage::get()->filter(array('SubsiteID' => (int) Subsite::currentSubsiteID()));
         $filter = $pages->column('ID');
         /* Manual join needed because otherwise no items are found. Unknown why. */
         $list = $list->innerJoin('NewsHolderPage_Newsitems', 'NewsHolderPage_Newsitems.NewsID = News.ID')->filter(array('NewsHolderPage_Newsitems.NewsHolderPageID' => $filter));
     }
     return $list;
 }
 function doCreate($data, $form, $request)
 {
     if (isset($data['TemplateID']) && $data['TemplateID']) {
         $template = DataObject::get_by_id('Subsite_Template', $data['TemplateID']);
     } else {
         $template = null;
     }
     // Create subsite from existing template
     switch ($data['Type']) {
         case 'template':
             if ($template) {
                 $subsite = $template->duplicate();
             } else {
                 $subsite = new Subsite_Template();
                 $subsite->write();
             }
             break;
         case 'subsite':
         default:
             if ($template) {
                 $subsite = $template->createInstance($data['Title']);
             } else {
                 $subsite = new Subsite();
                 $subsite->Title = $data['Title'];
                 $subsite->write();
             }
             break;
     }
     $form->dataFieldByName('Domains')->setExtraData(array("SubsiteID" => $subsite->ID));
     $form->saveInto($subsite);
     $subsite->write();
     if (Director::is_ajax()) {
         $recordController = new ModelAdmin_RecordController($this, $request, $subsite->ID);
         return new SS_HTTPResponse($recordController->EditForm()->forAjaxTemplate(), 200, sprintf(_t('ModelAdmin.LOADEDFOREDITING', "Loaded '%s' for editing."), $subsite->Title));
     } else {
         Director::redirect(Controller::join_links($this->Link(), $subsitess->ID, 'edit'));
     }
 }
 public function subsitesTests()
 {
     $this->doEcho('Subsites', true);
     $subsites = Subsite::get()->sort('ID ASC');
     foreach ($subsites as $s) {
         $this->doEcho("{$s->Title} (#{$s->ID}):");
         //Setting subsite via $_GET
         //this is not bes practice, but this seems to be the only way that works
         //when running this over the command line
         $_GET['SubsiteID'] = $s->ID;
         $this->doEcho(SubsiteUploadDirRules::get_directory_for_subsite());
         $this->doEcho();
     }
 }