private function safe_mode($page_name, $site_name) { if (ROOTACCOUNT != $this->site_name) { die('return 404 not found'); } $site = ORM::factory('site', $site_name); if (!$site->has(ORM::factory('account_user', $this->account_user->get_user()->id))) { return $this->plusjade_dashboard($page_name, 'You cannot edit this site.'); } $theme_path = DATAPATH . "{$site_name}/themes/safe_mode"; # delete safe-mode if it exists (might be tainted) if (is_dir($theme_path)) { Jdirectory::remove($theme_path); } # create it from stock. if (!is_dir(DOCROOT . "_assets/themes/safe_mode")) { return $this->plusjade_dashboard($page_name, 'Safe_mode theme does not exist. Please contact support@plusjade.com!!'); } if (!Jdirectory::copy(DOCROOT . "_assets/themes/safe_mode", $theme_path)) { return $this->plusjade_dashboard($page_name, 'Uh oh, not even this worked. Please contact support@plusjade.com!!'); } $site->theme = 'safe_mode'; $site->save(); if (yaml::edit_site_value($site_name, 'site_config', 'theme', 'safe_mode')) { return $this->plusjade_dashboard($page_name, "Safe-mode activated for <b>{$site_name}</b>"); } return $this->plusjade_dashboard($page_name, 'safe-mode theme could not be activated'); }
public static function _create_website($site_name, $theme = 'base', $user_id = NULL, $email = NULL) { # Make sure the site_name is unique. $site_name = valid::filter_php_url($site_name); $site = ORM::factory('site'); if ($site->subdomain_exists($site_name)) { return 'Site name already exists.'; } # create data folder structure for site $source = DOCROOT . '_assets/data/_stock'; $dest = DATAPATH . $site_name; if (!is_dir($source)) { return '_stock folder does not exist.'; } if (!Jdirectory::copy($source, $dest)) { return 'Unable to make data folder'; } # add the theme. Theme_Controller::_new_website_theme($site_name, $theme); # create site table row. $new_site = ORM::factory('site'); $new_site->subdomain = $site_name; $new_site->theme = $theme; $new_site->save(); # Establish user access and claim status. if (empty($user_id)) { # by given email address $claimed = $email; # by cookie if no_register # cookie::set("unclaimed_$new_site->id", sha1("r-A-n_$new_site->id-D-o:m")); # $claimed = null; } else { # or by user_id if user is registered. $new_site->add(ORM::factory('account_user', $user_id)); $new_site->claimed = 'yes'; $claimed = 'true'; } # save the site. $new_site->save(); # create site_config file. $replacements = array($new_site->id, $site_name, $new_site->theme, '', 'home', $claimed); yaml::new_site_config($site_name, $replacements); # create static pages. $new_page = ORM::factory('page'); $new_page->fk_site = $new_site->id; $new_page->page_name = 'home'; $new_page->label = 'Home'; $new_page->position = 0; $new_page->menu = 'yes'; $new_page->save(); ## This is normally where we would add sample tools with sample data ## and attach them to various pages. ## ------------------------------------------- /* # add sample tools to homepage. $sample_tools = array( 'Format', 'Navigation', 'Album', 'Text' ); #TODO establish types of tools, with views, etc. foreach($sample_tools as $name) Tool_Controller::_create_tool($new_page->id, $name, $site_name, FALSE, TRUE); */ /* # create new pages with page_builders pre installed. # this should use the logic in the pages controller # since we are creating pages w/ tools and not the other way around. $install = array( 'Account', #'Blog', #'Forum', #'Calendar' ); foreach($install as $toolname) Tool_Controller::_auto_builder($toolname, $new_site->id, $site_name, 'base'); */ if (empty($user_id)) { url::redirect("http://{$site_name}." . ROOTDOMAIN . "/get/admin?email={$email}"); } return 'Website Created!'; }
public static function _new_website_theme($site_name, $theme) { $source = DOCROOT . "_assets/themes/{$theme}"; $dest = DATAPATH . "{$site_name}/themes/{$theme}"; if (!is_dir($source)) { die('This theme does not exist.'); } if (!Jdirectory::copy($source, $dest)) { die('Unable to create theme.'); } # Error # Parse tokens. $type = 'css'; if (is_dir("{$dest}/{$type}")) { $dir = dir("{$dest}/{$type}"); while ($file = $dir->read()) { if ('.' != $file && '..' != $file) { self::new_parse_and_save($theme, $type, $file, file_get_contents("{$dest}/{$type}/{$file}"), $site_name); } } $dir->close(); } return TRUE; }