Добро пожаловать, Гость!
Рерайтинг движка | GitHub - Страница 11
Предложения и пожелания | Рерайтинг движка | GitHub
MarkPrior :
Доброго времени суток. Набрёл на движок с интернета. Подобные системы - не моя специальность, но я всегда рад помочь в улучшении, если то возможно. Сам занимаюсь Java/C#, но в свободное время балуюсь подобными вещами, поэтому решил подсобить/ускорить его преображение.
Вчера просмотрел движок, чуток очумел от количества мусора, но не всё потеряно. Как я понял, пользуются системой исключительно те, кто любит максимально простой и понятный вид кода без "всяких ваши ООП и т.п.". И хоть двиг подутратил свою востребованность, но, как я увидел, есть ещё много ньюфагов, которые пользуются и, надеюсь, учатся на этой системе.
Мне не помешает человек (или несколько человекОВ), которые давно пользуются этим движком и которые уверенно ориентируются в коде, дабы, при возникновении у меня вопросов, я мог кому-то написать.
На своём старом аккаунте GitHub создал репозиторий для движка. За основу взял версию DS-Special из-за введённой мультиязычности.
ФУЛЛ переписи не планируется, дабы, если у кого-то будет желание, переход на обновлёнку не был тяжёлым. Привычная архитектура, думаю, будет сохранена. Обновления затронут стилизацию кода и удаление излишнего мусора.
Для примера в одном только /sys/inc/user.php было ~27 лишних запросов в базу данных.
От mysql мы уйдём в сторону PDO (простота и, прежде всего, безопасность). Уже имеется обёртка, которая позволит легко и просто осуществлять запросы в базу. "Документация" по ним будет так же на GitHub.
Здесь в теме буду кратко писать ChangeLog'и по изменениям в коде. По мере переписи файлы будут загружаться на git.
Ссылка на репозиторий: GitHub - Dcms-Social
Рерайтинг движка | GitHub
3 Авг 2022Доброго времени суток. Набрёл на движок с интернета. Подобные системы - не моя специальность, но я всегда рад помочь в улучшении, если то возможно. Сам занимаюсь Java/C#, но в свободное время балуюсь подобными вещами, поэтому решил подсобить/ускорить его преображение.
Вчера просмотрел движок, чуток очумел от количества мусора, но не всё потеряно. Как я понял, пользуются системой исключительно те, кто любит максимально простой и понятный вид кода без "всяких ваши ООП и т.п.". И хоть двиг подутратил свою востребованность, но, как я увидел, есть ещё много ньюфагов, которые пользуются и, надеюсь, учатся на этой системе.
Мне не помешает человек (или несколько человекОВ), которые давно пользуются этим движком и которые уверенно ориентируются в коде, дабы, при возникновении у меня вопросов, я мог кому-то написать.
На своём старом аккаунте GitHub создал репозиторий для движка. За основу взял версию DS-Special из-за введённой мультиязычности.
ФУЛЛ переписи не планируется, дабы, если у кого-то будет желание, переход на обновлёнку не был тяжёлым. Привычная архитектура, думаю, будет сохранена. Обновления затронут стилизацию кода и удаление излишнего мусора.
Для примера в одном только /sys/inc/user.php было ~27 лишних запросов в базу данных.
От mysql мы уйдём в сторону PDO (простота и, прежде всего, безопасность). Уже имеется обёртка, которая позволит легко и просто осуществлять запросы в базу. "Документация" по ним будет так же на GitHub.
Здесь в теме буду кратко писать ChangeLog'и по изменениям в коде. По мере переписи файлы будут загружаться на git.
Ссылка на репозиторий: GitHub - Dcms-Social
Последний раз редактировалось biket
1 Сент 2022
Комментарии:
MarkPrior 8 Авг 2022
Автор темы
ChangeLog 08.08 23:30
Обновлён класс user (/sys/classes/user.class.php).
Если в него передаётся ID, совпадающим с нашим ($user -> /sys/inc/user.php), то не обращаемся к БД, а берём данные из уже имеющихся.
Предотвращает повторное обращение к БД.
Автор темы
ChangeLog 08.08 23:30
Обновлён класс user (/sys/classes/user.class.php).
Если в него передаётся ID, совпадающим с нашим ($user -> /sys/inc/user.php), то не обращаемся к БД, а берём данные из уже имеющихся.
Предотвращает повторное обращение к БД.
MarkPrior 8 Авг 2022
Автор темы
ChangeLog 08.08 22:50
Полностью переписан класс user (/sys/classes/user.class.php).
Пример обращения:
$us = new User([id юзера], [[массив нужных полей]])
* если не указан id юзера, то будут взяты наши данные (массив $user - /sys/inc/user.php);
* если юзер не найден, то будут переданы данные Системы;
* в массив данных указываются поля из таблицы user, которые требуются для работы, все нужные поля для работы МЕТОДОВ указаны в классе;
* если массив не указан, то будут взяты дефолтные поля (указаны в классе).
Полное обращение:
$us = new User($post['id_user'], ['id', 'avatar', 'nick', 'date_last', 'group_access', 'browser']])
Указанных данных достаточно, чтобы вывести аватар, иконку группы, ник и иконку онлайна.
Все возможные параметры методов указаны в классе.
Проверить, есть ли реальный юзер: $us->check()
Вывести значение нужного поля: $us->get('nick')
Вывести иконку группы: $us->group()
Вывести ник: $us->nick()
Вывести название ранга: $us->getGroupName().
Сохранённые статик методы:
user::banned(), user::metadata(), user::setReply()
Эти методы не требуют запросов в БД, работают по сути отдельно.
Автор темы
ChangeLog 08.08 22:50
Полностью переписан класс user (/sys/classes/user.class.php).
Пример обращения:
$us = new User([id юзера], [[массив нужных полей]])
* если не указан id юзера, то будут взяты наши данные (массив $user - /sys/inc/user.php);
* если юзер не найден, то будут переданы данные Системы;
* в массив данных указываются поля из таблицы user, которые требуются для работы, все нужные поля для работы МЕТОДОВ указаны в классе;
* если массив не указан, то будут взяты дефолтные поля (указаны в классе).
Полное обращение:
$us = new User($post['id_user'], ['id', 'avatar', 'nick', 'date_last', 'group_access', 'browser']])
Указанных данных достаточно, чтобы вывести аватар, иконку группы, ник и иконку онлайна.
Все возможные параметры методов указаны в классе.
Проверить, есть ли реальный юзер: $us->check()
Вывести значение нужного поля: $us->get('nick')
Вывести иконку группы: $us->group()
Вывести ник: $us->nick()
Вывести название ранга: $us->getGroupName().
Сохранённые статик методы:
user::banned(), user::metadata(), user::setReply()
Эти методы не требуют запросов в БД, работают по сути отдельно.
MarkPrior 8 Авг 2022
Автор темы
ChangeLog rewrite user.class
* изменения в таблице user -> добавлено поле avatar, которое будет содержать название изображения аватара в виде: name.type (example: loadedavatarblala.png), избегаем необходимость обращаться к gallery_foto;
* вызов класса будет осуществляться в виде: $us = new user(<id>);
* если юзера нет, то в $us пойдут дефолтные данные ("Система");
* проверить существование настоящего юзера: $us->check()
Автор темы
ChangeLog rewrite user.class
* изменения в таблице user -> добавлено поле avatar, которое будет содержать название изображения аватара в виде: name.type (example: loadedavatarblala.png), избегаем необходимость обращаться к gallery_foto;
* вызов класса будет осуществляться в виде: $us = new user(<id>);
* если юзера нет, то в $us пойдут дефолтные данные ("Система");
* проверить существование настоящего юзера: $us->check()
MarkPrior 8 Авг 2022
Автор темы
ChangeLog 08.08 20:30 0.2 | Изменения в бд
Немного поменялась архитектура таблиц для форума.
* forum_t:
Больше нет полей: id_edit -> edit_info (содержит id|nick отредактировавшего тему), id_close -> close_info (id|nick закрывшего/открывшего тему).
Добавилось поле posts_count (кол-во комментов в теме).
Добавилось поле ids - содержит архитектуру подфорумов, в которых находится.
* forum_f:
Поле adm будет содержать указанный админом уровень доступа к разделу (берётся из user -> level).
Добавилось поле ids - содержит архитектуру подфорумов, в которых находится, если не является главным форумом.
Поле main_fid - содержит id главного форума, в котором создан или находится ((пра)-родитель).
* forum_r - не востребован, удалён.
Автор темы
ChangeLog 08.08 20:30 0.2 | Изменения в бд
Немного поменялась архитектура таблиц для форума.
* forum_t:
Больше нет полей: id_edit -> edit_info (содержит id|nick отредактировавшего тему), id_close -> close_info (id|nick закрывшего/открывшего тему).
Добавилось поле posts_count (кол-во комментов в теме).
Добавилось поле ids - содержит архитектуру подфорумов, в которых находится.
* forum_f:
Поле adm будет содержать указанный админом уровень доступа к разделу (берётся из user -> level).
Добавилось поле ids - содержит архитектуру подфорумов, в которых находится, если не является главным форумом.
Поле main_fid - содержит id главного форума, в котором создан или находится ((пра)-родитель).
* forum_r - не востребован, удалён.
MarkPrior 8 Авг 2022
Автор темы
ChangeLog 08.08 20:30
Сегодня преимущественно работал только над форумом.
Возникали некие сложности с "бесконечным" созданием подразделов. А именно:
если будет удаляться один из таких подразделов, то, соответственно, должны будут быть удалены все дочерние подразделы, темы из них и комментарии. Долго бился с формированием такого запроса в БД, что оказалось плохой затеей, поэтому реализовал по другому. Отсюда - бесконечность подразделов конечна. Рано или поздно вылезет ошибка, так что обрублю это сразу. Но около 10-15 подразделов создаваться сможет (только смысл в этом?).
В подразделах могут создаваться как разделы, так и темы одновременно. Тоже возникли сложности с выводом ограниченного числа пунктов на страницу, учитывая, что выводим данные из двух разных таблиц, но сейчас всё отлично.
Следом оформлены боковые виджеты с выводом Активных и Новых тем на форуме. (ToDo - Не помешало бы реализовать кеширование боковушек).
* Сегодня перепишу класс user, чтобы можно было вызывать группу/параметризованный ник/аватарку с одного места, т.к. на данный момент это делается функциями group(), avatar(), что влечёт собой выполнение запросов в б.д. суммарно >3 раз, в то время, как можно сделать это разово.
Скриншоты с форума:
Скрин 1 - Скрин 2 - Скрин 3 - Скрин 4 - Скрин 5
Автор темы
ChangeLog 08.08 20:30
Сегодня преимущественно работал только над форумом.
Возникали некие сложности с "бесконечным" созданием подразделов. А именно:
если будет удаляться один из таких подразделов, то, соответственно, должны будут быть удалены все дочерние подразделы, темы из них и комментарии. Долго бился с формированием такого запроса в БД, что оказалось плохой затеей, поэтому реализовал по другому. Отсюда - бесконечность подразделов конечна. Рано или поздно вылезет ошибка, так что обрублю это сразу. Но около 10-15 подразделов создаваться сможет (только смысл в этом?).
В подразделах могут создаваться как разделы, так и темы одновременно. Тоже возникли сложности с выводом ограниченного числа пунктов на страницу, учитывая, что выводим данные из двух разных таблиц, но сейчас всё отлично.
Следом оформлены боковые виджеты с выводом Активных и Новых тем на форуме. (ToDo - Не помешало бы реализовать кеширование боковушек).
* Сегодня перепишу класс user, чтобы можно было вызывать группу/параметризованный ник/аватарку с одного места, т.к. на данный момент это делается функциями group(), avatar(), что влечёт собой выполнение запросов в б.д. суммарно >3 раз, в то время, как можно сделать это разово.
Скриншоты с форума:
Скрин 1 - Скрин 2 - Скрин 3 - Скрин 4 - Скрин 5
MarkPrior 7 Авг 2022
Автор темы
ChangeLog 07.08 21:40
Сегодня по большей мере изменения коснулись лишь фронта, чтобы было приятно хотя бы самому себе сидеть работать над этим.
Полностью рабочие светлые и тёмная темы. Переход между ними для пользователя: ?design=dark/light. Информация хранится в поле user[set_them].
На скриншотах примеры:
Скрин 1
Скрин 2
Скрин 3
Скрин 4
Скрин 5
Скрин 6
Скрин 7
Скрин 8
Скрин 9 (немного съехали иконки сбоку, забыл класс обновить)
Скрин 10
Завтра-послезавтра форум уже будет полностью переделан. Таблица особо не трогается, стараюсь по крайней мере. При переходе на двиг данные утеряны не будут + будет обеспечен скрипт, который за вас перетащит и поставит данные из старой таблицы в новую.
Автор темы
ChangeLog 07.08 21:40
Сегодня по большей мере изменения коснулись лишь фронта, чтобы было приятно хотя бы самому себе сидеть работать над этим.
Полностью рабочие светлые и тёмная темы. Переход между ними для пользователя: ?design=dark/light. Информация хранится в поле user[set_them].
На скриншотах примеры:
Скрин 1
Скрин 2
Скрин 3
Скрин 4
Скрин 5
Скрин 6
Скрин 7
Скрин 8
Скрин 9 (немного съехали иконки сбоку, забыл класс обновить)
Скрин 10
Завтра-послезавтра форум уже будет полностью переделан. Таблица особо не трогается, стараюсь по крайней мере. При переходе на двиг данные утеряны не будут + будет обеспечен скрипт, который за вас перетащит и поставит данные из старой таблицы в новую.
MarkPrior 7 Авг 2022
Автор темы
ChangeLog 07.08 16:40
* гостевая дописана, работает хорошо.
* /forum/:
=> на данный момент можно создавать подфорумы и темы в простом варианте.
=> количество подфорумов пока что безлимитное:
==> таблица forum_r на данный момент невостребована, все форумы хранятся в forum_f (возможно, изменится).
==> это позволяет в подфорумах создавать новые подфорумы и темы одновременно.
=> создание форума/подфорума/темы обрабатываются в едином месте: create=<объект>[&forum_id=<id>].
создание форума: ?create=main.forum
создание подфорума: ?create=sub.forum&forum_id=id
создание темы: ?create=thread&forum_id=id
ссылка на подфорум: ?forum_id=id
Внешний вид форума на данный момент:
Скрин 1 - главная
Скрин 2 - подфорум
Скрин 3 - подфорум подфорума
(ToDo) после доработки форума можно оформлять главную страницу.
(!) файлы форума пока что выгружаться не будут до доработки вывода тем в подфорумах.
Автор темы
ChangeLog 07.08 16:40
* гостевая дописана, работает хорошо.
* /forum/:
=> на данный момент можно создавать подфорумы и темы в простом варианте.
=> количество подфорумов пока что безлимитное:
==> таблица forum_r на данный момент невостребована, все форумы хранятся в forum_f (возможно, изменится).
==> это позволяет в подфорумах создавать новые подфорумы и темы одновременно.
=> создание форума/подфорума/темы обрабатываются в едином месте: create=<объект>[&forum_id=<id>].
создание форума: ?create=main.forum
создание подфорума: ?create=sub.forum&forum_id=id
создание темы: ?create=thread&forum_id=id
ссылка на подфорум: ?forum_id=id
Внешний вид форума на данный момент:
Скрин 1 - главная
Скрин 2 - подфорум
Скрин 3 - подфорум подфорума
(ToDo) после доработки форума можно оформлять главную страницу.
(!) файлы форума пока что выгружаться не будут до доработки вывода тем в подфорумах.