ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilObjLanguageFolderGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 
17 require_once "./Services/Language/classes/class.ilObjLanguage.php";
18 require_once "./Services/Object/classes/class.ilObjectGUI.php";
19 
21 {
27  function ilObjLanguageFolderGUI($a_data,$a_id,$a_call_by_reference)
28  {
29  $this->type = "lngf";
30  $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference, false);
31  $_GET["sort_by"] = "language";
32  $this->lng->loadLanguageModule('lng');
33  }
34 
40  function viewObject()
41  {
42  global $rbacsystem, $ilSetting, $tpl, $ilToolbar, $lng;
43 
44  if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
45  {
46  $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
47  }
48 
49  // refresh
50  if ($ilSetting->get("lang_ext_maintenance") == "1")
51  {
52  $ilToolbar->addButton($lng->txt("refresh_languages"),
53  $this->ctrl->getLinkTarget($this, "confirmRefresh"));
54  }
55  else
56  {
57  $ilToolbar->addButton($lng->txt("refresh_languages"),
58  $this->ctrl->getLinkTarget($this, "refresh"));
59  }
60 
61  // check languages
62  $ilToolbar->addButton($lng->txt("check_languages"),
63  $this->ctrl->getLinkTarget($this, "checkLanguage"));
64 
65  // extended language maintenance
66  if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
67  {
68  if ($ilSetting->get("lang_ext_maintenance") == "1")
69  {
70  $ilToolbar->addButton($lng->txt("disable_ext_lang_maint"),
71  $this->ctrl->getLinkTarget($this, "disableExtendedLanguageMaintenance"));
72  }
73  else
74  {
75  $ilToolbar->addButton($lng->txt("enable_ext_lang_maint"),
76  $this->ctrl->getLinkTarget($this, "enableExtendedLanguageMaintenance"));
77  }
78 
79  if(!$ilSetting->get('lang_detection'))
80  {
81  $ilToolbar->addButton($lng->txt('lng_enable_language_detection'), $this->ctrl->getLinkTarget($this, 'enableLanguageDetection'));
82  }
83  else
84  {
85  $ilToolbar->addButton($lng->txt('lng_disable_language_detection'), $this->ctrl->getLinkTarget($this, 'disableLanguageDetection'));
86  }
87  }
88 
89  include_once("./Services/Language/classes/class.ilLanguageTableGUI.php");
90  $ltab = new ilLanguageTableGUI($this, "view", $this->object);
91  $tpl->setContent($ltab->getHTML());
92  }
93 
97  function installObject()
98  {
99  $this->lng->loadLanguageModule("meta");
100 
101  if (!isset($_POST["id"]))
102  {
103  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
104  }
105 
106  foreach ($_POST["id"] as $obj_id)
107  {
108  $langObj = new ilObjLanguage($obj_id);
109  $key = $langObj->install();
110 
111  if ($key != "")
112  {
113  $lang_installed[] = $key;
114  }
115 
116  unset($langObj);
117  }
118 
119  if (isset($lang_installed))
120  {
121  if (count($lang_installed) == 1)
122  {
123  $this->data = $this->lng->txt("meta_l_" . $lang_installed[0]) . " " . strtolower($this->lng->txt("installed")) . ".";
124  }
125  else
126  {
127  foreach ($lang_installed as $lang_key)
128  {
129  $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
130  }
131  $this->data = implode(", ",$langnames) . " " . strtolower($this->lng->txt("installed")) . ".";
132  }
133  }
134  else
135  {
136  $this->data = $this->lng->txt("languages_already_installed");
137  }
138 
139  $this->out();
140  }
141 
142 
147  {
148  $this->lng->loadLanguageModule("meta");
149 
150  if (!isset($_POST["id"]))
151  {
152  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
153  }
154 
155  foreach ($_POST["id"] as $obj_id)
156  {
157  $langObj = new ilObjLanguage($obj_id);
158  $key = $langObj->install();
159 
160  if ($key != "")
161  {
162  $lang_installed[] = $key;
163  }
164 
165  unset($langObj);
166 
167  $langObj = new ilObjLanguage($obj_id);
168  $key = $langObj->install('local');
169 
170  if ($key != "")
171  {
172  $local_installed[] = $key;
173  }
174 
175  unset($langObj);
176  }
177 
178  if (isset($lang_installed))
179  {
180  if (count($lang_installed) == 1)
181  {
182  $this->data = $this->lng->txt("meta_l_" . $lang_installed[0]) . " " . strtolower($this->lng->txt("installed")) . ".";
183  }
184  else
185  {
186  foreach ($lang_installed as $lang_key)
187  {
188  $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
189  }
190  $this->data = implode(", ",$langnames) . " " . strtolower($this->lng->txt("installed")) . ".";
191  }
192  }
193 
194  if (isset($local_installed))
195  {
196  if (count($local_installed) == 1)
197  {
198  $this->data .= " " . $this->lng->txt("meta_l_" . $local_installed[0]) . " " . $this->lng->txt("local_language_file") . " " . strtolower($this->lng->txt("installed")) . ".";
199  }
200  else
201  {
202  foreach ($local_installed as $lang_key)
203  {
204  $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
205  }
206  $this->data .= " " . implode(", ",$langnames) . " " . $this->lng->txt("local_language_files") . " " . strtolower($this->lng->txt("installed")) . ".";
207  }
208  }
209  else
210  {
211  $this->data .= " " . $this->lng->txt("local_languages_already_installed");
212  }
213 
214  $this->out();
215  }
216 
217 
221  function uninstallObject()
222  {
223  $this->lng->loadLanguageModule("meta");
224 
225  if (!isset($_POST["id"]))
226  {
227  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
228  }
229 
230  // uninstall all selected languages
231  foreach ($_POST["id"] as $obj_id)
232  {
233  $langObj = new ilObjLanguage($obj_id);
234  if (!($sys_lang = $langObj->isSystemLanguage()))
235  if (!($usr_lang = $langObj->isUserLanguage()))
236  {
237  $key = $langObj->uninstall();
238  if ($key != "")
239  $lang_uninstalled[] = $key;
240  }
241  unset($langObj);
242  }
243 
244  // generate output message
245  if (isset($lang_uninstalled))
246  {
247  if (count($lang_uninstalled) == 1)
248  {
249  $this->data = $this->lng->txt("meta_l_".$lang_uninstalled[0])." ".$this->lng->txt("uninstalled");
250  }
251  else
252  {
253  foreach ($lang_uninstalled as $lang_key)
254  {
255  $langnames[] = $this->lng->txt("meta_l_".$lang_key);
256  }
257 
258  $this->data = implode(", ",$langnames)." ".$this->lng->txt("uninstalled");
259  }
260  }
261  elseif ($sys_lang)
262  {
263  $this->data = $this->lng->txt("cannot_uninstall_systemlanguage");
264  }
265  elseif ($usr_lang)
266  {
267  $this->data = $this->lng->txt("cannot_uninstall_language_in_use");
268  }
269  else
270  {
271  $this->data = $this->lng->txt("languages_already_uninstalled");
272  }
273 
274  $this->out();
275  }
276 
280  function refreshObject()
281  {
283  $this->data = $this->lng->txt("languages_updated");
284  $this->out();
285  }
286 
287 
292  {
293  global $lng;
294 
295  $this->data = $this->lng->txt("selected_languages_updated");
296  $lng->loadLanguageModule("meta");
297 
298  $refreshed = array();
299  foreach ($_POST["id"] as $id)
300  {
301  $langObj = new ilObjLanguage($id, false);
302  if ($langObj->refresh())
303  {
304  $refreshed[] = $langObj->getKey();
305  $this->data .= "<br />". $lng->txt("meta_l_".$langObj->getKey());
306  }
307  unset($langObj);
308  }
309 
310  ilObjLanguage::refreshPlugins($refreshed);
311  $this->out();
312  }
313 
314 
319  {
320  $this->lng->loadLanguageModule("meta");
321 
322  require_once './Services/User/classes/class.ilObjUser.php';
323 
324  if (!isset($_POST["id"]))
325  {
326  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
327  }
328 
329  if (count($_POST["id"]) != 1)
330  {
331  $this->ilias->raiseError($this->lng->txt("choose_only_one_language")."<br/>".$this->lng->txt("action_aborted"),$this->ilias->error_obj->MESSAGE);
332  }
333 
334  $obj_id = $_POST["id"][0];
335 
336  $newUserLangObj = new ilObjLanguage($obj_id);
337 
338  if ($newUserLangObj->isUserLanguage())
339  {
340  $this->ilias->raiseError($this->lng->txt("meta_l_".$newUserLangObj->getKey())." ".$this->lng->txt("is_already_your")." ".$this->lng->txt("user_language")."<br/>".$this->lng->txt("action_aborted"),$this->ilias->error_obj->MESSAGE);
341  }
342 
343  if ($newUserLangObj->isInstalled() == false)
344  {
345  $this->ilias->raiseError($this->lng->txt("meta_l_".$newUserLangObj->getKey())." ".$this->lng->txt("language_not_installed")."<br/>".$this->lng->txt("action_aborted"),$this->ilias->error_obj->MESSAGE);
346  }
347 
348  $curUser = new ilObjUser($_SESSION["AccountId"]);
349  $curUser->setLanguage($newUserLangObj->getKey());
350  $curUser->update();
351  //$this->setUserLanguage($new_lang_key);
352 
353  $this->data = $this->lng->txt("user_language")." ".$this->lng->txt("changed_to")." ".$this->lng->txt("meta_l_".$newUserLangObj->getKey()).".";
354 
355  $this->out();
356  }
357 
358 
363  {
364  $this->lng->loadLanguageModule("meta");
365 
366  if (!isset($_POST["id"]))
367  {
368  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
369  }
370 
371  if (count($_POST["id"]) != 1)
372  {
373  $this->ilias->raiseError($this->lng->txt("choose_only_one_language")."<br/>".$this->lng->txt("action_aborted"),$this->ilias->error_obj->MESSAGE);
374  }
375 
376  $obj_id = $_POST["id"][0];
377 
378  $newSysLangObj = new ilObjLanguage($obj_id);
379 
380  if ($newSysLangObj->isSystemLanguage())
381  {
382  $this->ilias->raiseError($this->lng->txt("meta_l_".$newSysLangObj->getKey())." is already the system language!<br>Action aborted!",$this->ilias->error_obj->MESSAGE);
383  }
384 
385  if ($newSysLangObj->isInstalled() == false)
386  {
387  $this->ilias->raiseError($this->lng->txt("meta_l_".$newSysLangObj->getKey())." is not installed. Please install that language first.<br>Action aborted!",$this->ilias->error_obj->MESSAGE);
388  }
389 
390  $this->ilias->setSetting("language", $newSysLangObj->getKey());
391 
392  // update ini-file
393  $this->ilias->ini->setVariable("language","default",$newSysLangObj->getKey());
394  $this->ilias->ini->write();
395 
396  $this->data = $this->lng->txt("system_language")." ".$this->lng->txt("changed_to")." ".$this->lng->txt("meta_l_".$newSysLangObj->getKey()).".";
397 
398  $this->out();
399  }
400 
401 
406  {
407  //$langFoldObj = new ilObjLanguageFolder($_GET["obj_id"]);
408  //$this->data = $langFoldObj->checkAllLanguages();
409  $this->data = $this->object->checkAllLanguages();
410  $this->out();
411  }
412 
413 
414  function out()
415  {
416  ilUtil::sendInfo($this->data,true);
417  $this->ctrl->redirect($this, "view");
418  }
419 
420  function getAdminTabs(&$tabs_gui)
421  {
422  $this->getTabs($tabs_gui);
423  }
424 
430  function getTabs(&$tabs_gui)
431  {
432  global $rbacsystem;
433 
434  if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
435  {
436  $tabs_gui->addTarget("settings",
437  $this->ctrl->getLinkTarget($this, "view"), array("view",""), "", "");
438  }
439 
440  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
441  {
442  $tabs_gui->addTarget("perm_settings",
443  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
444  }
445  }
446 
447  function &executeCommand()
448  {
449  $next_class = $this->ctrl->getNextClass($this);
450  $cmd = $this->ctrl->getCmd();
451  $this->prepareOutput();
452 
453  switch($next_class)
454  {
455  case 'ilpermissiongui':
456  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
457  $perm_gui =& new ilPermissionGUI($this);
458  $ret =& $this->ctrl->forwardCommand($perm_gui);
459  break;
460 
461  default:
462  if(!$cmd)
463  {
464  $cmd = "view";
465  }
466  $cmd .= "Object";
467  $this->$cmd();
468 
469  break;
470  }
471  return true;
472  }
473 
478  {
479  global $ilSetting, $ilCtrl;
480 
481  $ilSetting->set("lang_ext_maintenance", 1);
482  $ilCtrl->redirect($this, "view");
483  }
484 
489  {
490  global $ilSetting, $ilCtrl;
491 
492  $ilSetting->set("lang_ext_maintenance", 0);
493  $ilCtrl->redirect($this, "view");
494  }
495 
497  {
498  global $ilCtrl, $lng;
499 
500  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
501  $conf_screen = new ilConfirmationGUI();
502  $conf_screen->setFormAction($ilCtrl->getFormAction($this));
503  $conf_screen->setHeaderText($lng->txt("lang_refresh_confirm"));
504  $conf_screen->addItem("d", "d", $lng->txt("lang_refresh_confirm_info"));
505  $conf_screen->setCancel($lng->txt("cancel"), "view");
506  $conf_screen->setConfirm($lng->txt("ok"), "refresh");
507 
508  $this->tpl->setContent($conf_screen->getHTML());
509  }
510 
512  {
513  global $ilCtrl, $lng;
514 
515  if (!isset($_POST["id"]))
516  {
517  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
518  }
519 
520  $lng->loadLanguageModule("meta");
521  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
522  $conf_screen = new ilConfirmationGUI();
523  $conf_screen->setFormAction($ilCtrl->getFormAction($this));
524  $conf_screen->setHeaderText($lng->txt("lang_refresh_confirm_selected"));
525  foreach ($_POST["id"] as $id)
526  {
527  $lang_title = ilObject::_lookupTitle($id);
528  $conf_screen->addItem("id[]", $id, $lng->txt("meta_l_".$lang_title));
529  }
530  $conf_screen->addItem("d", "d", $lng->txt("lang_refresh_confirm_info"));
531  $conf_screen->setCancel($lng->txt("cancel"), "view");
532  $conf_screen->setConfirm($lng->txt("ok"), "refreshSelected");
533  $this->tpl->setContent($conf_screen->getHTML());
534  }
535 
539  function getActions()
540  {
541  global $ilSetting;
542 
543  // standard actions for container
544  return array(
545  "install" => array("name" => "install", "lng" => "install"),
546  "installLocal" => array("name" => "installLocal", "lng" => "install_local"),
547  "uninstall" => array("name" => "uninstall", "lng" => "uninstall"),
548  "refresh" => $ilSetting->get("lang_ext_maintenance") == "1" ?
549  array("name" => "confirmRefreshSelected", "lng" => "refresh") :
550  array("name" => "RefreshSelected", "lng" => "refresh"),
551  "setSystemLanguage" => array("name" => "setSystemLanguage", "lng" => "setSystemLanguage"),
552  "setUserLanguage" => array("name" => "setUserLanguage", "lng" => "setUserLanguage")
553  );
554  }
555 
559  protected function disableLanguageDetectionObject()
560  {
564  global $ilSetting;
565 
566  $ilSetting->set('lang_detection', 0);
567  ilUtil::sendSuccess($this->lng->txt('saved_successfully'));
568  $this->viewObject();
569  }
570 
574  protected function enableLanguageDetectionObject()
575  {
579  global $ilSetting;
580 
581  $ilSetting->set('lang_detection', 1);
582  ilUtil::sendSuccess($this->lng->txt('saved_successfully'));
583  $this->viewObject();
584  }
585 } // END class.ilObjLanguageFolderGUI
586 ?>
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
refreshSelectedObject()
update selected languages
$_POST['username']
Definition: cron.php:12
$_SESSION["AccountId"]
$_GET["client_id"]
refreshObject()
update all installed languages
setSystemLanguageObject()
set the system language
Class ilObjLanguage.
$cmd
Definition: sahs_server.php:35
getTabs(&$tabs_gui)
get tabs public
ilObjectGUI($a_data, $a_id=0, $a_call_by_reference=true, $a_prepare_output=true)
Constructor public.
static _lookupTitle($a_id)
lookup object title
disableExtendedLanguageMaintenanceObject()
Disable extended language maintenance.
installLocalObject()
Install local language modifications.
global $ilCtrl
Definition: ilias.php:18
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
ilObjLanguageFolderGUI($a_data, $a_id, $a_call_by_reference)
Constructor.
Class ilObjectGUI Basic methods of all Output classes.
redirection script todo: (a better solution should control the processing via a xml file) ...
prepareOutput()
prepare output
viewObject()
show installed languages
enableExtendedLanguageMaintenanceObject()
Enable extended language maintenance.
global $ilSetting
Definition: privfeed.php:40
static refreshAll()
Refresh all installed languages.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
static refreshPlugins($a_lang_keys=null)
checkLanguageObject()
check all languages
Class ilObjLanguageFolderGUI.
Confirmation screen class.