Source of file api.usms.php
Size: 5,648 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.usms.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | <?php /** * SMS queue handling class */ class UbillingSMS { /** * SMS_SERVICES_ADVANCED_ENABLED option state * * @var bool */ public $smsRoutingFlag = false; /** * Placeholder for $SMSDirections object * * @var null */ public $smsDirections = null; const QUEUE_PATH = 'content/tsms/'; /** * Creates new UbillingSMS object instance */ public function __construct() { global $ubillingConfig; $this->smsRoutingFlag = $ubillingConfig->getAlterParam('SMS_SERVICES_ADVANCED_ENABLED'); if ($this->smsRoutingFlag) { $this->smsDirections = new SMSDirections(); } } /** * Stores SMS in sending queue * * @param string $number Mobile number in international format. Eg: +380506666666 * @param string $message Text message for sending * @param bool $translit force message transliteration * @param string $module module that inits SMS sending * * @return string - filename in queue */ public function sendSMS($number, $message, $translit = true, $module = '') { $result = ''; $number = trim($number); $module = (!empty($module)) ? ' MODULE ' . $module : ''; $prefix = 'usms_'; if (!empty($number)) { if (ispos($number, '+')) { $message = str_replace(array("\n\r", "\n", "\r"), ' ', $message); //single line $message = str_replace(array("'", '"'), '`', $message); // dangerous quotes if ($translit) { $message = zb_TranslitString($message, true); } $message = trim($message); $queueId = time(); $offset = 0; $filename = self::QUEUE_PATH . $prefix . $queueId . '_' . $offset; if (file_exists($filename)) { while (file_exists($filename)) { $offset++; //incremeting number of messages per second $filename = self::QUEUE_PATH . $prefix . $queueId . '_' . $offset; } } $storedata = 'NUMBER="' . $number . '"' . "\n"; $storedata .= 'MESSAGE="' . $message . '"' . "\n"; file_put_contents($filename, $storedata); log_register('USMS SEND SMS FOR `' . $number . '` AS `' . $prefix . $queueId . '_' . $offset . '` ' . $module); $result = $prefix . $queueId . '_' . $offset; } } return ($result); } /** * Sets routing direction to SMS queue file * * @param string $queueFile * @param string $keyType - array key type in Ubilling cache(login, emploeeid, ukvid and so on) * @param string $entity - key of array associated with $KeyType * @param string $forceDirection * * @return void */ public function setDirection($queueFile, $keyType, $entity, $forceDirection = '') { if ($this->smsRoutingFlag) { if (!empty($queueFile) and file_exists(self::QUEUE_PATH . $queueFile)) { if (empty($forceDirection)) { $newDirection = $this->smsDirections->getDirection($keyType, $entity); } else { $newDirection = $forceDirection; } //saving data to queue $newDirection = trim($newDirection); $storeData = 'SMSSRVID="' . $newDirection . '"' . "\n"; file_put_contents(self::QUEUE_PATH . $queueFile, $storeData, FILE_APPEND); } } } /** * Returns count of SMS available in queue * * @return int */ public function getQueueCount() { $smsQueueCount = rcms_scandir(self::QUEUE_PATH); $result = sizeof($smsQueueCount); return ($result); } /** * Returns array containing all SMS queue data as index=>data * * @return array */ public function getQueueData() { $result = array(); $smsQueue = rcms_scandir(self::QUEUE_PATH); if (!empty($smsQueue)) { foreach ($smsQueue as $io => $eachsmsfile) { //try to prevent race condition due running sending process if (file_exists(self::QUEUE_PATH . $eachsmsfile)) { $smsData = rcms_parse_ini_file(self::QUEUE_PATH . $eachsmsfile); @$smsDate = date("Y-m-d H:i:s", filectime(self::QUEUE_PATH . $eachsmsfile)); if ($smsData) { $result[$io]['filename'] = $eachsmsfile; $result[$io]['date'] = $smsDate; $result[$io]['number'] = $smsData['NUMBER']; $result[$io]['message'] = $smsData['MESSAGE']; $result[$io]['smssrvid'] = (isset($smsData['SMSSRVID'])) ? $smsData['SMSSRVID'] : 0; } } } } return ($result); } /** * Deletes SMS from local queue * * @param string $filename Existing sms filename * * @return int 0 - ok, 1 - deletion unsuccessful, 2 - file not found */ public function deleteSms($filename) { if (file_exists(self::QUEUE_PATH . $filename)) { rcms_delete_files(self::QUEUE_PATH . $filename); $result = 0; if (file_exists(self::QUEUE_PATH . $filename)) { $result = 1; } } else { $result = 2; } return ($result); } } ?> |