protected function addAlphaList() { // check for letters in session $alpha_list = $this->request->getSession("alpha_list"); if ($alpha_list == "") { $objDataMap = new Xerxes_DataMap(); // check database cache $arrCache = $objDataMap->getCache("dblist", "az"); if (count($arrCache) > 0) { $objCache = $arrCache[0]; $alpha_list = $objCache->data; } else { // so create it $alpha_list_array = $objDataMap->getDatabaseAlpha(); $alpha_list = implode(',', $alpha_list_array); // and cache it in the database $objCache = new Xerxes_Data_Cache(); $objCache->source = "dblist"; $objCache->id = "az"; $objCache->data = $alpha_list; $objCache->expiry = time() + 60 * 60; // for one hour $objDataMap->setCache($objCache); } // cache it in session too! $this->request->setSession("alpha_list", $alpha_list); } // add it to the interface $objAlpha = new DOMDocument(); $objAlpha->loadXML("<alpha />"); foreach (explode(',', $alpha_list) as $letter) { $objEntry = $objAlpha->createElement("entry"); $objAlpha->documentElement->appendChild($objEntry); $objLetter = $objAlpha->createElement("letter", $letter); $objEntry->appendChild($objLetter); $params = array("base" => "databases", "action" => "alphabetical", "alpha" => $letter); $link = $this->request->url_for($params); $objLink = $objAlpha->createElement("link", Xerxes_Framework_Parser::escapeXML($link)); $objEntry->appendChild($objLink); } $this->request->addDocument($objAlpha); }