Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Shaman

Новачок
  
  • Публікації

    30
  • З нами

  • Відвідування

Усі публікації користувача Shaman

  1. Попробую когда освобожусь. Хорошо, когда разработчики отзывчивые. Может хоть LIMIT элементарно пороставляют, если полей под 10 тысяч, прилично сократится время запросов.Вообще, скрипт быстро развивается, думаю такие замечания - вопрос времени. Вот был случай, в версии 1.4.7 файл перед удалением не проверялся на наличие, что в отдельных ситуациях вызывало ошибки. Исправил найденные недоработки сам, но когда пришел править этот участок кода в 1.4.8 - увидел уже добавленную проверку. Идейность скрипта хороша, но код не зрелый.
  2. Сегодня открыл для модификации модель продукта и к своему удивлению обнаружил избыток нелогичных запросов к базе. Например, с каких пор два запроса DELETE/INSERT к MySQL, да и еще через условие PHP, выполняются быстрее одного UPDATE? /admin/model/catalog/product.php стр.119-125 $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'"); if (isset($data['product_store'])) { foreach ($data['product_store'] as $store_id) { $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "'"); } }Зачем при каждом редактировании товара плодить индексные сущности, увеличивая рамер избыточных данных?И вот еще /admin/model/catalog/product.php стр.127-154 $this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_option_description WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value_description WHERE product_id = '" . (int)$product_id . "'"); if (isset($data['product_option'])) { foreach ($data['product_option'] as $product_option) { $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', sort_order = '" . (int)$product_option['sort_order'] . "'"); $product_option_id = $this->db->getLastId(); foreach ($product_option['language'] as $language_id => $language) { $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_description SET product_option_id = '" . (int)$product_option_id . "', language_id = '" . (int)$language_id . "', product_id = '" . (int)$product_id . "', name = '" . $this->db->escape($language['name']) . "'"); } if (isset($product_option['product_option_value'])) { foreach ($product_option['product_option_value'] as $product_option_value) { $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', prefix = '" . $this->db->escape($product_option_value['prefix']) . "', sort_order = '" . (int)$product_option_value['sort_order'] . "'"); $product_option_value_id = $this->db->getLastId(); foreach ($product_option_value['language'] as $language_id => $language) { $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value_description SET product_option_value_id = '" . (int)$product_option_value_id . "', language_id = '" . (int)$language_id . "', product_id = '" . (int)$product_id . "', name = '" . $this->db->escape($language['name']) . "'"); } } } } }Это же целая уйма внутрених процессов БД по реорганизации ключей, выполнение которых можно элементарно избежать при этом упростив код.Можно закрыть глаза на админку. Но если такой код характерен для всего скрипта Open Cart, то складывается впечатление, что разработчики скрипта принебрегают качеством следуя только тенденции "скорости MVC". Вот такие дела, не выдержал, решил написать сюда, может кто оправдает такой код. Буду рад открыть для себя что-то новое.
  3. Спасибо! Отличное решение для сотрудников магазина, особенно если много товаров. Скажите только пожалуйста на будущее, что собой являет номер в квадратных кавычках product_description[1]потому как у меня этот номер - двойка и скрипт пришлось подправить.
  4. Я думаю первый вариант более корректен, потому как предусматривает авторизацию/выход пользователя.В любом случае за конструктивный ответ спасибо.
  5. Видимо данный функционал еще не предусмотрен, решил этот вопрос следующим образом: 1) В файле /system/library/user.php после строки 5 private $permission = array();пишем private $usergroup;после строки 21 $this->username = $user_query->row['username'];пишем $this->usergroup = $user_query->row['user_group_id'];после строки 47 $this->username = $user_query->row['username'];пишем $this->usergroup = $user_query->row['user_group_id'];после строки 94 public function getUserName() { return $this->username; }пишем public function getUserGroup() { return $this->usergroup; }2) В файле/admin/controller/common/header.php меняем код if ($this->user->isLogged()) { $this->data['logged'] = sprintf($this->language->get('text_logged'), $this->user->getUserName()); } else { $this->data['logged'] = ''; }на if ($this->user->isLogged()) { $this->data['logged'] = sprintf($this->language->get('text_logged'), $this->user->getUserName()); $this->data['usergroup'] = $this->user->getUserGroup(); } else { $this->data['logged'] = ''; $this->data['usergroup'] = ''; }3) В любой части файлов view получаем идентификатор групы переменной $usergroup
  6. Необходимо получить идентификатор групы авторизированного пользователя в админке.Идеально сделать это на уровне view, но сгодяться и другие варианты.Содержит ли движок такую функцию или ее нужно дописать самому?

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.