/** * 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; }