public static function GetCategoryUri($categoryid) { static $categories = null; if (is_null($categories)) { // Get all URIs and associated categories $categories = array(); $pages = Page::DAOFactory(); $pages->select()->where('application = ?', 'Downloads'); foreach ($pages->getAll() as $page) { $settings = json_decode($page->get('settings'), true); $uri = $page->get('uri'); if (isset($settings['categoryid']) && !in_array(0, $settings['categoryid'])) { // This news page only includes certain categories foreach ($settings['categoryid'] as $cid) { $categories[$cid] = $uri; } } else { // This news page includes all categories $categories[0] = $uri; } } } // There is a page that explicitly includes this category if (isset($categories[$categoryid])) { return $categories[$categoryid]; } // There is a page that includes all categories if (isset($categories[0])) { return $categories[0]; } // There is no page for this category return null; }