%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sender/lib/integration/sender/ |
Current File : /home/bitrix/www/bitrix/modules/sender/lib/integration/sender/holiday.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage sender * @copyright 2001-2012 Bitrix */ namespace Bitrix\Sender\Integration\Sender; use Bitrix\Main\Type\Date; use Bitrix\Main\Localization\Loc; use Bitrix\Sender\Internals\PrettyDate; Loc::loadMessages(__FILE__); class Holiday { /** @var string $code */ private $code; /** @var Date $date */ private $date; /** @var Date $dateFrom */ private $dateFrom; /** @var Date $dateTo */ private $dateTo; /** @var array $list */ private static $list = [ 'feb14' => [14, 2], // code => [day, month] 'feb23' => [23, 2], 'mar8' => [8, 3], 'halloween' => [31, 10], 'thanks' => [22, 11], 'christmas' => [25, 12], 'new_year' => [ [1, 12], [10, 1], ], ]; /** @var int $defaultYear */ private static $defaultYear = 2049; /** * Get list by language. * * @param string|mixed $languageId Language ID. * @return self[] */ public static function getList($languageId = LANGUAGE_ID) { switch ($languageId) { case 'ru': $listLocal = ['feb14', 'feb23', 'mar8', 'halloween', 'new_year']; break; case 'ua': $listLocal = ['feb14', 'day_mar8', 'halloween', 'new_year']; break; default: $listLocal = ['feb14', 'halloween', 'thanks', 'christmas']; } $list = []; foreach ($listLocal as $code) { if (!isset(self::$list[$code])) { continue; } $period = self::$list[$code]; if (is_array($period[0])) { $date = null; $dateFrom = self::createDate($period[0][0], $period[0][1]); $dateTo = self::createDate($period[1][0], $period[1][1]); } else { $date = self::createDate($period[0], $period[1]); $dateFrom = self::createDate($period[0], $period[1])->add('-5 days'); $dateTo = self::createDate($period[0], $period[1])->add('+3 days'); } $list[] = new self($code, $date, $dateFrom, $dateTo); } return $list; } /** * Holiday constructor. * * @param string $code Code. * @param Date|null $date Date. * @param Date $dateFrom Date from. * @param Date $dateTo Date to. */ public function __construct($code, Date $date = null, Date $dateFrom, Date $dateTo) { $this->code = $code; $this->date = $date; $this->dateFrom = $dateFrom; $this->dateTo = $dateTo; } /** * Get code. * * @return string */ public function getCode() { return $this->code; } /** * Get upper code. * * @return string */ public function getCodeUpper() { return strtoupper($this->code); } /** * Get name. * * @param string $template Template of name. * @param string $placeholder Placeholder of name in template. * @return string */ public function getName($template = null, $placeholder = '%name%') { $name = Loc::getMessage('SENDER_INTEGRATION_HOLIDAY_' . $this->getCodeUpper()); if ($template) { return str_replace($placeholder, $name, $template); } return $name; } /** * Get formatted date. * * @return string */ public function formatDate() { return $this->date ? PrettyDate::formatDate($this->date) : $this->getName(); } /** * Get date. * * @return Date */ public function getDate() { return $this->date; } /** * Get day. * * @return int */ public function getDay() { return $this->dateFrom->format('j'); } /** * Get day. * * @return int */ public function getMonth() { return $this->dateFrom->format('n'); } /** * Get date from. * * @return Date */ public function getDateFrom() { return $this->dateFrom; } /** * Get date to. * * @return Date */ public function getDateTo() { return $this->dateTo; } private static function createDate($day, $month, $year = null) { return Date::createFromTimestamp(mktime(0, 0, 0, $month, $day, $year ?: self::$defaultYear)); } }