%PDF- %PDF-
| Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/voice/ |
| Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/voice/manager.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.
*/
/**
* @package Voice
*/
class CApiVoiceManager extends AApiManager
{
/**
* @var $oApiContactsManager CApiMaincontactsManager
*/
private $oApiContactsManager;
/*
* @var $oApiGContactsManager CApiGcontactsManager
*/
private $oApiGContactsManager;
/**
* @param CApiGlobalManager &$oManager
*/
public function __construct(CApiGlobalManager &$oManager, $sForcedStorage = '')
{
parent::__construct('voice', $oManager);
$this->oApiContactsManager = CApi::Manager('maincontacts');
$this->oApiGContactsManager = CApi::Manager('gcontacts');
}
/**
* @param int $iIdUser
* @return string
*/
private function generateCacheFileName($iIdUser)
{
return 0 < $iIdUser ? implode('-', array('user-contacts', $iIdUser, 'callers-names.json')) : '';
}
/**
* @param int $iIdUser
*/
public function FlushCallersNumbersCache($iIdUser)
{
$sCacheKey = $this->generateCacheFileName($iIdUser);
$oApiFileCache = /* @var $oApiFileCache \CApiFilecacheManager */ CApi::Manager('filecache');
$oApiUsers = /* @var $oApiUsers \CApiUsersManager */ CApi::Manager('users');
if ($oApiFileCache && $oApiUsers && !empty($sCacheKey))
{
$oAccount = $oApiUsers->GetDefaultAccount($iIdUser);
if ($oAccount)
{
$oApiFileCache->Clear($oAccount, $sCacheKey);
CApi::Log('Cache: clear contacts names cache');
}
}
}
/**
* @param CAccount $oAccount
* @param array $aNumbers
* @param bool $bUseCache = true
* @return array
*/
public function GetNamesByCallersNumbers($oAccount, $aNumbers, $bUseCache = true)
{
$mResult = false;
$oApiContactsManager = CApi::Manager('maincontacts');
if (is_array($aNumbers) && 0 < count($aNumbers) && $oAccount && $oApiContactsManager)
{
$bFromCache = false;
$sCacheKey = '';
$mNamesResult = null;
$oApiFileCache = $bUseCache ? /* @var $oApiFileCache \CApiFilecacheManager */ CApi::Manager('filecache') : false;
if ($oApiFileCache)
{
$sCacheKey = $this->generateCacheFileName($oAccount->IdUser);
if (!empty($sCacheKey))
{
$sData = $oApiFileCache->Get($oAccount, $sCacheKey);
if (!empty($sData))
{
$mNamesResult = @json_decode($sData, true);
if (!is_array($mNamesResult))
{
$mNamesResult = null;
}
else
{
$bFromCache = true;
CApi::Log('Cache: get contacts names from cache (count:'.count($mNamesResult).')');
}
}
}
}
if (!is_array($mNamesResult))
{
$mNamesResult = $oApiContactsManager->GetAllContactsNamesWithPhones($oAccount);
}
if (is_array($mNamesResult))
{
if (!$bFromCache && $oApiFileCache && 0 < strlen($sCacheKey))
{
$oApiFileCache->Put($oAccount, $sCacheKey, @json_encode($mNamesResult));
CApi::Log('Cache: save contacts names to cache (count:'.count($mNamesResult).')');
}
$aNormNumbers = array();
foreach ($aNumbers as $sNumber)
{
$aNormNumbers[$sNumber] = api_Utils::ClearPhone($sNumber);
}
foreach ($aNormNumbers as $sInputNumber => $sClearNumber)
{
$aNormNumbers[$sInputNumber] = isset($mNamesResult[$sClearNumber])
? $mNamesResult[$sClearNumber] : '';
}
$mResult = $aNormNumbers;
}
}
else if (is_array($aNumbers))
{
$mResult = array();
}
return $mResult;
}
}