1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3include_once("./Services/Object/classes/class.ilObjectGUI.php");
4
5
6/**
7* Media Objects/Pools Settings.
8*
9* @author Alex Killing <alex.killing@gmx.de>
10* @version $Id$
11*
12* @ilCtrl_Calls ilObjMediaObjectsSettingsGUI: ilPermissionGUI
13* @ilCtrl_IsCalledBy ilObjMediaObjectsSettingsGUI: ilAdministrationGUI
14*
15* @ingroup ServicesMediaObject
16*/
17class ilObjMediaObjectsSettingsGUI extends ilObjectGUI
18{
19    /**
20     * @var ilRbacSystem
21     */
22    protected $rbacsystem;
23
24    /**
25     * @var ilErrorHandling
26     */
27    protected $error;
28
29    /**
30     * @var ilAccessHandler
31     */
32    protected $access;
33
34    /**
35     * @var ilTabsGUI
36     */
37    protected $tabs;
38
39    /**
40     * Contructor
41     *
42     * @access public
43     */
44    public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
45    {
46        global $DIC;
47
48        $this->rbacsystem = $DIC->rbac()->system();
49        $this->error = $DIC["ilErr"];
50        $this->access = $DIC->access();
51        $this->tabs = $DIC->tabs();
52        $this->tpl = $DIC["tpl"];
53        $this->lng = $DIC->language();
54        $this->ctrl = $DIC->ctrl();
55        $this->type = 'mobs';
56        parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
57
58        $this->lng->loadLanguageModule('mob');
59        $this->lng->loadLanguageModule('mep');
60        $this->lng->loadLanguageModule('content');
61    }
62
63    /**
64     * Execute command
65     *
66     * @access public
67     *
68     */
69    public function executeCommand()
70    {
71        $rbacsystem = $this->rbacsystem;
72        $ilErr = $this->error;
73        $ilAccess = $this->access;
74
75        $next_class = $this->ctrl->getNextClass($this);
76        $cmd = $this->ctrl->getCmd();
77
78        $this->prepareOutput();
79
80        if (!$ilAccess->checkAccess('read', '', $this->object->getRefId())) {
81            $ilErr->raiseError($this->lng->txt('no_permission'), $ilErr->WARNING);
82        }
83
84        switch ($next_class) {
85            case 'ilpermissiongui':
86                $this->tabs_gui->setTabActive('perm_settings');
87                include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
88                $perm_gui = new ilPermissionGUI($this);
89                $ret = $this->ctrl->forwardCommand($perm_gui);
90                break;
91
92            default:
93                if (!$cmd || $cmd == 'view') {
94                    $cmd = "editSettings";
95                }
96
97                $this->$cmd();
98                break;
99        }
100        return true;
101    }
102
103    /**
104     * Get tabs
105     *
106     * @access public
107     *
108     */
109    public function getAdminTabs()
110    {
111        $rbacsystem = $this->rbacsystem;
112        $ilAccess = $this->access;
113        $ilTabs = $this->tabs;
114
115        if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
116            $ilTabs->addTarget(
117                "settings",
118                $this->ctrl->getLinkTarget($this, "editSettings"),
119                array("editSettings", "view")
120            );
121        }
122
123        if ($ilAccess->checkAccess('edit_permission', "", $this->object->getRefId())) {
124            $ilTabs->addTarget(
125                "perm_settings",
126                $this->ctrl->getLinkTargetByClass('ilpermissiongui', "perm"),
127                array(),
128                'ilpermissiongui'
129            );
130        }
131    }
132
133    /**
134    * Edit settings
135    */
136    public function editSettings($a_omit_init = false)
137    {
138        $tpl = $this->tpl;
139
140        if (!$a_omit_init) {
141            $this->initMediaObjectsSettingsForm();
142            $this->getSettingsValues();
143        }
144        $tpl->setContent($this->form->getHTML());
145    }
146
147    /**
148     * Save settings
149     */
150    public function saveSettings()
151    {
152        $tpl = $this->tpl;
153        $lng = $this->lng;
154        $ilCtrl = $this->ctrl;
155
156        $this->checkPermission("write");
157
158        $this->initMediaObjectsSettingsForm();
159        if ($this->form->checkInput()) {
160            // perform save
161            $mset = new ilSetting("mobs");
162            $mset->set("mep_activate_pages", $_POST["activate_pages"]);
163            $mset->set("file_manager_always", $_POST["file_manager_always"]);
164            $mset->set("restricted_file_types", $_POST["restricted_file_types"]);
165            $mset->set("black_list_file_types", $_POST["black_list_file_types"]);
166            $mset->set("upload_dir", $_POST["mob_upload_dir"]);
167
168            ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
169            $ilCtrl->redirect($this, "editSettings");
170        }
171
172        $this->form->setValuesByPost();
173        $this->editSettings(true);
174    }
175
176    /**
177     * Init media objects settings form.
178     */
179    public function initMediaObjectsSettingsForm()
180    {
181        $lng = $this->lng;
182        $ilCtrl = $this->ctrl;
183        $ilAccess = $this->access;
184
185
186        include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
187        $this->form = new ilPropertyFormGUI();
188
189        // activate page in media pool
190        $cb = new ilCheckboxInputGUI($lng->txt("mobs_activate_pages"), "activate_pages");
191        $cb->setInfo($lng->txt("mobs_activate_pages_info"));
192        $this->form->addItem($cb);
193
194        // activate page in media pool
195        $cb = new ilCheckboxInputGUI($lng->txt("mobs_always_show_file_manager"), "file_manager_always");
196        $cb->setInfo($lng->txt("mobs_always_show_file_manager_info"));
197        $this->form->addItem($cb);
198
199        // allowed file types
200        $ta = new ilTextAreaInputGUI($this->lng->txt("mobs_restrict_file_types"), "restricted_file_types");
201        //$ta->setCols();
202        //$ta->setRows();
203        $ta->setInfo($this->lng->txt("mobs_restrict_file_types_info"));
204        $this->form->addItem($ta);
205
206        // black lis file types
207        $ta = new ilTextAreaInputGUI($this->lng->txt("mobs_black_list_file_types"), "black_list_file_types");
208        $ta->setInfo($this->lng->txt("mobs_black_list_file_types_info"));
209        $this->form->addItem($ta);
210
211        // Upload dir for learning resources
212        $tx_prop = new ilTextInputGUI(
213            $lng->txt("mob_upload_dir"),
214            "mob_upload_dir"
215        );
216        $tx_prop->setInfo($lng->txt("mob_upload_dir_info"));
217        $this->form->addItem($tx_prop);
218
219        if ($ilAccess->checkAccess('write', '', $this->object->getRefId())) {
220            $this->form->addCommandButton("saveSettings", $lng->txt("save"));
221        }
222
223        $this->form->setTitle($lng->txt("settings"));
224        $this->form->setFormAction($ilCtrl->getFormAction($this));
225    }
226
227    /**
228     * Get current values for form from
229     */
230    public function getSettingsValues()
231    {
232        $values = array();
233
234        $mset = new ilSetting("mobs");
235        $values["activate_pages"] = $mset->get("mep_activate_pages");
236        $values["file_manager_always"] = $mset->get("file_manager_always");
237        $values["restricted_file_types"] = $mset->get("restricted_file_types");
238        $values["black_list_file_types"] = $mset->get("black_list_file_types");
239        $values["mob_upload_dir"] = $mset->get("upload_dir");
240
241        $this->form->setValuesByArray($values);
242    }
243}
244