Source of file SWSBuildTask.php
Size: 5,280 Bytes - Last Modified: 2021-12-23T10:48:00+00:00
/var/www/docs.ssmods.com/process/src/tasks/SWSBuildTask.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | <?php class SWSBuildTask extends BuildTask { protected $title = "SwipeStripe Build"; protected $description = "Create the shop with data"; protected static $fixture_file = 'swipestripe-builder/tasks/SWS.yml'; protected $fixtureFactory; public function run($request) { $dbAdmin = DatabaseAdmin::create(); increase_time_limit_to(600); SS_ClassLoader::instance()->getManifest()->regenerate(); $dbAdmin->clearAllData(); $dbAdmin->doBuild(true); // Build again for good measure $dbAdmin->doBuild(true, false); //Move images to assets/Uploads/ $assetsDir = Director::baseFolder() . '/assets/Uploads'; $imagesDir = Director::baseFolder() . '/swipestripe-builder/images'; foreach (new DirectoryIterator($assetsDir) as $fileInfo){ if(!$fileInfo->isDot()) { @unlink($fileInfo->getPathname()); } } Filesystem::sync(); foreach (new DirectoryIterator($imagesDir) as $fileInfo){ if($fileInfo->isFile()) { copy($fileInfo->getPathname(), $assetsDir . '/' . $fileInfo->getFilename()); } } //Build DB $fixture = Injector::inst()->create('YamlFixture', self::$fixture_file); $fixture->writeInto($this->getFixtureFactory()); //Update the shop config $config = ShopConfig::current_shop_config(); $config->BaseCurrency = 'NZD'; $config->BaseCurrencySymbol = '$'; $config->EmailSignature = ''; $config->ReceiptSubject = 'Your order details from SwipeStripe demo site'; $config->ReceiptBody = ''; $config->ReceiptFrom = 'info@swipestripe.com'; $config->NotificationSubject = 'New order on SwipeStripe demo site'; $config->NotificationBody = ''; $config->NotificationTo = 'info@swipestripe.com'; $config->write(); // Populate flat fee shipping rates $this->createShippingRates(); // Populate tax rates $this->createTaxRates(); // Populate exchange rates $this->createExchangeRates(); // Populate coupon codes $this->createCouponCodes(); // Product categories $this->createProductCategories(); // Product images $this->createProductImages(); // Clear product meta $products = Product::get(); if ($products && $products->exists()) foreach ($products as $product) { $product->ExtraMeta = ''; $product->doPublish(); } // Create home page if (class_exists('HomePage')) { $page = Page::get() ->where("\"URLSegment\" = 'home'") ->first(); $page->ClassName = 'HomePage'; $page->doPublish(); } } private function createShippingRates() { if (class_exists('FlatFeeShippingRate')) { $fixture = Injector::inst()->create('YamlFixture', 'swipestripe-builder/tasks/SWSFlatFeeShipping.yml'); $fixture->writeInto($this->getFixtureFactory()); } } private function createTaxRates() { if (class_exists('FlatFeeTaxRate')) { $fixture = Injector::inst()->create('YamlFixture', 'swipestripe-builder/tasks/SWSFlatFeeTax.yml'); $fixture->writeInto($this->getFixtureFactory()); } } private function createExchangeRates() { if (class_exists('ExchangeRate')) { $fixture = Injector::inst()->create('YamlFixture', 'swipestripe-builder/tasks/SWSCurrency.yml'); $fixture->writeInto($this->getFixtureFactory()); } } private function createCouponCodes() { if (class_exists('Coupon')) { $fixture = Injector::inst()->create('YamlFixture', 'swipestripe-builder/tasks/SWSCoupon.yml'); $fixture->writeInto($this->getFixtureFactory()); } } private function createProductCategories() { if (class_exists('ProductCategory')) { $fixture = Injector::inst()->create('YamlFixture', 'swipestripe-builder/tasks/SWSProductCategory.yml'); $fixture->writeInto($this->getFixtureFactory()); $cats = ProductCategory::get(); if ($cats && $cats->exists()) foreach ($cats as $cat) { $cat->doPublish(); } $products = Product::get(); if ($products && $products->exists()) foreach ($products as $product) { $extra = json_decode($product->ExtraMeta); if (is_object($extra)) { //Categories if ($segment = $extra->ProductCategory) { $cat = ProductCategory::get() ->where("\"URLSegment\" = '$segment'") ->first(); if ($cat && $cat->exists()) { $product->ParentID = $cat->ID; $relation = new ProductCategory_Products(); $relation->ProductCategoryID = $cat->ID; $relation->ProductID = $product->ID; $relation->write(); } } } $product->doPublish(); } } } private function createProductImages() { if (class_exists('Product_Images')) { $products = Product::get(); if ($products && $products->exists()) foreach ($products as $product) { $extra = json_decode($product->ExtraMeta); if (is_object($extra)) { //Categories if (isset($extra->Image) && $segment = $extra->Image) { $image = Image::get() ->where("\"Filename\" = '$segment'") ->first(); if ($image && $image->exists()) { $relation = $product->getManyManyComponents('Images'); $relation->add($image); } } } $product->doPublish(); } } } /** * @return FixtureFactory */ public function getFixtureFactory() { if(!$this->fixtureFactory) $this->fixtureFactory = Injector::inst()->create('FixtureFactory'); return $this->fixtureFactory; } } |