Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/skyweb24.popuppro/lib/abtest/ |
Upload File : |
<? namespace Skyweb24\Popuppro\Abtest; use \Bitrix\Main\Application; use \Bitrix\Main\Localization\Loc; use \Bitrix\Main\Page\Asset; Loc::loadMessages(__FILE__); class Table extends \Skyweb24\Popuppro\Base { private $classEntity; function __construct() { $this->classEntity = "\Skyweb24\Popuppro\Entity\AbtestTable"; } public function create() { global $by, $order, $APPLICATION, $FIELDS; $tableID = "skyweb24_popuppro_abtest"; $tableSort = new \CAdminSorting($tableID, "id", "desc"); $lAdmin = new \CAdminUiList($tableID, $tableSort); $lAdmin->AddHeaders($this->getHeaders()); $rights = $APPLICATION->GetGroupRight($this->getModuleId()); if ($rights > "E") { $ids = []; $action = ''; if ($lAdmin->GroupAction()) { if (is_array($_REQUEST['ID'])) { $ids = $_REQUEST['ID']; } elseif (!empty($_REQUEST['ID'])) { $ids = [$_REQUEST['ID']]; } $action = $_REQUEST['action']; } if ($lAdmin->EditAction()) { $action = 'edit'; $ids = array_keys($FIELDS); } if (count($ids) > 0) { foreach ($ids as $nextId) { switch ($action) { case "delete": $this->dataDelete($nextId); break; } } } } if (!isset($by)) $by = 'id'; if (!isset($order)) $order = 'desc'; $result = $this->classEntity::getList([ 'order' => [$by => $order], 'select' => [ '*', 'popup_name_a' => 'popup_a.name', 'popup_name_b' => 'popup_b.name' ] ]); $rsData = new \CAdminUiResult($result, $tableID); $rsData->NavStart(); $lAdmin->SetNavigationParams($rsData, []); while ($arRes = $rsData->Fetch()) { $row = $lAdmin->AddRow($arRes['id'], $arRes); $row->AddViewField("id", '<a href="' . $APPLICATION->GetCurPage() . '?id=' . $row->arRes["id"] . '&lang=' . LANGUAGE_ID . '" onclick="">' . $row->arRes['id'] . '</a>'); $row->AddViewField("popup_id_a", '<a href="/bitrix/admin/skyweb24_popuppro.php?lang=ru&id=' . $row->arRes['popup_id_a'] . '">' . '[' . $row->arRes['popup_id_a'] . '] ' . $row->arRes['popup_name_a'] . '</a>'); $row->AddViewField("popup_id_b", '<a href="/bitrix/admin/skyweb24_popuppro.php?lang=ru&id=' . $row->arRes['popup_id_b'] . '">' . '[' . $row->arRes['popup_id_b'] . '] ' . $row->arRes['popup_name_b'] . '</a>'); $row->AddViewField("name", $row->arRes['name']); if ($row->arRes['date_start']) { if ($arRes['active'] == "Y") { $date = date("d.m.Y h:i:s", strtotime($row->arRes['date_start']) + $row->arRes['work_time']); $row->AddViewField("date_start", $date); } else { $date = date("d.m.Y h:i:s", strtotime($row->arRes['date_start'])); $row->AddViewField("date_start", $date); } } if ($row->arRes['active'] == "Y") { $onclick = 'onclick="if (confirm(\'' . Loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_ACTIVE_STOP_CONFIRM") . '\')) BX.adminPanel.Redirect([], \'' . $APPLICATION->GetCurPage() . '?id=' . $row->arRes['id'] . '&action=stop&lang=' . LANGUAGE_ID . '\', event);"'; $row->AddViewField("active", '<span class="adm-btn" ' . $onclick . '>' . Loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_ACTIVE_STOP") . '</span>'); } else { $onclick = 'onclick="if (confirm(\'' . Loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_ACTIVE_START_CONFIRM") . '\')) BX.adminPanel.Redirect([], \'' . $APPLICATION->GetCurPage() . '?id=' . $row->arRes['id'] . '&action=run&lang=' . LANGUAGE_ID . '\', event);"'; $row->AddViewField("active", '<span class="adm-btn adm-btn-green" ' . $onclick . '>' . Loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_ACTIVE_START") . '</span>'); } $row->AddActions([ [ "ICON" => "", "TEXT" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_REPORT"), "TITLE" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_REPORT"), "ONCLICK" => 'document.location.href="/bitrix/admin/skyweb24_popuppro_abtest_report.php?id=' . $row->arRes['id'] . '&lang=' . LANGUAGE_ID . '"' ], [ "ICON" => "edit", "TEXT" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_EDIT"), "TITLE" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_EDIT"), "ONCLICK" => 'document.location.href="' . $APPLICATION->GetCurPage() . '?id=' . $row->arRes['id'] . '&lang=' . LANGUAGE_ID . '"' ], [ "ICON" => "delete", "TEXT" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_DELETE"), "TITLE" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_DELETE"), "ACTION" => $lAdmin->ActionDoGroup($row->arRes['id'], 'delete'), "ONCLICK" => "" ] ]); } $aContext[] = [ "TEXT" => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_BUTTON_ADD"), "LINK_PARAM" => ["id=add"], "ONCLICK" => 'document.location.href="' . $APPLICATION->GetCurPage() . '?id=new&lang=' . LANGUAGE_ID . '"' ]; $lAdmin->AddAdminContextMenu($aContext, false); $lAdmin->AddGroupActionTable([ 'delete' => 'delete', ]); $lAdmin->AddFooter([ ["title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $rsData->SelectedRowsCount()], ["counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0"] ]); $lAdmin->DisplayList(); } private function getHeaders() { return [ [ 'id' => "id", 'content' => "id", 'sort' => "id", 'default' => true ], [ 'id' => "name", 'content' => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_HEADER_TITLE_NAME"), 'sort' => "name", 'default' => true ], [ 'id' => "popup_id_a", 'content' => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_HEADER_TITLE_WINDOW_A"), 'sort' => "popup_id_a", 'default' => true ], [ 'id' => "popup_id_b", 'content' => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_HEADER_TITLE_WINDOW_B"), 'sort' => "popup_id_b", 'default' => true ], [ 'id' => "date_start", 'content' => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_HEADER_TITLE_DATE_END"), 'sort' => false, 'default' => true ], [ 'id' => "active", 'content' => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_HEADER_TITLE_ACTIVE"), 'sort' => "active", 'default' => true ] ]; } private function dataDelete($id) { $this->agentRemove($id); $this->classEntity::delete($id); } public function testRun($id) { $this->classEntity::update($id, [ 'active' => 'Y', "date_start" => new \Bitrix\Main\Type\DateTime() ]); $this->agentCreate($id); } public function testStop($id) { $table = new Table(); $res = $table->classEntity::update($id, [ 'active' => 'N', ]); $table->agentRemove($id); } public function saveSetting($request) { $arResult = [ "status" => false, "errorMessage" => "" ]; $data = [ "popup_id_a" => $request['popup_id_a'] ?: false, "popup_id_b" => $request['popup_id_b'] ?: false, "chance" => $request['chance'], "work_time" => $request['work_time'], "name" => $request['name'], // "active" => $request['active'] ?: "N", ]; if ($request['id'] == "new") { $result = $this->classEntity::add($data); } else { $result = $this->classEntity::update($request['id'], $data); } if (!$result->isSuccess()) { $arResult['status'] = false; $arResult['errorMessage'] = $result->getErrorMessages()[0]; } else { $arResult['id'] = $result->getId(); $this->agentCreate($arResult['id']); } return $arResult; } public function getData($id) { if ($id != "new") { return $this->classEntity::getList([ "select" => [ "*", 'popup_name_a' => 'popup_a.name', 'popup_name_b' => 'popup_b.name' ], "filter" => [ "id" => $id ] ])->fetch(); } return []; } public function getDefaultData() { return [ "active" => "Y", "work_time" => [ 86400 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_1"), 259200 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_3"), 432000 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_5"), 604800 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_WEEK_1"), 1209600 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_WEEK_2"), 2592000 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_MOTH"), 31104000 => loc::getMessage("SKYWEB24_POPUPPRO_ABTEST_TABLE_SELECT_OPTION_WORK_TIME_DAY_MANUAL"), ], "chance" => [ 10 => "10%", 20 => "20%", 30 => "30%", 50 => "50%", 100 => "100%", ], ]; } public function agentCreate($id) { $resTest = $this->classEntity::getList([ "filter" => [ "id" => $id, "active" => "Y" ] ])->fetch(); if (!$resTest) return false; if ($resTest['params']['agent_id']) { $this->agentRemove($resTest['id']); } $dateStart = \Bitrix\Main\Type\DateTime::createFromTimestamp( strtotime($resTest['date_start']) + $resTest['work_time'] ); $agentId = \CAgent::AddAgent( "\Skyweb24\Popuppro\Abtest\Table::testStop({$id});", $this->getModuleId(), "N", 0, $dateStart->toString(), "Y", $dateStart->toString() ); if ($agentId) { $resTest['params']['agent_id'] = $agentId; $res = $this->classEntity::update($id, [ "params" => $resTest['params'] ]); return $res->isSuccess(); } return false; } public function agentRemove($testId) { $resTest = $this->classEntity::getList([ "filter" => [ "id" => $testId ] ])->fetch(); if ($resTest && $resTest['params']['agent_id']) { \CAgent::Delete($resTest['params']['agent_id']); unset($resTest['params']['agent_id']); $res = $this->classEntity::update($resTest['id'], [ "params" => $resTest['params'] ]); return $res->isSuccess(); } return false; } }