/** * Returns whether the post is attempting to delete an undeletable page * * @return boolean */ protected function _postHasDeletedUndeletablePage() { // get undeleteable page uids from new navigation $nav = $this->_getNavigationFromPost(); $iterator = new RecursiveIteratorIterator($nav, RecursiveIteratorIterator::SELF_FIRST); $newUndeleteableUids = array(); foreach ($iterator as $page) { if ($page->can_delete == false) { $newUndeleteableUids[] = $page->uid; } } // make sure every undeleteable page uid from old navigation is in the list of new undeleteable page uids $nav = Omeka_Navigation::createNavigationFromFilter('public_navigation_main'); $iterator = new RecursiveIteratorIterator($nav, RecursiveIteratorIterator::SELF_FIRST); foreach ($iterator as $page) { if ($page->can_delete == false) { if (!in_array($page->uid, $newUndeleteableUids)) { $this->addError(__('Navigation links that have undeleteable sublinks cannot be deleted.')); return true; } } } return false; }