/**
  * Alter QubitMenu data
  *
  * @return QubitMigrate107 this object
  */
 protected function alterQubitMenus()
 {
     // Remove "import/export" menu
     // difficult to just rename because both the mainmenu and the submenu share the 'import/export' name in 1.0.7
     // so, remove both and add a new 'import' mainmenu and 'import xml' sub-menu
     $importExportMenuKey = $this->getRowKey('QubitMenu', 'name', 'import/export');
     if ($importExportMenuKey) {
         $this->data['QubitMenu'] = QubitMigrate::cascadeDelete($this->data['QubitMenu'], $importExportMenuKey);
     }
     // Remove "upload" menu
     // some 1.0.8-dev sites had "upload" menus so add this remove just to be sure
     $uploadMenuKey = $this->getRowKey('QubitMenu', 'name', 'upload');
     if ($uploadMenuKey) {
         $this->data['QubitMenu'] = QubitMigrate::cascadeDelete($this->data['QubitMenu'], $uploadMenuKey);
     }
     // Add 'import' menu
     $importMenu = array('QubitMenu_mainmenu_import' => array('id' => '<?php echo QubitMenu::IMPORT_ID."\\n" ?>', 'parent_id' => '<?php echo QubitMenu::MAIN_MENU_ID."\\n" ?>', 'source_culture' => 'en', 'name' => 'import', 'path' => 'object/importSelect', 'label' => array('en' => 'Import', 'es' => 'importar', 'fa' => 'وارد كردن', 'fr' => 'importer', 'it' => 'importa', 'nl' => 'import', 'pt' => 'importar', 'sl' => 'uvoz')));
     // Attempt to insert 'import' menu before 'admin' menu
     if ($adminMenuKey = $this->getRowKey('QubitMenu', 'id', '<?php echo QubitMenu::ADMIN_ID."\\n" ?>')) {
         QubitMigrate::insertBeforeNestedSet($this->data['QubitMenu'], $adminMenuKey, $importMenu);
     } else {
         array_merge($this->data['QubitMenu'], $importMenu);
     }
     // Add 'import xml' menu as child of 'import'
     $this->data['QubitMenu']['QubitMenu_mainmenu_import_xml'] = array('parent_id' => 'QubitMenu_mainmenu_import', 'source_culture' => 'en', 'name' => 'import xml', 'path' => 'object/importSelect', 'label' => array('en' => 'xml'));
     // Add 'import digital objects' menu as child of 'import'
     $this->data['QubitMenu']['QubitMenu_mainmenu_import_digitalobjects'] = array('parent_id' => 'QubitMenu_mainmenu_import', 'source_culture' => 'en', 'name' => 'import digital objects', 'path' => 'digitalobject/multiFileUpload', 'label' => array('en' => 'digital objects'));
     // Remove previous OAI harvester menu
     $harvesterKey = $this->getRowKey('QubitMenu', 'name', 'harvester');
     if ($harvesterKey) {
         $this->data['QubitMenu'] = QubitMigrate::cascadeDelete($this->data['QubitMenu'], $harvesterKey);
     }
     // Add 'import OAI' menu as child of 'import'
     $this->data['QubitMenu']['QubitMenu_mainmenu_import_oai'] = array('parent_id' => 'QubitMenu_mainmenu_import', 'source_culture' => 'en', 'name' => 'import oai', 'path' => 'oai/harvesterList', 'label' => array('en' => 'oai'));
     // Add user and group sub-menus
     if (null !== ($userMenuKey = $this->getRowKey('QubitMenu', 'name', 'users'))) {
         $this->data['QubitMenu']['QubitMenu_mainmenu_admin_users_users'] = array('parent_id' => $userMenuKey, 'source_culture' => 'en', 'name' => 'users', 'path' => 'user/list', 'label' => array('en' => 'users'));
         $this->data['QubitMenu']['QubitMenu_mainmenu_admin_users_groups'] = array('parent_id' => $userMenuKey, 'source_culture' => 'en', 'name' => 'groups', 'path' => 'aclGroup/list', 'label' => array('en' => 'groups'));
     }
     // Update path for home page
     if (null !== ($menuKey = $this->getRowKey('QubitMenu', 'name', 'home'))) {
         $this->data['QubitMenu'][$menuKey]['path'] = 'staticpage/static?permalink=homepage';
     }
     // Pluralize English 'Add/Edit' menu options for Qubit
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Information object'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Information objects';
     }
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Person/organization'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Persons/organizations';
     }
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Repository'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Repositories';
     }
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Term'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Terms';
     }
     // Pluralize English 'Add/Edit' menu options for ICA-AtoM variations
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Archival description'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Archival descriptions';
     }
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Authority record'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Authority records';
     }
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'Archival institution'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'Archival institutions';
     }
     // Pluralize English 'Add/Edit' menu options for DCB variations
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'resource'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'resources';
     }
     $menuOption = $this->getRowKey('QubitMenu', 'label', array('en' => 'organization'));
     if ($menuOption) {
         $this->data['QubitMenu'][$menuOption]['label']['en'] = 'organizations';
     }
     return $this;
 }
 /**
  * Ver 13: Promote 'groups' menu to child of 'admin'
  *
  * @return QubitMigrate108 this object
  */
 protected function promoteGroupsMenu()
 {
     // Try to find existing 'Groups' menu
     if ($groupMenuKey = $this->getRowKey('QubitMenu', 'name', 'groups')) {
         $groupMenu = $this->data['QubitMenu'][$groupMenuKey];
         $groupMenu['parent_id'] = '<?php echo QubitMenu::ADMIN_ID."\\n" ?>';
     } else {
         // If 'Groups' menu doesn't exist already then create it
         $groupMenu = array('parent_id' => '<?php echo QubitMenu::ADMIN_ID."\\n" ?>', 'name' => 'groups', 'path' => 'aclGroup/list', 'source_culture' => 'en', 'label' => array('en' => 'Groups'));
     }
     // Remove all children of 'User' menu.  This cleans up repeated 'user'
     // sub-menus from r3510
     $userMenuKey = null;
     foreach ($this->data['QubitMenu'] as $key => $row) {
         if (null != $userMenuKey) {
             $nextKey = $key;
             break;
         } else {
             if (isset($row['name']) && 'users' == $row['name']) {
                 // Find the 'users' menu that is a child of the admin menu
                 if (strpos($row['parent_id'], 'QubitMenu::ADMIN_ID') || isset($this->data['QubitMenu'][$row['parent_id']]) && strpos($this->data['QubitMenu'][$row['parent_id']]['id'], 'QubitMenu::ADMIN_ID')) {
                     $userMenuKey = $key;
                     // Delete all children of user menu (users and groups)
                     foreach ($this->data['QubitMenu'] as $key2 => $item) {
                         if (isset($item['parent_id']) && $userMenuKey == $item['parent_id']) {
                             unset($this->data['QubitMenu'][$key2]);
                         }
                     }
                 }
             }
         }
     }
     // Insert 'Groups' menu right after 'Users' menu
     if (isset($nextKey)) {
         QubitMigrate::insertBeforeNestedSet($this->data['QubitMenu'], $nextKey, array('QubitMenu_mainmenu_admin_groups' => $groupMenu));
     } else {
         $this->data['QubitMenu']['QubitMenu_mainmenu_admin_users_users'] = $groupMenu;
     }
     return $this;
 }