Ejemplo n.º 1
0
 /**
  * @param CAccount $oAccount
  * @param array $aNumbers
  * @param bool $bUseCache = true
  * @return array
  */
 public function getNamesByCallersNumbers($oAccount, $aNumbers, $bUseCache = true)
 {
     $mResult = false;
     $oApiContactsManager = CApi::Manager('contactsmain');
     if (is_array($aNumbers) && 0 < count($aNumbers) && $oAccount && $oApiContactsManager) {
         $bFromCache = false;
         $sCacheKey = '';
         $mNamesResult = null;
         $oApiFileCache = $bUseCache ? 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;
 }
Ejemplo n.º 2
0
 /**
  * @param int $iUserId
  * @param int $iTenantId = 0
  * @param bool $bAddGlobal = true
  * @return bool|array
  */
 public function GetAllContactsNamesWithPhones($iUserId, $iTenantId = 0, $bAddGlobal = true)
 {
     $mNames = false;
     if ($this->oConnection->Execute($this->oCommandCreator->GetAllContactsNamesWithPhones($iUserId, $iTenantId, $bAddGlobal))) {
         $mNames = array();
         while (false !== ($oRow = $this->oConnection->GetNextRecord())) {
             $sName = trim($oRow->fullname);
             if (0 === strlen($sName)) {
                 $sName = trim($oRow->firstname);
                 $sName .= ' ' . trim($oRow->surname);
                 $sName = trim($sName);
             }
             if (0 === strlen($sName)) {
                 $sName = trim($oRow->view_email);
             }
             if (0 < strlen($sName)) {
                 $sPhone = trim($oRow->b_phone);
                 if (0 < strlen($sPhone)) {
                     $sPhone = api_Utils::ClearPhone($sPhone);
                     if (0 < strlen($sPhone)) {
                         $mNames[$sPhone] = $sName;
                     }
                 }
                 $sPhone = trim($oRow->h_phone);
                 if (0 < strlen($sPhone)) {
                     $sPhone = api_Utils::ClearPhone($sPhone);
                     if (0 < strlen($sPhone)) {
                         $mNames[$sPhone] = $sName;
                     }
                 }
                 $sPhone = trim($oRow->h_mobile);
                 if (0 < strlen($sPhone)) {
                     $sPhone = api_Utils::ClearPhone($sPhone);
                     if (0 < strlen($sPhone)) {
                         $mNames[$sPhone] = $sName;
                     }
                 }
             }
         }
     }
     return $mNames;
 }