%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/helpdesk/classes/ |
Current File : //www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/helpdesk/classes/user.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ /** * @property int $IdHelpdeskUser * @property int $IdSystemUser * @property int $IdTenant * @property bool $Activated * @property string $ActivateHash * @property bool $Blocked * @property bool $IsAgent * @property string $Name * @property string $Email * @property string $NotificationEmail * @property string $Language * @property string $DateFormat * @property int $TimeFormat * @property string $PasswordHash * @property string $PasswordSalt * @property string $NotificationPassword * @property int $Created * @property bool $MailNotifications * * @package Helpdesk * @subpackage Classes */ class CHelpdeskUser extends api_AContainer { public function __construct() { parent::__construct(get_class($this)); $this->SetTrimer(array('Name', 'Email', 'PasswordHash')); $this->SetLower(array('Email')); $oSettings =& CApi::GetSettings(); $this->SetDefaults(array( 'IdHelpdeskUser' => 0, 'IdSystemUser' => 0, 'IdTenant' => 0, 'Activated' => false, 'Blocked' => false, 'IsAgent' => false, // 'IsSocial' => false, 'Name' => '', 'Email' => '', 'NotificationEmail' => '', 'SocialId' => '', 'SocialType' => '', 'ActivateHash' => md5(microtime(true).rand(1000, 9999)), 'Language' => $oSettings->GetConf('Common/DefaultLanguage'), 'DateFormat' => $oSettings->GetConf('Common/DefaultDateFormat'), 'TimeFormat' => $oSettings->GetConf('Common/DefaultTimeFormat'), 'NotificationPassword' => '', 'PasswordHash' => '', 'PasswordSalt' => md5(microtime(true).rand(10000, 99999)), 'MailNotifications' => false, 'Created' => time() )); } public function RegenerateActivateHash() { $this->ActivateHash = md5(microtime(true).rand(1000, 9999).$this->ActivateHash); } /** * @param string $sPassword * @param bool $bCreateFromFetcher = false */ public function SetPassword($sPassword, $bCreateFromFetcher = false) { $this->PasswordHash = md5($sPassword.'/'.$this->PasswordSalt); if ($bCreateFromFetcher) { $this->NotificationPassword = $sPassword; } } /** * @param string $sPassword * * @return bool */ public function ValidatePassword($sPassword) { return $this->PasswordHash === md5($sPassword.'/'.$this->PasswordSalt); } /** * @return bool */ public function Validate() { if ($this->SocialId) { switch (true) { case (api_Validate::IsEmpty($this->NotificationEmail)) : throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array( '{{ClassName}}' => 'CHelpdeskUser', '{{NotificationEmail}}' => 'NotificationEmail')); } } else { switch (true) { case (api_Validate::IsEmpty($this->Email)) : throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array( '{{ClassName}}' => 'CHelpdeskUser', '{{ClassField}}' => 'Email')); case (api_Validate::IsEmpty($this->PasswordHash)) : throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array( '{{ClassName}}' => 'CHelpdeskUser', '{{ClassField}}' => 'PasswordHash')); } } return true; } /** * @return string */ public function HelpdeskLink() { $sPath = rtrim(\MailSo\Base\Http::SingletonInstance()->GetFullUrl(), '\\/ '); if ('/crons' === substr($sPath, -6)) { $sPath = substr($sPath, 0, -6); } $sPath .= '/?helpdesk'; if (0 < $this->IdTenant) { $sHash = substr(md5($this->IdTenant.CApi::$sSalt), 0, 8); $sPath .= '='.$sHash; } return $sPath; } /** * @return string */ public function ActivationLink() { $sPath = rtrim(\MailSo\Base\Http::SingletonInstance()->GetFullUrl(), '\\/ '); if ('/crons' === substr($sPath, -6)) { $sPath = substr($sPath, 0, -6); } $sPath .= '/?helpdesk'; if (0 < $this->IdTenant) { $sHash = substr(md5($this->IdTenant.CApi::$sSalt), 0, 8); $sPath .= '='.$sHash; } $sPath .= '&activate='.$this->ActivateHash; return $sPath; } /** * @return string */ public function ForgotLink() { $sPath = rtrim(\MailSo\Base\Http::SingletonInstance()->GetFullUrl(), '\\/ '); if ('/crons' === substr($sPath, -6)) { $sPath = substr($sPath, 0, -6); } $sPath .= '/?helpdesk'; if (0 < $this->IdTenant) { $sHash = substr(md5($this->IdTenant.CApi::$sSalt), 0, 8); $sPath .= '='.$sHash; } $sPath .= '&forgot='.$this->ActivateHash; return $sPath; } /** * @return string */ public function ResultEmail() { $sEmail = $this->NotificationEmail; if (empty($sEmail)) { $sEmail = $this->Email; } return $sEmail; } /** * @return array */ public function GetMap() { return self::GetStaticMap(); } /** * @return array */ public static function GetStaticMap() { return array( 'IdHelpdeskUser' => array('int', 'id_helpdesk_user', false, false), 'IdSystemUser' => array('int', 'id_system_user', true, false), 'IdTenant' => array('int', 'id_tenant', true, false), 'IsAgent' => array('bool', 'is_agent'), 'Activated' => array('bool', 'activated'), 'ActivateHash' => array('string', 'activate_hash'), 'Blocked' => array('bool', 'blocked'), 'Email' => array('string', 'email', true, false), 'NotificationEmail' => array('string', 'notification_email'), 'Name' => array('string', 'name'), 'SocialId' => array('string', 'social_id'), 'SocialType' => array('string', 'social_type'), 'Language' => array('string(100)', 'language'), 'DateFormat' => array('string(50)', 'date_format'), 'TimeFormat' => array('int', 'time_format'), 'NotificationPassword' => array('string'), 'PasswordHash' => array('string', 'password_hash'), 'PasswordSalt' => array('string', 'password_salt'), 'MailNotifications' => array('bool', 'mail_notifications'), 'Created' => array('datetime', 'created', true, false) ); } }