Your IP : 3.149.214.156


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/subscribe/lib/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/subscribe/lib/senderconnector.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage sender
 * @copyright 2001-2012 Bitrix
 */

namespace Bitrix\Subscribe;

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

Loc::loadMessages(__FILE__);

class SenderEventHandler
{
	/**
	 * Handler of sender:OnConnectorList event.
	 *
	 * @param array $data Empty array.
	 * @return array
	 */
	public static function onConnectorListSubscriber($data)
	{
		$data['CONNECTOR'] = 'Bitrix\Subscribe\SenderConnectorSubscriber';
		return $data;
	}
}

if (Loader::includeModule('sender'))
{
	class SenderConnectorSubscriber extends \Bitrix\Sender\Connector
	{
		/**
		 * Returns localized name of subscribers source.
		 *
		 * @return string
		 */
		public function getName()
		{
			return Loc::getMessage('sender_connector_subscriber_name');
		}

		/**
		 * Returns internal code of subscribers source.
		 *
		 * @return string
		 */
		public function getCode()
		{
			return "subscriber";
		}

		/**
		 * Returns subscribers depended on side filter fields.
		 *
		 * @return \CDBResult
		 */
		public function getData()
		{
			$filter = array();

			$rubric = $this->getFieldValue('RUBRIC', null);
			if ($rubric)
				$filter['RUBRIC'] = $rubric;

			$active = $this->getFieldValue('ACTIVE', null);
			if ($active)
				$filter['ACTIVE'] = $active;

			$confirmed = $this->getFieldValue('CONFIRMED', null);
			if ($confirmed)
				$filter['CONFIRMED'] = $confirmed;

			$dateInsertFrom = $this->getFieldValue('DATE_INSERT_FROM', null);
			if ($dateInsertFrom)
				$filter['INSERT_1'] = $dateInsertFrom;

			$dateInsertTo = $this->getFieldValue('DATE_INSERT_TO', null);
			if ($dateInsertTo)
				$filter['INSERT_2'] = $dateInsertTo;

			$subscriberList = \CSubscription::GetList(array('ID' => 'ASC'), $filter);

			return new CDBResultSenderConnectorIBlock($subscriberList);
		}

		/**
		 * Returns Html form to display filter criteria.
		 *
		 * @return string
		 */
		public function getForm()
		{
			$dropdownValues = array(
				'' => Loc::getMessage('sender_connector_subscriber_all'),
				'Y' => Loc::getMessage('sender_connector_subscriber_y'),
				'N' => Loc::getMessage('sender_connector_subscriber_n'),
			);

			$rubricInput = '<select name="'.$this->getFieldName('RUBRIC').'">';
			$rubricList = \CRubric::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array());
			while ($rubric = $rubricList->Fetch())
			{
				$inputSelected = ($rubric['ID'] == $this->getFieldValue('RUBRIC')? 'selected': '');
				$rubricInput .= '<option value="'.$rubric['ID'].'" '.$inputSelected.'>';
				$rubricInput .= htmlspecialcharsEx('[' . $rubric['ID'] . '] ' . $rubric['NAME']);
				$rubricInput .= '</option>';
			}
			$rubricInput .= '</select>';

			$activeInput = '<select name="'.$this->getFieldName('ACTIVE').'">';
			foreach ($dropdownValues as $k => $v)
			{
				$inputSelected = ($k == $this->getFieldValue('ACTIVE')? 'selected': '');
				$activeInput .= '<option value="'.$k.'" '.$inputSelected.'>';
				$activeInput .= htmlspecialcharsEx($v);
				$activeInput .= '</option>';
			}
			$activeInput .= '</select>';

			$confirmedInput = '<select name="'.$this->getFieldName('CONFIRMED').'">';
			foreach ($dropdownValues as $k => $v)
			{
				$inputSelected = ($k == $this->getFieldValue('CONFIRMED')? 'selected': '');
				$confirmedInput .= '<option value="'.$k.'" '.$inputSelected.'>';
				$confirmedInput .= htmlspecialcharsEx($v);
				$confirmedInput .= '</option>';
			}
			$confirmedInput .= '</select>';

			$dateInsertInput = CalendarPeriod(
				$this->getFieldName('DATE_INSERT_FROM'),
				$this->getFieldValue('DATE_INSERT_FROM'),
				$this->getFieldName('DATE_INSERT_TO'),
				$this->getFieldValue('DATE_INSERT_TO'),
				$this->getFieldFormName()
			);

			return '
				<table>
					<tr>
						<td>'.Loc::getMessage('sender_connector_subscriber_rubric').'</td>
						<td>'.$rubricInput.'</td>
					</tr>
					<tr>
						<td>'.Loc::getMessage('sender_connector_subscriber_active').'</td>
						<td>'.$activeInput.'</td>
					</tr>
					<tr>
						<td>'.Loc::getMessage('sender_connector_subscriber_confirmed').'</td>
						<td>'.$confirmedInput.'</td>
					</tr>
					<tr>
						<td>'.Loc::getMessage('sender_connector_subscriber_dateinsert').'</td>
						<td>'.$dateInsertInput.'</td>
					</tr>
				</table>
			';
		}
	}
}

class CDBResultSenderConnectorIBlock extends \CDBResult
{
	/**
	 * Fetch fields from database resource
	 * @return array|null
	 */
	public function Fetch()
	{
		$fields = parent::Fetch();
		if($fields && !$fields['NAME'])
		{
			if(isset($fields['USER_NAME']))
			{
				$fields['NAME'] = $fields['USER_NAME'];
			}

			if(!$fields['NAME'] && isset($fields['USER_LAST_NAME']))
			{
				$fields['NAME'] = $fields['USER_LAST_NAME'];
			}
		}

		return $fields;
	}
}