load->model('person/Person_model', 'PersonModelLanguage'); // Retrieves language/s for the logged user $languagesDB = $ci->PersonModelLanguage->getLanguage(getAuthUID()); if (hasData($languagesDB)) { // Looks for the first valid language foreach (getData($languagesDB) as $languageDB) { if (!isEmptyString($languageDB->sprache)) { $language = $languageDB->sprache; break; } } } } return $language; } /** * Function to retrieve a phrase from an array of phrases (same phrase in more languages) using the given language as parameter * The given $phraseLanguagesArray parameter contains more translations of the same phrase * $language parameter contains the language used to get the phrase * The first time this function is called an array, that has the language as its key and the language index as its value, * is retrived from database and then stored in the user session. * All subsequent calls retrieves this array from the session itself. */ function getPhraseByLanguage($phraseLanguagesArray, $language) { $phrase = null; $ci =& get_instance(); // get CI instance // Try to get the language session $langArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES); if ($langArray == null) // If not already loaded in session { // Retrieves active languages $dbLanguages = getDBActiveLanguages(); if (hasData($dbLanguages)) // If everything is ok and contains data { $index = 0; // Incremental integer $langArray = array(); // Array that will contains languages and their indexes // Loops through database results foreach (getData($dbLanguages) as $dbLanguage) { $langArray[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements } } // Set session element $_SESSION['LANG']['LANG_INDEXES'] with $langArray setSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES, $langArray); } // Checks to avoid ugly php error messages if (!isEmptyArray($phraseLanguagesArray) && !isEmptyArray($langArray) && isset($langArray[$language]) && isset($phraseLanguagesArray[$langArray[$language]])) { // If everything is ok then set phrase $phrase = $phraseLanguagesArray[$langArray[$language]]; } return $phrase; } /** * Tries to load active languages from session, if not present then loads them from database and stores them in session */ function getActiveLanguages() { $languagesArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES); if ($languagesArray == null) { $languagesArray = array(); // Retrieves from public.tbl_sprache $dbLanguages = getDBActiveLanguages(); if (hasData($dbLanguages)) { // Loops through database results foreach (getData($dbLanguages) as $dbLanguage) { $languagesArray[$dbLanguage->sprache] = $dbLanguage->bezeichnung; // set $languageIndexes array elements } } // Set session element $_SESSION['LANG']['LANG_SESSION_ACTIVE_LANGUAGES'] with $languagesArray setSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES, $languagesArray); } return $languagesArray; } /** * Loads active languages from database */ function getDBActiveLanguages() { $ci =& get_instance(); // get CI instance // Loads the Sprache_model to retrieve the language settings from the DB // NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite // an already loaded SpracheModel used somewhere else $ci->load->model('system/Sprache_model', 'SpracheModelLanguage'); // Add order clause by index and select only the sprache column $ci->SpracheModelLanguage->addOrder('index'); $ci->SpracheModelLanguage->addSelect('sprache, bezeichnung'); // Retrieves from public.tbl_sprache return $ci->SpracheModelLanguage->loadWhere(array('content' => true)); } /** * Sets the current language to render the GUI in session */ function setUserLanguage($language) { $languageValid = false; // Checks if the given language is valid (present between active languages) foreach (getActiveLanguages() as $languageName => $languageTranslation) { if ($language == $languageName) { $languageValid = true; break; } } if ($languageValid) // if the provided language is valid { $_SESSION[LANG_SESSION_CURRENT_LANGUAGE] = $language; // stores it in session return success('Language successfully changed'); // return success!! } return error('The given language is not valid'); // return an error }