1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
  3. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем Stairdeck, 7 янв 2017.

  1. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в 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

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

     
    Последнее редактирование: 19 мар 2017
  2. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Резерв
     
  3. lCxAxAl

    lCxAxAl Активный участник Пользователь

    Баллы:
    61
    Логирование есть?
     
  4. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Нет, добавлю в To-Do
     
  5. SDIR01

    SDIR01 Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    sdir01
    Классная работа, продолжай в том-же духе! :good:
    Кстати, могу помочь с дизайном магазина, тобишь CSS.
     
  6. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Буду очень благодарен, засуну вместо своего
     
  7. lCxAxAl

    lCxAxAl Активный участник Пользователь

    Баллы:
    61
    Хм, поставил модуль к себе, настроил, но он не цепляется к БД.
    Данные само собой правильные, ибо другие модули по ним же работают.
     
  8. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Таблицы добавил?
     
  9. lCxAxAl

    lCxAxAl Активный участник Пользователь

    Баллы:
    61
    само собой.
     
  10. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Дай скрин что ли, что пишет?
     
  11. lCxAxAl

    lCxAxAl Активный участник Пользователь

    Баллы:
    61
    Вот
     

    Вложения:

  12. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Неправильно настроил таблицы и колонки денег, проверь.
     
  13. lCxAxAl

    lCxAxAl Активный участник Пользователь

    Баллы:
    61
    //Детальные настройки
    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'; //Колонка с именами пользователей в таблице со второстепенной валютой

    Все правильно...
     
  14. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Дай скрин таблицы fe_accounts, а точнее структуру.
    И структуру dle_users твоей
    Я нашел ошибку, исправил. Перекачайте пожалуйста
    Нашел ещё неисправность, не работало удаление предмета, исправил
     
  15. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    Какой ужас
     
  16. Автор темы
    Stairdeck

    Stairdeck Активный участник Пользователь

    Баллы:
    68
    Skype:
    Stairdeck
    Имя в Minecraft:
    Stairdeck
    Что-то не так?
     
  17. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    Говнокод, да еще и как модуль dle. Займись качеством, а потом уже думай о платной версии.
     
  18. SDIR01

    SDIR01 Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    sdir01
    Да, соглашусь, думаю написать шоп отдельно будет лучше нежели чем юзать его в DLE.
     
  19. lexa_kiker

    lexa_kiker Старожил Пользователь

    Баллы:
    123
    Skype:
    lexa_kiker
    dle кал
     
  20. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Настало время святой инквизиции, @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.
    Божественный роутинг! Понять как он работает или лучше забить?
    [​IMG]
    18. Ты слышал что такое контроллеры, хоть отдалённо?
    [​IMG]
    19. Один Copy+Paste
    20. Остальное просто без комментариев, спасибо за испорченный день говнокодом...
    Надеюсь ты уяснил свои ошибки и не повторишь их! Призови в тему когда перепишешь "это".
     
    Последнее редактирование: 8 янв 2017

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