* * Divides the NavBar into seperate Groups. Links on the NavBar are under these groups. * * navbargroup_id [INTEGER] Primary Key for this table * navbargroup_nameKey [STRING] The multilingual lookup key to retrieve the group name. '[group_[nameKey]]' * navbargroup_order [INTEGER] defines the order in which the groups are to be displayed on the Nav Bar. */ $NavBarGroup = new RowManager_NavBarGroupManager(); $NavBarGroup->dropTable(); $NavBarGroup->createTable(); // NavBarGroup is a RowLabelBridge, so we must use that to create the initial // entries: $seriesKey = moduleNavBar::MULTILINGUAL_SERIES_KEY; $pageKey = RowManager_NavBarGroupManager::XML_NODE_NAME; $multiLingualContext = new MultilingualManager(1, $seriesKey, $pageKey); $group = $NavBarGroup->getRowLabelBridge($multiLingualContext); $values = array(); $values['label_label'] = 'Admin'; $group->loadFromArray($values); $group->createNewEntry(); /* * NavBarLinks Table * * Manages the actual links on the NavBar * * navbarlink_id [INTEGER] Primary Key for this table * navbargroup_id [INTEGER] Foreign Key relating this Link to a group * navbarlink_textKey [STRING] the key for the multilingual content to display the name of this link. "[link_[textKey]]" * navbarlink_url [STRING] the url of a link not tied to a site module. * module_id [INTEGER] Foreign Key relating this link to a built in module for the site. * navbarlink_isActive [BOOL] Bool flag turning link on or off.
/** * function createCache * <pre> * Create a cache entry for a given viewer_id and language_id * </pre> * @param $viewerID [OBJECT] the viewer object of the person to make a * cache entry for. * @return [void] */ function createCache($viewer) { $viewerID = $viewer->getID(); $languageID = $viewer->getLanguageID(); $groupArray = array(); // Make sure all required Row Managers are included $accountAdminPath = SITE_PATH_MODULES . 'site_AccountAdmin/objects_da/'; $navBarPath = SITE_PATH_MODULES . 'site_NavBar/objects_da/'; $pathToRoot = Page::findPathExtension($accountAdminPath); require_once $pathToRoot . $accountAdminPath . 'ViewerAccessGroupManager.php'; require_once $pathToRoot . $navBarPath . 'NavBarGroupManager.php'; require_once $pathToRoot . $navBarPath . 'NavLinkAccessGroupManager.php'; require_once $pathToRoot . $navBarPath . 'NavLinkViewerManager.php'; require_once $pathToRoot . $navBarPath . 'NavBarLinksManager.php'; // get list of Links linked to this viewer // array of links: link_id, link_text, link_url, group_id $viewerLinks = $this->getViewerLinks($viewerID, $languageID); // get list of Links linked to this viewer's groups // array of links: link_id, link_text, link_url, group_id $groupLinks = $this->getGroupLinks($viewerID, $languageID); /* * combine lists */ $combinedLinks = array(); $usedLinks = array(); // for each viewerLink for ($indx = 0; $indx < count($viewerLinks); $indx++) { // compute a link key $linkKey = $viewerLinks[$indx]['navbarlink_url'] . '[' . $viewerLinks[$indx]['module_id'] . ']'; // if this link key has not already been added (no duplicate links) if (!key_exists($linkKey, $usedLinks)) { $usedLinks[$linkKey] = $linkKey; $combinedLinks[] = $viewerLinks[$indx]; } } // for each groupLink for ($indx = 0; $indx < count($groupLinks); $indx++) { $linkKey = $groupLinks[$indx]['navbarlink_url'] . '[' . $groupLinks[$indx]['module_id'] . ']'; if (!key_exists($linkKey, $usedLinks)) { $usedLinks[$linkKey] = $linkKey; $combinedLinks[] = $groupLinks[$indx]; } } // for each link in combinedLinks for ($indx = 0; $indx < count($combinedLinks); $indx++) { // if groupObject in GroupArray then $groupID = (int) $combinedLinks[$indx]['navbargroup_id']; if (!key_exists($groupID, $groupArray)) { // create new group Object $group = new GroupItem(); $groupManager = new RowManager_NavBarGroupManager($groupID); $multiLingualContext = new MultilingualManager($languageID); $bridgeManager = $groupManager->getRowLabelBridge($multiLingualContext); $group->loadFromArray($bridgeManager->getArrayOfValues()); // store in GroupArray $groupArray[$groupID] = $group; } // end if // Add link Object to Group Object $link = new LinkItem(); $link->loadFromArray($combinedLinks[$indx]); $groupArray[$groupID]->addItem($link); } // next item // Now manually sort the group Items since we couldn't get the SQL // to sort it. $sortedArray = array(); foreach ($groupArray as $group) { $key = $group->getOrder() . $group->getText(); $sortedArray[$key] = $group; } ksort($sortedArray); // send array of group objects to Template $template = new Template($pathToRoot . SITE_PATH_MODULES . 'site_NavBar/templates/'); $template->set('arrayGroup', $sortedArray); $template->set('pathToRoot', $this->getPathToRootTag()); // get cache data from template $cacheData = $template->fetch('obj_NavBar.php'); $cacheData = str_replace('[userID]', $viewer->getUserID(), $cacheData); $cacheData = str_replace('[passWord]', $viewer->getPassword(), $cacheData); if ((int) $viewer->getLanguageID() == 1) { $cacheData = str_replace('[gtsLanguageID]', 'en', $cacheData); } else { $cacheData = str_replace('[gtsLanguageID]', 'chi', $cacheData); } // store cache data in this object $this->setValueByFieldName('navbarcache_cache', $cacheData); //echo 'cacheData=[<pre>'.$cacheData.'</pre>]<br>'; // set isValid to true $this->setCacheValid(); $this->setViewerID($viewerID); $this->setLanguageID($languageID); // update DB Table if ($this->isLoaded()) { $this->updateDBTable(); } else { $this->createNewEntry(); } }