/** * Создает таблицу плагина в БД */ static function createDateBase() { // Если плагин впервые активирован, то задаются настройки по умолчанию if (!MG::getOption('pozvonimOption')) { $array = array('email' => '', 'phone' => '', 'host' => ''); MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($array)))); } }
/** * Сохраняет опции плагина * @return boolean */ public function saveBaseOption() { $this->messageSucces = 'Настройки применены'; $this->messageError = 'Настройки не применены'; if (!empty($_POST['data'])) { MG::setOption(array('option' => 'partners-program', 'value' => addslashes(serialize($_POST['data'])))); } return true; }
/** * Создает таблицу для функционирования плагина партнерки */ static function createDateBase() { DB::query("CREATE TABLE IF NOT EXISTS `" . PREFIX . "partner` (\n `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Номер партнера',\n `user_id` int(11) NOT NULL COMMENT 'Партнер',\n `percent` float NOT NULL COMMENT 'Процент', \n `payments_amount` float NOT NULL COMMENT 'Всего было выплачено', \n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); DB::query("\n CREATE TABLE IF NOT EXISTS `" . PREFIX . "partner_order` (\n `partner_id` int(11) NOT NULL,\n `order_id` int(11) UNIQUE NOT NULL,\n `percent` double NOT NULL,\n `summ` double NOT NULL\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Связь партнеров с оплаченными заказами';\n "); DB::query("\n CREATE TABLE IF NOT EXISTS `" . PREFIX . "partner_payments_amount` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n `partner_id` int(11) NOT NULL,\n `date` datetime NOT NULL,\n `summ` double NOT NULL,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\n "); //добавляем статическу страницу /affiliate, чтобы ее было удобно редактировать. DB::query("INSERT IGNORE INTO `" . PREFIX . "page` ( `title`, `url`, `html_content`, `meta_title`, `meta_keywords`, `meta_desc`) VALUES\n ( 'Партнерская программа', 'affiliate.html', '[affiliate]', 'Партнерская программа', 'Партнерская программа', 'Партнерская программа на " . MG::getSetting('sitename') . ", зарабатывайте с нами!');"); $array = array('percent' => 20, 'exitMoneyLimit' => 1000); MG::setOption(array('option' => 'partners-program', 'value' => addslashes(serialize($array)))); }
public function saveBaseOption() { $this->messageSucces = $this->lang['SAVE_BASE']; $this->messageError = $this->lang['NOT_SAVE']; $data = $_POST['data']; if (!empty($data)) { MG::setOption(array('option' => 'uLoginSettings', 'value' => addslashes(serialize($_POST['data'])))); return true; } return false; }
/** * Создает таблицу плагина в БД */ static function createDateBase() { DB::query("\r\n CREATE TABLE IF NOT EXISTS `" . PREFIX . self::$pluginName . "` (\r\n `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Порядковый номер записи',\r\n `type` varchar(255) NOT NULL COMMENT 'Тип слайда картинка или HTML',\r\n\t `nameaction` text NOT NULL COMMENT 'Название слайда',\r\n `href` text NOT NULL COMMENT 'ссылка', \r\n `value` text NOT NULL COMMENT 'значение', \r\n `sort` int(11) NOT NULL COMMENT 'Порядок слайдов',\r\n `invisible` int(1) NOT NULL COMMENT 'видимость',\r\n PRIMARY KEY (`id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); // запрос для проверки, был ли плагин установлен ранее. $res = DB::query("\r\n SELECT id\r\n FROM `" . PREFIX . self::$pluginName . "`\r\n WHERE id in (1,2,3) \r\n "); // если плагин впервые активирован то задаются настройки по умолчанию if (!DB::numRows($res)) { DB::query("\r\n INSERT INTO `" . PREFIX . self::$pluginName . "` (`id`, `type`,`nameaction`, `href`, `value`, `sort`, `invisible`) VALUES\r\n (1, 'img', 'Акция 1','" . SITE . "/catalog', " . DB::quote("<img src='" . SITE . '/mg-plugins/' . self::$pluginName . "/images/pic/slide1.jpg' alt=''>") . ", 1,1),\r\n (2, 'img', 'Акция 2','" . SITE . "/feedback', " . DB::quote("<img src='" . SITE . '/mg-plugins/' . self::$pluginName . "/images/pic/slide2.jpg' alt=''>") . ", 2,1),\r\n (3, 'html', 'Акция 3','" . SITE . "/contacts', '<div style=\"background-color: blue; width: 1000px; height: 300px; text-align: center; background:rgb(214, 214, 214);\"><br />\n<span style=\"color:#006400;\"><span style=\"font-size:24px;\"><strong><font face=\"georgia, serif\">Название акциии<br />\n<br />\n<br />\n<br />\n<br />\nЛюбой HTML контент</font></strong></span></span><br />\n<br />\n<br />\n </div>\n', 3,1);\r\n "); $array = array('width' => '', 'height' => '', 'speed' => '2000', 'pause' => '1500', 'mode' => 'horizontal', 'position' => 'left'); MG::setOption(array('option' => 'sliderActionOption', 'value' => addslashes(serialize($array)))); } }
/** * Сохраняет опции плагина * * @return boolean */ public function saveBaseOption() { $this->messageSucces = $this->lang['SAVE_BASE']; $this->messageError = $this->lang['NOT_SAVE_BASE']; if (!empty($_POST['data'])) { @($oldData = unserialize(stripslashes(MG::getOption('pozvonimOption')))); $oldData = is_array($oldData) ? $oldData : array(); $data = $_POST['data']; if (isset($data['reset'])) { $data = unserialize(stripslashes(MG::getOption('pozvonimOption'))); if (is_array($data)) { unset($data['id']); MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); } $this->removeShortCode(); $this->messageSucces = 'reload'; return true; } if (isset($data['code']) && !empty($data['code'])) { $data['token'] = $oldData['token']; if (!preg_match('/\\/([a-z0-9]{32})\\/connect/iu', $data['code'], $code)) { $this->messageError = $this->lang['BAD_CODE']; return false; } $code = $code[1]; $data['key'] = $code; MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); $this->messageSucces = $this->lang['CODE_SAVED']; $this->installShortCode(); return true; } if ($data = $this->valid($data)) { if (isset($data['code'])) { unset($data['code']); } MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); if ($data = $this->register($data)) { if (isset($data['code'])) { unset($data['code']); } MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); $this->messageSucces = 'reload'; } else { $this->messageError = $this->apiError ? $this->apiError : $this->lang['EMAIL_EXIST']; return false; } } else { return false; } } return true; }
public static function createDateBaseNews() { DB::query("\n CREATE TABLE IF NOT EXISTS `mpl_news` (\n `id` INT( 11 ) NOT NULL AUTO_INCREMENT ,\n `title` VARCHAR( 255 ) NOT NULL ,\n `description` TEXT NOT NULL ,\n `add_date` DATETIME NOT NULL ,\n `url` VARCHAR( 255 ) NOT NULL ,\n `image_url` VARCHAR( 255 ) NOT NULL ,\n `meta_title` varchar(255) NOT NULL,\n `meta_keywords` varchar(512) NOT NULL,\n `meta_desc` text NOT NULL,\n PRIMARY KEY ( `id` )\n ) ENGINE = MYISAM DEFAULT CHARSET=utf8;\n "); MG::setOption('countPrintRowsNews', 5); $realDocumentRoot = str_replace(DIRECTORY_SEPARATOR . 'mg-plugins' . DIRECTORY_SEPARATOR . 'news', '', dirname(__FILE__)); $path = $realDocumentRoot . '/uploads/news/'; if (!file_exists($path)) { chdir($realDocumentRoot . "/uploads/"); mkdir("news", 0777); chdir($realDocumentRoot . "/uploads/news/"); mkdir("thumbs", 0777); } }
static function createTable() { DB::query("\n\t CREATE TABLE IF NOT EXISTS `" . PREFIX . "call_back` (\n\t `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Порядковый номер записи',\n\t\t `name` text NOT NULL COMMENT 'Имя',\n\t `phone` text NOT NULL COMMENT 'Телефон', \n\t `time` timestamp DEFAULT NOW() COMMENT 'Время добавления заявки',\n\t `invisible` int(1) NOT NULL COMMENT 'Просмотр заявки',\n\t `comment` text NULL COMMENT 'Комментарий к заявке',\n\t PRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); DB::query("\n\t \tCREATE TABLE IF NOT EXISTS `" . PREFIX . "call_back_config` (\n\t \t`id` int(11) NOT NULL AUTO_INCREMENT ,\n\t \t`send_mail` ENUM('0','1') DEFAULT '0',\n\t \t`email_address` VARCHAR(200) NOT NULL DEFAULT '" . MG::getOption('adminEmail') . "',\n\t \tPRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); $seeds = DB::query("SELECT * FROM `" . PREFIX . 'call_back_config' . "`"); $numb = DB::numRows($seeds); if ($numb == 0) { DB::query("\n\t \t\tINSERT INTO `" . PREFIX . 'call_back_config' . "` VALUES(NULL, '0', '" . MG::getOption('adminEmail') . "')\n\t \t"); } // Был ли плагин активирован ранее? $res = DB::query("\n\t \tSELECT id\n\t \tFROM `" . PREFIX . "call_back`\n\t \tWHERE id in (1,2,3)\n\t "); // Если плагин впервые активирован, то задаются настройки по умолчанию if (!DB::numRows($res)) { $array = array('countRows' => '10'); MG::setOption(array('option' => 'call-backOption', 'value' => addslashes(serialize($array)))); } }
/** * Создает таблицу плагина в БД */ static function createDateBase() { // Запрос для проверки, был ли плагин установлен ранее. $exist = false; $result = DB::query('SHOW TABLES LIKE "' . PREFIX . self::$pluginName . '"'); if (DB::numRows($result)) { $exist = true; } if (!$exist) { DB::query("\r\n CREATE TABLE IF NOT EXISTS `" . PREFIX . self::$pluginName . "` (\r\n `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Порядковый номер', \r\n `title` text NOT NULL COMMENT 'Загаловок',\r\n `settings` text NOT NULL COMMENT 'Настройки', \r\n PRIMARY KEY (`id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); DB::query("\r\n CREATE TABLE IF NOT EXISTS `" . PREFIX . self::$pluginName . "-elements` (\r\n `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Порядковый номер', \r\n `parent` int(11) NOT NULL COMMENT 'id блока',\r\n `text` text NOT NULL COMMENT 'Текст триггера',\r\n `icon` text NOT NULL COMMENT 'Иконка или url картинки',\r\n `sort` int(11) NOT NULL COMMENT 'Сортировка',\r\n PRIMARY KEY (`id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); $settings = array('form' => 'square', 'place' => 'left', 'color_icon' => '000', 'background_icon' => 'fff', 'background' => 'fff', 'width' => '31', 'height' => '90', 'layout' => 'horfloat'); DB::query("INSERT INTO `" . PREFIX . self::$pluginName . "` SET `id`=1,\r\n `settings` = " . DB::quote(addslashes(serialize($settings))) . " "); DB::query("INSERT INTO `" . PREFIX . self::$pluginName . "-elements` (`id`, `parent`, `text`, `icon`, `sort`) VALUES\r\n(8, 1, '<div><span style=\"color: rgb(0, 0, 0); font-family: Tahoma, Verdana, sans-serif; line-height: 21px;\">Гарантия качества на все товары</span></div>\n', '<i class=\"fa fa-check-circle-o fa-5x\"></i>', 8),\r\n(10, 1, '<div><span style=\"color: rgb(0, 0, 0); font-family: Tahoma, Verdana, sans-serif; line-height: 21px;\">Оплата Visa и MasterCard</span></div>\n', '<i class=\"fa fa-cc-visa fa-4x\"></i>', 10),\r\n(9, 1, '<div><span style=\"color: rgb(0, 0, 0); font-family: Tahoma, Verdana, sans-serif; line-height: 21px;\">Бесплатная доставка от 3 тыс. руб.</span></div>\n', '<i class=\"fa fa-truck fa-4x\"></i>', 9)"); // Если плагин впервые активирован, то задаются настройки по умолчанию MG::setOption(array('option' => 'countPrintRowsTrigger', 'value' => 10)); } }
/** * Устанавливает количество отображаемых записей в разделе новостей * @return boolean */ public function setCountPrintRowsComments() { $count = 20; if (is_numeric($_POST['count']) && !empty($_POST['count'])) { $count = $_POST['count']; } MG::setOption('countPrintRowsComments', $count); return true; }
public static function preDownload($version) { $post = 'step=1' . '&sName=' . $_SERVER['SERVER_NAME'] . '&sIP=' . ($_SERVER['SERVER_ADDR'] == "::1" ? '127.0.0.1' : $_SERVER['SERVER_ADDR']) . '&sKey=' . MG::getOption('licenceKey') . '&ver=' . $version; $res = self::sendCurl(self::$_updataServer . '/updataserver', $post); try { $data = json_decode($res, true); } catch (Exception $exc) { $data['msg'] = $exc; $data['status'] = 'error'; } MG::setOption(array('option' => 'dateActivateKey ', 'value' => $data['dateActivateKey'])); if ('succes' == $data['status']) { $file = self::updataSystem($data['msg'], $version); if (!file_exists($file)) { $data['msg'] = 'Обновление не удалось!'; $data['status'] = 'error'; } } return $data; }
/** * Парсинг XML и импортв БД товаров. * @param $filename - путь к файлу архива с данными. */ public function processImportXml($filename) { $importOnlyNew = false; $sep = DIRECTORY_SEPARATOR; $dirname = dirname(__FILE__); $realDocumentRoot = str_replace($sep . 'mg-core' . $sep . 'controllers', '', $dirname); $lastPositionProduct = $_SESSION['lastCountProduct1cImport']; $lastPositionOffer = $_SESSION['lastCountOffer1cImport']; $xml = $this->getImportXml($filename); if ($xml && $filename == 'import.xml') { foreach ($xml->Каталог->attributes() as $key => $val) { if ($key == 'СодержитТолькоИзменения' && $val == "true") { $importOnlyNew = true; } } if (isset($xml->Каталог->СодержитТолькоИзменения)) { $importOnlyNew = $xml->Каталог->СодержитТолькоИзменения[0] == 'true' ? true : false; } if (empty($lastPositionProduct) && $importOnlyNew == false) { // если установлена директива CLEAR_CATALOG = 1 в config.ini, то удаляем товары перед синхронизацией с 1с if (CLEAR_1С_CATALOG != 'CLEAR_1С_CATALOG' && CLEAR_1С_CATALOG != 0) { DB::query('DELETE FROM `' . PREFIX . 'product` WHERE 1'); DB::query('DELETE FROM `' . PREFIX . 'category` WHERE 1'); DB::query('DELETE FROM `' . PREFIX . 'product_variant` WHERE 1'); } } $category = $this->groupsGreate($xml->Классификатор, $category, 0); $this->propertyСreate($xml->Классификатор->Свойства); $model = new Models_Product(); $currentPosition = 0; $upload = new Upload(false); $widthPreview = MG::getSetting('widthPreview') ? MG::getSetting('widthPreview') : 200; $widthSmallPreview = MG::getSetting('widthSmallPreview') ? MG::getSetting('widthSmallPreview') : 50; $heightPreview = MG::getSetting('heightPreview') ? MG::getSetting('heightPreview') : 100; $heightSmallPreview = MG::getSetting('heightSmallPreview') ? MG::getSetting('heightSmallPreview') : 50; foreach ($xml->Каталог->Товары[0] as $item) { $currentPosition++; if ($currentPosition <= $lastPositionProduct) { continue; } // Добавляем изображение товара в папку uploads $imageUrl = array(); $realImgPath = array(); if (isset($item->Картинка)) { foreach ($item->Картинка as $img) { $path = 'tempcml' . $sep . $img; $realImgPath[] = $path; $image = basename($img); $imageUrl[] = $image; } } $imageUrl = implode($imageUrl, "|"); $id = (string) $item->Группы->Ид[0]; $name = (string) $item->Наименование[0]; $description = ''; $desExist = false; if (isset($item->Описание)) { $description = nl2br((string) $item->Описание[0], true); $desExist = true; } foreach ($item->ЗначенияРеквизитов->ЗначениеРеквизита as $row) { if ($row->Наименование == 'Полное наименование') { // если в файле нет специального тега с описанием, то берем из полного наименования if (!$desExist) { $description = (string) $row->Значение ? (string) $row->Значение : $description; $description = nl2br($description, true); } else { // иначе полное наименование подставляем в title товара $name = (string) $row->Значение ? (string) $row->Значение : $name; } } } $code = !empty($item->Артикул[0]) ? $item->Артикул[0] : $item->ШтрихКод[0]; $id_1c = (string) $item->Ид[0]; $dataProd = array('title' => $name, 'url' => str_replace('\\', '-', URL::prepareUrl(MG::translitIt($name), true)), 'code' => $code, 'price' => 0, 'description' => $description, 'old_price' => '', 'image_url' => $imageUrl, 'count' => 0, 'cat_id' => $category[$id]['category_id'], 'meta_title' => $name, 'meta_keywords' => $name, 'meta_desc' => MG::textMore($description, 157), 'recommend' => 0, 'activity' => 1, 'new' => 0, 'related' => '', 'inside_cat' => '', '1c_id' => $id_1c, 'weight' => '0'); if ($importOnlyNew) { unset($dataProd['description']); unset($dataProd['image_url']); unset($dataProd['meta_title']); unset($dataProd['meta_keywords']); unset($dataProd['recommend']); unset($dataProd['activity']); unset($dataProd['new']); unset($dataProd['related']); unset($dataProd['inside_cat']); unset($dataProd['weight']); } $res = DB::query('SELECT * FROM ' . PREFIX . 'product WHERE `1c_id`=' . DB::quote($id_1c)); if ($row = DB::fetchAssoc($res)) { DB::query(' UPDATE `' . PREFIX . 'product` SET ' . DB::buildPartQuery($dataProd) . ' WHERE `1c_id`=' . DB::quote($id_1c)); $productId = $row['id']; } else { $newProd = $model->addProduct($dataProd); $productId = $newProd['id']; } $arImgPath = explode('/', $realImgPath[0]); array_pop($arImgPath); $path = implode($sep, $arImgPath); $imageUrl = explode('|', $imageUrl); $dir = floor($productId / 100) . '00'; if (!empty($realImgPath)) { foreach ($realImgPath as $cell => $image) { if (!empty($image) && is_file($image)) { $upload->_reSizeImage('70_' . $imageUrl[$cell], $realDocumentRoot . $sep . $image, $widthPreview, $heightPreview, 'PROPORTIONAL', 'uploads' . $sep . $addPath . 'thumbs' . $sep); $upload->_reSizeImage('30_' . $imageUrl[$cell], $realDocumentRoot . $sep . $image, $widthSmallPreview, $heightSmallPreview, 'PROPORTIONAL', 'uploads/' . $addPath . 'thumbs/'); } } $model->movingProductImage($imageUrl, $productId, $path); } // Привязываем свойства. if (isset($item->ЗначенияСвойств)) { foreach ($item->ЗначенияСвойств->ЗначенияСвойства as $prop) { $propVal = ''; $tempProp = '' . $prop->Значение[0]; if (!empty($_SESSION['variant_value'][$tempProp])) { $propVal = $_SESSION['variant_value'][$tempProp]; } if (empty($propVal)) { $propVal = ''; $idVal = '' . $prop->ИдЗначения; if (!empty($_SESSION['variant_value'][$idVal])) { $propVal = $_SESSION['variant_value'][$idVal]; } } $this->propertyConnect($id_1c, $prop->Ид, $propVal, $category[$id]['category_id']); } } $execTime = microtime(true) - $this->startTime; if ($execTime + 1 >= $this->maxExecTime) { header("Content-type: text/xml; charset=utf-8"); echo ""; echo "progress\r\n"; echo "Выгружено товаров: {$currentPosition}"; $_SESSION['lastCountProduct1cImport'] = $currentPosition; exit; } } if ($this->unlinkFile) { unlink($realDocumentRoot . '/tempcml/' . $filename); } $_SESSION['lastCountProduct1cImport'] = 0; } elseif ($xml && $filename == 'offers.xml') { $currentPosition = 0; $model = new Models_Product(); $currencyRate = MG::getSetting('currencyRate'); $currencyShort = MG::getSetting('currencyShort'); foreach ($xml->ПакетПредложений[0]->Предложения[0] as $item) { $currentPosition++; if ($currentPosition <= $lastPositionOffer) { continue; } $id = (string) $item->Ид[0]; $price = (string) $item->Цены->Цена->ЦенаЗаЕдиницу[0]; $iso = $this->getIsoByCode((string) $item->Цены->Цена->Валюта[0]); if ($iso == 'NULL') { $iso = substr(MG::translitIt((string) $item->Цены->Цена->Валюта[0]), 0, 3); } $count = (string) $item->Количество[0]; // если валюта товара не задана ранее в магазине, то добавим ее. (Курс нужно будет установить вручную в настройках) $currency = array(); if (empty($currencyRate[$iso])) { $currency['iso'] = htmlspecialchars($iso); $currency['short'] = $currency['iso']; $currency['rate'] = 1; $currencyRate[$currency['iso']] = $currency['rate']; $currencyShort[$currency['iso']] = $currency['short']; MG::setOption(array('option' => 'currencyRate', 'value' => addslashes(serialize($currencyRate)))); MG::setOption(array('option' => 'currencyShort', 'value' => addslashes(serialize($currencyShort)))); } $partProd = array('price' => $price, 'count' => $count < 0 ? 0 : $count, 'currency_iso' => $iso); // проверяем, вдруг это предложение является вариантом для товара $ids1c = explode('#', (string) $item->Ид[0]); $variantId = ''; // если id варианта не найден if (empty($ids1c[1])) { // просто товар, не вариант DB::query(' UPDATE `' . PREFIX . 'product` SET ' . DB::buildPartQuery($partProd) . ' , `price_course` = ROUND(' . DB::quote($price * $currencyRate[$iso], TRUE) . ',2) WHERE 1c_id = ' . DB::quote($ids1c[0]) . ' '); } else { // если товарное предложение является вариантом для продукта $productId = ''; $variantId = $ids1c[1]; $variant = array(); $dbRes = DB::query(' SELECT id FROM `' . PREFIX . 'product` WHERE 1c_id = ' . DB::quote($ids1c[0]) . ' '); if ($row = DB::fetchArray($dbRes)) { $productId = $row['id']; $name = array(); foreach ($item->ХарактеристикиТовара->ХарактеристикаТовара as $prop) { $name[] = $prop->Значение; } $name = implode(', ', $name); $titleVariant = $name; $variant = array('title_variant' => $titleVariant, 'code' => $item->Артикул[0], 'price' => $price, 'old_price' => '', 'image' => '', 'count' => $count < 0 ? 0 : $count, '1c_id' => $variantId, 'weight' => '0', 'activity' => 1, 'currency_iso' => $iso); // ****** // ищем варианты для этого товара $dbRes = DB::query(' SELECT id FROM `' . PREFIX . 'product_variant` WHERE product_id = ' . DB::quote($productId) . ' '); // если еще ни одного небыло, то создаем и обновляем в таблице product значения по первому варианту if ($row != DB::fetchArray($dbRes)) { DB::query(' UPDATE `' . PREFIX . 'product` SET ' . DB::buildPartQuery($partProd) . ' , `price_course` = ROUND(' . DB::quote($price * $currencyRate[$iso], TRUE) . ',2) WHERE 1c_id = ' . DB::quote($ids1c[0]) . ' '); } // ****** // проверяем, импортирован ли ранее этот вариант $dbRes = DB::query(' SELECT id FROM `' . PREFIX . 'product_variant` WHERE 1c_id = ' . DB::quote($ids1c[1]) . ' '); // если еще нет, то получаем массив всех имеющихся вариантов по этому продукту, // добавляем к нему новый вариант и обновляем массив вариантов стандартными средствами if (!($row = DB::fetchArray($dbRes))) { $arrVariants = array(); $res = DB::query(' SELECT pv.* FROM `' . PREFIX . 'product_variant` pv WHERE pv.product_id = ' . DB::quote($productId) . ' ORDER BY sort '); if (!empty($res)) { while ($var = DB::fetchAssoc($res)) { $arrVariants[$var['id']] = $var; } } $variant['price_course'] = round($price * $currencyRate[$iso], 2); $arrVariants[] = $variant; $model->saveVariants($arrVariants, $productId); } else { // обновить вариант DB::query(' UPDATE `' . PREFIX . 'product_variant` SET ' . DB::buildPartQuery($variant) . ',`price_course` = ROUND(' . DB::quote($price * $currencyRate[$iso], TRUE) . ',2) WHERE 1c_id = ' . DB::quote($ids1c[0]) . ' '); } } } $execTime = microtime(true) - $this->startTime; if ($execTime + 1 >= $this->maxExecTime) { header("Content-type: text/xml; charset=utf-8"); echo ""; echo "progress\r\n"; echo "Выгружено предложений: {$currentPosition}"; $_SESSION['lastCountOffer1cImport'] = $currentPosition; exit; } } if ($this->unlinkFile) { unlink($realDocumentRoot . '/tempcml/' . $filename); } $_SESSION['lastCountOffer1cImport'] = 0; Storage::clear(); } else { echo "Ошибка загрузки XML\n"; foreach (libxml_get_errors() as $error) { echo "\t", $error->message; exit; } } }
/** * Устанавливает значение для опции (настройки). * @param array $data - может содержать значения для полей таблицы. * <code> * $data = array( * option => 'идентификатор опции например: sitename' * value => 'значение опции например: moguta.ru' * active => 'в будущем будет отвечать за автоподгрузку опций в кеш Y/N' * name => 'Метка для опции например: Имя сайта' * desc => 'Описание опции: Настройа задает имя для сайта' * ) * </code> * @return void */ function setOption($data) { // Если функция вызвана вот так: setOption('option', 'value'); if (func_num_args() == 2) { $arg = func_get_args(); $data = array(); $data['option'] = $arg[0]; $data['value'] = $arg[1]; } MG::setOption($data); }
/** * Сохраняет опции плагина * @return boolean */ public function saveBaseOption() { $this->messageSucces = $this->lang['SAVE_BASE']; $this->messageError = $this->lang['NOT_SAVE_BASE']; if (!empty($_POST['data'])) { MG::setOption(array('option' => 'preview-photo-option', 'value' => addslashes(serialize($_POST['data'])))); } return true; }
public static function checkPluginsUpdate($plugins = array()) { if (empty($plugins)) { foreach (self::$pluginsInfo as $plugin) { if (preg_match('/\\d(.\\d(.\\d)?)?/', $plugin['Version'], $version)) { $plugins[$plugin['folderName']] = $version[0]; } } } if (!empty($plugins)) { $post = 'check=y&plugins=' . serialize($plugins); $curlRes = self::sendCurl(self::$_updateServer . '/updateplugin', $post); if ($curlRes) { $curlData = self::stdToArray(json_decode($curlRes)); MG::setOption('pluginsVersionInfo', addslashes(serialize($curlData))); } else { return false; } } return true; }
static function createDataComments() { $sql = "\n \t\t CREATE TABLE IF NOT EXISTS `" . PREFIX . "comments` (\n \t\t\t`id` INT AUTO_INCREMENT NOT NULL,\n `name` VARCHAR(45) NOT NULL,\n `email` VARCHAR(45) NOT NULL,\n `comment` TEXT NoT NULL,\n `date` TIMESTAMP NOT NULL,\n `uri` VARCHAR(255) NOT NULL,\n `approved` TINYINT NOT NULL DEFAULT 0, \n PRIMARY KEY(`id`)\n \t\t\t) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; DB::query($sql); MG::setOption('countPrintRowsComments', 5); }
/** * Устанавливает количество отображаемых записей в разделе новостей * @return boolean */ public function setCountPrintRowsNews() { $count = 20; if (is_numeric($_POST['count']) && !empty($_POST['count'])) { $count = $_POST['count']; } MG::setOption(array('option' => 'countPrintRowsNews ', 'value' => $count)); return true; }
/** * Устанавливает количество отображаемых записей в разделе новостей * @return boolean */ public function setCountPrintRowsComments() { USER::AccessOnly('1,4', 'exit()'); $count = 20; if (is_numeric($_POST['count']) && !empty($_POST['count'])) { $count = $_POST['count']; } MG::setOption(array('option' => 'countPrintRowsComments', 'value' => $count)); return true; }
/** * Сохраняет реквизиты в настройках заказа. * @return boolean */ public function savePropertyOrder() { $this->messageSucces = "Настройки сохранены"; $this->messageError = "Неудалось сохранить настройки"; $propertyOrder = serialize($_POST); $propertyOrder = addslashes($propertyOrder); MG::setOption(array('option' => 'propertyOrder', 'value' => $propertyOrder)); return true; }