public function join()
 {
     /**
      * @var  $ilCtrl ilCtrl
      */
     global $ilCtrl;
     $user_id = $this->user->getId();
     $this->pluginObj->includeClass('class.ilAdobeConnectRoles.php');
     $this->pluginObj->includeClass('class.ilXAVCMembers.php');
     $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php');
     $this->pluginObj->includeClass('class.ilAdobeConnectServer.php');
     $xavcRoles = new ilAdobeConnectRoles($this->object->getRefId());
     $current_users = $xavcRoles->getUsers();
     if (in_array($user_id, $current_users)) {
         ilUtil::sendInfo($this->txt('already_member'));
     }
     if (!$user_id) {
         ilUtil::sendFailure($this->txt('user_not_known'));
         return $this->editParticipants();
     }
     $xavcRoles->addMemberRole($user_id);
     //check if there is an adobe connect account at the ac-server
     $ilAdobeConnectUser = new ilAdobeConnectUserUtil($user_id);
     $ilAdobeConnectUser->ensureAccountExistance();
     $role_map = ilAdobeConnectServer::getRoleMap();
     $status = false;
     $oParticipants = null;
     $type = '';
     $owner = 0;
     if (count($this->object->getParticipantsObject()->getParticipants()) > 0) {
         $user_is_admin = $this->object->getParticipantsObject()->isAdmin($user_id);
         $user_is_tutor = $this->object->getParticipantsObject()->isTutor($user_id);
         $owner = ilObject::_lookupOwner($this->object->getParticipantsObject()->getObjId());
         if ($owner == $this->user->getId()) {
             $status = $role_map[$this->object->getParticipantsObject()->getType() . '_owner'];
         } else {
             if ($user_is_admin) {
                 $status = $role_map[$this->object->getParticipantsObject()->getType() . '_admin'];
             } else {
                 if ($user_is_tutor) {
                     $status = $role_map[$this->object->getParticipantsObject()->getType() . '_tutor'];
                 } else {
                     $status = $role_map[$this->object->getParticipantsObject()->getType() . '_member'];
                 }
             }
         }
     }
     if (!$status) {
         if ($owner == $this->user->getId()) {
             $status = 'host';
         } else {
             $status = 'view';
         }
     }
     $is_member = ilXAVCMembers::_isMember($user_id, $this->object->getRefId());
     // local member table
     $xavcMemberObj = new ilXAVCMembers($this->object->getRefId(), $user_id);
     $xavcMemberObj->setStatus($status);
     $xavcMemberObj->setScoId($this->object->getScoId());
     if ($is_member) {
         $xavcMemberObj->updateXAVCMember();
     } else {
         $xavcMemberObj->insertXAVCMember();
     }
     $this->object->updateParticipant(ilXAVCMembers::_lookupXAVCLogin($user_id), $status);
     if (ilAdobeConnectServer::getSetting('add_to_desktop') == 1) {
         ilObjUser::_addDesktopItem($user_id, $this->object->getRefId(), 'xavc');
     }
     $ilCtrl->setParameter($this, 'cmd', 'showContent');
     $ilCtrl->redirect($this, "showContent");
 }
コード例 #2
0
 /**
  * @param integer $ref_id ref_id of ilias ac-object
  * @param integer $sco_id
  * @param array   $member_ids
  */
 public function addCrsGrpMembers($ref_id, $sco_id, $member_ids = null)
 {
     $oParticipants = $this->getParticipantsObject();
     if (count($oParticipants->getParticipants()) == 0) {
         return;
     }
     $role_map = ilAdobeConnectServer::getRoleMap();
     /** @var $oParticipants  ilGroupParticipants | ilCourseParticipants */
     $admins = $oParticipants->getAdmins();
     $tutors = $oParticipants->getTutors();
     $members = $oParticipants->getMembers();
     if (is_array($member_ids) && count($member_ids) > 0) {
         $all_participants = $member_ids;
         $admins = array_uintersect($member_ids, $admins, 'strcmp');
         $tutors = array_uintersect($member_ids, $tutors, 'strcmp');
         $members = array_uintersect($member_ids, $members, 'strcmp');
     } else {
         $all_participants = array_unique(array_merge($admins, $tutors, $members));
     }
     $this->pluginObj->includeClass('class.ilAdobeConnectRoles.php');
     $xavcRoles = new ilAdobeConnectRoles($ref_id);
     if (ilAdobeConnectServer::getSetting('user_assignment_mode') != ilAdobeConnectServer::ASSIGN_USER_SWITCH) {
         foreach ($all_participants as $user_id) {
             $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php');
             //check if there is an adobe connect account at the ac-server
             $ilAdobeConnectUser = new ilAdobeConnectUserUtil($user_id);
             $ilAdobeConnectUser->ensureAccountExistance();
             // add to desktop
             if (ilAdobeConnectServer::getSetting('add_to_desktop') == 1) {
                 ilObjUser::_addDesktopItem($user_id, $ref_id, 'xavc');
             }
         }
     }
     // receive breeze session
     $session = $this->xmlApi->getBreezeSession();
     $this->pluginObj->includeClass('class.ilXAVCMembers.php');
     if ($session != NULL && $this->xmlApi->login($this->adminLogin, $this->adminPass, $session)) {
         foreach ($admins as $user_id) {
             if ($user_id == $this->getOwner()) {
                 continue;
             }
             $xavcRoles->addAdministratorRole($user_id);
             $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
             // local member table
             $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
             $status = $role_map[$oParticipants->getType() . '_admin'];
             $xavcMemberObj->setStatus($status);
             $xavcMemberObj->setScoId($sco_id);
             if ($is_member) {
                 $xavcMemberObj->updateXAVCMember();
             } else {
                 $xavcMemberObj->insertXAVCMember();
             }
             $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($user_id), $session, $status);
         }
         foreach ($tutors as $user_id) {
             if ($user_id == $this->getOwner()) {
                 continue;
             }
             $xavcRoles->addAdministratorRole($user_id);
             $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
             // local member table
             $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
             $status = $role_map[$oParticipants->getType() . '_tutor'];
             $xavcMemberObj->setStatus($status);
             $xavcMemberObj->setScoId($sco_id);
             if ($is_member) {
                 $xavcMemberObj->updateXAVCMember();
             } else {
                 $xavcMemberObj->insertXAVCMember();
             }
             $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($user_id), $session, $status);
         }
         foreach ($members as $user_id) {
             if ($user_id == $this->getOwner()) {
                 continue;
             }
             $xavcRoles->addMemberRole($user_id);
             $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
             // local member table
             $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
             $status = $role_map[$oParticipants->getType() . '_member'];
             $xavcMemberObj->setStatus($status);
             $xavcMemberObj->setScoId($sco_id);
             if ($is_member) {
                 $xavcMemberObj->updateXAVCMember();
             } else {
                 $xavcMemberObj->insertXAVCMember();
             }
             $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($user_id), $session, $status);
         }
         $owner_id = ilObject::_lookupOwner($oParticipants->getObjId());
         $xavcRoles->addAdministratorRole($owner_id);
         $is_member = ilXAVCMembers::_isMember($owner_id, $ref_id);
         // local member table
         $xavcMemberObj = new ilXAVCMembers($ref_id, $owner_id);
         $status = $role_map[$oParticipants->getType() . '_owner'];
         $xavcMemberObj->setStatus($status);
         $xavcMemberObj->setScoId($sco_id);
         if ($is_member) {
             $xavcMemberObj->updateXAVCMember();
         } else {
             $xavcMemberObj->insertXAVCMember();
         }
         $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($owner_id), $session, $status);
     }
 }
 /**
  * @param integer $ref_id ref_id of ilias ac-object
  * @param integer $sco_id
  * @param array   $member_ids
  */
 public function addCrsGrpMembers($ref_id, $sco_id, $member_ids = null)
 {
     global $tree;
     $parent_crs_ref = $tree->checkForParentType($ref_id, 'crs');
     $parent_grp_ref = $tree->checkForParentType($ref_id, 'grp');
     $type = null;
     $obj_id = 0;
     if ($parent_crs_ref && empty($parent_grp_ref)) {
         $obj_id = ilObject::_lookupObjectId($parent_crs_ref);
         include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
         $oParticipants = ilCourseParticipants::_getInstanceByObjId($obj_id);
         $type = 'crs';
     } else {
         if ($parent_grp_ref) {
             $obj_id = ilObject::_lookupObjectId($parent_grp_ref);
             include_once 'Modules/Group/classes/class.ilGroupParticipants.php';
             $oParticipants = ilGroupParticipants::_getInstanceByObjId($obj_id);
             $type = 'grp';
         }
     }
     if ($type == 'crs' || $type == 'grp') {
         $role_map = ilAdobeConnectServer::getRoleMap();
         $owner_id = ilObject::_lookupOwner(ilObject::_lookupObjectId($ref_id));
         /** @var $oParticipants  ilGroupParticipants | ilCourseParticipants */
         $admins = $oParticipants->getAdmins();
         $tutors = $oParticipants->getTutors();
         $members = $oParticipants->getMembers();
         if (is_array($member_ids) && count($member_ids) > 0) {
             $all_participants = $member_ids;
             $admins = array_uintersect($member_ids, $admins, 'strcmp');
             $tutors = array_uintersect($member_ids, $tutors, 'strcmp');
             $members = array_uintersect($member_ids, $members, 'strcmp');
         } else {
             $all_participants = array_unique(array_merge($admins, $tutors, $members));
         }
         $this->pluginObj->includeClass('class.ilAdobeConnectRoles.php');
         $xavcRoles = new ilAdobeConnectRoles($ref_id);
         if (ilAdobeConnectServer::getSetting('user_assignment_mode') != ilAdobeConnectServer::ASSIGN_USER_SWITCH) {
             foreach ($all_participants as $user_id) {
                 $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php');
                 //check if there is an adobe connect account at the ac-server
                 $ilAdobeConnectUser = new ilAdobeConnectUserUtil($user_id);
                 $ilAdobeConnectUser->ensureAccountExistance();
                 // add to desktop
                 if (ilAdobeConnectServer::getSetting('add_to_desktop') == 1) {
                     ilObjUser::_addDesktopItem($user_id, $ref_id, 'xavc');
                 }
             }
         }
         // receive breeze session
         $session = self::getSession();
         $this->pluginObj->includeClass('class.ilXAVCMembers.php');
         if ($session != NULL && $this->xmlApi->login($this->adminLogin, $this->adminPass, $session)) {
             foreach ($admins as $user_id) {
                 $xavcRoles->addAdministratorRole($user_id);
                 $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
                 // local member table
                 $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
                 $status = $role_map[$type . '_admin'];
                 $xavcMemberObj->setStatus($status);
                 $xavcMemberObj->setScoId($sco_id);
                 if ($is_member) {
                     $xavcMemberObj->updateXAVCMember();
                 } else {
                     $xavcMemberObj->insertXAVCMember();
                 }
                 $xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id);
                 if (!empty($xavc_login)) {
                     $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status);
                 }
             }
             foreach ($tutors as $user_id) {
                 if (($xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id)) != $this->adminLogin && $user_id != $owner_id) {
                     $xavcRoles->addAdministratorRole($user_id);
                     $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
                     // local member table
                     $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
                     $status = $role_map[$type . '_tutor'];
                     $xavcMemberObj->setStatus($status);
                     $xavcMemberObj->setScoId($sco_id);
                     if ($is_member) {
                         $xavcMemberObj->updateXAVCMember();
                     } else {
                         $xavcMemberObj->insertXAVCMember();
                     }
                     if (!empty($xavc_login)) {
                         $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status);
                     }
                 }
             }
             foreach ($members as $user_id) {
                 if (($xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id)) != $this->adminLogin && $user_id != $owner_id) {
                     $xavcRoles->addMemberRole($user_id);
                     $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
                     // local member table
                     $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
                     $status = $role_map[$type . '_member'];
                     $xavcMemberObj->setStatus($status);
                     $xavcMemberObj->setScoId($sco_id);
                     if ($is_member) {
                         $xavcMemberObj->updateXAVCMember();
                     } else {
                         $xavcMemberObj->insertXAVCMember();
                     }
                     if (!empty($xavc_login)) {
                         $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status);
                     }
                 }
             }
             $xavcRoles->addAdministratorRole($owner_id);
             // local member table
             $xavcMemberObj = new ilXAVCMembers($ref_id, $owner_id);
             $status = $role_map[$type . '_owner'];
             $xavcMemberObj->setStatus($status);
             $xavcMemberObj->setScoId($sco_id);
             $is_member = ilXAVCMembers::_isMember($owner_id, $ref_id);
             if ($is_member) {
                 $xavcMemberObj->updateXAVCMember();
             } else {
                 $xavcMemberObj->insertXAVCMember();
             }
             $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($owner_id), $session, $status);
         }
     }
 }