Source of file CMSBatchAction_Restore.php
Size: 1,685 Bytes - Last Modified: 2021-12-23T10:28:18+00:00
/var/www/docs.ssmods.com/process/src/code/BatchActions/CMSBatchAction_Restore.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?php namespace SilverStripe\CMS\BatchActions; use SilverStripe\Admin\CMSBatchAction; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\SS_List; use SilverStripe\Versioned\Versioned; use SilverStripe\Security\Permission; /** * Batch restore of pages */ class CMSBatchAction_Restore extends CMSBatchAction { public function getActionTitle() { return _t(__CLASS__ . '.RESTORE', 'Restore'); } public function run(SS_List $pages) { // Sort pages by depth $pageArray = $pages->toArray(); // because of https://bugs.php.net/bug.php?id=50688 /** @var SiteTree $page */ foreach ($pageArray as $page) { $page->getPageLevel(); } usort($pageArray, function (SiteTree $a, SiteTree $b) { return $a->getPageLevel() - $b->getPageLevel(); }); $pages = new ArrayList($pageArray); // Restore return $this->batchaction( $pages, 'doRestoreToStage', _t(__CLASS__ . '.RESTORED_PAGES', 'Restored %d pages') ); } /** * {@see SiteTree::canEdit()} * * @param array $ids * @return array */ public function applicablePages($ids) { // Basic permission check based on SiteTree::canEdit if (!Permission::check(["ADMIN", "SITETREE_EDIT_ALL"])) { return []; } // Get pages that exist in stage and remove them from the restore-able set $stageIDs = Versioned::get_by_stage($this->managedClass, Versioned::DRAFT)->column('ID'); return array_values(array_diff($ids, $stageIDs)); } } |