%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sender/lib/message/ |
| Current File : //home/bitrix/www/bitrix/modules/sender/lib/message/tracker.php |
<?php
/**
* Bitrix Framework
* @package bitrix
* @subpackage sender
* @copyright 2001-2012 Bitrix
*/
namespace Bitrix\Sender\Message;
use Bitrix\Main\Mail\Tracking;
use Bitrix\Sender\Integration;
class Tracker
{
const TYPE_READ = 1;
const TYPE_CLICK = 2;
const TYPE_UNSUB = 3;
/** @var integer $type Type. */
protected $type;
/** @var string $moduleId Module ID. */
protected $moduleId;
/** @var array $fields Fields. */
protected $fields = array();
/** @var array $uriParameters Uri parameters. */
protected $uriParameters = array();
/** @var string $handlerUri Handler uri. */
protected $handlerUri;
/**
* Constructor.
*
* @param integer $type Type.
*/
public function __construct($type)
{
$this->type = $type;
}
/**
* @return string
*/
public function getModuleId()
{
return $this->moduleId;
}
/**
* @param string $moduleId
* @return $this
*/
public function setModuleId($moduleId)
{
$this->moduleId = $moduleId;
return $this;
}
/**
* @return array
*/
public function getFields()
{
return $this->fields;
}
/**
* @param array $fields Fields.
* @return $this
*/
public function setFields($fields)
{
$this->fields = $fields;
return $this;
}
/**
* @param string $key Fields.
* @param string|integer|null $value Value.
*/
public function addField($key, $value)
{
$this->fields[$key] = $value;
}
/**
* @return array
*/
public function getUriParameters()
{
return $this->uriParameters;
}
/**
* @param array $uriParameters
* @return $this
*/
public function setUriParameters($uriParameters)
{
$this->uriParameters = $uriParameters;
return $this;
}
/**
* @param string $key Fields.
* @param string|integer|null $value Value.
* @return $this
*/
public function addUriParameter($key, $value)
{
$this->uriParameters[$key] = $value;
return $this;
}
/**
* Get page uri.
*
* @return string
*/
public function getHandlerUri()
{
if (!$this->handlerUri && Integration\Bitrix24\Service::isPortal())
{
return Integration\Bitrix24\Service::getTrackingUri($this->type);
}
return $this->handlerUri;
}
/**
* Set handler uri.
*
* @param string $handlerUri
* @return $this
*/
public function setHandlerUri($handlerUri)
{
$this->handlerUri = $handlerUri;
return $this;
}
/**
* Get link.
*
* @return string
*/
public function getLink()
{
$link = '';
$moduleId = $this->getModuleId();
$fields = $this->getFields();
if (!$moduleId || empty($fields))
{
return $link;
}
$uri = $this->getHandlerUri();
switch ($this->type)
{
case self::TYPE_READ:
$link = Tracking::getLinkRead($moduleId, $fields, $uri);
break;
case self::TYPE_CLICK:
$link = Tracking::getLinkClick($moduleId, $fields, $uri);
break;
case self::TYPE_UNSUB:
$link = Tracking::getLinkUnsub($moduleId, $fields, $uri);
break;
}
return $link;
}
/**
* Get as array.
*
* @return array
*/
public function getArray()
{
return array(
'MODULE_ID' => $this->getModuleId(),
'FIELDS' => $this->getFields(),
'URL_PAGE' => $this->getHandlerUri(),
'URL_PARAMS' => $this->getUriParameters()
);
}
/**
* Set as array.
*
* @param array $data Data.
* @return $this
*/
public function setArray(array $data)
{
if (isset($data['MODULE_ID']))
{
$this->setModuleId($data['MODULE_ID']);
}
if (isset($data['FIELDS']))
{
$this->setFields($data['FIELDS']);
}
if (isset($data['URL_PARAMS']))
{
$this->setUriParameters($data['URL_PARAMS']);
}
if (isset($data['URL_PAGE']))
{
$this->setHandlerUri($data['URL_PAGE']);
}
return $this;
}
}