4 require_once
'Services/Object/classes/class.ilObject2GUI.php';
5 require_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
6 require_once
'Services/Utilities/classes/class.ilConfirmationGUI.php';
7 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceTableDataProviderFactory.php';
8 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceAgreementByLanguageTableGUI.php';
9 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceAcceptanceHistoryTableGUI.php';
54 public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
64 $this->lng->loadLanguageModule(
'tos');
67 $this->factory->setLanguageAdapter($lng);
68 $this->factory->setDatabaseAdapter($ilDB);
84 $next_class = $this->ctrl->getNextClass($this);
85 $cmd = $this->ctrl->getCmd();
90 case 'ilpermissiongui':
91 $this->tabs_gui->setTabActive(
'perm_settings');
92 require_once
'Services/AccessControl/classes/class.ilPermissionGUI.php';
94 $this->ctrl->forwardCommand($perm_gui);
117 if($rbacsystem->checkAccess(
'read', $this->object->getRefId()))
119 $tabs_gui->
addTarget(
'settings', $this->ctrl->getLinkTarget($this,
'settings'), array(
'saveSettings',
'settings',
'',
'view'),
'',
'');
122 if($rbacsystem->checkAccess(
'read', $this->object->getRefId()))
124 $tabs_gui->
addTarget(
'tos_agreement_by_lng', $this->ctrl->getLinkTarget($this,
'showAgreementByLanguage'), array(
'reset',
'confirmReset',
'showAgreementByLanguage',
'resetAgreementByLanguageFilter',
'applyAgreementByLanguageFilter'),
'',
'');
127 if($rbacsystem->checkAccess(
'read', $this->object->getRefId()) &&
131 $tabs_gui->
addTarget(
'tos_acceptance_history', $this->ctrl->getLinkTarget($this,
'showAcceptanceHistory'), array(
'showAcceptanceHistory',
'resetAcceptanceHistoryFilter',
'applyAcceptanceHistoryFilter'),
'',
'');
134 if($rbacsystem->checkAccess(
'edit_permission', $this->object->getRefId()))
136 $tabs_gui->
addTarget(
'perm_settings', $this->ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
'perm'), array(
'perm',
'info',
'owner'),
'ilpermissiongui');
145 if(null == $this->form)
148 $this->form->setTitle($this->lng->txt(
'tos_tos_settings'));
149 $this->form->setFormAction($this->ctrl->getFormAction($this,
'saveSettings'));
152 $status->
setInfo($this->lng->txt(
'tos_status_desc'));
153 $this->form->addItem($status);
155 $this->form->addCommandButton(
'saveSettings', $this->lng->txt(
'save'));
162 protected function saveSettings()
168 global $rbacsystem,
$ilErr;
170 if(!$rbacsystem->checkAccess(
'write', $this->object->getRefId()))
172 $ilErr->raiseError($this->lng->txt(
'permission_denied'), $ilErr->MESSAGE);
176 $list = $provider->getList(array(), array());
178 $has_documents =
false;
179 foreach($list[
'items'] as $item)
181 if($item[
'agreement_document'])
183 $has_documents =
true;
189 if($this->form->checkInput())
191 if($has_documents || !(
int)$this->form->getInput(
'tos_status'))
193 $this->
object->saveStatus((
int)$this->form->getInput(
'tos_status'));
200 (
int)$this->form->getInput(
'tos_status') &&
201 !$this->
object->getStatus()
208 $this->settings(
false);
214 protected function settings($init_from_database =
true)
223 if(!$rbacsystem->checkAccess(
'read', $this->object->getRefId()))
225 $ilErr->raiseError($this->lng->txt(
'permission_denied'), $ilErr->MESSAGE);
231 if($init_from_database)
233 $this->form->setValuesByArray(array(
234 'tos_status' => $this->object->getStatus()
239 $this->form->setValuesByPost();
242 $tpl->setContent($this->form->getHtml());
248 protected function confirmReset()
257 if(!$rbacsystem->checkAccess(
'write', $this->object->getRefId()))
259 $ilErr->raiseError($this->lng->txt(
'permission_denied'), $ilErr->MESSAGE);
263 $confirmation->setFormAction($this->ctrl->getFormAction($this,
'confirmReset'));
264 $confirmation->setConfirm($this->lng->txt(
'confirm'),
'reset');
265 $confirmation->setCancel($this->lng->txt(
'cancel'),
'showAgreementByLanguage');
266 $confirmation->setHeaderText($this->lng->txt(
'tos_sure_reset_tos'));
268 $tpl->setContent($confirmation->getHtml());
274 protected function reset()
284 if(!$rbacsystem->checkAccess(
'write', $this->object->getRefId()))
286 $ilErr->raiseError($this->lng->txt(
'permission_denied'), $ilErr->MESSAGE);
289 $this->
object->resetAll();
290 $ilLog->write(__METHOD__ .
': Terms of service reset by ' . $ilUser->getId() .
' [' . $ilUser->getLogin() .
']');
293 $this->showAgreementByLanguage();
299 protected function showAgreementByLanguage()
309 if(!$rbacsystem->checkAccess(
'read', $this->object->getRefId()))
311 $ilErr->raiseError($this->lng->txt(
'permission_denied'), $ilErr->MESSAGE);
314 $this->lng->loadLanguageModule(
'meta');
316 if($rbacsystem->checkAccess(
'write', $this->object->getRefId()))
318 $ilToolbar->setFormAction($this->ctrl->getFormAction($this,
'settings'));
319 $ilToolbar->addFormButton($this->lng->txt(
'tos_reset_tos_for_all_users'),
'confirmReset');
322 $this->showLastResetDate();
328 $tpl->setContent($table->getHtml());
334 protected function showLastResetDate()
341 if($this->object->getLastResetDate() && $this->
object->getLastResetDate()->get(
IL_CAL_UNIX) != 0)
355 if(!$this->object->getStatus())
361 $list = $provider->getList(array(), array());
363 $has_documents =
false;
364 foreach($list[
'items'] as $item)
366 if($item[
'agreement_document'])
368 $has_documents =
true;
385 $table->resetOffset();
386 $table->writeFilterToSession();
388 $this->showAgreementByLanguage();
397 $table->resetOffset();
398 $table->resetFilter();
400 $this->showAgreementByLanguage();
406 protected function getAgreementTextByFilenameAsynch()
413 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceJsonResponse.php';
416 if(!isset(
$_GET[
'agreement_document']) || !strlen(
$_GET[
'agreement_document']) || !$rbacsystem->checkAccess(
'read', $this->object->getRefId()))
423 if(preg_match(
'/Customizing[\/\\\](global[\/\\\]agreement|clients[\/\\\]' . CLIENT_ID .
'[\/\\\]agreement)[\/\\\]agreement_([a-z]{2})\.html$/',
$file))
425 $response->setBody(nl2br(trim(file_get_contents(
$file))));
438 protected function showAcceptanceHistory()
447 if(!$rbacsystem->checkAccess(
'read',
'', $this->object->getRefId()) ||
451 $ilErr->raiseError($this->lng->txt(
'permission_denied'), $ilErr->MESSAGE);
454 $this->lng->loadLanguageModule(
'meta');
460 $tpl->setContent($table->getHtml());
468 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceJsonResponse.php';
471 if(!isset(
$_GET[
'tosv_id']))
478 $response->setBody($entity->getText());
486 protected function addUserAutoComplete()
493 if(!$rbacsystem->checkAccess(
'read',
'', $this->object->getRefId()) ||
497 echo json_encode(array());
501 include_once
'Services/User/classes/class.ilUserAutoComplete.php';
503 $auto->setSearchFields(array(
'login',
'firstname',
'lastname',
'email'));
504 $auto->enableFieldSearchableCheck(
false);
505 $auto->setMoreLinkAvailable(
true);
522 $table->resetOffset();
523 $table->writeFilterToSession();
525 $this->showAcceptanceHistory();
534 $table->resetOffset();
535 $table->resetFilter();
537 $this->showAcceptanceHistory();