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)); } }