예제 #1
0
 public function ClearPrivateFiles($oAccount)
 {
     if ($oAccount) {
         $sRootPath = $this->getRootPath($oAccount, \EFileStorageTypeStr::Personal, true);
         api_Utils::RecRmdir($sRootPath);
     }
 }
예제 #2
0
파일: manager.php 프로젝트: Git-Host/email
 /**
  * Deletes account from WebMail Pro database. 
  * 
  * @api
  * 
  * @param CAccount $oAccount Object instance with prepopulated account properties.
  * 
  * @return bool
  */
 public function deleteAccount($oAccount)
 {
     $bResult = false;
     try {
         if (!$oAccount) {
             $this->setLastException(new CApiManagerException(Errs::Main_UnknownError));
             return false;
         }
         if ($oAccount->IsDefaultAccount) {
             if (0 === $oAccount->IdTenant && \strtolower($oAccount->Email) === \strtolower($this->oSettings->GetConf('Helpdesk/AdminEmailAccount'))) {
                 $this->setLastException(new CApiManagerException(Errs::HelpdeskManager_AccountCannotBeDeleted));
                 return false;
             } else {
                 if (0 < $oAccount->IdTenant) {
                     $oApiTenantsManager = CApi::Manager('tenants');
                     /* @var $oApiTenantsManager CApiTenantsManager */
                     if ($oApiTenantsManager) {
                         $oTenant = $oApiTenantsManager->getTenantById($oAccount->IdTenant);
                         /* @var $oTenant CTenant */
                         if (\strtolower($oAccount->Email) === $oTenant->HelpdeskAdminEmailAccount) {
                             $this->setLastException(new CApiManagerException(Errs::HelpdeskManager_AccountCannotBeDeleted));
                             return false;
                         }
                     }
                 }
             }
         }
         if ($oAccount && $this->oStorage->deleteAccount($oAccount->IdAccount)) {
             if ($oAccount->IsInternal) {
                 /* @var $oApiMailSuiteManager CApiMailSuiteManager */
                 $oApiMailSuiteManager = CApi::Manager('mailsuite');
                 if ($oApiMailSuiteManager) {
                     $oApiMailSuiteManager->deleteMailAliases($oAccount);
                     $oApiMailSuiteManager->deleteMailForwards($oAccount);
                     $oApiMailSuiteManager->deleteMailDir($oAccount);
                 }
             }
             if ($oAccount->IsDefaultAccount) {
                 /* @var $oApiContactsManager CApiContactsManager */
                 $oApiContactsManager = CApi::Manager('contacts');
                 if ($oApiContactsManager) {
                     $oApiContactsManager->clearAllContactsAndGroups($oAccount);
                 }
                 /* @var $oApiCalendarManager CApiCalendarManager */
                 $oApiCalendarManager = CApi::Manager('calendar');
                 if ($oApiCalendarManager) {
                     $oApiCalendarManager->clearAllCalendars($oAccount);
                 }
                 /* @var $oApiDavManager CApiDavManager */
                 $oApiDavManager = CApi::Manager('dav');
                 if ($oApiDavManager) {
                     $oApiDavManager->deletePrincipal($oAccount);
                 }
                 /* @var $oApiFilestorageManager CApiFilestorageManager */
                 $oApiFilestorageManager = CApi::Manager('filestorage');
                 if ($oApiFilestorageManager) {
                     $oApiFilestorageManager->clearAllFiles($oAccount);
                 }
                 /* @var $oApiSocialManager CApiSocialManager */
                 $oApiSocialManager = CApi::Manager('social');
                 if ($oApiSocialManager) {
                     $oApiSocialManager->deleteSocialByAccountId($oAccount->IdAccount);
                 }
                 if (0 < $oAccount->User->IdHelpdeskUser) {
                     /* @var $oApiHelpdeskManager CApiHelpdeskManager */
                     $oApiHelpdeskManager = CApi::Manager('helpdesk');
                     if ($oApiHelpdeskManager) {
                         //$oApiHelpdeskManager->setUserAsBlocked($oAccount->IdTenant, $oAccount->User->IdHelpdeskUser);
                         $oApiHelpdeskManager->deleteUser($oAccount->IdTenant, $oAccount->User->IdHelpdeskUser);
                     }
                 }
             }
             CApi::Log('FS: Delete "/mail/" and "/temp/" folders');
             // TODO move in storage
             $sMailRoot = CApi::DataPath() . '/mail/';
             $sTmpRoot = CApi::DataPath() . '/temp/';
             $sPath = strtolower($oAccount->Email . '.' . $oAccount->IdAccount);
             $sPath = $sPath[0] . '/' . $sPath;
             api_Utils::RecRmdir($sMailRoot . $sPath);
             api_Utils::RecRmdir($sTmpRoot . $sPath);
             $bResult = true;
         } else {
             if (null === $oAccount) {
                 $this->setLastException(new CApiManagerException(Errs::UserManager_AccountDoesNotExist));
             }
         }
     } catch (CApiBaseException $oException) {
         $bResult = false;
         $this->setLastException($oException);
     }
     return $bResult;
 }