/**
  *  Add user to the Adobe Connect server
  * @param integer $a_user_id
  */
 public function addParticipant($a_user_id)
 {
     $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php');
     $this->pluginObj->includeClass('class.ilXAVCMembers.php');
     $this->tabs->activateTab("participants");
     //check if there is an adobe connect account at the ac-server
     $ilAdobeConnectUser = new ilAdobeConnectUserUtil($a_user_id);
     $ilAdobeConnectUser->ensureAccountExistance();
     // add to desktop
     if (ilAdobeConnectServer::getSetting('add_to_desktop') == 1) {
         ilObjUser::_addDesktopItem($a_user_id, $this->object->getRefId(), 'xavc');
     }
     $is_member = ilXAVCMembers::_isMember($a_user_id, $this->object->getRefId());
     // local member table
     if (!$is_member) {
         $xavcMemberObj = new ilXAVCMembers($this->object->getRefId(), $a_user_id);
         $xavcMemberObj->setParticipantStatus();
         $xavcMemberObj->setScoId($this->object->getScoId());
         $xavcMemberObj->insertXAVCMember();
         $this->object->updateParticipant(ilXAVCMembers::_lookupXAVCLogin($a_user_id), $xavcMemberObj->getStatus());
         ilUtil::sendInfo($this->txt('participant_added_successfully'));
     } else {
         if ($is_member) {
             //only update at adobe connect server
             $this->object->updateParticipant(ilXAVCMembers::_lookupXAVCLogin($a_user_id), ilXAVCMembers::_lookupStatus($a_user_id, $this->object->getRefId()));
             ilUtil::sendInfo($this->pluginObj->txt('is_already_participant'));
         }
     }
 }
 /**
  * @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);
     }
 }
 /**
  *  Check whether a user is host in this virtual classroom.
  * @param String $login
  * @return boolean
  */
 public function isParticipant($login)
 {
     global $ilUser;
     $this->pluginObj->includeClass('class.ilAdobeConnectServer.php');
     $settings = ilAdobeConnectServer::_getInstance();
     if ($settings->getAuthMode() == ilAdobeConnectServer::AUTH_MODE_SWITCHAAI) {
         $this->pluginObj->includeClass('class.ilXAVCMembers.php');
         return ilXAVCMembers::_isMember($ilUser->getId(), $this->getRefId());
     } else {
         $session = $this->xmlApi->getBreezeSession();
         if ($session != NULL && $this->xmlApi->login($this->adminLogin, $this->adminPass, $session)) {
             return $this->xmlApi->isParticipant($login, $this->sco_id, $session);
         }
     }
 }