%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)
);
}
}