Source of file api.smsdirections.php
Size: 3,721 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.smsdirections.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | <?php /** * Flexible SMS routing implementation */ class SMSDirections { /** * UbillingCache instance placeholder * * @var null */ protected $ubCache = null; /** * $directionsCache array from UbillingCache * * @var array */ protected $directionsCache = array(); /** * Placeholder for SMS_SERVICES_BINDINGS_CACHE_LIFETIME from alter.ini * * @var int */ protected $directionsCacheLifeTime = 1800; public function __construct() { global $ubillingConfig; $this->ubCache = new UbillingCache(); if ($ubillingConfig->getAlterParam('SMS_SERVICES_BINDINGS_CACHE_LIFETIME')) { $this->directionsCacheLifeTime = $ubillingConfig->getAlterParam('SMS_SERVICES_BINDINGS_CACHE_LIFETIME'); } $thisInstance = $this; $this->directionsCache = $this->ubCache->getCallback('SMS_SERVICES_DIRECTIONS', function () use ($thisInstance) { return ( $thisInstance->getSMSServicesDirectionsData() ); }, $this->directionsCacheLifeTime); } /** * Returns SMS service ID as a direction from cache * * @param $keyType * @param $entity * * @return int */ public function getDirection($keyType, $entity) { return ( isset($this->directionsCache[$keyType][$entity]) ) ? $this->directionsCache[$keyType][$entity] : 0; } /** * Returns SMS service name by it's ID from cache * Recommended to use in a big message sets instead of zb_getSMSServiceNameByID() * * @param int $smsServiceId * * @return string */ public function getDirectionNameById($smsServiceId = 0) { return ( isset($this->directionsCache['service_id_name'][$smsServiceId]) ) ? $this->directionsCache['service_id_name'][$smsServiceId] : ''; } /** * Returns SMS services bindings suitable for caching * * @return array */ public function getSMSServicesDirectionsData() { $dirsCache = array(); $queryBindings = 'SELECT * FROM sms_services_relations;'; $queriedBindings = nr_query($queryBindings); if (!empty($queriedBindings)) { $fetch_assoc = ($queriedBindings instanceof mysqli_result) ? 'mysqli_fetch_assoc' : 'mysql_fetch_assoc'; while ($row = $fetch_assoc($queriedBindings)) { if (!empty($row['user_login'])) { $dirsCache['user_login'][$row['user_login']] = $row['sms_srv_id']; } if (!empty($row['employee_id'])) { $dirsCache['employee_id'][$row['employee_id']] = $row['sms_srv_id']; } } } $queryServices = 'SELECT * FROM sms_services;'; $queriedServices = nr_query($queryServices); if (!empty($queriedServices)) { $fetch_assoc = ($queriedServices instanceof mysqli_result) ? 'mysqli_fetch_assoc' : 'mysql_fetch_assoc'; while ($row = $fetch_assoc($queriedServices)) { $dirsCache['service_id_name'][$row['id']] = $row['name']; if ($row['default_service']) { $dirsCache['service_id_name'][0] = $row['name']; } } } return ($dirsCache); } public function refreshCacheForced() { $this->ubCache->set('SMS_SERVICES_DIRECTIONS', $this->getSMSServicesDirectionsData(), $this->directionsCacheLifeTime); $this->directionsCache = $this->ubCache->get('SMS_SERVICES_DIRECTIONS', $this->directionsCacheLifeTime); } } ?> |