%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/bigdata/
Upload File :
Create Path :
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/bigdata/targetsalemailconnector.php

<?php

namespace Bitrix\Sale\Bigdata;

use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;

Loc::loadMessages(__FILE__);

if (Loader::includeModule('sender'))
{
	class TargetSaleMailConnector extends \Bitrix\Sender\Connector
	{
		public function getName()
		{
			return Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_NAME');
		}

		public function getCode()
		{
			return 'target_sale';
		}

		public function getData()
		{
			$productIds = array();

			if (is_array($this->getFieldValue('PRODUCTS')) && count($this->getFieldValue('PRODUCTS')))
			{
				$productIds = array_values($this->getFieldValue('PRODUCTS'));
			}

			$userProducts = array();

			foreach ($productIds as $productId)
			{
				$response = \Bitrix\Sale\Bigdata\Cloud::getPotentialConsumers($productId);

				if (!empty($response['users']))
				{
					foreach ($response['users'] as $userId)
					{
						$userProducts[(string) $userId][] = $productId;
					}
				}
			}

			$rows = array();

			if (!empty($userProducts))
			{
				$result = \Bitrix\Main\UserTable::getList(array(
					'select' => array('USER_ID' => 'ID', 'NAME', 'EMAIL'),
					'filter' => array(
						'=ID' => array_keys($userProducts)
					)
				));

				while ($row = $result->fetch())
				{
					$row['PRODUCTS'] = $userProducts[$row['USER_ID']];

					$rows[] = $row;
				}
			}

			return $rows;
		}

		public static function getPersonalizeList()
		{
			return array(
				array(
					'CODE' => 'PRODUCTS',
					'NAME' => Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_PRODUCTS_TITLE'),
					'DESC' => Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_PRODUCTS_DESC')
				)
			);
		}

		public function getForm()
		{
			// items selector
			$html = '<div id="send_bigdata_pcons_list_%CONNECTOR_NUM%" style="margin-bottom: 20px">';

			// dummy for events
			$html .= '<input type="hidden" id="send_bigdata_changeform_dummy_%CONNECTOR_NUM%" name="'.$this->getFieldName('RND').'" value="">';

			$html .= '</div>';

			$html .= "
			<script>
	
				function deleteProduct_%CONNECTOR_NUM%(id)
				{
					var li = BX('send_bigdata_pcons_list_%CONNECTOR_NUM%_e' + id);
					BX.remove(li);
	
					BX('send_bigdata_changeform_dummy_%CONNECTOR_NUM%').value = Math.random();
					BX.fireEvent(BX('send_bigdata_changeform_dummy_%CONNECTOR_NUM%'), 'change');
				}
	
	
				function catchProduct_%CONNECTOR_NUM%(e)
				{
					// skip duplicates
					if (BX('send_bigdata_pcons_list_%CONNECTOR_NUM%_e'+e.id))
					{
						return false;
					}
	
					// check if there is already limit
					var limit = 25;
	
					var currentCount = BX.findChildren(BX('send_bigdata_pcons_list_%CONNECTOR_NUM%'), {tag: 'li'}).length;
	
					if (currentCount >= limit)
					{
						// show notice
						var obPopupWin = BX.PopupWindowManager.create('sender_select_products_limit_%CONNECTOR_NUM%', null, {
							autoHide: false,
							offsetLeft: 0,
							offsetTop: 0,
							overlay : true,
							closeByEsc: true,
							titleBar: true,
							closeIcon: {top: '10px', right: '10px'}
						});
	
						obPopupWin.setTitleBar({
							content: BX.create(
								'span', {html: '<b>' + '".\CUtil::JSEscape(Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_SELECT_LIMIT_TITLE'))."' + '</b>', 'props': {'className': 'access-title-bar'}}
							)
						});
	
						var msg = '".\CUtil::JSEscape(Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_SELECT_LIMIT_MSG'))."';
						msg = msg.replace('#LIMIT#', limit);
	
						obPopupWin.setContent(msg);
						obPopupWin.setButtons([new BX.PopupWindowButton({
							text: '".\CUtil::JSEscape(Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_SELECT_LIMIT_CLOSE'))."',
							events: {click: function(){
								this.popupWindow.close();
							}}
					   })]);
	
						obPopupWin.show();
	
						return false;
					}
	
					// item
					var fieldName = \"{$this->getFieldName('PRODUCTS[]')}\".replace(\"\[\]\", \"[\"+e.id+\"]\");
					var itemElement = document.createElement('li');
					var title = e.name + ' (' + e.id + ') ';
	
					itemElement.id = 'send_bigdata_pcons_list_%CONNECTOR_NUM%_e'+e.id;
					itemElement.innerHTML = title + ' [ <a href=\"#\" onclick=\"deleteProduct_%CONNECTOR_NUM%('+e.id+'); return false;\">'+'".\CUtil::JSEscape(Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_SELECT_DEL'))."'+'</a> ]';
					itemElement.innerHTML += '<input type=\"hidden\" name=\"'+fieldName+'\" value=\"'+e.id+'\"> ';
	
					BX('send_bigdata_pcons_list_%CONNECTOR_NUM%').appendChild(itemElement);
				}
	
				function AddProductSearch_%CONNECTOR_NUM%()
				{
					var productPopup = new BX.CDialog({
						content_url: '/bitrix/tools/sale/product_search_dialog.php?lang=".LANGUAGE_ID."&caller=sender_target_sale&func_name=catchProduct_%CONNECTOR_NUM%',
						height: Math.max(500, window.innerHeight-400),
						width: Math.max(800, window.innerWidth-400),
						draggable: true,
						resizable: true,
						min_height: 500,
						min_width: 800
					});
	
					BX.addCustomEvent(productPopup, 'onBeforeWindowClose', function(){
						BX.fireEvent(BX('send_bigdata_changeform_dummy_%CONNECTOR_NUM%'), 'change');
					});
	
					productPopup.Show();
				}
			</script>
	
			<button onclick='AddProductSearch_%CONNECTOR_NUM%(); return false;'>".htmlspecialcharsbx(Loc::getMessage('SALE_BIGDATA_TARGET_CONNECTOR_SELECT_TITLE'))."</button>
			";

			if ($this->getFieldValue('PRODUCTS'))
			{
				// select titles
				$titles = array();

				$result = \Bitrix\Iblock\ElementTable::getList(array(
					'select' => array('ID', 'NAME'),
					'filter' => array('=ID' => $this->getFieldValue('PRODUCTS'))
				));

				while ($row = $result->fetch())
				{
					$titles[(int) $row['ID']] = $row['NAME'];
				}

				// preset
				$html .= "<script>".PHP_EOL;

				foreach ($this->getFieldValue('PRODUCTS') as $productId)
				{
					$html .= 'catchProduct_%CONNECTOR_NUM%('.\CUtil::PhpToJSObject(array(
							'id' => $productId,
							'name' => $titles[(int) $productId]
						)).');'.PHP_EOL;
				}


				$html .= "</script>";
			}

			return $html;
		}

		public static function onConnectorList()
		{
			$arData['CONNECTOR'] = __CLASS__;

			return $arData;
		}

	}
}

Zerion Mini Shell 1.0