Make use of LanguageCategory objects
authorMatthias Schmidt <gravatronics@live.com>
Mon, 15 Aug 2011 15:16:03 +0000 (17:16 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Mon, 15 Aug 2011 15:16:03 +0000 (17:16 +0200)
LanguageFactory now uses LanguageCategory objects rather than arrays.

wcfsetup/install/files/lib/data/language/Language.class.php
wcfsetup/install/files/lib/system/cache/builder/LanguageCacheBuilder.class.php
wcfsetup/install/files/lib/system/language/LanguageFactory.class.php

index 7b55b817d67c37fe3d37612608bbe621fa250cc5..16694313f19c752500b2beba118631d5fdb709a0 100644 (file)
@@ -138,7 +138,7 @@ class Language extends DatabaseObject {
                        
                        // rebuild language file
                        $languageCategory = LanguageFactory::getCategory($category);
-                       $this->editor->updateCategory(array($languageCategory['languageCategoryID']), array($this->packageID));
+                       $this->editor->updateCategory(array($languageCategory->languageCategoryID), array($this->packageID));
                }
                
                // include language file
index 1b13a47be321a0081565713c54fc6813894390c9..f6b0efa2c37730fafd6b089a7d19424b3ceea922 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 namespace wcf\system\cache\builder;
+use wcf\data\language\category\LanguageCategoryList;
 use wcf\system\WCF;
 
 /**
@@ -75,13 +76,11 @@ class LanguageCacheBuilder implements ICacheBuilder {
                }
                
                // get language categories
-               $sql = "SELECT  *
-                       FROM    wcf".WCF_N."_language_category";
-               $statement = WCF::getDB()->prepareStatement($sql);
-               $statement->execute();
-               while ($row = $statement->fetchArray()) {
-                       // package to languages
-                       $data['categories'][$row['languageCategory']] = $row;
+               $languageCategoryList = new LanguageCategoryList();
+               $languageCategoryList->sqlLimit = 0;
+               $languageCategoryList->readObjects();
+               foreach ($languageCategoryList->getObjects() as $languageCategory) {
+                       $data['categories'][$languageCategory->languageCategory] = $languageCategory;
                }
 
                return $data;
index de8672cbe3f941578cafcd86fdc2a925b6c35181..64517a55049be114204751d61c8dfa181e51d8b7 100644 (file)
@@ -36,13 +36,13 @@ abstract class LanguageFactory {
        private static $scriptingCompiler = null;
        
        /**
-        * Returns a Language-object for the requested language id.
+        * Returns a Language object for the language with the given id.
         *
         * @param       integer         $languageID
         * @return      wcf\data\language\Language
         */
        public static function getLanguage($languageID) {
-               if (self::$cache === null) self::loadCache();
+               self::loadCache();
                
                if (!isset(self::$languages[$languageID])) {
                        $language = new Language($languageID);
@@ -60,43 +60,38 @@ abstract class LanguageFactory {
        }
        
        /**
-        * Validates if given category is known.
+        * Returns true if the language category with the given name exists.
         *
-        * @param       string          $category
+        * @param       string          $categoryName
         * @return      boolean
         */
-       public static function isValidCategory($category) {
+       public static function isValidCategory($categoryName) {
                self::loadCache();
                
-               return (isset(self::$cache['categories'][$category])) ? true : false;
+               return isset(self::$cache['categories'][$categoryName]);
        }
        
        /**
-        * Returns data for a specific category.
+        * Returns the language category with the given name.
         *
-        * @param       string          $category
-        * @return      array
+        * @param       string          $categoryName
+        * @return      wcf\data\language\category\LanguageCategory
         */
-       public static function getCategory($category) {
-               if (isset(self::$cache['categories'][$category])) {
-                       return self::$cache['categories'][$category];
+       public static function getCategory($categoryName) {
+               if (isset(self::$cache['categories'][$categoryName])) {
+                       return self::$cache['categories'][$categoryName];
                }
                
-               return array();
+               return null;
        }
        
        /**
         * Returns a list of available language categories.
         * 
-        * @return      array<string>
+        * @return      array<wcf\data\language\category\LanguageCategory>
         */     
        public static function getCategories() {
-               $categories = array();
-               foreach (self::$cache['categories'] as $categoryName => $category) {
-                       $categories[$category['languageCategoryID']] = $categoryName;
-               }
-               
-               return $categories;
+               return self::$cache['categories'];
        }
        
        /**
@@ -126,7 +121,7 @@ abstract class LanguageFactory {
        /**
         * Determines the preferred language of the current user.
         *
-        * @param       array           $availableLanguages
+        * @param       array           $availableLanguageCodes
         * @param       string          $defaultLanguageCode
         * @return      string
         */
@@ -148,10 +143,11 @@ abstract class LanguageFactory {
        }
        
        /**
-        * Returns all available languages for given package
+        * Returns infos (code, id, encoding, etc) about all available languages
+        * for package with the given id.
         *
         * @param       integer         $packageID
-        * @return      array           $availableLanguages     infos about each language (code, id, encoding, etc)
+        * @return      array
         */
        public static function getAvailableLanguages($packageID = PACKAGE_ID) {
                // get list of all available languages