Ejemplo n.º 1
0
	public static function getCategory($catId, $select = '*', $checkLanguage = false, $checkAccess = true)
	{
		if (empty($catId))
		{
			return null;
		}

		
		if (strpos(",", $select) !== false)
		{
			$selectColumnArr = array_map('trim', explode(',', $select));
			sort($selectColumnArr);
			$select = implode(",", $selectColumnArr);
		}

		$storeId = md5(__METHOD__ . "::$catId::$select" . (int) $checkLanguage . "::" . (int) $checkAccess);
		if (!isset(self::$cache[$storeId]))
		{
			$db       = JFactory::getDbo();
			$nullDate = $db->getNullDate();
			$nowDate  = JFactory::getDate()->toSql();

			$query = $db->getQuery(true);
			$query->select($select);
			$query->from('#__judownload_categories');
			$query->where('published = 1');
			$query->where('(publish_up = ' . $db->quote($nullDate) . ' OR publish_up <= ' . $db->quote($nowDate) . ')');
			$query->where('(publish_down = ' . $db->quote($nullDate) . ' OR publish_down > ' . $db->quote($nowDate) . ')');

			
			if ($checkAccess)
			{
				$user      = JFactory::getUser();
				$levels    = $user->getAuthorisedViewLevels();
				$levelsStr = implode(',', $levels);
				$query->where('access IN (' . $levelsStr . ')');
			}

			if ($checkLanguage)
			{
				
				$app         = JFactory::getApplication();
				$tagLanguage = JFactory::getLanguage()->getTag();
				if ($app->getLanguageFilter())
				{
					$query->where('language IN (' . $db->quote($tagLanguage) . ',' . $db->quote('*') . ',' . $db->quote('') . ')');
				}
			}

			$query->where('id = ' . $catId);
			$db->setQuery($query);
			$catObj = $db->loadObject();
			if (!is_object($catObj))
			{
				self::$cache[$storeId] = false;

				return false;
			}

			if (isset($catObj->images))
			{
				$registry = new JRegistry;
				$registry->loadString($catObj->images);
				$catObj->images = $registry->toObject();
			}

			if (isset($catObj->id))
			{
				$catObj->params = JUDownloadFrontHelperCategory::getCategoryDisplayParams($catObj->id);
			}

			if (isset($catObj->template_params))
			{
				$catObj->template_params = new JRegistry($catObj->template_params);
			}

			self::$cache[$storeId] = $catObj;
		}

		return self::$cache[$storeId];
	}