Exemple #1
0
 /**
  * This method returns the languages available in TAO.
  *
  * @access public
  * @author Jerome Bogaerts, <*****@*****.**>
  * @param  boolean langName If set to true, an associative array where keys are language codes and values are language labels. If set to false (default), a simple array of language codes is returned.
  * @return array
  * @throws common_exception_InconsistentData
  */
 private static function getAvailableLangs()
 {
     //get it into the api only once
     if (count(self::$availableLangs) == 0) {
         try {
             self::$availableLangs = common_cache_FileCache::singleton()->get(self::AVAILABLE_LANGS_CACHEKEY);
         } catch (common_cache_NotFoundException $e) {
             $langClass = new core_kernel_classes_Class(CLASS_LANGUAGES);
             $valueProperty = new core_kernel_classes_Property(RDF_VALUE);
             foreach ($langClass->getInstances() as $lang) {
                 $values = $lang->getPropertiesValues(array(RDF_VALUE, PROPERTY_LANGUAGE_USAGES, PROPERTY_LANGUAGE_ORIENTATION));
                 if (count($values[RDF_VALUE]) != 1) {
                     throw new common_exception_InconsistentData('Error with value of language ' . $lang->getUri());
                 }
                 $value = current($values[RDF_VALUE])->__toString();
                 $usages = array();
                 foreach ($values[PROPERTY_LANGUAGE_USAGES] as $usage) {
                     $usages[] = $usage->getUri();
                 }
                 if (count($values[PROPERTY_LANGUAGE_ORIENTATION]) != 1) {
                     common_Logger::w('Error with orientation of language ' . $lang->getUri());
                     $orientation = INSTANCE_ORIENTATION_LTR;
                 } else {
                     $orientation = current($values[PROPERTY_LANGUAGE_ORIENTATION])->getUri();
                 }
                 self::$availableLangs[$value] = array('uri' => $lang->getUri(), PROPERTY_LANGUAGE_USAGES => $usages, PROPERTY_LANGUAGE_ORIENTATION => $orientation);
             }
             common_cache_FileCache::singleton()->put(self::$availableLangs, self::AVAILABLE_LANGS_CACHEKEY);
         }
     }
     return self::$availableLangs;
 }