Inheritance diagram for ilObjLanguageFolder:
Collaboration diagram for ilObjLanguageFolder:Public Member Functions | |
| ilObjLanguageFolder ($a_id, $a_call_by_reference=true) | |
| Constructor public. | |
| getLanguages () | |
| gather all information about available languages | |
| addNewLanguages ($a_languages) | |
| add new languages | |
| removeLanguages ($a_languages) | |
| remove languages which are not installed AND has no lang-file | |
| checkAllLanguages () | |
| validate the logical structure of a lang-file | |
Data Fields | |
| $lang_default | |
| $lang_user | |
| $lang_path | |
| $separator | |
| $languages | |
Definition at line 39 of file class.ilObjLanguageFolder.php.
| ilObjLanguageFolder::addNewLanguages | ( | $ | a_languages | ) |
add new languages
This functions checks in $languages for languages with the attribute 'new' and insert these languages in db-table 'languages'
| array | $languages expect $languages |
Definition at line 217 of file class.ilObjLanguageFolder.php.
Referenced by getLanguages().
{
if (count($a_languages) > 0)
{
foreach ($a_languages as $lang_key => $lang_data)
{
if ($lang_data["info"] == "new_language")
{
include_once("./classes/class.ilObjLanguage.php");
$lngObj =& new ilObjLanguage();
$lngObj->setTitle($lang_key);
$lngObj->setDescription("not_installed");
$lngObj->create();
// must get OOP through the whole class some time
// (no arrays with db fields! this class doesn't know anything about table object!)
$a_languages[$lang_key] = array("obj_id" => $lngObj->getId(),
"type" => $lngObj->getType(),
"description" => $lngObj->getDescription(),
"desc" => $lngObj->getDescription(),
"owner" => $lngObj->getOwner(),
"create_date" => $lngObj->getCreateDate(),
"last_update" => $lngObj->getLastUpdateDate());
$a_languages[$lang_key]["info"] = "new_language";
unset($lngObj); // better: the objects should be resident in an member array of this class
}
}
}
return $a_languages;
}
Here is the caller graph for this function:| ilObjLanguageFolder::checkAllLanguages | ( | ) |
validate the logical structure of a lang-file
This function is similar to function checkLanguage() (see below) but checks for all lang-files and outputs more helpful information.
Definition at line 288 of file class.ilObjLanguageFolder.php.
References $d, ilObject::$lng, $num, $output, and ilObjLanguage::cut_header().
{
// TODO: lng object should not be used in this class
global $lng;
// set path to directory where lang-files reside
$d = dir($this->lang_path);
$tmpPath = getcwd();
chdir ($this->lang_path);
// for giving a message when no lang-file was found
$found = false;
// get available lang-files
while ($entry = $d->read())
{
if (is_file($entry) && (ereg ("(^ilias_.{2}\.lang$)", $entry)))
{
// textmeldung, wenn langfile gefunden wurde
$output .= "<br/><br/>".$lng->txt("langfile_found").": ".$entry;
$content = file ($entry);
$found = true;
$error = false;
if ($content = ilObjLanguage::cut_header($content))
{
foreach ($content as $key => $val)
{
$separated = explode ($this->separator,trim($val));
$num = count($separated);
if ($num != 3)
{
$error = true;
$line = $key + 37;
$output .= "<br/><b/>".$lng->txt("err_in_line")." ".$line." !</b> ";
$output .= $lng->txt("module").": ".$separated[0];
$output .= ", ".$lng->txt("identifier").": ".$separated[1];
$output .= ", ".$lng->txt("value").": ".$separated[2];
switch ($num)
{
case 1:
if (empty($separated[0]))
{
$output .= "<br/>".$lng->txt("err_no_param")." ".$lng->txt("check_langfile");
}
else
{
$output .= "<br/>".$lng->txt("err_1_param")." ".$lng->txt("check_langfile");
}
break;
case 2:
$output .= "<br/>".$lng->txt("err_2_param")." ".$lng->txt("check_langfile");
break;
default:
$output .= "<br/>".$lng->txt("err_over_3_param")." ".$lng->txt("check_langfile");
break;
}
}
}
if ($error) {
$output .= "<br/>".$lng->txt("file_not_valid")." ".$lng->txt("err_count_param");
}
else {
$output .= "<br/>".$lng->txt("file_valid");
}
}
else {
$output .= "<br/>".$lng->txt("file_not_valid")." ".$lng->txt("err_wrong_header");
}
}
}
$d->close();
if (!$found) {
$output .= "<br/>".$lng->txt("err_no_langfile_found");
}
chdir($tmpPath);
return $output;
}
Here is the call graph for this function:| ilObjLanguageFolder::getLanguages | ( | ) |
gather all information about available languages
This function builds an array with the following structure: $languages[lang_key][long][installed][update][info]
lang_key: string international language key (2 digits, i.e. de,en,dk...) long: string full language name in the chosen user language installed: boolean is the language installed (true) or not (false)? update: int contains the timestamp of last db-modification info: string optional information. valid is: 'notfound','new'
Definition at line 118 of file class.ilObjLanguageFolder.php.
References $d, $lang, $languages, ilObject::$lng, addNewLanguages(), getObjectList(), and removeLanguages().
{
global $lng;
$lng->loadLanguageModule("meta");
// set path to directory where lang-files reside
$d = dir($this->lang_path);
$tmpPath = getcwd();
chdir ($this->lang_path);
// get available lang-files
while ($entry = $d->read())
{
if (is_file($entry) && (ereg ("(^ilias_.{2}\.lang$)", $entry)))
{
$lang_key = substr($entry,6,2);
$languages[$lang_key] = ""; // long names will be set in class Out
}
}
// ensure that arrays are initiated when no lang file was found
if (!array($languages))
{
$language = array();
$tmp_array = array();
}
$tmp_array = array_keys($languages);
$lang_keys = array();
// now get languages from database
if ($lang_db = getObjectList("lng"))
{
foreach ($lang_db as $lang)
{
// set values
$lang_key = $lang["title"];
$languages[$lang_key] = $lang;
$lang_keys[] = $lang_key;
// determine default language and language of current user
if ($lang_key == $this->lang_user)
{
$languages[$lang_key]["status"] = "in_use";
}
if ($lang_key == $this->lang_default)
{
$languages[$lang_key]["status"] = "system_language";
}
// check if files are missing
if ((count($tmp_array) > 0) && (!in_array($lang_key,$tmp_array)))
{
$languages[$lang_key]["info"] = "file_not_found";
}
}
}
// compute new languages
foreach ($languages as $lang_key => $lang_data)
{
if (!in_array($lang_key,$lang_keys))
{
$languages[$lang_key]["info"] = "new_language";
//$languages[$lang_key]["desc"] = "not_installed";
}
}
chdir($tmpPath);
// Insert languages with files new found into table language
$languages = $this->addNewLanguages($languages);
// Remove from array & db languages which are not installed and no lang-files
$languages = $this->removeLanguages($languages);
// setting language's full names
foreach ($languages as $lang_key => $lang_data)
{
$languages[$lang_key]["name"] = $lng->txt("meta_l_".$lang_key);
}
$this->languages = $languages;
return $this->languages;
}
Here is the call graph for this function:| ilObjLanguageFolder::ilObjLanguageFolder | ( | $ | a_id, | |
| $ | a_call_by_reference = true | |||
| ) |
Constructor public.
| integer | reference_id or object_id | |
| boolean | treat the id as reference_id (true) or object_id (false) |
Definition at line 90 of file class.ilObjLanguageFolder.php.
References ilObject::$lng, and ilObject::ilObject().
{
$this->type = "lngf";
$this->ilObject($a_id,$a_call_by_reference);
// init language support
global $lng;
$this->lang_path = $lng->lang_path;
$this->lang_default = $lng->lang_default;
$this->lang_user = $lng->lang_user;
$this->separator = $lng->separator;
}
Here is the call graph for this function:| ilObjLanguageFolder::removeLanguages | ( | $ | a_languages | ) |
remove languages which are not installed AND has no lang-file
This function removes only the entry in db-table 'languages' and in the array $languages. Does not uninstall a language (see: function flushLanguage())
public
| array | $languages |
Definition at line 260 of file class.ilObjLanguageFolder.php.
References $query.
Referenced by getLanguages().
{
foreach ($a_languages as $lang_key => $lang_data)
{
if ($lang_data["desc"] == "not_installed" && $lang_data["info"] == "file_not_found")
{
// update languages array
unset($a_languages[$lang_key]);
// update object_data table
$query = "DELETE FROM object_data ".
"WHERE type = 'lng' ".
"AND title = '".$lang_key."'";
$this->ilias->db->query($query);
}
}
return $a_languages;
}
Here is the caller graph for this function:| ilObjLanguageFolder::$lang_default |
Definition at line 47 of file class.ilObjLanguageFolder.php.
| ilObjLanguageFolder::$lang_path |
Definition at line 67 of file class.ilObjLanguageFolder.php.
| ilObjLanguageFolder::$lang_user |
Definition at line 57 of file class.ilObjLanguageFolder.php.
| ilObjLanguageFolder::$languages |
Definition at line 82 of file class.ilObjLanguageFolder.php.
Referenced by getLanguages().
| ilObjLanguageFolder::$separator |
Definition at line 74 of file class.ilObjLanguageFolder.php.
1.7.1