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