%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sender/lib/integration/messageservice/sms/ |
| Current File : /home/bitrix/www/bitrix/modules/sender/lib/integration/messageservice/sms/service.php |
<?php
/**
* Bitrix Framework
* @package bitrix
* @subpackage sender
* @copyright 2001-2012 Bitrix
*/
namespace Bitrix\Sender\Integration\MessageService\Sms;
use Bitrix\Main\Loader;
use Bitrix\Main\Web\Uri;
use Bitrix\MessageService;
/**
* Class Service
* @package Bitrix\Sender\Integration\MessageService\Sms
*/
class Service
{
public static function canUse()
{
return Loader::includeModule('messageservice');
}
/**
* Get providers.
*
* @return array
*/
public static function getProviders()
{
$result = array();
$list = static::getSenderInfoList();
foreach ($list as $item)
{
if (!$item['canUse'])
{
continue;
}
$item['from'] = static::getSenderFromList($item['id']);
if (count($item['from']) == 0)
{
continue;
}
$result[] = $item;
}
return $result;
}
/**
* Get sender names.
*
* @return array
*/
public static function getSenderNames()
{
$list = array();
foreach (self::getProviders() as $item)
{
foreach ($item['from'] as $number)
{
$id = $item['id'] . ':' . $number['id'];
$name = $item['id'] === 'rest' ? $number['name'] : ($item['shortName'] ?: $item['name']);
$list[$id] = $name;
}
}
return $list;
}
/**
* Get daily limits.
*
* @return array
*/
public static function getDailyLimits()
{
return MessageService\Sender\Limitation::getDailyLimits();
}
/**
* Send.
*
* @param string $senderId Sender ID.
* @param string $from From number.
* @param string $to To number.
* @param string $text Text.
* @param integer $authorId Author ID.
* @return bool
*/
public static function send($senderId, $from, $to, $text, $authorId = 1)
{
if (!static::canUse())
{
return false;
}
$sender = MessageService\Sender\SmsManager::getSenderById($senderId);
if (!$sender)
{
return false;
}
$smsMessage = MessageService\Sender\SmsManager::createMessage(array(
'AUTHOR_ID' => $authorId,
'MESSAGE_TO' => $to,
'MESSAGE_BODY' => $text,
'MESSAGE_FROM' => $from,
'MESSAGE_HEADERS' => array(
'module_id' => 'sender'
)
), $sender);
$sendResult = $smsMessage->sendDirectly();
return $sendResult->isSuccess();
}
/**
* Get manage url.
*
* @return string
*/
public static function getManageUrl()
{
return MessageService\Sender\SmsManager::getManageUrl();
}
/**
* Get limits url.
*
* @return string
*/
public static function getLimitsUrl()
{
return '/crm/configs/sms/?page=limits';
}
/**
* @param string $senderId Sender id.
* @return array Simple list of sender From aliases
*/
protected static function getSenderFromList($senderId)
{
$list = array();
if (static::canUse())
{
$sender = MessageService\Sender\SmsManager::getSenderById($senderId);
if ($sender)
{
$list = $sender->getFromList();
}
}
return $list;
}
/**
* @param bool $getFromList
* @return array Senders information.
*/
protected static function getSenderInfoList($getFromList = false)
{
$info = array();
if (static::canUse())
{
$uri = new Uri(self::getManageUrl());
foreach (MessageService\Sender\SmsManager::getSenders() as $sender)
{
/** @var $sender \Bitrix\MessageService\Sender\Sms\SmsRu */
$uri->deleteParams(['sender'])->addParams(['sender' => $sender->getId()]);
$senderInfo = array(
'id' => $sender->getId(),
'isConfigurable' => $sender->isConfigurable(),
'name' => $sender->getName(),
'shortName' => $sender->getShortName(),
'canUse' => $sender->canUse(),
'isDemo' => $sender->isConfigurable() ? $sender->isDemo() : null,
'manageUrl' => $sender->isConfigurable() ?
$uri->getLocator() : ''
);
if ($getFromList)
{
$senderInfo['fromList'] = static::getSenderFromList($sender->getId());
}
$info[] = $senderInfo;
}
}
return $info;
}
}