Example #1
0
	/**
	 * Initialize class.
	 */
	static public function initialize()
	{
		KUNENA_PROFILER ? KunenaProfiler::instance()->start('function '.__CLASS__.'::'.__FUNCTION__.'()') : null;

		if (KunenaConfig::getInstance()->get('cache_cat'))
		{
			// FIXME: Experimental caching.
			/** @var JCache|JCacheControllerCallback $cache */
			$cache = JFactory::getCache('com_kunena', 'callback');
			$cache->setLifeTime(180);
			self::$_instances = $cache->call(array('KunenaForumCategoryHelper', 'loadCategories'));
		}
		else
		{
			self::$_instances = self::loadCategories();
		}

		if (is_null(self::$_tree))
		{
			self::buildTree(self::$_instances);
		}

		self::$allowed = KunenaAccess::getInstance()->getAllowedCategories();
		KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function '.__CLASS__.'::'.__FUNCTION__.'()') : null;
	}
Example #2
0
 protected static function loadCategories()
 {
     KUNENA_PROFILER ? KunenaProfiler::instance()->start('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null;
     $db = JFactory::getDBO();
     $query = "SELECT * FROM #__kunena_categories ORDER BY ordering, name";
     $db->setQuery($query);
     $results = (array) $db->loadAssocList();
     KunenaError::checkDatabaseError();
     self::$_instances = array();
     self::$_tree = array();
     if (empty($results)) {
         KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null;
         return;
     }
     foreach ($results as $category) {
         $instance = new KunenaForumCategory($category);
         $instance->exists(true);
         self::$_instances[$instance->id] = $instance;
         if (!isset(self::$_tree[(int) $instance->id])) {
             self::$_tree[$instance->id] = array();
         }
         self::$_tree[$instance->parent_id][$instance->id] =& self::$_tree[(int) $instance->id];
     }
     unset($results);
     // TODO: remove this by adding level into table
     $heap = array(0);
     while (($parent = array_shift($heap)) !== null) {
         foreach (self::$_tree[$parent] as $id => $children) {
             if (!empty($children)) {
                 array_push($heap, $id);
             }
             self::$_instances[$id]->level = $parent ? self::$_instances[$parent]->level + 1 : 0;
         }
     }
     KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null;
 }