Source of file EcommerceDatabaseAdmin.php
Size: 9,939 Bytes - Last Modified: 2021-12-23T10:39:35+00:00
/var/www/docs.ssmods.com/process/src/src/Cms/Dev/EcommerceDatabaseAdmin.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365 | <?php namespace Sunnysideup\Ecommerce\Cms\Dev; use SilverStripe\Control\Controller; use SilverStripe\Control\Director; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\BuildTask; use SilverStripe\Dev\TaskRunner; use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\DB; use SilverStripe\View\ArrayData; class EcommerceDatabaseAdmin extends TaskRunner { //############################## // 0. OVERALL CONFIG //############################## /** * List of overall configuration BuildTasks. * * @var array */ protected $overallconfig = [ 'Sunnysideup\Ecommerce\Tasks\EcommerceTaskCheckConfiguration', ]; //############################## // 1. ECOMMERCE SETUP (DEFAULT RECORDS) //############################## /** * List of setup BuildTasks. * * @var array */ protected $ecommerceSetup = [ 'ecommercetasksetorderidstartingnumber', 'ecommercetaskcreatemembergroups', 'ecommercetaskdefaultrecords', 'ecommercetaskcountryandregion', 'EcommerceTaskCountryAndRegiondisallowallcountries', 'EcommerceTaskCountryAndRegionallowallcountries', 'ecommercetaskadddefaultproducts', 'ecommercetasklinkproductwithimages', ]; //############################## // 2. DATA REVIEW MAINTENANCE //############################## /** * List of regular maintenance BuildTasks. * * @var array */ protected $dataReview = [ 'ecommercetaskreviewreports', 'ecommercetaskreviewsearches', 'ecommercetaskorderitemspercustomer', ]; //############################## // 3. REGULAR MAINTENANCE //############################## /** * List of regular maintenance BuildTasks. * * @var array */ protected $regularMaintenance = [ 'ecommercetaskcartcleanup', 'ecommercetaskaddcustomerstocustomergroups', 'ecommercetaskfixbrokenordersubmissiondata', 'ecommercetaskcleanupproductfullsitetreesorting', 'ecommercetaskproductvariationsfixes', 'ecommercetaskproductimagereset', 'ecommercetasktrytofinaliseorders', 'ecommercetaskprocessorderqueue', 'ecommercetaskarchiveallsubmittedorders', 'ecommercetasklinkorderaddressesatbothends', 'ecommercetaskcleanupproducts', ]; //############################## // 4. DEBUG ACTIONS //############################## /** * List of debug actions BuildTasks. * * @var array */ protected $debugActions = [ 'ecommercetasktemplatetest', 'ecommercetaskcartmanipulation_current', 'ecommercetaskcartmanipulation_debug', 'ecommercetaskbuilding_model', 'ecommercetaskbuilding_extending', ]; //############################## // 5. MIGRATIONS //############################## /** * List of migration BuildTasks. * * @var array */ protected $migrations = [ 'ecommercetaskmigration', 'ecommercetaskcheckconfiguration', 'ecommercetasksetdefaultproductgroupvalues', ]; //############################## // 6. CRAZY SHIT //############################## /** * List of crazy shit BuildTasks. * * @var array */ protected $crazyshit = [ 'ecommercetaskdeleteallorders', 'ecommercetaskdeleteproducts', 'ecommercetaskarchiveallorderswithitems', ]; //############################## // 7. TESTS //############################## /** * List of tests. * * @var array */ protected $tests = [ //'ShoppingCartTest' => 'Shopping Cart' ]; //############################## // BASIC FUNCTIONS //############################## public function index() { if (Director::is_cli()) { } else { $renderer = new EcommerceDatabaseAdminDebugView(); $renderer->renderHeader(); $renderer->renderInfo('SilverStripe Ecommerce Tools', Director::absoluteBaseURL()); $renderer->writeContent($this); $renderer->writeFooter(); } } /** * standard, required method. * * @param string $action * * @return string link for the "Controller" */ public function Link($action = null) { return Controller::join_links( Director::BaseURL(), 'dev/ecommerce/', $action ); } /** * list of config tasks. * * @return \SilverStripe\ORM\ArrayList */ public function OverallConfig() { return $this->createMenuDOSFromArray($this->overallconfig, Config::class); } /** * list of data setup tasks. * * @return \SilverStripe\ORM\ArrayList */ public function EcommerceSetup() { return $this->createMenuDOSFromArray($this->ecommerceSetup, 'EcommerceSetup'); } /** * regular data cleanup tasks. * * @return \SilverStripe\ORM\ArrayList */ public function DataReview() { return $this->createMenuDOSFromArray($this->dataReview, 'DataReview'); } /** * regular data cleanup tasks. * * @return \SilverStripe\ORM\ArrayList */ public function RegularMaintenance() { return $this->createMenuDOSFromArray($this->regularMaintenance, 'RegularMaintenance'); } /** * list of data debug actions. * * @return \SilverStripe\ORM\ArrayList */ public function DebugActions() { return $this->createMenuDOSFromArray($this->debugActions, $type = 'DebugActions'); } /** * list of migration tasks. * * @return \SilverStripe\ORM\ArrayList */ public function Migrations() { return $this->createMenuDOSFromArray($this->migrations, $type = 'Migrations'); } /** * list of crazy actions tasks. * * @return \SilverStripe\ORM\ArrayList */ public function CrazyShit() { return $this->createMenuDOSFromArray($this->crazyshit, $type = 'CrazyShit'); } public function Tests() { $arrayList = new ArrayList(); foreach ($this->tests as $class => $name) { $arrayList->push( new ArrayData( [ 'Name' => $name, 'Class' => $class, ] ) ); } return $arrayList; } /** * @return array ???? */ public function AllTests() { return implode(',', array_keys($this->tests)); } public function runTask($request) { $task = null; $taskName = $request->param('TaskName'); $renderer = new EcommerceDatabaseAdminDebugView(); $renderer->renderHeader(); $renderer->renderInfo('SilverStripe Ecommerce Tools', Director::absoluteBaseURL()); $renderer->writePreOutcome(); if (class_exists($taskName) && is_subclass_of($taskName, BuildTask::class)) { $title = singleton($taskName)->getTitle(); if (Director::is_cli()) { echo "Running task '{$title}'...\n\n"; } elseif (! Director::is_ajax()) { echo "<h1>Running task '{$title}'...</h1>\n"; } $task = new $taskName(); if ($task->isEnabled()) { $task->verbose = true; $task->run($request); } else { echo "<p>{$title} is disabled</p>"; } } else { echo "Build task '{$taskName}' not found."; if (class_exists($taskName)) { echo " It isn't a subclass of BuildTask."; } echo "\n"; } $this->displayCompletionMessage($task); $renderer->writePostOutcome(); $renderer->writeContent($this); $renderer->writeFooter(); return []; } //############################## // INTERNAL FUNCTIONS //############################## /** * @param array $buildTasksArray array of build tasks * @param string $type * * @return \SilverStripe\ORM\ArrayList(ArrayData(Link, Title, Description)) */ protected function createMenuDOSFromArray(array $buildTasksArray, $type = '') { $extendedArray = $this->extend('updateEcommerceDevMenu' . $type, $buildTasksArray); if (null !== $extendedArray && is_array($extendedArray) && count($extendedArray)) { foreach ($extendedArray as $extendedBuildTasks) { $buildTasksArray = array_merge($buildTasksArray, $extendedBuildTasks); } } $buildTasksArray = array_unique($buildTasksArray); $arrayList = new ArrayList(); foreach ($buildTasksArray as $buildTask) { $obj = new $buildTask(); $do = new ArrayData( [ 'Link' => $this->Link($buildTask), 'Title' => $obj->getTitle(), 'Description' => $obj->getDescription(), ] ); $arrayList->push($do); } return $arrayList; } /** * shows a "Task Completed Message" on the screen. * * @param string $extraMessage */ protected function displayCompletionMessage(BuildTask $buildTask, $extraMessage = '') { DB::alteration_message(' ------------------------------------------------------- <br /> COMPLETED THE FOLLOWING TASK:<br /> <strong>' . $buildTask->getTitle() . '</strong><br /> ' . $buildTask->getDescription() . " <br /> ------------------------------------------------------- <br /> {$extraMessage} "); } } |