Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб [DLE]Easy Minecraft Shop - магазин предметов\вещей для сервера Minecraft

Stairdeck

Активный участник
Пользователь
Баллы
68
Имя в Minecraft
Stairdeck
Приветствую Вас, пользователи рубаккита.
С давних пор, я только пользовался местными продуктами, но теперь созрел для своего.
Представляю Вам свой модуль для CMS DLE
Easy Minecraft Shop - магазин предметов Minecraft.

Особенности:
Мультисерверность
Работа на ShoppingCart

2 валюты, 1 основная, 2 побочная (можно не продавать за 2-ю)
Гибкая настройка
Категории
Админпанель
Работа с БД на PDO
Работоспособность проверялась на DLE 11.2, однако будет работать на версиях и ниже


В общем-то пару слов о модуле. Написан же он конечно на нашем любимом PHP.
AJAX я не стал использовать, как-то там не очень гладко все обстоит с модулями, но и так неплохо получилось. За дизайн я крайне не ручаюсь, скрины приложу ниже, если кто-то отважиться нарисовать дезигн, буду очень признателен.
Сейчас это первая версия шопа, поэтому могут быть баги или ещё чего, плюс это первая моя подобная работа, буду крайне благодарен если укажите на недостатки, исправлю.

Буду ли я продолжать работу над модулем? Определенно.

Безымянный.png 1.png 3.png 4.png

TO-DO:
Рефакторинг
Всё ещё в процессе

Иконки к товарам
Постраничный вывод товаров

Логирование
Онлайн-чаровальня
Подарки за покупки
Скидки
Продажа регионов WG
Работа с NBT
Продажа прав (опционально, ибо в каждом лк есть)


Лог обновлений:

Версия 1.1.1 от 19.03.2017
Пофиксил ошибки с базой.
Теперь не должно быть проблем с неправильной настройкой, скрипт Вам скажет, что не так.
Добавил лог покупок.

Версия 1.1 от 17.01.2017
Существенно переписан код, теперь PDO вместо SafeMySql
Добавлена возможность загружать картинки к предмету
В общем теперь код стал лучше, чем в прошлой версии.
Однако работы продолжаются.

Версия 1.0 от 07.01.2017

Пишите Ваши пожелания.
Я ещё думаю о платной версии шопа, возможно будет и такое.
Информация об установке в архиве с шопом.

 
Последнее редактирование:
Классная работа, продолжай в том-же духе! :good:
Кстати, могу помочь с дизайном магазина, тобишь CSS.
 
Хм, поставил модуль к себе, настроил, но он не цепляется к БД.
Данные само собой правильные, ибо другие модули по ним же работают.
 
Вот
 

Вложения:

  • Безымянный.jpg
    Безымянный.jpg
    Размер файла
    783,6 КБ
    Просмотров
    241
Неправильно настроил таблицы и колонки денег, проверь.
//Детальные настройки
const DB_MONEY_TABLE = 'dle_users'; //Таблица с деньгами
const DB_BONUS_TABLE = 'fe_accounts'; //Таблица со второстепенной валютой (бонусы, коины, маины, etc)

const DB_MONEY_COLUMN = 'money'; //Колонка с деньгами
const DB_BONUS_COLUMN = 'money'; //Колонка со второстепенной валютой

const DB_MONEY_USER_COLUMN = 'name'; //Колонка с именами пользователей в таблице с деньгами
const DB_BONUS_USER_COLUMN = 'name'; //Колонка с именами пользователей в таблице со второстепенной валютой

Все правильно...
 
Дай скрин таблицы fe_accounts, а точнее структуру.
И структуру dle_users твоей
Я нашел ошибку, исправил. Перекачайте пожалуйста
Нашел ещё неисправность, не работало удаление предмета, исправил
 
Настало время святой инквизиции, @Cames уже сказал больше 70% моих слов)
Начну пожалуй с самого худшего, а именно неправильное понятие ООП.
Какого фига ты используешь windows 1251?! UTF-8 Unicode!!
Гибкая настройка
1. Говорить что то про гибкость настроек, а использовать вот это
upload_2017-1-8_14-51-10.png
Если делаешь класс конфигов, используй getter/setter.
2. Ты слышал хоть раз о таком как Autoloader и NameSpace?
3. name.class.php, я что вернулся во времени PHP 4?
4. Использовать костыли по типу SafeMysql, когда в php есть прекрасная библиотека называется PDO!
ЭТО ООП СТИЛЬ?!
upload_2017-1-8_15-3-3.png
5. Какой же ты молодец c:
Соединятся с базой, даже если она тебе не понадобится...
Полностью выкачивать пользователя с dle_users без кэша...
2 пустых запроса что бы получить только баланс :/
А ты знаешь что такое JOIN-ы?
upload_2017-1-8_15-6-46.png
6. Что это за синтаксис такой? Ты экономишь на скобках и ещё делаешь вложенность.
А так же "and" или "or", ну ка, попробуй в других языка провернуть это, используй только && и ||
upload_2017-1-8_15-9-30.png
Вот как это делается! Любой читающий это поймёт.
upload_2017-1-8_15-12-17.png
7. Почему ты такой жадный? Почему ты хочешь использовать везде SELECT *?
Когда ты добавишь новый колонок в таблицу, а скрипт будет получать все значения поля даже если они не нужны! Вот из того примера выше, ты использовал только price и amount, а зачем ты все колонки получаешь с emcs_items?
8. У тебя мультисерверность достигается за счёт создания emcs_server_[\d], а теперь подумай, нужно удалить сервер то у тебя будут во первых перебои в ID, а так же есть вероятность что что база данных находится на другом сервере.
А использовать паттерн всё в одном это очень плохо! Кластеризация по тебе плачет.
9. Зачем ты используешь двойные кавычки в PHP? PHP сначала попытается найти в строке переменную, а потом уже вернёт строку. Зачем тратить эти милисекунды на это бессмысленное действие?
10. Перестаньте использовать echo в таких количествах!
upload_2017-1-8_15-20-22.png
10.1 Во первых в echo можно передавать параметры через запятую
10.2 Вызов двух echo тратит больше времени и памяти чем
PHP:
$out = '';

for (...) {...}

echo $out;
11. Каждую итерацию цикла он будет считать количество элементов массива, php в этом плане не оптимизирован и нужно делать кэш такого. А так же в php ++$i отработает быстрее.
upload_2017-1-8_15-22-1.png
Хотя бы так
PHP:
for($i = 0, $length = count($items); $i < $length; ++$i) {...}
12. Где кэширование?! У тебя столько вызовов к базе почти идентичных и вместо того что бы сделать их кэш, а уже при следующих обращения скажем тянуть из готовой переменной, ты обращаешься к базе.
13. Я поставлю значение cookie и получу свой результат, а так же используй Flash (не от adobe, а реализацию класса). Почитай тут Phalcon Flash
upload_2017-1-8_15-25-37.png
14. Зачем ты подключаешься для простого пользователя класс Admin?
15. ТЫ 3 ГРЁБАНЫХ РАЗА ДЕЛАЕШЬ ЗАПРОС К БД
Допустим у юзера всё норм, сначала проверит на NotLogin, потом ещё один запрос на NotCorrectUser, а если ошибка ещё раз на MySQL Error
upload_2017-1-8_15-29-33.png
16. Снова этот синтаксический сахар от php... Используй только else if и не экономь на скобках.
Программы должны писаться для людей, которые будут их читать, а машины, которые будут эти программы исполнять — второстепенны. Harold Abelson
17.
Божественный роутинг! Понять как он работает или лучше забить?
E5bo3Ti.png

18. Ты слышал что такое контроллеры, хоть отдалённо?
2rTof0t.png

19. Один Copy+Paste
20. Остальное просто без комментариев, спасибо за испорченный день говнокодом...
Надеюсь ты уяснил свои ошибки и не повторишь их! Призови в тему когда перепишешь "это".
 
Последнее редактирование:

Поделиться этой страницей

Назад
Верх