public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // Make sure the syncrotron identifier is initially set.
     $configuration = SiteConfig::current_site_config();
     $configuration->getSyncroIdentifier();
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     if (!ProductWeight::get()->exists()) {
         $weight = new ProductWeight();
         $weight->Title = "Kilograms";
         $weight->Unit = "kg";
         $weight->write();
         $weight->flushCache();
         DB::alteration_message('Kilograms weight created', 'created');
         $weight = new ProductWeight();
         $weight->Title = "Grams";
         $weight->Unit = "g";
         $weight->write();
         $weight->flushCache();
         DB::alteration_message('Grams weight created', 'created');
         $weight = new ProductWeight();
         $weight->Title = "Pound";
         $weight->Unit = "lb";
         $weight->write();
         $weight->flushCache();
         DB::alteration_message('Pounds weight created', 'created');
         $weight = new ProductWeight();
         $weight->Title = "Ounce";
         $weight->Unit = "oz";
         $weight->write();
         $weight->flushCache();
         DB::alteration_message('Ounces weight created', 'created');
     }
 }
 /**
  *	The process to automatically construct data object output configurations, executed on project build.
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // Grab the list of data objects that have been completely removed.
     foreach (DB::getConn()->tableList() as $table) {
         // Delete existing output configurations for these data objects.
         if (!class_exists($table)) {
             $existing = DataObjectOutputConfiguration::get_one('DataObjectOutputConfiguration', "IsFor = '" . Convert::raw2sql($table) . "'");
             $this->deleteConfiguration($table, $existing);
         }
     }
     // Grab the list of all data object types, along with any inclusions/exclusions defined.
     $objects = ClassInfo::subclassesFor('DataObject');
     $inclusions = self::$custom_inclusions;
     $exclusions = array_unique(array_merge(self::$exclusions, self::$custom_exclusions));
     // Check existing output configurations for these data objects.
     foreach ($objects as $object) {
         $existing = DataObjectOutputConfiguration::get_one('DataObjectOutputConfiguration', "IsFor = '" . Convert::raw2sql($object) . "'");
         // Delete existing output configurations for invalid data objects, or for those excluded.
         if ($existing && (self::$disabled || get_parent_class($object) !== 'DataObject' || ClassInfo::classImplements($object, 'TestOnly') || count($inclusions) > 0 && !in_array($object, $inclusions) || count($inclusions) === 0 && in_array($object, $exclusions))) {
             $this->deleteConfiguration($object, $existing);
         } else {
             if (!$existing && !self::$disabled && get_parent_class($object) === 'DataObject' && !ClassInfo::classImplements($object, 'TestOnly') && (count($inclusions) > 0 && in_array($object, $inclusions) || count($inclusions) === 0 && !in_array($object, $exclusions))) {
                 $this->addConfiguration($object);
             }
         }
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $existing = DataObject::get('AccessRole');
     if ($existing && $existing->count()) {
         return;
     }
     $dp = self::allPermissions();
     $role = new AccessRole();
     $role->Title = 'Admin';
     $role->Composes = array_values($dp);
     $role->write();
     $ownerPerms = $dp;
     // get rid of publish from owners
     unset($ownerPerms['Publish']);
     $role = new AccessRole();
     $role->Title = 'Owner';
     $role->Composes = array_keys($ownerPerms);
     $role->write();
     unset($dp['TakeOwnership']);
     unset($dp['Configure']);
     $role = new AccessRole();
     $role->Title = 'Manager';
     $role->Composes = array_keys($dp);
     $role->write();
     $role = new AccessRole();
     $role->Title = 'Editor';
     $role->Composes = array('View', 'Write', 'CreateChildren');
     $role->write();
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // create a catch-all group
     if (!OptionGroup::get()->filter(array('Title' => 'Options'))->first()) {
         $do = new OptionGroup();
         $do->Title = "Options";
         $do->write();
     }
     if (!OptionGroup::get()->filter(array('Title' => 'Size'))->first()) {
         $do = new OptionGroup();
         $do->Title = "Size";
         $do->write();
     }
     if (!OptionGroup::get()->filter(array('Title' => 'Color'))->first()) {
         $do = new OptionGroup();
         $do->Title = "Color";
         $do->write();
     }
     if (!OptionGroup::get()->filter(array('Title' => 'Type'))->first()) {
         $do = new OptionGroup();
         $do->Title = "Type";
         $do->write();
     }
 }
 public function requireDefaultRecords()
 {
     // If no tax rates, setup some defaults
     if (!TaxRate::get()->exists()) {
         $vat = TaxRate::create();
         $vat->Title = "VAT";
         $vat->Amount = 20;
         $vat->Code = "T1";
         $vat->write();
         DB::alteration_message('VAT tax rate created.', 'created');
         $reduced = TaxRate::create();
         $reduced->Title = "Reduced rate";
         $reduced->Amount = 5;
         $reduced->Code = "T2";
         $reduced->write();
         DB::alteration_message('Reduced tax rate created.', 'created');
         $zero = TaxRate::create();
         $zero->Title = "Zero rate";
         $zero->Amount = 0;
         $zero->Code = "T4";
         $zero->write();
         DB::alteration_message('Zero tax rate created.', 'created');
     }
     parent::requireDefaultRecords();
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     if (!CommerceCurrency::get()->exists()) {
         $gbp = new CommerceCurrency();
         $gbp->Title = "UK Pounds";
         $gbp->HTMLNotation = "£";
         $gbp->GatewayCode = "GBP";
         $gbp->write();
         $gbp->flushCache();
         DB::alteration_message('UK Pounds created', 'created');
         $eur = new CommerceCurrency();
         $eur->Title = "Euro";
         $eur->HTMLNotation = "€";
         $eur->GatewayCode = "EUR";
         $eur->write();
         $eur->flushCache();
         DB::alteration_message('Euro created', 'created');
         $usd = new CommerceCurrency();
         $usd->Title = "US Dollars";
         $usd->HTMLNotation = "$";
         $usd->GatewayCode = "USD";
         $usd->write();
         $usd->flushCache();
         DB::alteration_message('US Dollars created', 'created');
     }
 }
 /**
  *	The process to automatically consolidate existing and configuration defined tag types, executed on project build.
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // Retrieve existing and configuration defined tag types that have not been consolidated.
     foreach ($this->service->getFusionTagTypes() as $type => $field) {
         if (($tags = $type::get()->filter('FusionTagID', 0)) && $tags->exists()) {
             foreach ($tags as $tag) {
                 // Determine whether there's an existing fusion tag.
                 if (!($existing = FusionTag::get()->filter('Title', $tag->{$field})->first())) {
                     // There is no fusion tag, therefore instantiate one using the current tag.
                     $fusion = FusionTag::create();
                     $fusion->Title = $tag->{$field};
                     $fusion->TagTypes = serialize(array($tag->ClassName => $tag->ClassName));
                     $fusion->write();
                     $fusionID = $fusion->ID;
                 } else {
                     // There is a fusion tag, therefore append the current tag type.
                     $types = unserialize($existing->TagTypes);
                     $types[$tag->ClassName] = $tag->ClassName;
                     $existing->TagTypes = serialize($types);
                     $existing->write();
                     $fusionID = $existing->ID;
                 }
                 // Update the current tag to point to this.
                 $tag->FusionTagID = $fusionID;
                 $tag->write();
                 DB::alteration_message("\"{$tag->{$field}}\" Fusion Tag", 'created');
             }
         }
     }
 }
Example #9
0
 /**
  * When rebuilding the database we need to ensure that all the threads have been assigned
  * a last post and when people upgrade to this version running the rebuild should fix the data
  * rather than the entire migrate script
  *
  * @return void
  */
 function requireDefaultRecords()
 {
     if (DB::query("SELECT COUNT(*) FROM \"ForumThread\" WHERE \"LastPostID\" = 0")->value() > 0) {
         $migrate = new ForumMigrationTask();
         $migrate->attachLastPostIDs();
     }
     parent::requireDefaultRecords();
 }
 /**
  * Migrate data from Member_UnsubscribeRecord (the obsolete table)
  * to UnsubscribeRecord.
  */
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     if (in_array('Email_BlackList', DB::getConn()->tableList())) {
         DB::query("INSERT INTO \"UnsubscribeRecord\" SELECT * FROM \"Member_UnsubscribeRecord\"");
         DB::query("RENAME TABLE \"Member_UnsubscribeRecord\" TO \"_obsolete_Member_UnsubscribeRecord\"");
         echo "<div style=\"padding:5px; color:white; background-color:blue;\">Data in Member_UnsubscribeRecord has been moved to the new UnsubscribeRecord table. To drop the obsolete table, issue this SQL command: \"DROP TABLE '_obsolete_Member_UnsubscribeRecord'\".</div>";
     }
 }
Example #11
0
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $moduleManager = DataObject::get_one('ModuleManager');
     if (!$moduleManager) {
         self::make_module_manager();
         DB::alteration_message("Added default module manager", "created");
     }
 }
Example #12
0
 /**
  * Setup a default ShopConfig record if none exists
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     if (!self::current_shop_config()) {
         $shopConfig = new ShopConfig();
         $shopConfig->write();
         DB::alteration_message('Added default shop config', 'created');
     }
 }
 /**
  * Setup a default SiteDesigner record if none exists
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $siteDesigner = DataObject::get_one('SiteDesigner');
     if (!$siteDesigner) {
         self::make_site_designer();
         DB::alteration_message("Added default site designer", "created");
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $moduleManager = ModuleManager::get()->First();
     if (!$moduleManager) {
         self::make_module_manager();
         DB::alteration_message("Added default module manager", "created");
     }
 }
 /**
  * {@inheritdoc}
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // run the population task if required.
     if (PopulateTimeZonesTask::config()->run_during_dev_build) {
         $task = new PopulateTimeZonesTask();
         $task->up();
     }
 }
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`";
     DB::query("DROP TABLE IF EXISTS PageRating_TEMP;");
     DB::query("CREATE TABLE PageRating_TEMP (ParentID INTEGER(11), Rating INTEGER);");
     DB::query("ALTER TABLE {$bt}PageRating_TEMP{$bt} ADD INDEX ( {$bt}ParentID{$bt} ) ");
     DB::query("ALTER TABLE {$bt}PageRating_TEMP{$bt} ADD INDEX ( {$bt}Rating{$bt} ) ");
     DB::alteration_message("create PageRating_TEMP", "created");
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     //Ensure at least 1 spam keyword exists.
     if (!SuspendSpammerKeyword::get()->Exists()) {
         $keyword = SuspendSpammerKeyword::create();
         $keyword->Title = 'astrologer';
         $keyword->write();
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $conf = DataObject::get_one('SolrServerConfig');
     if (!$conf || !$conf->ID) {
         $conf = new SolrServerConfig();
         $conf->RunLocal = false;
         $conf->InstanceID = md5(mt_rand(0, 1000) . time());
         $conf->write();
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $allCats = DataObject::get('ProductCategory');
     if (!$allCats->count()) {
         $cat = new ProductCategory();
         $cat->Title = 'Default';
         $cat->Code = 'DEFAULT';
         $cat->write();
     }
 }
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $simplestSpamFieldQuestion = SimplestSpamFieldQuestion::get()->First();
     if (!$simplestSpamFieldQuestion) {
         $simplestSpamFieldQuestion = new SimplestSpamFieldQuestion();
         $simplestSpamFieldQuestion->Question = 'What is the original name for New Zealand?';
         $simplestSpamFieldQuestion->Answer = 'Aotearoa';
         $simplestSpamFieldQuestion->write();
         DB::alteration_message($simplestSpamFieldQuestion->ClassName . "Created default entry for SimplestSpamFieldQuestion", 'created');
     }
 }
 /**
  *	Update previous media attributes.
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // Retrieve existing "start time" attributes.
     $attributes = MediaAttribute::get()->innerJoin('MediaPage', 'MediaAttribute.MediaPageID = MediaPage.ID')->innerJoin('MediaType', 'MediaPage.MediaTypeID = MediaType.ID')->where(array('MediaType.Title = ?' => 'Event', 'OriginalTitle = ?' => 'Start Time'));
     foreach ($attributes as $attribute) {
         // These should now be "time" attributes.
         $attribute->OriginalTitle = 'Time';
         $attribute->Title = 'Time';
         $attribute->write();
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // get schemas that need creating
     $schemas = $this->config()->get('default_schemas');
     require_once 'spyc/spyc.php';
     foreach ($schemas as $file) {
         if (file_exists(Director::baseFolder() . '/' . $file)) {
             $parser = new Spyc();
             $factory = new FixtureFactory();
             $fixtureContent = $parser->loadFile(Director::baseFolder() . '/' . $file);
             if (isset($fixtureContent['MetadataSchema'])) {
                 $toBuild = array();
                 // check if it exists or not, if so don't re-create it
                 foreach ($fixtureContent['MetadataSchema'] as $id => $desc) {
                     $name = isset($desc['Name']) ? $desc['Name'] : null;
                     if (!$name) {
                         throw new Exception("Cannot create metadata schema without a name");
                     }
                     $existing = MetadataSchema::get()->filter('Name', $name)->first();
                     if ($existing) {
                         $factory->setId('MetadataSchema', $id, $existing->ID);
                     } else {
                         $factory->createObject('MetadataSchema', $id, $desc);
                         DB::alteration_message('Metadata schema ' . $id . ' created', 'created');
                     }
                 }
                 // don't need this now
                 unset($fixtureContent['MetadataSchema']);
                 // go through and unset any existing fields
                 $toBuild = array();
                 foreach ($fixtureContent as $class => $items) {
                     foreach ($items as $identifier => $data) {
                         $nameField = isset($data['Name']) ? 'Name' : (isset($data['Key']) ? 'Key' : '');
                         if (!strlen($nameField)) {
                             throw new Exception("Metadata fields must have a Name or Key field defined");
                         }
                         if (!isset($data['Title'])) {
                             $data['Title'] = $data[$nameField];
                         }
                         $existing = $class::get()->filter($nameField, $data[$nameField])->first();
                         if ($existing) {
                             $factory->setId($class, $identifier, $existing->ID);
                         } else {
                             $factory->createObject($class, $identifier, $data);
                             DB::alteration_message('Metadata field ' . $data[$nameField] . ' created', 'created');
                         }
                     }
                 }
             }
         }
     }
 }
 /**
  * Add default records to database. This function is called whenever the
  * database is built, after the database tables have all been created.
  * 
  * @uses DataExtension->requireDefaultRecords()
  */
 public function requireDefaultRecords()
 {
     /* Inherit Default Record Creation */
     parent::requireDefaultRecords();
     /* If no records exist, create defaults */
     if (!StoreSettings::get_settings()) {
         //Fetch SiteConfig
         $SiteConfig = SiteConfig::current_site_config();
         $n = new StoreSettings();
         $n->StoreSettings_StoreAvailable = "1";
         $n->StoreSettings_StoreAvailableMessage = "Our store is currently offline for maintenance and will be back online soon.";
         $n->StoreSettings_StoreName = $SiteConfig->Title . " Online Store";
         $n->StoreSettings_StoreCountry = "GB";
         $n->StoreSettings_ProductWeight = "Grams";
         $n->StoreSettings_ProductDimensions = "Centimetres";
         $n->DisplaySettings_FeaturedProducts = "5";
         $n->DisplaySettings_NewProducts = "5";
         $n->DisplaySettings_CartQuantity = "1";
         $n->DisplaySettings_ShowPrice = "1";
         $n->DisplaySettings_ShowSKU = "1";
         $n->DisplaySettings_ShowWeight = "1";
         $n->DisplaySettings_ShowDimensions = "1";
         $n->DisplaySettings_ProductSort = "Created DESC";
         $n->DisplaySettings_ProductPagePhotoWidth = "250";
         $n->DisplaySettings_ProductPagePhotoHeight = "250";
         $n->DisplaySettings_ProductThumbnailPhotoWidth = "125";
         $n->DisplaySettings_ProductThumbnailPhotoHeight = "125";
         $n->DisplaySettings_ProductEnlargedPhotoWidth = "1280";
         $n->DisplaySettings_ProductEnlargedPhotoHeight = "768";
         $n->CheckoutSettings_InitialStatus = "1";
         $n->CheckoutSettings_GuestCheckout = "1";
         $n->CheckoutSettings_GuestCheckoutAccount = "1";
         $n->CheckoutSettings_OrderComments = "1";
         $n->EmailNotification_AccountCreated = "1";
         $n->EmailNotification_OrderPlaced = "1";
         $n->EmailNotification_OrderStatuses = "3,8,4,7,2,6,5";
         $n->Stock_StockManagement = "1";
         $n->Stock_PendingOrdersFreezeStock = "90";
         $n->Stock_LowStockThreshold = "2";
         $n->Stock_OutOfStockThreshold = "0";
         $n->Stock_OutofStockMessage = "Out of Stock";
         $n->Stock_ProductOutOfStock = "3";
         $n->Stock_OptionOutOfStock = "2";
         $n->Stock_StockLevelDisplay = "3";
         $n->TaxSettings_InclusiveExclusive = "1";
         $n->TaxSettings_ShippingInclusiveExclusive = "1";
         $n->TaxSettings_CalculateUsing = "1";
         $n->write();
         unset($n);
         DB::alteration_message('Created default store configuration', 'created');
     }
 }
 /**
  * Set up default records based on the yaml config
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     foreach ($this->getDefaultSetNames() as $name) {
         $existingRecord = MenuSet::get()->filter('Name', $name)->first();
         if (!$existingRecord) {
             $set = new MenuSet();
             $set->Name = $name;
             $set->write();
             DB::alteration_message("MenuSet '{$name}' created", 'created');
         }
     }
 }
 /**
  * Create default categories from YAML configuration
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // Only create default records if no records are present
     if (!self::get()->count()) {
         $categories = $this->config()->default_categories;
         if ($categories) {
             foreach ($categories as $name) {
                 self::create(array('Title' => $name))->write();
             }
         }
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $records = DataList::create("RecurringDayOfMonth");
     if (!$records->exists()) {
         self::create_default_records();
     } elseif ($records->count() != 31) {
         foreach ($records as $record) {
             $record->delete();
         }
         self::create_default_records();
     }
 }
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     if ($this->class == 'NewsletterCategory') {
         if (!DataObject::get($this->class)) {
             $n = new NewsletterCategory();
             $n->Title = "Newsletter";
             $n->Description = "Default Newsletter";
             $n->write();
             Database::alteration_message("default newsletter category created", "created");
         }
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     foreach ($this->roles as $role) {
         $ScoutRole = DataObject::get_one('ScoutRole', "Title = '" . $role['Title'] . "'");
         if (!$ScoutRole) {
             $ScoutRole = new ScoutRole();
             $ScoutRole->Title = $role['Title'];
             $ScoutRole->Acronym = $role['Acronym'];
             $ScoutRole->write();
             DB::alteration_message($ScoutRole->Title . ' (' . $ScoutRole->Acronym . ') Scout Role created', 'created');
         }
     }
 }
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $employeeSet = DataObject::get('Employee');
     foreach ($employeeSet as $employee) {
         $employee->delete();
     }
     foreach ($this->data() as $employeeName) {
         $employee = new Employee();
         $employee->Name = $employeeName;
         $employee->write();
     }
     DB::alteration_message("Added default records to Employee table", "created");
 }
 /**
  * Adds the default languages if they are missing
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $defaultLangs = array_keys($this->defaultLanguages);
     $dbLangCount = SnippetLanguage::get()->filter('Name', $defaultLangs)->filter('UserLanguage', 0)->Count();
     if ($dbLangCount < count($defaultLangs)) {
         foreach ($this->defaultLanguages as $name => $data) {
             if (!SnippetLanguage::get()->find('Name', $name)) {
                 $lang = new SnippetLanguage();
                 $lang->Name = $name;
                 $lang->FileExtension = $data['Extension'];
                 $lang->HighlightCode = $data['HighlightCode'];
                 $lang->UserLanguage = false;
                 $lang->write();
                 DB::alteration_message('Created snippet language "' . $name . '"', 'created');
             }
         }
     }
     //Look for config languages
     $configLanguages = CodeBank::config()->extra_languages;
     if (!empty($configLanguages)) {
         foreach ($configLanguages as $language) {
             //Validate languages
             if (empty($language['Name']) || empty($language['FileName']) || empty($language['HighlightCode']) || empty($language['Brush'])) {
                 user_error('Invalid snippet user language found in config, user languages defined in config must contain a Name, FileName, HighlightCode and Brush file path', E_USER_WARNING);
                 continue;
             }
             $lang = SnippetLanguage::get()->filter('Name', Convert::raw2sql($language['Name']))->filter('HighlightCode', Convert::raw2sql($language['HighlightCode']))->filter('UserLanguage', true)->first();
             if (empty($lang) || $lang === false || $lang->ID <= 0) {
                 if (Director::is_absolute($language['Brush']) || Director::is_absolute_url($language['Brush'])) {
                     user_error('Invalid snippet user language found in config, user languages defined in config must contain a path to the brush relative to the SilverStripe base (' . Director::baseFolder() . ')', E_USER_WARNING);
                     continue;
                 }
                 if (preg_match('/\\.js$/', $language['Brush']) == 0) {
                     user_error('Invalid snippet user language found in config, user languages defined in config must be javascript files', E_USER_WARNING);
                     continue;
                 }
                 //Add language
                 $lang = new SnippetLanguage();
                 $lang->Name = $language['Name'];
                 $lang->FileExtension = $language['FileName'];
                 $lang->HighlightCode = $language['HighlightCode'];
                 $lang->BrushFile = $language['Brush'];
                 $lang->UserLanguage = true;
                 $lang->write();
                 DB::alteration_message('Created snippet user language "' . $language['Name'] . '"', 'created');
             }
         }
     }
 }