Example #1
0
 /**
  * Производит  sql запрос и устанавливает параметры.
  * @param type $sql - запрос к базе
  * @param type $numberPage - номер запрашиваемой страницы
  * @param type $countRecord - количество выводимых записаей на одной странице
  * @param type $linkCount - количесво выводимых ссылок в педжере
  * @param type $viewAll - вывести все страницы
  * @param type $paramName - наименование гет переменной указывающей текущую страницу
  */
 public function __construct($sql, $numberPage, $countRecord = 20, $linkCount = 6, $viewAll = false, $paramName = "page")
 {
     // Инициализируем переменные класса
     $this->sql = $sql;
     $this->countRecord = $countRecord;
     $this->numberPage = $numberPage;
     $this->viewAll = $viewAll;
     $this->paramName = $paramName;
     //количество ссылок не может быть меньше двух
     $this->linkCount = $linkCount == 1 ? 2 : $linkCount;
     //$this->returnData = Storage::get(md5($sql.$numberPage));
     //if($this->returnData == null){
     // если не запроcе вывод всего списка записей
     if (!$this->viewAll) {
         //вычисляем данные для педжера
         $this->calcDataPage();
     }
     // выполняем запрос
     $res = DB::query($this->sql);
     // сохраняем все полученные записи
     while ($row = DB::fetchAssoc($res)) {
         $this->returnData[] = $row;
     }
     //  Storage::save(md5($sql.$numberPage),$this->returnData);
     //}
 }
Example #2
0
 static function getProduct($count)
 {
     $res = DB::query('SELECT
       DISTINCT p.id,
       CONCAT(c.parent_url,c.url) as category_url,
       p.url as product_url,
       p.*, v.views, pv.product_id as variant_exist
     FROM `' . PREFIX . self::$pluginName . '_visits` v
     INNER JOIN `' . PREFIX . 'product` p ON v.id_product = p.id
     LEFT JOIN `' . PREFIX . 'category` c
       ON c.id = p.cat_id
     LEFT JOIN `' . PREFIX . 'product_variant` pv
       ON p.id = pv.product_id
     LEFT JOIN (
       SELECT pv.product_id, SUM( pv.count ) AS varcount
       FROM  `' . PREFIX . 'product_variant` AS pv
       GROUP BY pv.product_id
     ) AS temp ON p.id = temp.product_id ORDER BY v.views DESC LIMIT ' . $count . '');
     if (DB::numRows($res) != 0) {
         while ($row = DB::fetchAssoc($res)) {
             if ($row['image_url']) {
                 $img = explode('|', $row['image_url']);
                 $row['image_url'] = $img[0];
             }
             $array[] = $row;
         }
         return $array;
     }
 }
Example #3
0
 /**
  * Выводит страницу настроек плагина в админке
  */
 static function pageSettingsPlugin()
 {
     $lang = self::$lang;
     $locale = self::$locale;
     $pluginName = self::$pluginName;
     //получаем опцию pozvonimOption в переменную option
     $option = MG::getSetting('pozvonimOption');
     if (!$option) {
         $option = addslashes(serialize(array()));
     }
     $option = stripslashes($option);
     $options = unserialize($option);
     $result = DB::query("SELECT `option`, `value`  FROM `" . PREFIX . "setting`  ");
     $settings = array();
     while ($row = DB::fetchAssoc($result)) {
         $settings[$row['option']] = $row['value'];
     }
     if (!isset($settings['shopPhone'])) {
         $settings['shopPhone'] = '';
     } else {
         $settings['shopPhone'] = '+' . preg_replace('/[^0-9]+/', '', trim($settings['shopPhone']));
     }
     self::preparePageSettings();
     include 'pageplugin.php';
 }
Example #4
0
 public function sendOrderToPayment()
 {
     $id = USER::getThis()->id;
     $data = array('noparnter' => true);
     $result = DB::query('
   SELECT *
   FROM `' . PREFIX . 'partner`
   WHERE `user_id` = ' . DB::quote($id));
     if ($row = DB::fetchAssoc($result)) {
         $data = $row;
         $sitename = MG::getSetting('sitename');
         $subj = 'Партнер #' . $row['id'] . ' на сайте ' . $sitename . ' хочет получить выплату';
         $msg = 'Партнер #' . $row['id'] . ' на сайте ' . $sitename . ' хочет получить выплату в размере <b>' . $_POST['summ'] . ' рублей.</b>        
     <br/> Воспользуйтесь <a href="' . SITE . '/mg-admin">панелью администрирования</a>, чтобы проверить информацию о партнере и его заработке.';
         //если ответил пользователь то письма отправляются админам
         $mails = explode(',', MG::getSetting('adminEmail'));
         // Отправка заявки админам
         foreach ($mails as $mail) {
             if (preg_match('/^[A-Za-z0-9._-]+@[A-Za-z0-9_-]+.([A-Za-z0-9_-][A-Za-z0-9_]+)$/', $mail)) {
                 Mailer::addHeaders(array("Reply-to" => $this->email));
                 Mailer::sendMimeMail(array('nameFrom' => USER::getThis()->sname . " " . USER::getThis()->name, 'emailFrom' => USER::getThis()->email, 'nameTo' => $sitename, 'emailTo' => $mail, 'subject' => $subj, 'body' => $msg, 'html' => true));
             }
         }
         //оповещение на мыло партнера
         Mailer::sendMimeMail(array('nameFrom' => $sitename, 'emailFrom' => "noreply@" . $sitename, 'nameTo' => USER::getThis()->sname . " " . USER::getThis()->name, 'emailTo' => USER::getThis()->email, 'subject' => 'Отправлена заявка на получение партнерской выплаты на сайте ' . $sitename, 'body' => 'Вами была отправлена заявка на получение партнерской выплаты на сайте ' . $sitename . ' в размере <b>' . $_POST['summ'] . ' рублей.</b>
           <br/>Пожалуйста, дождитесь пока мы свяжемся с Вами по электронной почте для учтонения способов перевода денежных средств.
           <br/>Данное письмо сформированно роботом, отвечать на него не надо.', 'html' => true));
     }
     return true;
 }
Example #5
0
 static function getNewGoods($count)
 {
     $res = DB::query('SELECT
       DISTINCT p.id,
       CONCAT(c.parent_url,c.url) as category_url,
       p.url as product_url,
       p.*, pv.product_id as variant_exist
     FROM `' . PREFIX . 'product` p
     LEFT JOIN `' . PREFIX . 'category` c
       ON c.id = p.cat_id
     LEFT JOIN `' . PREFIX . 'product_variant` pv
       ON p.id = pv.product_id
     LEFT JOIN (
       SELECT pv.product_id, SUM( pv.count ) AS varcount
       FROM  `' . PREFIX . 'product_variant` AS pv
       GROUP BY pv.product_id
     ) AS temp ON p.id = temp.product_id WHERE new = 1 LIMIT ' . $count . '');
     if (DB::numRows($res) != 0) {
         while ($row = DB::fetchAssoc($res)) {
             if ($row['image_url']) {
                 $img = explode('|', $row['image_url']);
                 $row['image_url'] = $img[0];
             }
             $array[] = $row;
         }
         return $array;
     }
 }
Example #6
0
 private function isIssetImg($id)
 {
     $res = DB::query("SELECT * FROM `" . PREFIX . $this->pluginName . "` WHERE id_cat = " . $id . "");
     $arr = DB::fetchAssoc($res);
     if (!empty($arr)) {
         return TRUE;
     }
 }
Example #7
0
 private function getCountSlide()
 {
     $sql = "SELECT count(id) as count FROM `" . PREFIX . $this->pluginName . "`";
     $res = DB::query($sql);
     if ($count = DB::fetchAssoc($res)) {
         return $count['count'] + 1;
     }
 }
Example #8
0
 /**
  * Получает текущий токен
  */
 static function getToken()
 {
     $token = "";
     $res = DB::query(" SELECT `value` FROM `" . PREFIX . "sms_setting` WHERE `id`= 2");
     if ($row = DB::fetchAssoc($res)) {
         $token = $row['value'];
     }
     return $token;
 }
Example #9
0
 static function getEntity()
 {
     $res = DB::query("\n\t\t\tSELECT * FROM `" . PREFIX . self::$pluginName . "` WHERE invisible = 1 ORDER BY `sort` ASC\n\t\t");
     if (DB::numRows($res) != 0) {
         while ($row = DB::fetchAssoc($res)) {
             $array[] = $row;
         }
         return $array;
     }
 }
Example #10
0
 static function getOption($name)
 {
     $res = DB::query("\n\t\t\tSELECT value FROM `" . PREFIX . self::$pluginName . "` WHERE `option` = '{$name}'\n\t\t");
     if (DB::numRows($res) != 0) {
         while ($row = DB::fetchAssoc($res)) {
             $array[] = $row;
         }
         return $array[0]['value'];
     }
 }
Example #11
0
 /**
  * Получает из БД запись рейтинга по id товара
  */
 static function getEntity($id)
 {
     $result = array();
     $sql = "SELECT * FROM `" . PREFIX . "product_" . self::$pluginName . "` WHERE `id_product` = " . $id . ";";
     $result = DB::query($sql);
     while ($row = DB::fetchAssoc($result)) {
         $array[] = $row;
     }
     return $array;
 }
Example #12
0
 private function getComments()
 {
     $result = array();
     // Если запрос был со стороны сайта выполняется первая ветка условия. Иначе - вторая.
     if (isset($_POST['showComments']) && isset($_POST['uri'])) {
         $uri = explode('/', $_POST['uri']);
         if (!empty($uri[1])) {
             unset($uri[0]);
             $uri = implode('/', $uri);
         } else {
             $uri = $uri[0];
         }
         // Запрос для генерации блока пагинации
         $sql = "\n\t\t\t\tSELECT id, name, comment, UNIX_TIMESTAMP(date) as date\n\t\t\t\tFROM `comments` \n\t\t\t\tWHERE uri = " . DB::quote($uri) . " AND approved = '1'\n\t\t\t\tORDER BY `id` DESC";
         $res = DB::query($sql);
         //Получаем блок пагинации
         if ($_POST["page"]) {
             $page = $_POST["page"];
         }
         //если был произведен запрос другой страницы, то присваиваем переменной новый индекс
         $navigator = new Navigator($sql, $page, MG::getOption('countPrintRowsComments'));
         //определяем класс
         $pagination = $navigator->getPager('forAjax');
         /* Получаем непосредственно комментарии.
            	 Если была запрошена не первая страница комментариев, выполняем вторую ветку условия.
            */
         if (empty($_POST['page'])) {
             $sql = "\n\t\t\t\tSELECT id, name, comment, UNIX_TIMESTAMP(date) as date\n\t\t\t\tFROM `comments` \n\t\t\t\tWHERE uri = " . DB::quote($uri) . " AND approved = '1'\n\t\t\t\tORDER BY `id` DESC\n\t\t\t\tLIMIT 0, " . MG::getOption('countPrintRowsComments');
             $res = DB::query($sql);
         } else {
             $start = ($_POST['page'] - 1) * MG::getOption('countPrintRowsComments');
             $amount = MG::getOption('countPrintRowsComments');
             $sql = "\n\t\t\t\tSELECT id, name, comment, UNIX_TIMESTAMP(date) as date\n\t\t\t\tFROM `comments` \n\t\t\t\tWHERE uri = " . DB::quote($uri) . " AND approved = '1'\n\t\t\t\tORDER BY `id` DESC\n\t\t\t\tLIMIT " . $start . ", " . $amount;
             $res = DB::query($sql);
         }
         while ($row = DB::fetchAssoc($res)) {
             $row['date'] = date('d.m.Y H:i', $row['date']);
             $result['comments'][] = $row;
         }
         $result['pagination'] = $pagination;
         echo json_encode($result);
         exit;
     } else {
         $sql = "\n\t\t\t\tSELECT id, name, comment, date\n\t\t\t\tFROM `comments`\n\t\t\t\tORDER BY date DESC";
         $res = DB::query($sql);
         while ($row = DB::fetchAssoc($res)) {
             $row['date'] = date('d.m.Y H:i', $row['date']);
             $result[$row['id']] = $row;
         }
         return $result;
     }
 }
Example #13
0
 static function getImgCat($id)
 {
     if (!empty($id)) {
         $res = DB::query("SELECT * FROM `" . PREFIX . self::$pluginName . "` WHERE `id_cat`=" . $id);
         if (DB::numRows($res) > 0) {
             $arr = DB::fetchAssoc($res);
             if (!empty($arr['img'])) {
                 return PLUGIN_DIR . self::$pluginName . '/img/' . $arr['img'];
             }
         }
     } else {
         echo 'Не указан обязательный атрибут id';
     }
 }
Example #14
0
 public function getEntity()
 {
     $res = DB::query('
   SELECT * 
   FROM `' . PREFIX . $this->pluginName . '`
   WHERE `id` = ' . DB::quote($_POST['id']) . ' ORDER BY sort ASC');
     if ($row = DB::fetchAssoc($res)) {
         $this->data = $row;
         return true;
     } else {
         return false;
     }
     return false;
 }
Example #15
0
 /**
  * Получает параметры способа доставки по его id.
  *
  * @param string $url запрашиваемой  категории.
  * @return array массив с данными о категории.
  *
  */
 public function getDeliveryById($id)
 {
     $result = array();
     $res = DB::query('
   SELECT *
   FROM `' . PREFIX . 'delivery`
   WHERE id = ' . DB::quote($id));
     if (!empty($res)) {
         if ($deliv = DB::fetchAssoc($res)) {
             $result = $deliv;
         }
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Example #16
0
 /**
  * Получаем запись из БД плагина, если существует запись к данному товару
  * @return массив, если существует, если нет то вызываем функцию добавления.
  */
 public function getEntity()
 {
     $this->addCookie($_POST['id_product']);
     $res = DB::query('
   SELECT * 
   FROM `' . PREFIX . "product_" . $this->pluginName . '`
   WHERE `id_product` = ' . DB::quote($_POST['id_product']));
     if ($row = DB::fetchAssoc($res)) {
         $this->updateEntity(array('id' => $row['id'], 'id_product' => $row['id_product'], 'rating' => $row['rating'] + $_POST['rating'], 'count' => $row['count'] + $_POST['count']));
     } else {
         $this->addEntity(array('id_product' => $_POST['id_product'], 'rating' => $_POST['rating'], 'count' => $_POST['count']));
     }
     $result = DB::query('
   SELECT * 
   FROM `' . PREFIX . "product_" . $this->pluginName . '`
   WHERE `id_product` = ' . DB::quote($_POST['id_product']));
     if ($row = DB::fetchAssoc($result)) {
         $this->data['row'] = $row;
         return true;
     }
     return false;
 }
Example #17
0
 /**
  * Полученнияе статистики заказов за выбранный период. 
  * @param $dateFrom дата "от".
  * @param $dateTo дата "До".
  * @return array
  */
 public function getStatisticPeriod($dateFrom, $dateTo)
 {
     $dateFromRes = $dateFrom;
     $dateToRes = $dateTo;
     $dateFrom = date('Y-m-d', strtotime($dateFrom));
     $dateTo = date('Y-m-d', strtotime($dateTo));
     $period = "AND `add_date` >= " . DB::quote($dateFrom) . "\r\n       AND `add_date` <= " . DB::quote($dateTo);
     // Количество закрытых заказов всего.
     $ordersCount = $this->getOrderCount('WHERE status_id = 5 ' . $period);
     $noclosed = $this->getOrderCount('WHERE status_id <> 5 ' . $period);
     // Cумма заработанная за все время работы магазина.
     $res = DB::query("\r\n      SELECT sum(summ) as 'summ'  FROM `" . PREFIX . "order`\r\n      WHERE status_id = 5 " . $period);
     if ($row = DB::fetchAssoc($res)) {
         $summ = $row['summ'];
     }
     $product = new Models_Product();
     $productsCount = $product->getProductsCount();
     $res = DB::query("SELECT id  FROM `" . PREFIX . "user`");
     $usersCount = DB::numRows($res);
     $result = array('from_date_stat' => $dateFromRes, 'to_date_stat' => $dateToRes, "orders" => $ordersCount ? $ordersCount : "0", "noclosed" => $noclosed ? $noclosed : "0", "summ" => $summ ? $summ : "0", "users" => $usersCount ? $usersCount : "0", "products" => $productsCount ? $productsCount : "0");
     return $result;
 }
Example #18
0
 /**
  * Создает свойства продукта
  * @param type $key = Название характеристики
  * @param type $value = Значание
  * @param type $categoryId = Категория
  * @param type $productId = Продукт
  * @return type
  */
 function createProperty($key, $value, $categoryId, $productId)
 {
     if (empty($key)) {
         return false;
     }
     // 0. Очистим продукт от всех ранее имеющихся свойств
     $propertyId = '';
     // 1. Проверяем, существует такая характеристика у данной категории?
     $res = DB::query('SELECT * 
     FROM `' . PREFIX . 'property`
     LEFT JOIN `' . PREFIX . 'category_user_property` as `cup`
        ON `cup`.`property_id`=`' . PREFIX . 'property`.`id` 
     WHERE `name` = ' . DB::quote($key));
     $row = DB::fetchAssoc($res);
     if (empty($row)) {
         // если нет характеристики до создадим ее
         DB::query('
    INSERT INTO `' . PREFIX . 'property`
      (`name`, `type`,  `activity`)
    VALUES (' . DB::quote($key) . ',"string",1)');
         $propertyId = DB::insertId();
         // установка  сортировки
         DB::query('UPDATE `' . PREFIX . 'property`
     SET `sort` = ' . DB::quote($propertyId) . '
     WHERE `id` = ' . DB::quote($propertyId));
     } else {
         // если найдена уже характеристика, получаем ее id
         $propertyId = $row['id'];
         // добавляем привязку, если ее небыло раньше, для действующей категории
         $res = DB::query('
    SELECT * 
    FROM `' . PREFIX . 'category_user_property` 
    WHERE `property_id` = ' . DB::quote($propertyId) . ' 
      AND `category_id` = ' . DB::quote($categoryId));
         $rowCup = DB::fetchAssoc($res);
         if (empty($rowCup)) {
             DB::query('
      INSERT INTO `' . PREFIX . 'category_user_property`
       (`category_id`, `property_id`)
      VALUES (' . DB::quote($categoryId) . ',' . DB::quote($propertyId) . ')');
         }
     }
     // 2. Привязываем к продукту
     $res = DB::query('
  SELECT * 
  FROM `' . PREFIX . 'product_user_property` 
  WHERE `property_id` = ' . DB::quote($propertyId) . '
    AND `product_id` = ' . DB::quote($productId));
     $row = DB::fetchAssoc($res);
     if (empty($row)) {
         DB::query('
     INSERT INTO `' . PREFIX . 'product_user_property`
      (`product_id`, `property_id`, `value`)
     VALUES (' . DB::quote($productId) . ',' . DB::quote($propertyId) . ',' . DB::quote($value) . ')');
     } else {
         DB::query('
     UPDATE `' . PREFIX . 'product_user_property`
     SET `value` = ' . DB::quote($value) . '
     WHERE `product_id` = ' . DB::quote($productId) . '
       AND `property_id` = ' . DB::quote($propertyId));
     }
     // 3. Привязываем к категории
     $res = DB::query('
  SELECT * 
  FROM `' . PREFIX . 'category_user_property` 
  WHERE `property_id` = ' . DB::quote($propertyId));
     $row = DB::fetchAssoc($res);
     if (empty($row)) {
         // если нет характеристики до создадим ее
         DB::query('
  INSERT INTO `' . PREFIX . 'category_user_property`
   (`category_id`, `property_id`)
  VALUES (' . DB::quote($categoryId) . ',' . DB::quote($propertyId) . ')');
     }
 }
Example #19
0
 /**
  * Вычисляет общую стоимость содержимого, а также количество.
  * @return array массив с данными о количестве и цене.
  */
 public static function getCartData()
 {
     $modelCart = new Models_Cart();
     // Количество вещей в корзине.
     $res['cart_count'] = 0;
     // Общая стоимость.
     $res['cart_price'] = 0;
     // Если удалось получить данные из куков и они успешно десериализованы в $_SESSION['cart'].
     //self::getCokieCart() &&
     if (!empty($_SESSION['cart'])) {
         $settings = MG::get('settings');
         $totalPrice = 0;
         $totalCount = 0;
         if (!empty($_SESSION['cart'])) {
             $itemIds = array();
             $variantsId = array();
             foreach ($_SESSION['cart'] as $key => $item) {
                 if (!empty($item['id'])) {
                     if (!empty($item['variantId'])) {
                         $variantsId[] = $item['variantId'];
                     }
                     $itemIds[] = $item['id'];
                 }
             }
             if (!empty($itemIds)) {
                 // Пробегаем по содержимому.
                 $idsPr = implode(',', array_unique($itemIds));
                 $where = ' IN (' . trim(DB::quote($idsPr), "'") . ')';
             }
         } else {
             $where = ' IN (0)';
         }
         // Пробегаем по содержимому.
         //   $where = ' IN ('.trim(DB::quote(implode(',',$itemIds)),"'").')';
         $result = DB::query('
       SELECT CONCAT(c.parent_url,c.url) AS category_url, p.url AS product_url, p.*, rate,
       (p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`, p.currency_iso
       FROM `' . PREFIX . 'product` AS p
       LEFT JOIN `' . PREFIX . 'category` AS c ON c.id = p.cat_id
       WHERE p.id ' . $where);
         $array_variants = array();
         if (!empty($variantsId)) {
             $ids = implode(',', $variantsId);
             $variants_res = DB::query('SELECT  pv.*, c.rate,(pv.price_course + pv.price_course *(IFNULL(c.rate,0))) as `price_course`,
       p.currency_iso
       FROM `' . PREFIX . 'product_variant` pv   
       LEFT JOIN `' . PREFIX . 'product` as p ON 
         p.id = pv.product_id
       LEFT JOIN `' . PREFIX . 'category` as c ON 
         c.id = p.cat_id       
       WHERE pv.id IN (' . trim(DB::quote($ids, true)) . ')');
             while ($variant_row = DB::fetchAssoc($variants_res)) {
                 $array_variants[$variant_row['id']] = $variant_row;
             }
         }
         $currencyRate = MG::getSetting('currencyRate');
         $currencyShopIso = MG::getSetting('currencyShopIso');
         $products_row = array();
         while ($prod = DB::fetchAssoc($result)) {
             $products_row[$prod['id']] = $prod;
         }
         foreach ($_SESSION['cart'] as $key => $item) {
             $variant = null;
             $row = $products_row[$item['id']];
             $arrayImages = explode("|", $row['image_url']);
             if (!empty($item['variantId'])) {
                 $variant = $array_variants[$item['variantId']];
                 $image = $variant['image'] ? $variant['image'] : $arrayImages[0];
                 $row['price'] = $variant['price'];
                 $row['code'] = $variant['code'];
                 $row['count'] = $variant['count'];
                 $row['image_url'] = $variant['image'] ? $variant['image'] : $row['image_url'];
                 $row['image_url_new'] = mgImageProductPath($image, $item['id'], 'small');
                 $row['weight'] = $variant['weight'];
                 $row['title'] = $row['title'] . " " . $variant['title_variant'];
                 $row['variantId'] = $variant['id'];
                 $row['price_course'] = $variant['price_course'];
             }
             $price = $row['price_course'];
             if ($item['id'] == $row['id']) {
                 $count = $item['count'];
                 $row['countInCart'] = $count;
                 $row['property_html'] = htmlspecialchars_decode(str_replace('&amp;', '&', $item['property']));
                 $price = self::plusPropertyMargin($price, $item['propertyReal'], $currencyRate[$row['currency_iso']]);
                 $row['property'] = $item['propertySetId'];
                 $priceWithCoupon = $modelCart->applyCoupon($_SESSION['couponCode'], $price, $row);
                 //$row['currency_iso'] = $row['currency_iso']?$row['currency_iso']:$currencyShopIso;
                 //$price *= $currencyRate[$row['currency_iso']];
                 $priceWithDiscount = $modelCart->applyDiscountSystem($price);
                 //$price = $priceWithCoupon < $priceWithDiscount['price'] ? $priceWithCoupon : $priceWithDiscount['price'];
                 $price = $modelCart->customPrice(array('product' => $row, 'priceWithCoupon' => $priceWithCoupon, 'priceWithDiscount' => $priceWithDiscount['price']));
                 // если выбран формат без копеек, то округляем стоимость до ворматирования.
                 if (in_array(MG::getSetting('priceFormat'), array('1234', '1 234', '1,234'))) {
                     $price = round($price);
                 }
                 $row['priceInCart'] = MG::priceCourse($price * $count) . " " . $settings['currency'];
                 if (!empty($arrayImages)) {
                     $row['image_url'] = $arrayImages[0];
                     $row['image_url_new'] = mgImageProductPath($arrayImages[0], $item['id'], 'small');
                 }
                 $row['category_url'] = SHORT_LINK == '1' ? '' : $row['category_url'] . '/';
                 $row['price'] = $price;
                 $res['dataCart'][] = $row;
                 $totalPrice += $price * $count;
                 $totalCount += $count;
                 $itemIds[] = $item['id'];
             }
         }
         $res['cart_price_wc'] = MG::priceCourse($totalPrice) . " " . $settings['currency'];
         $res['cart_count'] = $totalCount;
         $res['cart_price'] = MG::priceCourse($totalPrice);
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $res, $args);
 }
Example #20
0
 public function getCommentById()
 {
     $res = DB::query("SELECT * FROM `" . PREFIX . "comments` WHERE id = " . DB::quote($_POST['id']));
     $this->data = DB::fetchAssoc($res);
     return true;
 }
Example #21
0
 /**
  * Получает параметры заказа
  */
 public function getOrderData()
 {
     $model = new Models_Order();
     $orderData = $model->getOrder(" id = " . DB::quote($_POST['id']));
     $orderData = $orderData[$_POST['id']];
     if ($orderData['number'] == '') {
         $orderData['number'] = $orderData['id'];
         DB::query("UPDATE `" . PREFIX . "order` SET `number`= " . DB::quote($orderData['number']) . " WHERE `id`=" . DB::quote($orderData['id']) . "");
     }
     $orderData['yur_info'] = unserialize(stripslashes($orderData['yur_info']));
     $orderData['order_content'] = unserialize(stripslashes($orderData['order_content']));
     // Запрос для проверки, существует ли система скидок
     $percent = false;
     $discountSyst = false;
     $res = DB::query('SELECT * FROM `' . PREFIX . 'plugins` WHERE `folderName` = "discount-system"');
     $act = DB::fetchArray($res);
     $result = DB::query('SHOW TABLES LIKE "' . PREFIX . 'discount-system%"');
     if (DB::numRows($result) == 2 && $act['active']) {
         $percent = 0;
         $discountSyst = true;
     }
     if (!empty($orderData['order_content'])) {
         $product = new Models_Product();
         foreach ($orderData['order_content'] as &$item) {
             foreach ($item as &$v) {
                 $v = rawurldecode($v);
             }
         }
         foreach ($orderData['order_content'] as &$items) {
             $res = $product->getProduct($items['id']);
             $items['image_url'] = $res['image_url'];
             $items['property'] = htmlspecialchars_decode(str_replace('&amp;', '&', $items['property']));
             $response['discount'] = $items['discount'];
             $percent = $items['discount'];
             $items['maxCount'] = $res['count'];
             $variants = DB::query("SELECT `id`, `count` FROM `" . PREFIX . "product_variant`\n                  WHERE `product_id`=" . DB::quote($items['id']) . " AND `code`=" . DB::quote($items['code']));
             if ($variant = DB::fetchAssoc($variants)) {
                 $items['variant'] = $variant['id'];
                 $items['maxCount'] = $variant['count'];
             }
         }
     }
     //заменить на получение скидки
     $codes = array();
     // Запрос для проверки , существуют ли промокоды.
     $result = DB::query('SHOW TABLES LIKE "' . PREFIX . 'promo-code"');
     if (DB::numRows($result)) {
         $res = DB::query('SELECT * FROM `' . PREFIX . 'plugins` WHERE `folderName` = "promo-code"');
         $act = DB::fetchArray($res);
         if ($act['active']) {
             $res = DB::query('SELECT code, percent FROM `' . PREFIX . 'promo-code` 
       WHERE invisible = 1 
       AND now() >= `from_datetime`
       AND now() <= `to_datetime`');
             while ($code = DB::fetchAssoc($res)) {
                 $codes[] = $code['code'];
                 if ($code['code'] == $orderData['order_content'][0]['coupon']) {
                     $percent = $percent == 0 ? $code['percent'] : $percent;
                 }
             }
         }
     }
     $response['order'] = $orderData;
     $response['order']['discountsSystem'] = $discountSyst;
     $response['order']['discontPercent'] = $percent;
     $response['order']['promoCodes'] = $codes;
     $response['order']['date_delivery'] = $orderData['date_delivery'] ? date('d.m.Y', strtotime($orderData['date_delivery'])) : '';
     $deliveryArray = $model->getDeliveryMethod();
     $response['deliveryArray'] = $deliveryArray;
     $paymentArray = array();
     $i = 1;
     while ($payment = $model->getPaymentMethod($i)) {
         $paymentArray[$i] = $payment;
         $i++;
     }
     $response['paymentArray'] = $paymentArray;
     $this->data = $response;
     return true;
 }
Example #22
0
/**
 * Регистрация на сайте и в таблице uLogin
 * @param Array $u_user - данные о пользователе, полученные от uLogin
 * @param int $in_db - при значении 1 необходимо переписать данные в таблице uLogin
 * @return bool|int|Error
 */
function ulogin_registration_user($u_user, $in_db = 0)
{
    if (!isset($u_user['email'])) {
        die("Через данную форму выполнить вход/регистрацию невозможно. </br>" . "Сообщиете администратору сайта о следующей ошибке: </br></br>" . "Необходимо указать <b>email</b> в возвращаемых полях <b>uLogin</b>");
    }
    $u_user['network'] = isset($u_user['network']) ? $u_user['network'] : '';
    $u_user['phone'] = isset($u_user['phone']) ? $u_user['phone'] : '';
    // данные о пользователе есть в ulogin_table, но отсутствуют в Базе
    if ($in_db == 1) {
        DB::query("DELETE FROM " . PREFIX . "ulogin   WHERE `identity` = " . DB::quote($u_user['identity']));
    }
    $user_id = USER::getUserInfoByEmail($u_user['email']);
    $user_id = $user_id->id;
    // $check_m_user == true -> есть пользователь с таким email
    $check_m_user = $user_id > 0 ? true : false;
    $current_user = USER::isAuth() ? USER::getThis() : 0;
    // $isLoggedIn == true -> ползователь онлайн
    $isLoggedIn = isset($current_user->id) && $current_user->id > 0 ? true : false;
    if (!$check_m_user && !$isLoggedIn) {
        // отсутствует пользователь с таким email в базе -> регистрация
        $date = explode('.', $u_user['bdate']);
        $insert_user = array('pass' => md5(microtime(true)), 'email' => $u_user['email'], 'role' => 2, 'name' => $u_user['first_name'], 'sname' => $u_user['last_name'], 'address' => '', 'phone' => $u_user['phone'], 'birthday' => $date['2'] . '-' . $date['1'] . '-' . $date['0'], 'activity' => 1);
        $user_id = USER::add($insert_user);
        $user_id = DB::insertId();
        $userData = USER::getUserById($user_id);
        $res = DB::query("INSERT INTO " . PREFIX . "ulogin (user_id, identity, network)\n\t\tVALUES (" . DB::quote($user_id) . "," . DB::quote($u_user['identity']) . "," . DB::quote($u_user['network']) . ")");
        return $userData->id;
    } else {
        // существует пользователь с таким email или это текущий пользователь
        if (!isset($u_user["verified_email"]) || intval($u_user["verified_email"]) != 1) {
            die('<head></head><body><script src="//ulogin.ru/js/ulogin.js"  type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '")</script>' . "Электронный адрес данного аккаунта совпадает с электронным адресом существующего пользователя. <br>Требуется подтверждение на владение указанным email.</br></br>" . "Подтверждение аккаунта" . "</body>");
        }
        if (intval($u_user["verified_email"]) == 1) {
            $user_id = $isLoggedIn ? $current_user->id : $user_id;
            $other_u = DB::query("SELECT identity FROM " . PREFIX . "ulogin where `user_id` = " . DB::quote($user_id));
            $other_u = DB::fetchAssoc($other_u);
            if ($other_u) {
                if (!$isLoggedIn && !isset($u_user['merge_account'])) {
                    die('<head></head><body><script src="//ulogin.ru/js/ulogin.js"  type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '","' . $other_u['identity'] . '")</script>' . "С данным аккаунтом уже связаны данные из другой социальной сети. <br>Требуется привязка новой учётной записи социальной сети к этому аккаунту.<br/>" . "Синхронизация аккаунтов" . "</body>");
                }
            }
            DB::query("INSERT INTO " . PREFIX . "ulogin (user_id, identity, network)\n\t\t\tVALUES (" . DB::quote($user_id) . "," . DB::quote($u_user['identity']) . "," . DB::quote($u_user['network']) . ")");
            return $user_id;
        }
    }
    return false;
}
Example #23
0
    /**
     * Строит sql запрос для поиска всех id товаров удовлетворяющих фильтру по характеристикам
     *
     * @param array $properties  массив с ключами переданных массивов с характеристиками
     * @return array массив id товаров.
     */
    public function getProductIdByFilter($properties)
    {
        $result = array();
        $propertyData = Storage::get(md5('filterProperty' . $_REQUEST['category_id']));
        if ($propertyData == null) {
            $propertyData = $this->getPropertyData();
            Storage::save(md5('filterProperty' . $_REQUEST['category_id']), $propertyData);
        }
        $sql = '
			SELECT p.id
			FROM `' . PREFIX . 'product` as p';
        foreach ($properties as $id => $property) {
            if (empty($id) || !is_numeric($id)) {
                continue;
            }
            // если указан параметр по умолчанию из выпадающего спи ска "не выбрано"
            if (count($property) === 1 && empty($property[0])) {
                continue;
            }
            if ($property[0] == "slider") {
                if (empty($property[1]) || empty($property[2])) {
                    continue;
                }
                $arVal = array_unique(explode('|', trim($propertyData[$id]['allValue'], '|')));
                $min = (double) $arVal[0];
                // Максимальное значение (назначим 1 значение самым маленьким)
                $max = (double) $arVal[0];
                // Минимальное значение  (назначим 1 значение самым большим)
                foreach ($arVal as $value) {
                    if (!empty($value)) {
                        // Проверми,является ли значение числом
                        if (is_numeric($value)) {
                            // Ищем мин и максимальные значения
                            if ($max < $value) {
                                $max = $value;
                            } else {
                                if ($min > $value) {
                                    $min = $value;
                                }
                            }
                        }
                    }
                }
                if ($property[1] == $min && $property[2] == $max) {
                    continue;
                }
            }
            $sql .= ' JOIN `' . PREFIX . 'product_user_property` as pup' . $id . ' ON ';
            foreach ($property as $cnt => $value) {
                //Если мы уже составляли условие для слайдера, то пропускаем шаг. #ДОБАВЛЕНО
                if ($property[0] == "slider" && $cnt > 0) {
                    continue;
                }
                $value = str_replace('+', '[[.plus-sign.]]', $value);
                $value = str_replace('*', '[[.asterisk.]]', $value);
                $value = str_replace('(', '[[.left-parenthesis.]]', $value);
                $value = str_replace(')', '[[.right-parenthesis.]]', $value);
                $value = str_replace('?', '[[.question-mark.]]', $value);
                $sql .= '(pup' . $id . '.product_id = p.id AND ';
                $sql .= '((pup' . $id . '.property_id = ' . DB::quote($id) . ') AND ';
                //Проверяем, выводится ли тип характеристика слайдером. #ДОБАВЛЕНО
                if ($property[0] == "slider") {
                    $sql .= '(pup' . $id . '.value BETWEEN ' . $property[1] . ' AND ' . $property[2] . ' OR pup' . $id . '.value = \'\'))) OR ';
                    continue;
                }
                $sql .= '(LCASE(concat("|",pup' . $id . '.value,"|"))  REGEXP LCASE("[[.vertical-line.]]' . DB::quote(htmlspecialchars_decode($value), true) . '(#.*#)?[[.vertical-line.]]")))) OR ';
            }
            $sql = substr($sql, 0, -4);
        }
        $res = DB::query($sql);
        while ($row = DB::fetchAssoc($res)) {
            $result[] = $row['id'];
        }
        $pIds = implode(',', $result);
        if (!empty($pIds)) {
            $sql = '
        SELECT  pup.property_id, pup.value
        FROM `' . PREFIX . 'product_user_property` as pup
        WHERE pup.product_id IN (' . DB::quote($pIds, 1) . ')
       ';
            $res = DB::query($sql);
            while ($row = DB::fetchAssoc($res)) {
                if ($row['value']) {
                    $partVal = explode('|', $row['value']);
                    foreach ($partVal as $value) {
                        $this->accessValues[$row['property_id']][$value] = preg_replace('~(#.*#)~', '', $value);
                    }
                }
            }
        }
        return $result;
    }
Example #24
0
 /**
  * Обновляет пользователя учетную запись пользователя.
  * @param $id - id пользователя.
  * @param $data - массив значений для вставки  в БД [Поле => Значение].
  * @param $authRewrite - false = перезапишет данные в сессии детущего пользователя, на полученные у $data.
  * @return void
  */
 public static function update($id, $data, $authRewrite = false)
 {
     $userInfo = USER::getUserById($id);
     foreach ($data as $k => $v) {
         if ($k !== 'pass') {
             $v = htmlspecialchars_decode($v);
             $data[$k] = htmlspecialchars($v);
         }
     }
     //только если пытаемся разжаловать админа, проверяем,
     // не является ли он последним админом
     // Без админов никак незя!
     if ($userInfo->role == '1' && $data['role'] != '1') {
         $countAdmin = DB::query('
  SELECT count(id) as "count"
   FROM `' . PREFIX . 'user`    
   WHERE role = 1
 ');
         if ($row = DB::fetchAssoc($countAdmin)) {
             if ($row['count'] == 1) {
                 // остался один админ
                 $data['role'] = 1;
                 // не даем разжаловать админа, уж лучше плохой чем никакого :-)
             }
         }
     }
     DB::query('
  UPDATE `' . PREFIX . 'user`
  SET ' . DB::buildPartQuery($data) . '
  WHERE id = ' . DB::quote($id));
     if (!$authRewrite) {
         foreach ($data as $k => $v) {
             self::$_instance->auth->{$k} = $v;
         }
         $_SESSION['user'] = self::$_instance->auth;
     }
     return true;
 }
Example #25
0
    /**
     * Выгружает содержание всего каталога в CSV файл
     * @return array
     */
    public function exportToYml($listProductId = array())
    {
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream;");
        header("Content-Type: application/download");
        header("Content-Disposition: attachment;filename=data.xml");
        header("Content-Transfer-Encoding: binary ");
        $currencyShopIso = MG::getSetting('currencyShopIso');
        $currencyRate = MG::getSetting('currencyRate');
        $currencyRate = $currencyRate[$currencyShopIso];
        $nXML = '<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">';
        $xml = new XMLWriter();
        $xml->openMemory();
        $xml->setIndent(true);
        $xml->startElement("yml_catalog");
        $xml->writeAttribute("date", date("Y-m-d h:m"));
        $xml->startElement("shop");
        $xml->writeElement("name", MG::getSetting("sitename"));
        $xml->writeElement("company", 'Компания ' . MG::getSetting("sitename"));
        $xml->writeElement("url", SITE);
        $xml->startElement("currencies");
        $xml->startElement("currency");
        $xml->writeAttribute("id", $currencyShopIso);
        $xml->writeAttribute("rate", $currencyRate);
        $xml->endElement();
        //currency
        $xml->endElement();
        //currencies
        $xml->startElement("categories");
        // получаем id категорий и id их родителей
        $sql = '
      SELECT id, parent, title 
      FROM `' . PREFIX . 'category`             
      ORDER BY id';
        $res = DB::query($sql);
        while ($row = DB::fetchAssoc($res)) {
            $xml->startElement("category");
            $xml->writeAttribute("id", $row['id']);
            if ($row['parent'] > 0) {
                $xml->writeAttribute("parentId", $row['parent']);
            }
            $xml->text($row['title']);
            $xml->endElement();
            //category
        }
        $xml->endElement();
        //categories
        $costDelivery = "0";
        $sql = 'SELECT `cost` FROM `' . PREFIX . 'delivery` WHERE `ymarket` = 1';
        $res = DB::query($sql);
        while ($row = DB::fetchAssoc($res)) {
            $costDelivery = $row['cost'];
        }
        if ($costDelivery == 0) {
            $costDelivery = "0";
        }
        $xml->writeElement("local_delivery_cost", $costDelivery);
        $xml->startElement("offers");
        $where = ' 1=1';
        if (YML_ONLY_AVAILABLE == '1') {
            $where = ' p.count <> 0 ';
        }
        if (!empty($listProductId)) {
            $where = ' p.id IN (' . DB::quote(implode(',', $listProductId), 1) . ')';
        }
        $sql = '
      SELECT
        c.title as category_title,
        CONCAT(c.parent_url,c.url) as category_url,
        p.url as product_url,
        p.*, rate,(p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course` 
      FROM `' . PREFIX . 'product` p
      LEFT JOIN `' . PREFIX . 'category` c
        ON c.id = p.cat_id
      WHERE ' . $where . '
      ORDER BY c.id
    ';
        $res = DB::query($sql);
        $currencyShopIso = MG::getSetting('currencyShopIso');
        while ($row = DB::fetchAssoc($res)) {
            if ($row['price'] > 0 && $row['activity'] == 1) {
                $row['currency_iso'] = $row['currency_iso'] ? $row['currency_iso'] : $currencyShopIso;
                $available = $row['count'] == 0 ? "false" : "true";
                $xml->startElement("offer");
                $xml->writeAttribute("id", $row['id']);
                $xml->writeAttribute("available", $available);
                $xml->writeElement("url", SITE . '/' . $row['category_url'] . '/' . $row['url']);
                $xml->writeElement("price", $row['price_course']);
                $xml->writeElement("currencyId", $currencyShopIso);
                $xml->writeElement("categoryId", $row['cat_id']);
                $arrayImages = explode("|", $row['image_url']);
                if (!empty($arrayImages)) {
                    $row['image_url'] = $arrayImages[0];
                }
                $xml->writeElement("picture", SITE . '/uploads/' . urlencode($row['image_url']));
                $xml->writeElement("local_delivery_cost", $costDelivery);
                $xml->writeElement("name", $row['title']);
                $xml->writeElement("description", MG::textMore($row['description'], 500));
                $xml->writeElement("sales_notes", $row['yml_sales_notes']);
                $xml->writeElement("manufacturer_warranty", "true");
                $xml->endElement();
            }
        }
        $xml->endElement();
        //offers
        $xml->endElement();
        //shop
        $xml->endElement();
        //yml_catalog
        $nXML .= $xml->outputMemory();
        $nXML = mb_convert_encoding($nXML, "WINDOWS-1251", "UTF-8");
        if (empty($listProductId)) {
            echo $nXML;
            exit;
        } else {
            $date = date('m_d_Y_h_i_s');
            file_put_contents('data_yml_' . $date . '.xml', $nXML);
            $msg = 'data_yml_' . $date . '.xml';
        }
        return $msg;
    }
Example #26
0
 /**
  * Привязка свойств к товару, категории и установка значений
  * @param $productId1c - id товара из 1с в бзе сайта.
  * @param $propId1c - id обрабатываемого товара из 1с.
  * @param $propValue - значение свойства.
  * @param $categoryId - id категории.
  */
 function propertyConnect($productId1c, $propId1c, $propValue, $categoryId)
 {
     // Получаем реальные id для товара и свойства из базы данных.
     $res = DB::query('SELECT id FROM `' . PREFIX . 'product` WHERE `1c_id`=' . DB::quote($productId1c));
     if ($row = DB::fetchAssoc($res)) {
         $productId = $row['id'];
     } else {
         return false;
     }
     $res = DB::query('SELECT id FROM `' . PREFIX . 'property` WHERE `1c_id`=' . DB::quote($propId1c));
     if ($row = DB::fetchAssoc($res)) {
         $propertyId = $row['id'];
     } else {
         return false;
     }
     // Проверим, если такой привязки еще нет между категориями и свойствами, то создадим ее для категории.
     $res = DB::query('
   SELECT category_id      
   FROM `' . PREFIX . 'category_user_property` 
   WHERE `property_id`=' . DB::quote($propertyId) . '
      and `category_id` = ' . DB::quote($categoryId));
     if (!DB::numRows($res)) {
         DB::query("\n        INSERT INTO `" . PREFIX . "category_user_property` (`category_id`, `property_id`)\n        VALUES (" . DB::quote($categoryId) . ", " . DB::quote($propertyId) . ")");
     }
     // Проверим, если такой привязки еще нет между продуктом и свойством ,
     //  то создадим ее для продукта.
     $res = DB::query('
  SELECT product_id
  FROM `' . PREFIX . 'product_user_property`
  WHERE `product_id`=' . DB::quote($productId) . '
    and `property_id` = ' . DB::quote($propertyId));
     if (!DB::numRows($res)) {
         DB::query("\n        INSERT INTO `" . PREFIX . "product_user_property` \n          (`product_id`, `property_id`, `value`, `product_margin`, `type_view`)\n        VALUES (" . DB::quote($productId) . ", " . DB::quote($propertyId) . ", " . DB::quote($propValue) . ", '', 'select')");
     } else {
         // если привязка есть, то обновим данные
         DB::query('
     UPDATE `' . PREFIX . 'product_user_property`
     SET `value` =' . DB::quote($propValue) . '
     WHERE `product_id`=' . DB::quote($productId) . ' and `property_id` = ' . DB::quote($propertyId));
     }
     return true;
 }
Example #27
0
 /**
  * Возвращает данные о всех продуктах в корзине.
  * @return array
  */
 public function getItemsCart()
 {
     $productPositions = array();
     // Создает модель для работы с продуктами.
     $itemPosition = new Models_Product();
     $totalSumm = 0;
     if (!empty($_SESSION['cart'])) {
         $currencyRate = MG::getSetting('currencyRate');
         $currencyShopIso = MG::getSetting('currencyShopIso');
         $variantsId = array();
         $productsId = array();
         foreach ($_SESSION['cart'] as $key => $item) {
             if (!empty($item['variantId'])) {
                 $variantsId[] = $item['variantId'];
             }
             $productsId[] = $item['id'];
         }
         $products_all = array();
         $variants_all = array();
         if (!empty($variantsId)) {
             $ids = implode(',', $variantsId);
             $variants_res = DB::query('SELECT  pv.*, c.rate,(pv.price_course + pv.price_course *(IFNULL(c.rate,0))) as `price_course`,
       p.currency_iso
       FROM `' . PREFIX . 'product_variant` pv   
       LEFT JOIN `' . PREFIX . 'product` as p ON 
         p.id = pv.product_id
       LEFT JOIN `' . PREFIX . 'category` as c ON 
         c.id = p.cat_id       
       WHERE pv.id IN (' . trim(DB::quote($ids, true)) . ')');
             while ($variant_row = DB::fetchAssoc($variants_res)) {
                 $variants_all[$variant_row['id']] = $variant_row;
             }
         }
         if (!empty($productsId)) {
             $ids = implode(',', array_unique($productsId));
             $product_res = DB::query('
         SELECT  CONCAT(c.parent_url,c.url) as category_url,
         p.url as product_url, p.*, rate, (p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`, 
         p.`currency_iso` 
         FROM `' . PREFIX . 'product` p
         LEFT JOIN `' . PREFIX . 'category` c
         ON c.id = p.cat_id
         WHERE p.id IN (' . DB::quote($ids, true) . ')');
             if (!empty($product_res)) {
                 while ($result = DB::fetchAssoc($product_res)) {
                     $products_all[$result['id']] = $result;
                 }
             }
         }
         foreach ($_SESSION['cart'] as $key => $item) {
             $variant = '';
             if (!empty($item['variantId'])) {
                 //  $variants = $itemPosition->getVariants($item['id']);
                 $variant = $variants_all[$item['variantId']];
             }
             // Заполняет массив информацией о каждом продукте по id из куков.
             // Если куки не актуальны, пропускает товар.
             $product = $products_all[$item['id']];
             if (!empty($product)) {
                 $product['property'] = $_SESSION['cart'][$key]['propertySetId'];
                 $product['property_html'] = htmlspecialchars_decode(str_replace('&amp;', '&', $_SESSION['cart'][$key]['property']));
                 $product['propertySetId'] = $_SESSION['cart'][$key]['propertySetId'];
                 if (!empty($variant)) {
                     $product['price'] = $variant['price'];
                     $product['code'] = $variant['code'];
                     $product['count'] = $variant['count'];
                     $product['weight'] = $variant['weight'];
                     $product['image_url'] = $variant['image'] ? $variant['image'] : $product['image_url'];
                     $product['title'] .= " " . $variant['title_variant'];
                     $product['variantId'] = $variant['id'];
                     $product['price_course'] = $variant['price_course'];
                 }
                 // если установлен формат без копеек то округлим стоимость.
                 $priceFormat = MG::getSetting('priceFormat');
                 if (in_array($priceFormat, array('1234.56', '1234', '1 234', '1,234', ''))) {
                     $price = round($product['price_course']);
                 } else {
                     $price = $product['price_course'];
                 }
                 if ($item['id'] == $product['id']) {
                     $count = $item['count'];
                     $price = SmalCart::plusPropertyMargin($price, $item['propertyReal'], $currencyRate[$product['currency_iso']]);
                     // $product['currency_iso'] = $product['currency_iso']?$product['currency_iso']:$currencyShopIso;
                     // $price *= $currencyRate[$product['currency_iso']];
                     $product['price'] = $price;
                     // применение скидки по купону
                     $priceWithCoupon = $this->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                     $priceWithDiscoutn = $this->applyDiscountSystem($product['price']);
                     $product['price'] = $priceWithCoupon < $priceWithDiscoutn['price'] ? $priceWithCoupon : $priceWithDiscoutn['price'];
                     $product['priceInCart'] = MG::priceCourse($product['price'] * $count) . " " . MG::getSetting('currency');
                     $arrayImages = explode("|", $product['image_url']);
                     if (!empty($arrayImages)) {
                         $product['image_url'] = $arrayImages[0];
                     }
                 }
                 $product['category_url'] = SHORT_LINK == '1' ? '' : $product['category_url'] . '/';
                 $product['link'] = SITE . '/' . (isset($product["category_url"]) ? $product["category_url"] : 'catalog' . '/') . $product["product_url"];
                 $product['countInCart'] = $item['count'];
                 if ($product['countInCart'] > 0) {
                     $productPositions[] = $product;
                 }
                 $totalSumm += $product['price'] * $item['count'];
             }
         }
     }
     $totalSumm = MG::priceCourse($totalSumm);
     $result = array('items' => $productPositions, 'totalSumm' => $totalSumm);
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Example #28
0
 /**
  * Создание дубля цены в заданном  курсе.
  */
 public function deleteImagesVariant($productId)
 {
     $imagesArray = array();
     // Удаляем продукт из базы.
     $res = DB::query('
   SELECT image
   FROM `' . PREFIX . 'product_variant` 
   WHERE product_id = ' . DB::quote($productId));
     while ($row = DB::fetchAssoc($res)) {
         $imagesArray[] = $row['image'];
     }
     $this->deleteImagesProduct($imagesArray);
     return true;
 }
Example #29
0
    static function affiliatePanel()
    {
        $id = USER::getThis()->id;
        if (!$id) {
            return 'Пожалуйста, <a href="' . SITE . '/registration">зарегистрируйтесь</a>, чтобы принять участие в партнерской программе ' . MG::get('sitename') . ' и получать ' . self::$percent . '% от стоимости заказов ваших друзей и знакомых.';
        }
        $parnterLink = false;
        $result = DB::query('
      SELECT *
      FROM `' . PREFIX . 'partner`
      WHERE `user_id` = ' . DB::quote($id));
        if ($row = DB::fetchAssoc($result)) {
            $parnterLink = SITE . "?partnerId=" . $row['id'];
        }
        if ($parnterLink) {
            return '<div class="accostPartner"><p>Уважаемый, партнер! Ваша реферальная ссылка: <span>' . $parnterLink . '</span></p><p>Передайте ее друзьям и знакомым и вы получите ' . self::$percent . '% от стоимости их заказа.</p></div>';
        } else {
            $html = '  
      <script>
      function newPartner(){   
      $.ajax({
			type: "POST",
			url: "ajax",
			data: {
			    pluginHandler: "partners-program", 
          actionerClass: "Partner", 
          action: "becomePartner"              
			},
			dataType: "json",
			cache: false,
			success: function(response){      
        location="' . SITE . '/affiliate" ;
    	}
		  });
      }
      </script>
      Здравствуйте, ' . USER::getThis()->name . ' ' . USER::getThis()->sname . '
        мы предлагаем Вам стать нашим партнером и получать ' . self::$percent . '% от всех заказов  привлеченных вами клентов.
        <a href="#" class="becomePartner" onclick="newPartner(); return false;">Получить реферальную сылку</a>    
        ';
            return $html;
        }
    }
Example #30
0
 /**
  * Получает из БД записи
  */
 static function getEntity()
 {
     $entity = array();
     $res = DB::query("\r\n      SELECT * \r\n      FROM `" . PREFIX . self::$pluginName . "` \r\n        ORDER BY sort ASC\r\n    ");
     while ($row = DB::fetchAssoc($res)) {
         $entity[] = $row;
     }
     return $entity;
 }