Пример #1
0
 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);
 }