3declare(strict_types=1);
65 $this->db =
$DIC->database();
78 if (!isset(self::$instances[
$obj_id])) {
82 return self::$instances[
$obj_id];
97 $this->master_lang = $val;
110 $this->languages = $val;
123 $this->fallback_language = $val;
138 if (
$lang !==
"" && (!isset($this->languages[
$lang]) || $force)) {
140 foreach ($this->languages as $l) {
141 $l->setDefault(
false);
155 if ($this->fallback_language !==
""
156 && array_key_exists($this->fallback_language, $this->languages)) {
157 return $this->languages[$this->fallback_language]->getTitle();
159 foreach ($this->languages as $l) {
160 if ($l->isDefault()) {
161 return $l->getTitle();
165 if (count($this->languages) == 0) {
173 if ($this->getFallbackLanguage() !==
''
174 && isset($this->languages[$this->getFallbackLanguage()])) {
175 $this->languages[$this->getFallbackLanguage()]->setTitle($title);
179 foreach ($this->languages as $l) {
180 if ($l->isDefault()) {
181 $l->setTitle($title);
189 if ($this->getFallbackLanguage() !==
''
190 && array_key_exists($this->fallback_language, $this->languages)) {
191 return $this->languages[$this->getFallbackLanguage()]->getDescription();
193 foreach ($this->languages as $l) {
194 if ($l->isDefault()) {
195 return $l->getDescription();
198 if (count($this->languages) == 0) {
206 if ($this->getFallbackLanguage() !==
''
207 && isset($this->languages[$this->getFallbackLanguage()])) {
208 $this->languages[$this->getFallbackLanguage()]
209 ->setDescription($description);
213 foreach ($this->languages as $l) {
214 if ($l->isDefault()) {
215 $l->setDescription($description);
223 if ($this->getFallbackLanguage() !==
"") {
224 return $this->getFallbackLanguage();
226 foreach ($this->languages as $l) {
227 if ($l->isDefault()) {
228 return $l->getLanguageCode();
236 if (
$lang != $this->getMasterLanguage()) {
237 unset($this->languages[
$lang]);
243 $this->content_activated = $val;
248 return $this->content_activated;
254 "SELECT obj_id, master_lang, fallback_lang" . PHP_EOL
255 .
"FROM obj_content_master_lng" . PHP_EOL
256 .
"WHERE obj_id = " . $this->db->quote($this->getObjId(),
"integer") . PHP_EOL
258 $result = $this->db->query($sql);
259 if ($row = $this->db->fetchAssoc($result)) {
260 $this->setMasterLanguage($row[
"master_lang"]);
261 $this->setFallbackLanguage($row[
"fallback_lang"] ??
'');
262 $this->setContentActivated(
true);
264 $this->setContentActivated(
false);
267 $this->setLanguages([]);
270 "SELECT title, description, lang_code, lang_default" . PHP_EOL
271 .
"FROM object_translation" . PHP_EOL
272 .
"WHERE obj_id = " . $this->db->quote($this->getObjId(),
"integer") . PHP_EOL
274 $result = $this->db->query($sql);
275 while ($row = $this->db->fetchAssoc($result)) {
276 $this->addLanguage($row[
"lang_code"], (
string) $row[
"title"], (
string) $row[
"description"], (
bool) $row[
"lang_default"]);
280 public function delete():
void
282 $this->db->manipulate(
283 "DELETE FROM obj_content_master_lng " .
284 " WHERE obj_id = " . $this->db->quote($this->getObjId(),
"integer")
286 $this->db->manipulate(
287 "DELETE FROM object_translation " .
288 " WHERE obj_id = " . $this->db->quote($this->getObjId(),
"integer")
294 $this->db->manipulate(
295 "DELETE FROM obj_content_master_lng " .
296 " WHERE obj_id = " . $this->db->quote($this->getObjId(),
"integer")
304 if ($this->getMasterLanguage() !=
"") {
306 "obj_id" => [
"integer", $this->getObjId()],
307 "master_lang" => [
"text", $this->getMasterLanguage()],
308 "fallback_lang" => [
"text", $this->getFallbackLanguage()]
311 $this->db->insert(
"obj_content_master_lng", $values);
313 if (!isset($this->languages[$this->getMasterLanguage()])) {
317 $this->getMasterLanguage(),
321 foreach ($this->languages as $trans) {
322 if ($trans->getLanguageCode() === $this->getMasterLanguage()) {
323 $trans->setDefault(
true);
325 $trans->setDefault(
false);
330 foreach ($this->getLanguages() as $trans) {
332 "obj_id" => [
"integer", $this->getObjId()],
333 "title" => [
"text", $trans->getTitle()],
334 "description" => [
"text", $trans->getDescription()],
335 "lang_code" => [
"text", $trans->getLanguageCode()],
336 "lang_default" => [
"integer", $trans->isDefault()],
338 $this->db->insert(
"object_translation", $values);
348 $target_ml->setMasterLanguage($this->getMasterLanguage());
349 $target_ml->setFallbackLanguage($this->getFallbackLanguage());
350 $target_ml->setLanguages($this->getLanguages());
368 $langs = $this->getLanguages();
369 $page_lang_key = (
$lang == $this->getMasterLanguage())
372 if ($this->getContentActivated() &&
373 isset($langs[
$lang]) &&
375 if (
$lang == $this->getMasterLanguage()) {
380 if ($this->getContentActivated() &&
381 isset($langs[$this->getFallbackLanguage()]) &&
383 return $this->getFallbackLanguage();
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
deactivateContentTranslation()
removeLanguage(string $lang)
addLanguage(string $lang, string $title, string $description, bool $default, bool $force=false)
copy(int $obj_id)
Copy multilingual settings.
setDefaultDescription(string $description)
string $fallback_language
setDefaultTitle(string $title)
setMasterLanguage(string $val)
static getInstance(int $obj_id)
getEffectiveContentLang(string $lang, string $parent_type)
Get effective language for given language.
setFallbackLanguage(string $val)
setContentActivated(bool $val)
static _lookupTitle(int $obj_id)
static _lookupDescription(int $obj_id)
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
if(!file_exists(getcwd() . '/ilias.ini.php'))
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...