ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilObjLanguageFolder Class Reference

Class ilObjLanguageFolder contains all function to manage language support for ILIAS3 install, uninstall, checkfiles .... More...

+ 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
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor public.
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not)
 read ($a_force_db=false)
 read object data from db into object
 getId ()
 get object id public
 setId ($a_id)
 set object id public
 setRefId ($a_id)
 set reference id public
 getRefId ()
 get reference id public
 getType ()
 get object type public
 setType ($a_type)
 set object type public
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions
 getTitle ()
 get object title public
 getUntranslatedTitle ()
 get untranslated object title public
 setTitle ($a_title)
 set object title
 getDescription ()
 get object description
 setDescription ($a_desc)
 set object description
 getLongDescription ()
 get object long description (stored in object_description)
 getImportId ()
 get import id
 setImportId ($a_import_id)
 set import id
 getOwner ()
 get object owner
 getOwnerName ()
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id
 setOwner ($a_owner)
 set object owner
 getCreateDate ()
 get create date public
 getLastUpdateDate ()
 get last update date public
 getDiskUsage ()
 Gets the disk usage of the object in bytes.
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class)
 create ()
 create
 update ()
 update object in db
 MDUpdateListener ($a_element)
 Meta data update listener.
 createMetaData ()
 create meta data entry
 updateMetaData ()
 update meta data entry
 deleteMetaData ()
 delete meta data entry
 updateOwner ()
 update owner of object in db
 _getIdForImportId ($a_import_id)
 get current object id for import id (static)
 _lookupOwner ($a_id)
 lookup object owner
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects.
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static)
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static)
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static)
 _isInTrash ($a_ref_id)
 checks wether object is in trash
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!?
 setPermissions ($a_parent_ref)
 set permissions of object
 createReference ()
 creates reference for object
 countReferences ()
 count references of object
 delete ()
 delete object or referenced object (in the case of a referenced object, object data is only deleted if last reference is deleted) This function removes an object entirely from system!!
 initDefaultRoles ()
 init default roles settings Purpose of this function is to create a local role folder and local roles, that are needed depending on the object type If you want to setup default local roles you MUST overwrite this method in derived object classes (see ilObjForum for an example) public
 createRoleFolder ()
 creates a local role folder
 applyDidacticTemplate ($a_tpl_id)
 Apply template.
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event passed, each object may decide how it reacts.
 setRegisterMode ($a_bool)
 isUserRegistered ($a_user_id=0)
 requireRegistration ()
 getXMLZip ()
 getHTMLDirectory ()
 cloneObject ($a_target_id, $a_copy_id=0, $a_omit_tree=false)
 Clone object permissions, put in tree ...
 appendCopyInfo ($a_target_id, $a_copy_id)
 Prepend Copy info if object with same name exists in that container.
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies.
 cloneMetaData ($target_obj)
 Copy meta data.
 _lookupCreationDate ($a_id)
 Lookup creation date.

Data Fields

 $lang_default
 $lang_user
 $lang_path
 $separator
 $languages
- Data Fields inherited from ilObject
const TITLE_LENGTH = 128
 max length of object title
 $ilias
 $lng
 $id
 $ref_id
 $type
 $title
 $untranslatedTitle
 $desc
 $long_desc
 $owner
 $create_date
 $last_update
 $import_id
 $register = false
 $referenced
 $objectList
 $max_title
 $max_desc
 $add_dots
 $obj_data_record
 object_data record

Additional Inherited Members

- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId ($a_import_id)
static _getAllReferences ($a_id)
 get all reference ids of object
static _lookupTitle ($a_id)
 lookup object title
static _getIdsForTitle ($title, $type= '', $partialmatch=false)
static _lookupDescription ($a_id)
 lookup object description
static _lookupObjId ($a_id)
static _lookupType ($a_id, $a_reference=false)
 lookup object type
static _lookupObjectId ($a_ref_id)
 lookup object id
 _exists ($a_id, $a_reference=false)
 checks if an object exists in object_data
static _getObjectsByType ($a_obj_type="", $a_owner="")
 Get objects by type.
static _prepareCloneSelection ($a_ref_ids, $new_type, $show_path=true)
 Prepare copy wizard object selection.
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
 Get icon for repository item.
static collectDeletionDependencies (&$deps, $a_ref_id, $a_obj_id, $a_type, $a_depth=0)
 Collect deletion dependencies.
static getDeletionDependencies ($a_obj_id)
 Get deletion dependencies.
static getLongDescriptions (array $a_obj_ids)
 Get long description data.
static getAllOwnedRepositoryObjects ($a_user_id)
 Get all ids of objects user owns.

Detailed Description

Class ilObjLanguageFolder contains all function to manage language support for ILIAS3 install, uninstall, checkfiles ....

Author
Sascha Hofmann shofm.nosp@m.ann@.nosp@m.datab.nosp@m.ay.d.nosp@m.e
Version
$Id$

Definition at line 18 of file class.ilObjLanguageFolder.php.

Member Function Documentation

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'

Parameters
array$languagesexpect $languages
Returns
boolean true: language array is not empty, otherwise false

Definition at line 196 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("./Services/Language/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.

Returns
string system message

Definition at line 269 of file class.ilObjLanguageFolder.php.

References $d, ilObject\$lng, 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>&nbsp;&nbsp;";
$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'

Returns
array $languages status information about available languages

Definition at line 97 of file class.ilObjLanguageFolder.php.

References $d, $lang, $languages, ilObject\$lng, ilObject\_getObjectsByType(), addNewLanguages(), 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 = ilObject::_getObjectsByType("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
// Remove from array & db languages which are not installed and no lang-files
// 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;
}

+ Here is the call graph for this function:

ilObjLanguageFolder::ilObjLanguageFolder (   $a_id,
  $a_call_by_reference = true 
)

Constructor public.

Parameters
integerreference_id or object_id
booleantreat the id as reference_id (true) or object_id (false)

Definition at line 69 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

Parameters
array$languages
Returns
array $languages updated status information about available languages

Definition at line 239 of file class.ilObjLanguageFolder.php.

References $query.

Referenced by getLanguages().

{
global $ilDB;
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 = ".$ilDB->quote("lng", "text")." ".
"AND title = ".$ilDB->quote($lang_key, "text");
$ilDB->manipulate($query);
}
}
return $a_languages;
}

+ Here is the caller graph for this function:

Field Documentation

ilObjLanguageFolder::$lang_default

Definition at line 26 of file class.ilObjLanguageFolder.php.

ilObjLanguageFolder::$lang_path

Definition at line 46 of file class.ilObjLanguageFolder.php.

ilObjLanguageFolder::$lang_user

Definition at line 36 of file class.ilObjLanguageFolder.php.

ilObjLanguageFolder::$languages

Definition at line 61 of file class.ilObjLanguageFolder.php.

Referenced by getLanguages().

ilObjLanguageFolder::$separator

Definition at line 53 of file class.ilObjLanguageFolder.php.


The documentation for this class was generated from the following file: