예제 #1
0
 /**
  * @return CHelpdeskUser|bool
  */
 public function RegisterHelpdeskAccount($iIdTenant, $sEmail, $sName, $sPassword, $bCreateFromFetcher = false)
 {
     $mResult = false;
     $oApiHelpdeskManager = CApi::Manager('helpdesk');
     $oApiUsersManager = CApi::Manager('users');
     $oApiCapabilityManager = CApi::Manager('capability');
     if (!$oApiHelpdeskManager || !$oApiUsersManager || !$oApiCapabilityManager || !$oApiCapabilityManager->IsHelpdeskSupported()) {
         return $mResult;
     }
     $oUser = $oApiHelpdeskManager->GetUserByEmail($iIdTenant, $sEmail);
     if (!$oUser) {
         $oAccount = $oApiUsersManager->GetAccountOnLogin($sEmail);
         if ($oAccount && $oAccount->IdTenant === $iIdTenant && $oApiCapabilityManager->IsHelpdeskSupported($oAccount)) {
             throw new CApiManagerException(Errs::HelpdeskManager_UserAlreadyExists);
         }
         $oUser = new CHelpdeskUser();
         $oUser->Activated = false;
         $oUser->Email = $sEmail;
         $oUser->Name = $sName;
         $oUser->IdTenant = $iIdTenant;
         $oUser->IsAgent = false;
         $oUser->SetPassword($sPassword, $bCreateFromFetcher);
         $oApiHelpdeskManager->CreateUser($oUser, $bCreateFromFetcher);
         if (!$oUser || 0 === $oUser->IdHelpdeskUser) {
             throw new CApiManagerException(Errs::HelpdeskManager_UserCreateFailed);
         } else {
             $mResult = $oUser;
         }
     } else {
         throw new CApiManagerException(Errs::HelpdeskManager_UserAlreadyExists);
     }
     return $mResult;
 }
예제 #2
0
 /**
  * @param \CAccount $oAccount
  * 
  * @return \CHelpdeskUser|null
  */
 public function GetHelpdeskAccountFromMainAccount(&$oAccount)
 {
     $oResult = null;
     $oApiHelpdesk = $this->ApiHelpdesk();
     if ($oAccount && $oAccount->IsDefaultAccount && $oApiHelpdesk && $this->oApiCapability->IsHelpdeskSupported($oAccount)) {
         if (0 < $oAccount->User->IdHelpdeskUser) {
             $oHelpdeskUser = $oApiHelpdesk->GetUserById($oAccount->IdTenant, $oAccount->User->IdHelpdeskUser);
             $oResult = $oHelpdeskUser instanceof \CHelpdeskUser ? $oHelpdeskUser : null;
         }
         if (!$oResult instanceof \CHelpdeskUser) {
             $oHelpdeskUser = $oApiHelpdesk->GetUserByEmail($oAccount->IdTenant, $oAccount->Email);
             $oResult = $oHelpdeskUser instanceof \CHelpdeskUser ? $oHelpdeskUser : null;
             if ($oResult instanceof \CHelpdeskUser) {
                 $oAccount->User->IdHelpdeskUser = $oHelpdeskUser->IdHelpdeskUser;
                 $this->oApiUsers->UpdateAccount($oAccount);
             }
         }
         if (!$oResult instanceof \CHelpdeskUser) {
             $oHelpdeskUser = new \CHelpdeskUser();
             $oHelpdeskUser->Email = $oAccount->Email;
             $oHelpdeskUser->Name = $oAccount->FriendlyName;
             $oHelpdeskUser->IdSystemUser = $oAccount->IdUser;
             $oHelpdeskUser->IdTenant = $oAccount->IdTenant;
             $oHelpdeskUser->Activated = true;
             $oHelpdeskUser->IsAgent = true;
             $oHelpdeskUser->Language = $oAccount->User->DefaultLanguage;
             $oHelpdeskUser->DateFormat = $oAccount->User->DefaultDateFormat;
             $oHelpdeskUser->TimeFormat = $oAccount->User->DefaultTimeFormat;
             $oHelpdeskUser->SetPassword($oAccount->IncomingMailPassword);
             if ($oApiHelpdesk->CreateUser($oHelpdeskUser)) {
                 $oAccount->User->IdHelpdeskUser = $oHelpdeskUser->IdHelpdeskUser;
                 $this->oApiUsers->UpdateAccount($oAccount);
                 $oResult = $oHelpdeskUser;
             }
         }
     }
     return $oResult;
 }