%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sender/lib/integration/bitrix24/ |
Current File : //home/bitrix/www/bitrix/modules/sender/lib/integration/bitrix24/service.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage sender * @copyright 2001-2012 Bitrix */ namespace Bitrix\Sender\Integration\Bitrix24; use Bitrix\Bitrix24\Feature; use Bitrix\Main\Loader; use Bitrix\Main\ModuleManager; use Bitrix\Sender\Internals\Model; use Bitrix\Sender\Dispatch\Semantics; use Bitrix\Sender\Message\Tracker; use Bitrix\Sender\Entity; use Bitrix\Sender\Message; use Bitrix\Sender\Integration\Seo; /** * Class Service * @package Bitrix\Sender\Integration\Bitrix24 */ class Service { /** * Return true if installation is portal. * * @return bool */ public static function isPortal() { return (ModuleManager::isModuleInstalled('bitrix24') || ModuleManager::isModuleInstalled('intranet')); } /** * Return true if Ad is available. * * @return bool */ public static function isAdAvailable() { return !self::isCloud() || Feature::isFeatureEnabled('sender_ad'); } /** * Return true if Rc is available. * * @return bool */ public static function isRcAvailable() { return !self::isCloud() || Feature::isFeatureEnabled('sender_rc'); } /** * Return true if Campaigns is available. * * @return bool */ public static function isCampaignsAvailable() { return !self::isCloud() && !self::isPortal(); } /** * Return true if region of cloud portal is Russian. * * @return bool */ public static function isCloudRegionRussian() { return self::isCloud() && in_array(\CBitrix24::getPortalZone(), array('ru', 'kz', 'by')); } /** * Return true if Ad provider is available in region. * * @param string $code Service message code. * @return bool */ public static function isAdVisibleInRegion($code) { if (!self::isCloud()) { return true; } if (!in_array($code, array(Seo\Ads\MessageBase::CODE_ADS_VK, Seo\Ads\MessageBase::CODE_ADS_YA))) { return true; } return self::isCloudRegionRussian(); } /** * Return true if sms, call, web hook is available. * * @return bool */ public static function isMailingsAvailable() { return !self::isCloud() || Feature::isFeatureEnabled('sender_mailing'); } /** * Get available mailing codes. * * @return array */ public static function getAvailableMailingCodes() { if (self::isMailingsAvailable()) { return Message\Factory::getMailingMessageCodes(); } return [Message\iBase::CODE_MAIL]; } /** * Return true if portal is cloud. * * @return bool */ public static function isCloud() { return Loader::includeModule('bitrix24'); } /** * Return tracking uri. * * @param int $type Tracker type. * @return bool */ public static function getTrackingUri($type) { switch ($type) { case Tracker::TYPE_READ: $code = 'read'; break; case Tracker::TYPE_CLICK: $code = 'click'; break; case Tracker::TYPE_UNSUB: default: $code = 'unsubscribe'; break; } $uri = "/pub/mail/$code.php"; if (self::isCloud() && !in_array(substr(BX24_HOST_NAME, -7), ['.com.br', '.com.de'])) // exclude com.br & com.de domains { Loader::includeModule('bitrix24'); $domain = BX24_HOST_NAME; if (!\CBitrix24::isCustomDomain()) { $domain = preg_replace('/^([-\.\w]+)\.bitrix24\.([-\.\w]+)/', '$2.$1', $domain); $domain = "mailinternetsub.com/" . $domain; } $uri = "https://$domain$uri"; } return $uri; } /** * Return true if installation is portal. * * @return void */ public static function initLicensePopup() { if (!self::isCloud()) { return; } \CBitrix24::initLicenseInfoPopupJS(); \CJSCore::init('sender_b24_license'); } /** * Return true if plan is top. * * @return bool */ public static function isLicenceTop() { if (!self::isCloud()) { return true; } return \CBitrix24::getLicenseType() === 'company'; } /** * Lock additional services. * * @return void */ public static function lockServices() { if (!self::isCloud()) { return; } $letters = Model\LetterTable::getList(array( 'select' => array('ID'), 'filter' => array( '=STATUS' => Semantics::getWorkStates(), '!MESSAGE_CODE' => Message\iBase::CODE_MAIL ) )); $letter = new Entity\Letter(); foreach ($letters as $letterData) { $letter->load($letterData['ID']); if (!$letter->getId()) { continue; } $state = $letter->getState(); if ($state->canReady()) { $state->ready(); } else if ($state->canStop()) { $state->stop(); } } } }