Добро пожаловать, Гость!
:: + Добавить ссылку через биллинг
:: + Добавить ссылку анонимно
DOXNET — анонимность, общение и цифровая безопасность
DOXNET — анонимность, общение и цифровая безопасность
DOXNET — анонимность, общение и цифровая безопасность
DOXNET — анонимность, общение и цифровая безопасность
Рерайтинг движка | GitHub - Страница 11
Предложения и пожелания | Рерайтинг движка | GitHub
MarkPrior : Рерайтинг движка | 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 9 Авг 2022Автор темы
ChangeLog 09.08 10:50
В /sys/inc/user.php добавлена "глобальная" переменная $_ME, которая обращается к классу User() для получения инфы о нашем пользователе заранее, чтобы избегать повторного обращения к классу.
Удалены невостребованные функции из /sys/inc/fnc.php (admin_log(), only_reg(), only_unreg(), my_esc(), file_put_content()).
Функция admin_log() работает с теми же параметрами через глобальную переменную $_ME. Обращение: $_ME->admin_log(<params>).
Функции only_reg/only_unreg заменил метод: $_ME->isRegistered([param]). За параметр указывается false, если доступ только незарегистрированным. Без параметра или с true - доступ только зарегистрированным.
MarkPrior 9 Авг 2022Автор темы
Был создан новый репозиторий (синхронизировал с PHPStorm, чтобы не выгружать вручную).
GitHub | DCMS-Social.
Сейчас выгружены абсолютно все файлы, включая не тронутые.
MarkPrior 8 Авг 2022Автор темы
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()
Эти методы не требуют запросов в БД, работают по сути отдельно.
MarkPrior 8 Авг 2022Автор темы
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 - не востребован, удалён.
MarkPrior 8 Авг 2022Автор темы
ChangeLog 08.08 20:30
Сегодня преимущественно работал только над форумом.
Возникали некие сложности с "бесконечным" созданием подразделов. А именно:
если будет удаляться один из таких подразделов, то, соответственно, должны будут быть удалены все дочерние подразделы, темы из них и комментарии. Долго бился с формированием такого запроса в БД, что оказалось плохой затеей, поэтому реализовал по другому. Отсюда - бесконечность подразделов конечна. Рано или поздно вылезет ошибка, так что обрублю это сразу. Но около 10-15 подразделов создаваться сможет (только смысл в этом?).
В подразделах могут создаваться как разделы, так и темы одновременно. Тоже возникли сложности с выводом ограниченного числа пунктов на страницу, учитывая, что выводим данные из двух разных таблиц, но сейчас всё отлично.
Следом оформлены боковые виджеты с выводом Активных и Новых тем на форуме. (ToDo - Не помешало бы реализовать кеширование боковушек).
* Сегодня перепишу класс user, чтобы можно было вызывать группу/параметризованный ник/аватарку с одного места, т.к. на данный момент это делается функциями group(), avatar(), что влечёт собой выполнение запросов в б.д. суммарно >3 раз, в то время, как можно сделать это разово.
Скриншоты с форума:
Скрин 1 - Скрин 2 - Скрин 3 - Скрин 4 - Скрин 5

