public function ClearPrivateFiles($oAccount) { if ($oAccount) { $sRootPath = $this->getRootPath($oAccount, \EFileStorageTypeStr::Personal, true); api_Utils::RecRmdir($sRootPath); } }
/** * 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; }