/** * Logs in user on Adobe Connect server using external authentication * * @ilObjUser $ilUser * * @param $user * @return String Session id */ public function externalLogin($user) { if ($this->adcInfo->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_HEADER) { $auth_result = $this->useHTTPHeaderAuthentification($user); return $auth_result; } else { $auth_result = $this->usePasswordAuthentification($user); return $auth_result; } }
/** * @return ilSwitchAaiXMLAPI|ilAdobeConnectXMLAPI|ilAdobeConnectDfnXMLAPI */ public static function getApiByAuthMode() { if (self::$classname === NULL) { if (ilAdobeConnectServer::getSetting('auth_mode') == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI) { self::$classname = 'ilSwitchAaiXMLAPI'; } else { if (ilAdobeConnectServer::getSetting('auth_mode') == ilAdobeConnectServer::AUTH_MODE_DFN) { self::$classname = 'ilAdobeConnectDfnXMLAPI'; } else { self::$classname = 'ilAdobeConnectXMLAPI'; } } } include_once dirname(__FILE__) . '/class.' . self::$classname . '.php'; $objXMLApi = new self::$classname(); return $objXMLApi; }
private function addMultiCommands() { global $ilUser, $lng, $rbacsystem, $tree; $this->parent_obj->pluginObj->includeClass('class.ilXAVCPermissions.php'); $isadmin = $rbacsystem->checkAccessOfUser($ilUser->getId(), 'write', $this->parent_obj->ref_id); $this->parent_obj->pluginObj->includeClass('class.ilAdobeConnectServer.php'); $settings = ilAdobeConnectServer::_getInstance(); if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->parent_obj->ref_id, AdobeConnectPermissions::PERM_CHANGE_ROLE) || $isadmin && $settings->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI) { $this->addMultiCommand('updateParticipants', $lng->txt('update')); $this->addMultiCommand('makeHosts', $this->pluginObj->txt('make_hosts')); $this->addMultiCommand('makeModerators', $this->pluginObj->txt('make_moderators')); $this->addMultiCommand('makeParticipants', $this->pluginObj->txt('make_participants')); $this->addMultiCommand('makeBlocked', $this->pluginObj->txt('make_blocked')); } $this->parent_obj->pluginObj->includeClass('class.ilAdobeConnectServer.php'); $settings = ilAdobeConnectServer::_getInstance(); if ((ilXAVCPermissions::hasAccess($ilUser->getId(), $this->parent_obj->ref_id, AdobeConnectPermissions::PERM_ADD_PARTICIPANTS) || $isadmin && $settings->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI) && !$settings->getSetting('allow_crs_grp_trigger')) { $this->addMultiCommand('detachMember', $lng->txt('delete')); } }
/** * Logs in user on the Adobe Connect server. * * With SWITCHaai we use this login only to log in the technical user! * * @return string $technical_user_session */ public function login() { global $lng, $ilLog; if (null !== self::$technical_user_session) { return self::$technical_user_session; } $instance = ilAdobeConnectServer::_getInstance(); $params['action'] = 'login'; $params['login'] = $instance->getLogin(); $params['password'] = $instance->getPasswd(); $api_url = self::getApiUrl($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, TRUE); $output = curl_exec($ch); $curlHeaderSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); //Get the Header part from the output $ResponseHeader = mb_substr($output, 0, $curlHeaderSize); //get the breezeSession preg_match_all('|BREEZESESSION=(.*);|U', $ResponseHeader, $content); self::$technical_user_session = implode(';', $content[1]); return self::$technical_user_session; }
protected function getAdditionalItems($data) { $xavc_participants = $this->parent_obj->object->getParticipants(); $selected_user_ids = array(); foreach ($data['items'] as $db_item) { $selected_user_ids[] = (int) $db_item['user_id']; } if ($xavc_participants != NULL) { foreach ($xavc_participants as $participant) { $user_id = ilXAVCMembers::_lookupUserId($participant['login']); //if the user_id is in the xavc members table in ilias (->$selected_user_ids), all information is already in $data['items'], so we just continue. //if the user_id belongs to the technical user, we just continue, because we don't want him to be shown if (in_array((int) $user_id, $selected_user_ids) || $participant['login'] == ilAdobeConnectServer::getSetting('login')) { continue; } //when user_id is bigger than 0, he exists. So we get it's information by using ilObjUser if ($user_id > 0) { $tmp_user = ilObjectFactory::getInstanceByObjId($user_id, false); if (!$tmp_user) { // Maybe delete entries xavc_members xavc_users tables continue; } $firstname = $tmp_user->getFirstname(); $lastname = $tmp_user->getLastname(); if ($tmp_user->hasPublicProfile() && $tmp_user->getPref('public_email') == 'y') { $user_mail = $tmp_user->getEmail(); } else { $user_mail = ''; } } else { $firstname = $participant['name']; $user_mail = ''; } $ac_user['user_id'] = $user_id; $ac_user['firstname'] = $firstname; $ac_user['lastname'] = $lastname; $ac_user['login'] = $participant['login']; $ac_user['email'] = $user_mail; $ac_user['xavc_status'] = $participant['status']; $data['items'][] = $ac_user; } } return $data; }
public function getFolderIdByLogin($externalLogin) { $session = $this->xmlApi->getBreezeSession(); if (ilAdobeConnectServer::getSetting('use_user_folders') == 1) { $folder_id = $this->xmlApi->lookupUserFolderId($externalLogin, $session); if (!$folder_id) { $folder_id = $this->xmlApi->createUserFolder($externalLogin, $session); } } else { $folder_id = $this->xmlApi->getShortcuts("my-meetings", $session); } return $folder_id; }
public function showContent() { /* * var $ilUser ilUser */ global $ilUser, $tpl, $ilAccess; $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php'); $this->pluginObj->includeClass('class.ilAdobeConnectServer.php'); $has_write_permission = $ilAccess->checkAccess("write", "", $this->object->getRefId()); $settings = ilAdobeConnectServer::_getInstance(); if ($settings->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI and ilAdobeConnectServer::useSwitchaaiAuthMode($ilUser->getAuthMode(true))) { //Login User - this creates a user if he not exists. $ilAdobeConnectUser = new ilAdobeConnectUserUtil($this->user->getId()); $ilAdobeConnectUser->loginUser(); //Add the user as Participant @adobe switch $status = ilXAVCMembers::_lookupStatus($ilUser->getId(), $this->object->getRefId()); $this->object->addSwitchParticipant($ilUser->getEmail(), $status); } $this->tabs->setTabActive('contents'); include_once "./Services/InfoScreen/classes/class.ilInfoScreenGUI.php"; $info = new ilInfoScreenGUI($this); $info->removeFormAction(); $this->pluginObj->includeClass('class.ilAdobeConnectQuota.php'); $this->pluginObj->includeClass("class.ilObjAdobeConnectAccess.php"); $is_member = ilObjAdobeConnectAccess::_hasMemberRole($ilUser->getId(), $this->object->getRefId()); $is_admin = ilObjAdobeConnectAccess::_hasAdminRole($ilUser->getId(), $this->object->getRefId()); //SWITCHAAI: If the user has no SWITCHaai-Account, we show the room link without connecting to the adobe-connect server. This is used for guest logins. $show_only_roomlink = false; if ($settings->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI and !ilAdobeConnectServer::useSwitchaaiAuthMode($ilUser->getAuthMode(true))) { $show_only_roomlink = true; $presentation_url = $settings->getPresentationUrl(); $button_txt = $this->pluginObj->txt('enter_vc'); $button_target = $presentation_url . $this->object->getURL(); $button_tpl = new ilTemplate($this->pluginObj->getDirectory() . "/templates/default/tpl.bigbutton.html", true, true); $button_tpl->setVariable('BUTTON_TARGET', $button_target); $button_tpl->setVariable('BUTTON_TEXT', $button_txt); $big_button = $button_tpl->get(); $info->addSection(''); $info->addProperty('', $big_button . "<br />"); } if (($this->access->checkAccess("write", "", $this->object->getRefId()) || $is_member || $is_admin) && !$show_only_roomlink) { $presentation_url = $settings->getPresentationUrl(); $form = new ilPropertyFormGUI(); $form->setTitle($this->pluginObj->txt('access_meeting_title')); $this->object->doRead(); if ($this->object->getStartDate() != NULL) { $ilAdobeConnectUser = new ilAdobeConnectUserUtil($this->user->getId()); $ilAdobeConnectUser->ensureAccountExistance(); $xavc_login = $ilAdobeConnectUser->getXAVCLogin(); $quota = new ilAdobeConnectQuota(); // show button if (($this->object->getPermanentRoom() == 1 || $this->doProvideAccessLink()) && $this->object->isParticipant($xavc_login)) { if (!$quota->mayStartScheduledMeeting($this->object->getScoId())) { $href = $this->txt("meeting_not_available_no_slots"); $button_disabled = true; } else { $href = '<a href="' . $this->ctrl->getLinkTarget($this, 'performSso') . '" target="_blank" >' . $presentation_url . $this->object->getURL() . '</a>'; $button_disabled = false; } } else { $href = $this->txt("meeting_not_available"); $button_disabled = true; } if ($button_disabled == true) { $button_txt = $href; } else { $button_txt = $this->pluginObj->txt('enter_vc'); } $button_target = ILIAS_HTTP_PATH . "/" . $this->ctrl->getLinkTarget($this, 'performSso', '', false, false); $button_tpl = new ilTemplate($this->pluginObj->getDirectory() . "/templates/default/tpl.bigbutton.html", true, true); $button_tpl->setVariable('BUTTON_TARGET', $button_target); $button_tpl->setVariable('BUTTON_TEXT', $button_txt); $big_button = $button_tpl->get(); $info->addSection(''); if ($button_disabled == true) { $info->addProperty('', $href); } else { $info->addProperty('', $big_button . "<br />"); } // show instructions if (strlen($this->object->getInstructions()) > 1) { $info->addSection($this->lng->txt('exc_instruction')); $info->addProperty('', nl2br($this->object->getInstructions())); } // show contact info if (strlen($this->object->getContactInfo()) > 1) { $info->addSection($this->pluginObj->txt('contact_information')); $info->addProperty('', nl2br($this->object->getContactInfo())); } //show contents if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->object->getRefId(), AdobeConnectPermissions::PERM_READ_CONTENTS) && $this->object->getReadContents('content')) { $info->addSection($this->pluginObj->txt('file_uploads')); $info->setFormAction($this->ctrl->getFormAction($this, 'showContent')); $has_access = false; if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->ref_id, AdobeConnectPermissions::PERM_UPLOAD_CONTENT) || $has_write_permission) { $has_access = true; $tpl_sub_button = new ilTemplate("Services/InfoScreen/templates/default/tpl.submitbuttons.html", true, true); $tpl_sub_button->setVariable('BTN_NAME', $this->txt("add_new_content")); $tpl_sub_button->setVariable('BTN_COMMAND', 'showAddContent'); $info->addProperty('', $tpl_sub_button->get()); } $info->addProperty('', $this->viewContents($has_access)); } // show records if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->object->getRefId(), AdobeConnectPermissions::PERM_READ_RECORDS) && $this->object->getReadRecords()) { $has_access = false; if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->ref_id, AdobeConnectPermissions::PERM_EDIT_RECORDS) || $has_write_permission) { $has_access = true; } $info->addSection($this->pluginObj->txt('records')); $info->addProperty('', $this->viewRecords($has_access, 'record')); } } else { ilUtil::sendFailure($this->txt('error_connect_ac_server')); } } $info->hideFurtherSections(); $tpl->setContent($info->getHTML() . $this->getPerformTriggerHtml()); $tpl->setPermanentLink('xavc', $this->object->getRefId()); $tpl->addILIASFooter(); }
/** * Returns a session variable, needed to avoid login at open on SwitchAAI-Installations * @return string with session id, false if SwitchAAI and no session and NULL if non * SwitchAAI and error creating session. */ private function getSession($forceAdmin = false, $forceUser = false) { $this->pluginObj->includeClass('class.ilAdobeConnectServer.php'); $settings = ilAdobeConnectServer::_getInstance(); $session = 'false'; if ($forceUser == true || $settings->getAuthMode() != ilAdobeConnectServer::AUTH_MODE_SWITCHAAI) { $session = $this->xmlApi->getBreezeSession(); } else { if (!forceAdmin) { $session = $this->xmlApi->checkBreezeSession(); } } if ($session == 'false' && $settings->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI) { $session = $this->xmlApi->login($this->adminLogin, $this->adminPass); } return $session; }
/** * Commits the current server settings */ public function commitSettings() { if (self::$instance instanceof self) { self::$instance->doRead(); } }
/** Generates the login name for a user depending on assignment_mode setting * * @param integer $user_id user_id */ public static function generateXavcLoginName($user_id) { // set default when there is no setting set: assign_user_email $assignment_mode = ilAdobeConnectServer::getSetting('user_assignment_mode') ? ilAdobeConnectServer::getSetting('user_assignment_mode') : 'assign_user_email'; switch ($assignment_mode) { case 'assign_user_email': $xavc_login = IL_INST_ID . '_' . $user_id . '_' . ilObjUser::_lookupEmail($user_id); break; case 'assign_ilias_login': $xavc_login = IL_INST_ID . '_' . $user_id . '_' . ilObjUser::_lookupLogin($user_id); break; //The SWITCH aai/DFN case, only return e-mail address //The SWITCH aai/DFN case, only return e-mail address case 'assign_dfn_email': case 'assign_breezeSession': $xavc_login = ilObjUser::_lookupEmail($user_id); break; } return $xavc_login; }
public function saveIliasSettings() { /** * @var $ilCtrl ilCtrl * @var $lng $lng * @var $tpl $tpl */ global $lng, $ilCtrl, $tpl; if (is_array($_POST['permissions']) || $_POST['permissions'] == NULL) { if ($_POST['permissions'] == NULL) { $permissions = array(); } else { $permissions = $_POST['permissions']; } $objPerm = new ilXAVCPermissions(); $objPerm->setPermissions($permissions); } $this->initIliasSettingsForm(); if ($this->form->checkInput()) { ilAdobeConnectServer::setSetting('obj_creation_settings', serialize($this->form->getInput('obj_creation_settings'))); ilAdobeConnectServer::setSetting('allow_crs_grp_trigger', (int) $this->form->getInput('allow_crs_grp_trigger')); ilAdobeConnectServer::setSetting('obj_title_suffix', (int) $this->form->getInput('obj_title_suffix')); ilAdobeConnectServer::setSetting('show_free_slots', (int) $this->form->getInput('show_free_slots')); $enable_perm_room = (int) $this->form->getInput('enable_perm_room'); ilAdobeConnectServer::setSetting('enable_perm_room', (int) $this->form->getInput('enable_perm_room')); ilAdobeConnectServer::setSetting('default_perm_room', $enable_perm_room == 0 ? 0 : (int) $this->form->getInput('default_perm_room')); ilAdobeConnectServer::setSetting('add_to_desktop', (int) $this->form->getInput('add_to_desktop')); ilAdobeConnectServer::setSetting('content_file_types', (string) $this->form->getInput('content_file_types')); ilAdobeConnectServer::setSetting('use_user_folders', (int) $this->form->getInput('use_user_folders')); // ilAdobeConnectServer::setSetting('crs_owner', $this->form->getInput('crs_owner')); ilAdobeConnectServer::setSetting('crs_admin', $this->form->getInput('crs_admin')); ilAdobeConnectServer::setSetting('crs_tutor', $this->form->getInput('crs_tutor')); ilAdobeConnectServer::setSetting('crs_member', $this->form->getInput('crs_member')); // ilAdobeConnectServer::setSetting('grp_owner', $this->form->getInput('grp_owner')); ilAdobeConnectServer::setSetting('grp_admin', $this->form->getInput('grp_admin')); ilAdobeConnectServer::setSetting('grp_member', $this->form->getInput('grp_member')); ilUtil::sendSuccess($lng->txt('settings_saved'), true); $ilCtrl->redirect($this, 'editIliasSettings'); } else { ilUtil::sendFailure($this->getPluginObject()->txt('check_input')); $this->form->setValuesByPost(); return $tpl->setContent($this->form->getHTML()); } }
public function checkConcurrentMeetingDates(ilDateTime $endDate, ilDateTime $startDate = null, $ignoreId = null) { /** * @var $ilDB ilDB */ global $ilDB; if ($startDate == null) { $startDate = new ilDateTime(time(), IL_CAL_UNIX); } $sim = array(); $srv = ilAdobeConnectServer::_getInstance(); $new_start_date = $startDate->getUnixTime() - $srv->getBufferBefore(); $new_end_date = $endDate->getUnixTime() + $srv->getBufferAfter(); $query = array('SELECT * FROM rep_robj_xavc_data', 'WHERE (', '(%s > start_date AND %s < end_date) OR', '(%s > start_date AND %s < end_date) OR', '(%s < start_date AND %s > end_date)', ')'); $types = array('integer', 'integer', 'integer', 'integer', 'integer', 'integer'); $values = array($new_start_date, $new_start_date, $new_end_date, $new_end_date, $new_start_date, $new_end_date); if ($ignoreId !== null) { $query[] = 'AND id <> %s'; $types[] = 'integer'; $values[] = $ignoreId; } $res = $ilDB->queryF(join(' ', $query), $types, $values); while ($row = $ilDB->fetchObject($res)) { if (ilObject::_hasUntrashedReference($row->id)) { $sim[] = $row; } } return $sim; }
public function showContent() { /* * var $ilUser ilUser */ global $ilUser, $tpl, $ilCtrl, $ilAccess; $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php'); $this->pluginObj->includeClass('class.ilAdobeConnectServer.php'); $has_write_permission = $ilAccess->checkAccess("write", "", $this->object->getRefId()); $settings = ilAdobeConnectServer::_getInstance(); $this->tabs->setTabActive('contents'); include_once "./Services/InfoScreen/classes/class.ilInfoScreenGUI.php"; $info = new ilInfoScreenGUI($this); $info->removeFormAction(); $this->pluginObj->includeClass('class.ilAdobeConnectQuota.php'); $this->pluginObj->includeClass("class.ilObjAdobeConnectAccess.php"); $is_member = ilObjAdobeConnectAccess::_hasMemberRole($ilUser->getId(), $this->object->getRefId()); $is_admin = ilObjAdobeConnectAccess::_hasAdminRole($ilUser->getId(), $this->object->getRefId()); if ($this->access->checkAccess("write", "", $this->object->getRefId()) || $is_member || $is_admin) { $presentation_url = $settings->getPresentationUrl(); $form = new ilPropertyFormGUI(); $form->setTitle($this->pluginObj->txt('access_meeting_title')); $this->object->doRead(); if ($this->object->getStartDate() != NULL) { $ilAdobeConnectUser = new ilAdobeConnectUserUtil($this->user->getId()); $ilAdobeConnectUser->ensureAccountExistance(); $xavc_login = $ilAdobeConnectUser->getXAVCLogin(); $quota = new ilAdobeConnectQuota(); // show button if (($this->object->getPermanentRoom() == 1 || $this->doProvideAccessLink()) && $this->object->isParticipant($xavc_login)) { $this->pluginObj->includeClass('class.ilAdobeConnectRoles.php'); $xavcRoles = new ilAdobeConnectRoles($this->object->getRefId()); if (!$quota->mayStartScheduledMeeting($this->object->getScoId())) { $href = $this->txt("meeting_not_available_no_slots"); $button_disabled = true; } else { if (!$xavcRoles->isAdministrator($this->user->getId()) && count($current_pax = $this->object->getCurrentPax()) > $this->object->getMaxPax() && !in_array($this->object->getPrincipalId($xavc_login), $current_pax)) { $href = $this->txt("meeting_full"); $button_disabled = true; } else { $href = '<a href="' . $this->ctrl->getLinkTarget($this, 'performSso') . '" target="_blank" >' . $presentation_url . $this->object->getURL() . '</a>'; $button_disabled = false; } } } else { $href = $this->txt("meeting_not_available"); $button_disabled = true; } if ($button_disabled == true) { $button_txt = $href; } else { $button_txt = $this->pluginObj->txt('enter_vc'); } $button_target = ILIAS_HTTP_PATH . "/" . $this->ctrl->getLinkTarget($this, 'performSso', '', false, false); $button_tpl = new ilTemplate($this->pluginObj->getDirectory() . "/templates/default/tpl.bigbutton.html", true, true); $button_tpl->setVariable('BUTTON_TARGET', $button_target); $button_tpl->setVariable('BUTTON_TEXT', $button_txt); $big_button = $button_tpl->get(); $info->addSection(''); if ($button_disabled == true) { $info->addProperty('', $href); } else { $info->addProperty('', $big_button . "<br />"); } // show instructions if (strlen($this->object->getInstructions()) > 1) { $info->addSection($this->lng->txt('exc_instruction')); $info->addProperty('', nl2br($this->object->getInstructions())); } // show contact info if (strlen($this->object->getContactInfo()) > 1) { $info->addSection($this->pluginObj->txt('contact_information')); $info->addProperty('', nl2br($this->object->getContactInfo())); } //show contents if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->object->getRefId(), AdobeConnectPermissions::PERM_READ_CONTENTS) && $this->object->getReadContents('content') || ilXAVCPermissions::hasAccess($ilUser->getId(), $this->ref_id, AdobeConnectPermissions::PERM_UPLOAD_CONTENT) || $has_write_permission) { $admins_only = ''; if (!$this->object->getReadContents('content')) { $admins_only = $this->pluginObj->txt('admins_only'); } $info->addSection($this->pluginObj->txt('file_uploads') . ' ' . $admins_only); $info->setFormAction($this->ctrl->getFormAction($this, 'showContent')); $has_access = false; if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->ref_id, AdobeConnectPermissions::PERM_UPLOAD_CONTENT) || $has_write_permission) { $has_access = true; $tpl_sub_button = new ilTemplate("Services/InfoScreen/templates/default/tpl.submitbuttons.html", true, true); $tpl_sub_button->setVariable('BTN_NAME', $this->txt("add_new_content")); $tpl_sub_button->setVariable('BTN_COMMAND', 'showAddContent'); $info->addProperty('', $tpl_sub_button->get()); } $info->addProperty('', $this->viewContents($has_access)); } // show records if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->object->getRefId(), AdobeConnectPermissions::PERM_READ_RECORDS) && $this->object->getReadRecords() || ilXAVCPermissions::hasAccess($ilUser->getId(), $this->ref_id, AdobeConnectPermissions::PERM_EDIT_RECORDS) || $has_write_permission) { $has_access = false; $admins_only = ''; if (ilXAVCPermissions::hasAccess($ilUser->getId(), $this->ref_id, AdobeConnectPermissions::PERM_EDIT_RECORDS) || $has_write_permission) { $has_access = true; if (!$this->object->getReadRecords()) { $admins_only = $this->pluginObj->txt('admins_only'); } } $info->addSection($this->pluginObj->txt('records') . ' ' . $admins_only); $info->addProperty('', $this->viewRecords($has_access, 'record')); } } else { ilUtil::sendFailure($this->txt('error_connect_ac_server')); } } $info->hideFurtherSections('', true); $tpl->setContent($info->getHTML() . $this->getPerformTriggerHtml()); $tpl->setPermanentLink('xavc', $this->object->getRefId()); $tpl->addILIASFooter(); }