403Webshell
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 :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/skyweb24.popuppro/lib/abtest/table.php
<?

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;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit