Пример #1
0
 /**
  * Парсит путь категории возвращает набор категорий.
  * @param type $path - список категорий через /
  */
 public function parseCategoryPath($path)
 {
     $i = 1;
     $categories = array();
     if (!$path) {
         return $categories;
     }
     $parent = $path;
     $parentTranslit = MG::translitIt($parent, 1);
     $parentTranslit = URL::prepareUrl($parentTranslit);
     $categories[$parent]['title'] = URL::parsePageUrl($parent);
     $categories[$parent]['url'] = URL::parsePageUrl($parentTranslit);
     $categories[$parent]['parent_url'] = URL::parseParentUrl($parentTranslit);
     $categories[$parent]['parent'] = 0;
     while ($parent != '/') {
         $parent = URL::parseParentUrl($parent);
         $parentTranslit = MG::translitIt($parent, 1);
         $parentTranslit = URL::prepareUrl($parentTranslit);
         if ($parent != '/') {
             $categories[$parent]['title'] = URL::parsePageUrl($parent);
             $categories[$parent]['url'] = URL::parsePageUrl($parentTranslit);
             $categories[$parent]['parent_url'] = URL::parseParentUrl($parentTranslit);
             $categories[$parent]['parent_url'] = $categories[$parent]['parent_url'] != '/' ? $categories[$parent]['parent_url'] : '';
             $categories[$parent]['parent'] = 0;
         }
     }
     $categories = array_reverse($categories);
     return $categories;
 }
Пример #2
0
 /**
  * Изменяет данные о товаре.
  * @param array $array массив с данными о товаре.
  * @param int $id  id изменяемого товара.
  * @return bool
  */
 public function updateProduct($array)
 {
     $id = $array['id'];
     $userProperty = !empty($array['userProperty']) ? $array['userProperty'] : null;
     //свойства товара
     $variants = !empty($array['variants']) ? $array['variants'] : array();
     // варианты товара
     $updateFromModal = !empty($array['updateFromModal']) ? true : false;
     // варианты товара
     unset($array['userProperty']);
     unset($array['variants']);
     unset($array['updateFromModal']);
     if (!empty($array['url'])) {
         $array['url'] = URL::prepareUrl($array['url']);
     }
     $maskField = array('title', 'meta_title', 'meta_keywords', 'meta_desc', 'image_title', 'image_alt');
     foreach ($array as $k => $v) {
         if (in_array($k, $maskField)) {
             $v = htmlspecialchars_decode($v);
             $array[$k] = htmlspecialchars($v);
         }
     }
     $result = false;
     // Если происходит обновление параметров.
     if (!empty($id)) {
         unset($array['delete_image']);
         // Обновляем стандартные  свойства продукта.
         if (DB::query('
       UPDATE `' . PREFIX . 'product`
       SET ' . DB::buildPartQuery($array) . '
       WHERE id = ' . DB::quote($id))) {
             // Обновляем пользовательские свойства продукта.
             if (!empty($userProperty)) {
                 $this->saveUserProperty($userProperty, $id);
             }
             // Эта проверка нужна только для того, чтобы исключить удаление
             //вариантов при обновлении продуктов не из карточки товара в админке,
             //например по нажатию на "лампочку".
             if (!empty($variants) || $updateFromModal) {
                 // обновляем и добавляем варианты продукта.
                 if ($variants === null) {
                     $variants = array();
                 }
                 $this->saveVariants($variants, $id);
             }
             $result = true;
         }
     } else {
         $result = $this->addProduct($array);
     }
     $currencyShopIso = MG::getSetting('currencyShopIso');
     $this->updatePriceCourse($currencyShopIso, array($id));
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Пример #3
0
 /**
  * Создание новой категории.
  * @param $category - категория.
  */
 function newCategory($category)
 {
     $url = URL::prepareUrl(MG::translitIt($category['name'], 1));
     $parent_url = MG::get('category')->getParentUrl($category['parent_id']);
     $parent = URL::prepareUrl(MG::translitIt($category['parentname'], 1));
     $data = array('title' => $category['name'], 'url' => str_replace(array('/', '\\'), '-', $url), 'parent' => $category['parent_id'], 'html_content' => $category['description'], 'meta_title' => $category['name'], 'meta_keywords' => $category['name'], 'meta_desc' => MG::textMore($category['description'], 157), 'invisible' => 0, 'parent_url' => $parent_url, '1c_id' => $category['1c_id']);
     $res = DB::query('SELECT *
   FROM `' . PREFIX . 'category`
   WHERE `1c_id`=' . DB::quote($category['1c_id']));
     if ($row = DB::fetchAssoc($res)) {
         DB::query('
     UPDATE `' . PREFIX . 'category`
     SET ' . DB::buildPartQuery($data) . '
     WHERE `1c_id`=' . DB::quote($category['1c_id']));
         return $row['id'];
     } else {
         $data = MG::get('category')->addCategory($data);
         return $data['id'];
     }
     return 0;
 }
Пример #4
0
 /**
  * Изменяет данные о категории.
  *
  * @param array $array массив с данными о категории.
  * @param int $id  id изменяемой категории.
  * @return bool
  */
 public function updateCategory($array)
 {
     $id = $array['id'];
     $result = false;
     if (!empty($array['url'])) {
         $array['url'] = URL::prepareUrl($array['url']);
     }
     $maskField = array('title', 'meta_title', 'meta_keywords', 'meta_desc', 'image_title', 'image_alt');
     foreach ($array as $k => $v) {
         if (in_array($k, $maskField)) {
             $v = htmlspecialchars_decode($v);
             $array[$k] = htmlspecialchars($v);
         }
     }
     // Если назначаемая категория, является тойже.
     if ($array['parent'] === $id) {
         $this->messageError = 'Нельзя назначить выбраную категорию родительской!';
         return false;
     }
     if ($id || $id === 0) {
         $childsCaterory = $this->getCategoryList($id);
     }
     // Если есть вложенные, и одна из них назначена родительской.
     if (!empty($childsCaterory)) {
         foreach ($childsCaterory as $cateroryId) {
             if ($array['parent'] == $cateroryId) {
                 $this->messageError = 'Нельзя назначить выбраную категорию родительской!';
                 return false;
             }
         }
     }
     if ($_POST['parent'] === $id && !isset($array['parent'])) {
         $this->messageError = 'Нельзя назначить выбраную категорию родительской!';
         return false;
     }
     if (!empty($array['image_url'])) {
         $array['image_url'] = self::resizeCategoryImg($array['image_url']);
     }
     if (!empty($id)) {
         // обновляем выбраную категорию
         if (DB::query('
     UPDATE `' . PREFIX . 'category`
     SET ' . DB::buildPartQuery($array) . '
     WHERE id = ' . DB::quote($id, true))) {
             $result = true;
         }
         // находим список всех вложенных в нее категорий
         $arrayChildCat = $this->getCategoryList($array['parent']);
         if (!empty($arrayChildCat)) {
             // обновляем parent_url у всех вложенных категорий, т.к. корень поменялся
             foreach ($arrayChildCat as $childCat) {
                 $childCat = $this->getCategoryById($childCat);
                 $upParentUrl = $this->getParentUrl($childCat['parent']);
                 if (!empty($childCat['id'])) {
                     if (DB::query('
             UPDATE `' . PREFIX . 'category`
             SET parent_url=' . DB::quote($upParentUrl) . '
         WHERE id = ' . DB::quote($childCat['id'], true))) {
                     }
                 }
             }
         }
     } else {
         $result = $this->addCategory($array);
     }
     //очищам кэш категорий
     Storage::clear(md5('category'));
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Пример #5
0
 /**
  * Изменяет данные о товаре.
  * @param array $array массив с данными о товаре.
  * @param int $id  id изменяемого товара.
  * @return bool
  */
 public function updateProduct($array)
 {
     $id = $array['id'];
     $userProperty = !empty($array['userProperty']) ? $array['userProperty'] : null;
     //свойства товара
     $variants = !empty($array['variants']) ? $array['variants'] : array();
     // варианты товара
     $updateFromModal = !empty($array['updateFromModal']) ? true : false;
     // варианты товара
     unset($array['userProperty']);
     unset($array['variants']);
     unset($array['updateFromModal']);
     if (!empty($array['url'])) {
         $array['url'] = URL::prepareUrl($array['url']);
     }
     $result = false;
     // Если происходит обновление параметров.
     if (!empty($id)) {
         unset($array['delete_image']);
         // Обновляем стандартные  свойства продукта.
         if (DB::query('
       UPDATE `' . PREFIX . 'product`
       SET ' . DB::buildPartQuery($array) . '
       WHERE id = %d
     ', $id)) {
             // Обновляем пользовательские свойства продукта.
             if (!empty($userProperty)) {
                 $this->saveUserProperty($userProperty, $id);
             }
             // Эта проверка нужна только для того, чтобы исключить удаление
             //вариантов при обновлении продуктов не из карточки товара в админке,
             //например по нажатию на "лампочку".
             if (!empty($variants) || $updateFromModal) {
                 // обновляем и добавляем варианты продукта.
                 if ($variants === null) {
                     $variants = array();
                 }
                 $this->saveVariants($variants, $id);
             }
             $result = true;
         }
     } else {
         $result = $this->addProduct($array);
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Пример #6
0
 /**
  * Изменяет данные о странице
  *
  * @param array $array массив с данными о категории.
  * @param int $id  id изменяемой категории.
  * @return bool
  */
 public function updatePage($array)
 {
     $id = $array['id'];
     $result = false;
     if (!empty($array['url']) && strpos($array['url'], 'http:') !== 0) {
         $array['url'] = URL::prepareUrl($array['url']);
     }
     $maskField = array('title', 'meta_title', 'meta_keywords', 'meta_desc', 'image_title', 'image_alt');
     foreach ($array as $k => $v) {
         if (in_array($k, $maskField)) {
             $array[$k] = htmlspecialchars($v);
         }
     }
     // Если назначаемая категория, является тойже.
     if ($array['parent'] == $id) {
         $this->messageError = 'Нельзя назначить выбраную страницу родительской!';
         return false;
     }
     $childsPage = $this->getPagesInside($id);
     // Если есть вложенные, и одна из них назначена родительской.
     if (!empty($childsPage)) {
         foreach ($childsPage as $cateroryId) {
             if ($array['parent'] == $cateroryId) {
                 $this->messageError = 'Нельзя назначить выбраную страницу родительской!';
                 return false;
             }
         }
     }
     if ($_POST['parent'] == $id) {
         $this->messageError = 'Нельзя назначить выбраную страницу родительской!';
         return false;
     }
     if (!empty($id)) {
         // обновляем выбраную страницу
         if (DB::query('
     UPDATE `' . PREFIX . 'page`
     SET ' . DB::buildPartQuery($array) . '
     WHERE id =  ' . DB::quote($id, true))) {
             $result = true;
         }
         // находим список всех вложенных в нее страниц
         $arrayChildCat = $this->getPagesInside($array['parent']);
         if (!empty($arrayChildCat)) {
             // обновляем parent_url у всех вложенных категорий, т.к. корень поменялся
             foreach ($arrayChildCat as $childCat) {
                 $childCat = $this->getPageById($childCat, true);
                 $upParentUrl = $this->getParentUrl($childCat['parent']);
                 if (DB::query('
         UPDATE `' . PREFIX . 'page`
         SET parent_url=' . DB::quote($upParentUrl) . '
         WHERE id = ' . DB::quote($childCat['id'], true))) {
                 }
             }
         }
     } else {
         $result = $this->addPage($array);
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }