Тема: Рерайтинг движка | GitHub (Движок DCMS-Social/Предложения и пожелания) MarkPrior (3 Aug 2022 в 14:13) [b]ChangeLog 03.08 14:15[/b] + db.class.php - PDO соединение с форматированием запросов; * chomd_test.php - значительно упрощена проверка прав доступа к папкам/файлам; * user.php - переведено на PDO, убраны лишние запросы (~27), сделаны пометки участков кода к удалению/перемещению MarkPrior (3 Aug 2022 в 16:35) [b]ChangeLog 03.08 16:30[/b] - mysql2i-файлы удалены, невостребованы; - compress.php, ipua.php, sess.php, settings.php, home.php - (удалены) нужный код перенесён в start.php; * fnc.php - теперь содержит только функции; ===> запросы переведены на PDO, ===> убрано немалое количество лишних, ===> убраны неиспользуемые функции, ===> со временем будут удаляться оставшиеся ненужные (как my_esc, vremja); ===> код не функций перенесён в start.php; * start.php - запросы переправлены на PDO, ===> убрано немалое количество лишних, ===> функции перенесены в fnc.php (за исключением парочки), ===> убран дублированный код, ===> * будет дорабатываться. * gifdecoder/gifencoder.php - нужно заменить, есть ошибки, пока что убраны неиспользуемые переменные; * tar.php/zip.php - заменить, много лишнего кода. * main_menu, main_notes, news_main.php - сделать отдельными виджетами, пока что переведены на PDO, убраны лишние запросы. + index.php - выгружена главная страница с уже удалёнными инклудами, немного подправлен. P.S. Лишних mysql-запросов суммарно нашёл уже ~40-45, все удалены, нужные - оптимизированы в компактный вид. Уже сейчас страницы грузятся быстрее. MarkPrior (3 Aug 2022 в 20:26) [b]ChangeLog 03.08 20:05[/b] * Все функции из /sys/inc/ перемещены в /sys/fnc/; * Все функции в /sys/fnc/ переведены на PDO, ===> убраны все лишние запросы (~18), ===> код некоторых функций полностью изменён (прим, sklon_text()), ===> удалены дубляжи функций, ===> во многих были неиспользуемые переменные; (?) avatar/status частичные дубляжи, будет создана одна; функция; + start.php добавлен чекер GET/POST; + /inc/database/ - перемещён db.class.php и добавлен db.backup.class.php для создания бекапов базы данных; (>) На завтра правки - /sys/classes/, /sys/add/. MarkPrior (3 Aug 2022 в 20:46) [b]ChangeLog 03.08 20:45[/b] + На GitHub добавлены примеры по структуре PDO-запросов SELECT (SELECT COUNT), UPDATE, INSERT (INSERT MULTIPLE): [url=https://github.com/VSpier/dcms-social/blob/main/README.md]GitHub - Dcms-Social | README[/url] MarkPrior (4 Aug 2022 в 11:06) [b]ChangeLog 04.08 11:00[/b] * Все классы из /sys/classes/ переведены на PDO, убраны лишние запросы/условия, неиспользуемые переменные/методы. (?) Класс avatar - дубляж функций avatar/status, будет редактироваться. (!) На данный момент весь /sys/ переведён на PDO. Начнём править отдельные разделы от простого к сложному. Классы и функции будут переписываться по мере изменения разделов, сейчас избавились от ненужного в коре, дабы кода была меньше и страницы грузились быстрее. * Из-за изменения вида запросов уходим от циклов вида while() к foreach(), который так же выигрывает по скорости. * В db.class.php поправлен метод delete, который давал ошибку. * Есть устаревшие классы (mp3_id/pear), писавшиеся на PHP 4. Надо будет смотреть замену. * Сегодня надо будет смотреть регистрацию/авторизацию. MarkPrior (4 Aug 2022 в 15:35) [b]ChangeLog 04.08 15:30[/b] * reg.php - переписана регистрация ===> html элементы регистрации теперь находятся в /sys/widgets/reg/, ===> в reg.php происходит непосредственно обработка данных, ===> с переписью убрано множество лишних запросов в бд, ===> обновлена отправка сообщений на E-mail для активации аккаунта, ===> дату рождения возможно указать только валидную: написан скрипт, который выводит список чисел, которые были в выбранный год в выбранном месяце, ===> проверка валидности даты так же происходит при отправке данных, ===> требования к паролю теперь не 6-32 символов, а 8-64, ===> запросы в бд (настройки пользователя) перенесены из user.php в завершающий этап регистрации. * fnc.php - переписаны функции err() и msg() ===> так как после отправки данных происходит обновление страницы (переадресация) во избежание повторной отправки данных, сообщение об ошибке нужно отправить перед этим: err(\'ошибка\'), ===> ошибка будет показана после переадресации, если в файле указана функция: err(), ===> то же самое с сообщениями об успехе: msg(\'успех\') -> msg(); (+) db.mailer.class.php - класс отправки сообщений на Email ===> годится для отправки ссылок активации аккаунта и бекапов базы данных. ===> (?) код старенький, нужно тестить. * db.class.php - исправлены недочёты форматирования запросов select/selectCount. * user.php/rekl.php - исправлены варнинги циклов foreach(). (?) Следующий на правки - aut.php (авторизация). MarkPrior (4 Aug 2022 в 19:34) [b]ChangeLog 04.08 19:25[/b] (-) aut.php - авторизация перенесена в reg.php; ===> обработчик авторизации по логину/паролю, прямой ссылке и cookie находится по-прежнему в login.php, где были переписаны все запросы и упрощена сама авторизация; ===> фронт оформление находится в /sys/widgets/reg/auth.php, ===> адрес авторизации теперь site.ru/auth. * start.php - изменено определение браузера пользователя: ===> теперь записываться будет ос, версия ос, название браузера и его версия (пример: Windows 10 - Yandex Browser 22.7), ===> обновление этой информации будет происходить не постоянно, а каждые 5 минут, информация не особо используемая. * user.php - упрощено определение IP-адреса; (+) /style/themes/web/menu.php/navigation.php - выгружены верхняя и левая боковая панели web-темы, переписанные, упрощённые; * теперь ссылки на сайте могут иметь вид: site.ru/reg вместо site.ru/reg.php (с конца убирается .php). может работать не со всеми форматами ссылок, надо тестить. (>) На сегодня ещё перепишу гостевую. P.S. Структура сайта всё-таки может измениться. Пока работал с кором, то увидел, что в БД очень много лишних полей, информация слишком разбросана, хотя может быть всё сделано куда компактней. Будет видно по переписи форума. MarkPrior (4 Aug 2022 в 23:31) [b]ChangeLog 04.08 23:20[/b] * user.class.php - добавлены методы banned() и metadata(): ===> banned() по user_id позволит узнать, забанен ли пользователь в разделе, и перенаправить на страницу с баном. ===> metadata() позволяет быстро работать с временной информацией: ======> сохранять её, указав название, значение и время хранения - user::metadata(\'save\', \'name\', \'value\', 300) (время в секундах), user::metadata(\'save\', \'name\', \'one|two\', 100), ======> получать полностью user::metadata(\'get\', \'name\'), ======> получить лишь часть по индексу - user::metadata(\'get-0\', \'name\') (вернёт false, если нет), ======> удалить - user::metadata(\'remove\', \'name\'). (!) версия слишком простенькая, будет изменяться; * db.class.php - поправлены недочёты с неформатированными запросами. (+) /guest/index.php - выгружена главная страница гостевой, ===> отдельные файлы раздела находятся в /sys/widgets/guest/, ===> убрано написание сообщений от неавторизованного (не востребовано), ===> (!) редактирования/ответов на сообщения пока что нет, допишется завтра. ===> информация о том, кто редактировал сообщение, будет сохраняться в бд в виде id|nick, дабы не вставлять доп. запрос, чтобы узнать ник.. ===> изменён принцип скрытия/показа сообщений, ===> при ?reply (приватный ответ) добавлены проверки на существование сообщения. [i]Мои контакты для связи по двигу:[/i] [blue]Telegram[/blue] - @marknprior MarkPrior (5 Aug 2022 в 14:44) [b]ChangeLog 05.08 14:30[/b] * db.class.php - исправлена ошибка, связанная с совпадением названия поля с зарезервированнымы mysql словами. * /guest/index.php: ===> добавлено редактирование сообщений, перенесено так же в index.php. ===> форма редактирования находится в /sys/widgets/guest/formEdit.php. ===> скрытие/показ/удаление сообщений теперь обрабатываются через единый GET[\'act\'] в виде: ======> ?act=hide&mess=<id>, ?act=show&mess=<id>, ?act=delete&mess=<id> ===> информация о том, кто скрыл/показал сообщение и кто отредактировал теперь сохраняются в поле admin_info в виде: ID|NICK|ID|NICK (через explode получим массив данных, первые ID NICK - кто скрыл/показал, вторые - отредачил). ===> (?) не особо элегантный способ, но позволяет избежать запросы в бд внутри цикла. На данный момент в гостевой осталось осуществить ответы. * user.class.php - исправлен недочёт в методе banned(), срабатывал даже если бана не было. ===> так же иконка онлайна через user::nick() будет выводиться дефолтом, дабы избавиться от функции online(). ===> (?) класс нужно будет переписывать, чтобы каждое последующее обращение к методам не требовало выполнения нового запроса к user, а работало в виде: $u = new user($id); $u->nick(<params>); $u->group(); но при этом позволяло обращаться отдельно к конкретным методам всё так же: user::banned($id), user::metadata(<params>) MarkPrior (6 Aug 2022 в 15:49) [b]Подробное описание изменений будет только на GitHub![/b] Смотрите в коммитах репозитория! [b]ChangeLog 06.08 15:50[/b] * user.class.php: ===> переписан метод metadata; ===> добавлен метод setReply; * guest - Гостевая: ===> полностью переписана; ===> в цикле вывода сообщений больше нет лишних запросов; * chat - Чат, начал переписывать. [b]ToDo[/b] (!) Из-за плохой адаптации дизайна под разные устройства возникают проблемы с \"ровным\" выводом длинных постов. Потому начал переписывать всё оформление. Не будет отдельной папки под default и под web. Будет единое адаптивное оформление. Выгружаться на git пока что не будет, пока не сверстается общий шаблон для гостевой. Так сказать, достаточно один раздел полностью переработать - остальное пойдёт быстрее из-за готовой базы. biket (6 Aug 2022 в 19:58) Класс к бащзе данных лучше через singleton сделать biket (6 Aug 2022 в 20:08) Класс к базе данных лучше через singleton сделать и отказаться от глобальной переменной TheSom (6 Aug 2022 в 22:15) biket, Конкурент твой :D Отобрал вашу работу и улучшил движок :D TheSom (6 Aug 2022 в 22:18) MarkPrior, Автор есть возможность глянуть на движок поковырять или он только на Git лежит ? MarkPrior (6 Aug 2022 в 23:33) TheSom, бетка будет запущена, когда хотя бы 3 раздела будут полностью переправлены. Сейчас это только Гостевая. Дальше хочется по большей мере Форум и Блоги. Когда они будут закончены - будет бетка. А пока что все обновки грузятся на хаб просто для просмотра изменений и, мб, каких-то рекомендаций по изменениям. MarkPrior (7 Aug 2022 в 00:05) [b]ChangeLog 06.08 23:50[/b] [b]Оформление[/b]: => больше не будет /style/themes/ с отдельно web и default темами; => на данный момент наброшено начальное адаптивное оформление на основе bootstrap; => по трендам - оформление будет светлое и тёмное (пример тёмной будет вскоре). Скриншоты наброска на основе Гостевой: [url=https://ibb.co/1RMcPNv]Скрин 1[/url] [url=https://ibb.co/LS2Yjdh]Скрин 2[/url] [url=https://ibb.co/MkpXKXH]Скрин 3[/url] [url=https://ibb.co/Fgt064Y]Скрин 4[/url] [url=https://ibb.co/LvDQKVB]Скрин 5[/url] [url=https://ibb.co/4MDCrJb]Скрин 6[/url] [b]Остальное[/b] * /sys/inc/user.php - убрана большая часть невостребованного кода, включая определение типа оформления сайта. * /sys/inc/start.php - подправлен в соответствии с изменениями в user.php. (!) /guest/index.php - обновлён по новому оформлению сайта ==> sys/widgets/-> getPosts (вывод сообщений в гостевой), form (форма ввода сообщения) - обновлены в соответствии с новым оформлением. ==> вид гостевой есть на скринах. ==> информация о том, кому отвечали, теперь хранится в поле reply (ранее privat) в виде id|nick (избегаем доп. запрос в цикле). (!) /sys/inc/thead.php - теперь он и выводит шапку сайта: ==> через него инклудятся боковая, верхняя и левая панели сайта из отдельных \"виджетов\": /sys/widgets/style/-> userHeader, userRight(-Left)Panel, userPreRightPanel (статичная правая боковая панель, которая при изменении размера экрана переходит вниз, а не скрывается). (!) /sys/inc/tfoot.php - так же теперь выводит непосредственно низ сайта. * метод metadata в user.class полностью изменён: ==> работает на сессиях, позволяет сохранять и получать временную информацию в разном виде: ===> user::metadata(\'save\', \'name\', \'value\') - сохранить в name значение value; ===> user::metadata(\'get\', \'name\') - получить фулл значение name; MarkPrior (7 Aug 2022 в 00:08) [b]ChangeLog 06.08 23:40 0.2[/b] ===> user::metadata(\'get\', \'name\', \'string\') - получить строку, если был сохранён массив ===> user::metadata(\'get\', \'name\', \'array\') - получить массив, если была сохранена строка вида one|two|three ===> user::metadata(<N>, \'name\', [\'value\']) - получить значение по индексу N или, если указано value с плейсхолдером %s, строку, в которой плейс будет заменён значением (будет удалено) ===> user::metadata(\'remove\', \'name\') - удалить инфу. Так реализовано, потому что подавляющее большинство не умеет устанавливать такие кешеры, как, к примеру, APC(u). Пользуем, что имеем. MarkPrior (7 Aug 2022 в 00:16) [b]Пояснение[/b] Почему нет полноценного перехода на ООП? Потому что в этом нет никакого смысла. Есть DCMS 7.5, у которого есть замечательный форк, не уступающий по оформлению и наполнению модулями данному движку. Разница между этими системами - dcms 7.5 будет куда сложнее в понимании обычному обывателю. Мой же вариант предполагает возможность самостоятельно, не копаясь в классах, редактировать код \"на месте\". Для пущего удобства в каждом разделе всё будет разделено на псевдо виджеты, представляющие собой просто куски конкретного участка кода, что позволит быстрее найти нужное место для изменения. Надо отредачить форму гостевой? Зашёл в /guest/index.php, увидел инклуд формы - пошёл в /sys/widgets/guest/form.php - отредачил. Быстро и комфортно для обычного человека. \"Ультра\" оптимизации не требуется, PHP 7 и так почти в 3 раза быстрее PHP 5.x, что уж говорить о PDO по сравнению с обычным MySQL. Главная проблема этого движка - чрезмерная захламлённость лишним кодом и лишними запросами в БД, что, собственно, постепенно меняется. [b]Заметка[/b] Пока оформление сырое - выгружаться на git оно не будет. Kokosik (7 Aug 2022 в 14:57) Автор молодец, но смысл в чем? Так выходит что это новый движок но с хламом старого.. может стоит сделать просто новый двиг? По функционалу похожий и привычный но полностью заного MarkPrior (7 Aug 2022 в 15:05) Kokosik, смысл в возможности перехода, даже если архитектура той же БД значительно изменится. По завершению будет писаться скрипт, который всё аккуратно припаркует в изменённой БД. Смысла писать с нуля нет никакого, основной кор по сути будет таким же. Цель - в чистке и структурированности архитектуры двига с сохранением простоты использования для любого ньюфага. Уже сейчас тот же /sys/inc/user.php сокращён более, чем в 2 раза. Хлам уходит. Ну и всё-таки я не тот, кто будет что-то с нуля делать без оплаты. .демон. Kokosik (7 Aug 2022 в 15:35) --Цитата-- MarkPrior (7 Aug 2022 в 15:05): Kokosik, смысл в возможности перехода, даже если архитектура той же БД значительно изменится. По завершению будет писаться скрипт, который всё аккуратно припаркует в изменённой БД. Смысла писать с нуля нет никакого, основной кор по сути будет таким же. Цель - в чистке и структурированности архитектуры двига с сохранением простоты использования для любого ньюфага. Уже сейчас тот же /sys/inc/user.php сокращён более, чем в 2 раза. Хлам уходит. Ну и всё-таки я не тот, кто будет что-то с нуля делать без оплаты. .демон. ---------- MarkPrior, но по факту твоя работа будет куда сложнее чем начать с ноля, в любом случаи молодец и желаю тебе успехов. MarkPrior (7 Aug 2022 в 16:39) [b]ChangeLog 07.08 16:40[/b] * гостевая дописана, работает хорошо. * /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 Внешний вид форума на данный момент: [url=https://ibb.co/m0fm69P]Скрин 1[/url] - главная [url=https://ibb.co/z5ZLJr0]Скрин 2[/url] - подфорум [url=https://ibb.co/Gp5gtHk]Скрин 3[/url] - подфорум подфорума (ToDo) после доработки форума можно оформлять главную страницу. (!) файлы форума пока что выгружаться не будут до доработки вывода тем в подфорумах. MarkPrior (7 Aug 2022 в 21:48) [b]ChangeLog 07.08 21:40[/b] Сегодня по большей мере изменения коснулись лишь фронта, чтобы было приятно хотя бы самому себе сидеть работать над этим. :) Полностью рабочие светлые и тёмная темы. Переход между ними для пользователя: ?design=dark/light. Информация хранится в поле user[set_them]. На скриншотах примеры: [url=https://postimg.cc/v42P4yhM]Скрин 1[/url] [url=https://postimg.cc/ZvP7ny7D]Скрин 2[/url] [url=https://postimg.cc/LnRQ7Nhd]Скрин 3[/url] [url=https://postimg.cc/GHQg1Gs4]Скрин 4[/url] [url=https://postimg.cc/nXhRVrv0]Скрин 5[/url] [url=https://postimg.cc/t7Fm2Lqt]Скрин 6[/url] [url=https://postimg.cc/NyWpxxZz]Скрин 7[/url] [url=https://postimg.cc/677MRPbZ]Скрин 8[/url] [url=https://postimg.cc/jwPv37bd]Скрин 9[/url] (немного съехали иконки сбоку, забыл класс обновить) [url=https://postimg.cc/T5x0z3dj]Скрин 10[/url] Завтра-послезавтра форум уже будет полностью переделан. Таблица особо не трогается, стараюсь по крайней мере. При переходе на двиг данные утеряны не будут + будет обеспечен скрипт, который за вас перетащит и поставит данные из старой таблицы в новую. MarkPrior (8 Aug 2022 в 20:43) [b]ChangeLog 08.08 20:30[/b] Сегодня преимущественно работал только над форумом. Возникали некие сложности с \"бесконечным\" созданием подразделов. А именно: если будет удаляться один из таких подразделов, то, соответственно, должны будут быть удалены все дочерние подразделы, темы из них и комментарии. Долго бился с формированием такого запроса в БД, что оказалось плохой затеей, поэтому реализовал по другому. Отсюда - бесконечность подразделов конечна. Рано или поздно вылезет ошибка, так что обрублю это сразу. Но около 10-15 подразделов создаваться сможет (только смысл в этом?). В подразделах могут создаваться как разделы, так и темы одновременно. Тоже возникли сложности с выводом ограниченного числа пунктов на страницу, учитывая, что выводим данные из двух разных таблиц, но сейчас всё отлично. Следом оформлены боковые виджеты с выводом Активных и Новых тем на форуме. (ToDo - Не помешало бы реализовать кеширование боковушек). * Сегодня перепишу класс user, чтобы можно было вызывать группу/параметризованный ник/аватарку с одного места, т.к. на данный момент это делается функциями group(), avatar(), что влечёт собой выполнение запросов в б.д. суммарно >3 раз, в то время, как можно сделать это разово. Скриншоты с форума: [url=https://postimg.cc/dhjq7NG1]Скрин 1[/url] - [url=https://postimg.cc/p9VPKQBB]Скрин 2[/url] - [url=https://postimg.cc/rdhMjdn2]Скрин 3[/url] - [url=https://postimg.cc/5YT1chWP]Скрин 4[/url] - [url=https://postimg.cc/CBzYQFXB]Скрин 5[/url] MarkPrior (8 Aug 2022 в 20:48) [b]ChangeLog 08.08 20:30 0.2 | Изменения в бд[/b] Немного поменялась архитектура таблиц для форума. * 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 Aug 2022 в 21:36) [b]ChangeLog rewrite user.class[/b] * изменения в таблице user -> добавлено поле avatar, которое будет содержать название изображения аватара в виде: name.type (example: loadedavatarblala.png), избегаем необходимость обращаться к gallery_foto; * вызов класса будет осуществляться в виде: $us = new user(<id>); * если юзера нет, то в $us пойдут дефолтные данные (\"Система\"); * проверить существование настоящего юзера: $us->check() MarkPrior (8 Aug 2022 в 23:00) [b]ChangeLog 08.08 22:50[/b] Полностью переписан класс 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 Aug 2022 в 23:35) [b]ChangeLog 08.08 23:30[/b] Обновлён класс user (/sys/classes/user.class.php). Если в него передаётся ID, совпадающим с нашим ($user -> /sys/inc/user.php), то не обращаемся к БД, а берём данные из уже имеющихся. Предотвращает повторное обращение к БД. MarkPrior (9 Aug 2022 в 00:35) Был создан новый репозиторий (синхронизировал с PHPStorm, чтобы не выгружать вручную). [url=https://github.com/VSpier/dcms-social-rewrite/]GitHub | DCMS-Social[/url]. Сейчас выгружены абсолютно все файлы, включая не тронутые. MarkPrior (9 Aug 2022 в 10:56) [b]ChangeLog 09.08 10:50[/b] В /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 Aug 2022 в 11:34) [b]ChangeLog 09.08 10:30[/b] Класс user дополнен методом checkAccess, который заменил функцию user_access. Обращение на данный момент: $_ME->checkAccess(\'имя права\'). MarkPrior (9 Aug 2022 в 15:15) [b]ChangeLog 09.08 15:00[/b] * В класс user добавлен метод checkCensure(), вместо функции censure. Обращение: $_ME->checkCensure(<msg>). * Переправлено определение системы. Т.к. в комменты на том же форуме отправляются сообщения об открытии/закрытии темы и, в принципе, системой можно в других разделах выводить информацию, то заранее, если нам передаётся id 0, мы пишем массив с системными данными. Так же будет переделано, чтобы можно было в params задавать определённые значения (к примеру, заранее обозначить ник, аватарку и т.п.). * Форум будет сегодня полностью готов. За исключением прикрепления файлов и лайков/дизлайков. Это будет реализовано после работы над блогами, чтобы продумать общий алгоритм обработки этих данных, а не по отдельности в каждом. [url=https://postimg.cc/fVhQbGwV]Скрин с темы форума 1[/url] [url=https://postimg.cc/zLzmCTH5]Скрин с темы форума 2[/url] MarkPrior (9 Aug 2022 в 22:18) [b]ChangeLog 09.08 22:00[/b] Добавлен класс Like. С помощью него можно выводить панель проставления лайков/дизлайков, их счётчики, выводить кнопки репоста (и его счётчик)/закладок, кнопку комментов с их количеством. Обращение: new Like([массив параметров]). Обязательные параметры: id_object - id объекта, id_user - id юзера, type - тип объекта (желательно (скорее, обязательно) в типе указывать имя таблицы, в которой хранится объект). Вспомогательные: likes[] - массив из кол-ва лайков/дизлайков, shares - кол-во репостов, posts - кол-во комментов. Т.к. теперь инфа о количестве (диз-)лайков, комментов, репостов будет храниться и обновляться той же таблице, что и сам объект, мы просто передаём в класс значения этих полей. На примере темы форума $post: $like = new Like([\'id_object\' => $post[\'id\'], \'id_user\' => $user[\'id\'], \'type\' => \'forum_t\', \'likes\' => [$post[\'likes_count\'], $post[\'dislikes_count\']], \'shares\' => $post[\'shares\']]); Отправка (диз-)лайка: Обращаться только после получения GET[\'like\'] запроса. Значение будет либо like, либо dislike. Оно передаётся в метод setLike: if (isset($_GET[\'like\'])) $like->setLike($_GET[\'like\']), внутри метода само определит, что передалось. Внутри метода мы можем обновить данные сразу у объекта в его таблице, ЕСЛИ тип назван именем таблицы и у объекта имеются поля likes_count, dislikes_count. Для этого: $like->setLike($_GET[\'like\'], true); Метод вернёт либо id вставленной записи или false, если что-то пошло не так. Вывод панели: $like->getContent(\"?thread_id={$post[\'id\']}&\"); В параметре указывается корректная ссылка на наш объект, к метод добавит параметр like. Если likes отправлен, то вместо надписи \"Лайк\" будет выводиться кол-во лайков, если их больше нуля. MarkPrior (9 Aug 2022 в 22:26) [b]Визуал[/b] Мы дополнительно передали параметры на вывод кнопок репоста и закладок. 1. Лайков нет - [url=https://postimg.cc/HjCN2H73]Скрин[/url] 2. Мы поставили лайк, но в класс не был передан параметр likes[] - выводим просто надпись \"Лайк\" и подсвечиваем иконку: [url=https://postimg.cc/xcfFwR5z]Скрин[/url] 3. Параметр likes[] передан и мы поставили лайк: [url=https://postimg.cc/zVxP8g2P]Скрин[/url] * Если мы не поставим лайк, но их будет больше нуля, то иконка с количеством будут серого оттенка. 4. Поставили дизлайк: [url=https://postimg.cc/bZdVJwKY]Скрин[/url] 5. Поставили дизлайк без переданного параметра likes[]: [url=https://postimg.cc/873KrVSR]Скрин[/url] MarkPrior (10 Aug 2022 в 13:33) [b]ChangeLog 10.08[/b] Перед началом рерайта блогов, решил сразу осуществить прикрепление фото к постам (пока что только фото). Реализовано с использованием Ajax, всё-таки время то, что без js никуда. На данный момент, например, к теме форума можно прикрепить 3 изображения. После их выбора с устройства, будут показаны превьюшки с кнопкой удаления. Как это выглядит: [url=https://dcms-social.ru/foto/foto0/8057.jpg]Скриншот[/url]. Осталось доработать их добавление в БД, если юзер всё-таки создаёт тему (т.к. он может уйти со страницы, потому нам нужно удалить выгруженные файлы). И уже сегодня будут редачиться блоги. Kokosik (10 Aug 2022 в 17:50) Смотрю работы идут, респект, посмотри еще бб панель у старого джонкмс(в новой версии гоано) очень удобная и простая мб стоит добавить + реализации файлов на форуме тоже можно было б подсмотреть в старом джоне MarkPrior (10 Aug 2022 в 21:30) [b]ChangeLog 10.08 21:30[/b] Бессмысленно потраченное время на реализацию загрузки изображений на ajax. Саму выгрузку реализовать несложно, это работает. Проблемы возникают при, к примеру, редактировании поста, к которому они прикреплены. То есть логично, что и в этом случае нужно реализовать удаление/добавление файлов на ajax. Вроде бы, реализовано, они выгружаются, сохраняются в БД, но конкретно при редактировании не происходит визуального обновления. И тут я застопорился, потому что ни ошибок, ничего нет, но получать ответ от скрипта отказывается. Буду думать завтра, сегодня просто блоги, без заморочек. MarkPrior (10 Aug 2022 в 22:03) [b]ChangeLog[/b] Смог починить редактирование изображений. В дальнейшем нужно будет делать такой вид, чтобы возможно было комфортно вызывать лишь один обработчик на любой раздел, а не делать для каждого свой. Реализация сильно хромает в том плане, что при редактировании сразу идёт взаимодействие с обновлением в БД, что не есть хорошо. Поэтому так же нужно придумать, как менять алгоритм, с учётом ограниченности в возможностях кеширования. MarkPrior (10 Aug 2022 в 23:29) [b]Окончательный вид[/b] темы форума: [url=https://dcms-social.ru/foto/foto0/8058.jpg]Скриншот[/url] Форум полностью готов. Блоги уже начал. Т.к. благодаря пройденной работе с форумом \"шаблоны\" страниц и структур уже имеется, всё пойдёт по накатанной. С переработкой блогов надо думать над обработкой загрузки файлов любых других типов (само собой не любых, но основных). База уже есть. После блогов будет уже первый набросок главной страницы и страницы пользователя. Следом реализованы репосты из форума в блог. Есть сомнения о необходимости чата. Вроде бы, уже полностью устаревшая тема. Гостевая полностью справляется с его ролью. MarkPrior (11 Aug 2022 в 17:40) [b]ChangeLog 11.08 17:30[/b] * start.php - переписан псевдо cron, чуток попонятней чтобы было, что происходит + чтобы не било ошибками. Лучше всего, если сайт на хостинге и нет доступа к Cron - используйте бесплатные сервисы, которые по расписанию будут заходить на указанную вами страницу, запуская тем самым все нужные процессы чистки и т.п. * likes.class - поправлен метод setLike(). Теперь класс можно использовать для абсолютно любого раздела (само собой, при указании должных параметров). Напомню, что с его помощью можно реализовать проставление лайков/дизлайков объектам, вывести кнопки с счётчиками, ссылки на репост и закладки. Всё быстро, буквально в пару строк. * раздел /news/ полностью переправлен. Визуал: [url=https://dcms-social.ru/foto/foto0/8059.jpg]Скрин 1[/url], [url=https://dcms-social.ru/foto/foto0/8060.jpg]Скрин 2[/url]. * из /forum/ удалены все боле не востребованные файлы, оставлены лишь index.php, count.php. MarkPrior (12 Aug 2022 в 14:32) [b]ChangeLog 12.08 14:20[/b] * улучшена адаптация оформления под мобильные устройства, чтобы при разрешении экрана в < 360px (если ещё кто-то пользует такие), текст не уезжал. В целом уменьшены превью аватарок пользователей, выводимые в комментариях, а не больших постах (темы форума, записи блогов). * start.php - фикс чистки временной папки. Т.к. для каждого раздела (форум, блоги, к примеру) выгружаемые временные файлы хранятся в своих директориях (/sys/blogs/, /sys/forum/), надо будет додумывать без доп. нагрузки на сайт. * Блоги: => теперь будут находиться в директории /blogs/, а не /plugins/notes/. => левая динамическая боковая панель для блогов будет своя, в ней выводятся категории блогов и ниже случайно выбранные хештеги (\"случайность\" нужно додумывать) - [url=https://postimg.cc/PLX2gLDj]Визуал[/url]. => хештеги могут иметь вид строго типа: #слово, возможны лишь буквы (любого языка) и числа 0-9. [url=https://postimg.cc/JypPM13B]Визуал[/url] - создание блога. => длина названия категории не может превышать 20 букв, иначе часть будет скрыта (на скрине видно, что \"Информационные технологии\" оборвано. (ToDo) Т.к. архитектура построена на псевдовиджетах, находящихся по своим директориям в /sys/widgets/, в дальнейшем можно сделать полноценный просто шаблонизатор, т.к. блоки в большинстве случаев те же, лишь информация динамическая. Пока что для простоты разбора остаётся так. (=>) После блогов будет переработан вид сайта для гостей и переправлена регистрация/авторизация под новый дизайн. Преобладающая часть разделов теперь будет доступна только зарегистрированным пользователям, изменить это админскими настройками больше не будет возможно. MarkPrior (12 Aug 2022 в 16:09) [b]ChangeLog 12.08 16:00[/b] * обновлён класс likes: => исправлена ошибка в setLike, из-за которой ставился только дизлайк. => дополнен метод getContent, вторым параметром можно указать классы дивов для более лучше позиционирования блока: пример, getContent(\'?news_id=1&\', \'mt-3 mb-0\'). => в список возможных параметров отдельно добавлен fav (любое значение, указывает на то, выводить ли кнопку добавления в закладки), posts (вывод кол-ва комментов: если их нет, то кнопка будет серой, иначе цветная с указанием кол-ва комментов). [url=https://postimg.cc/Wh2BJDZq]Визуал[/url] на примере главной страницы блогов. MarkPrior (12 Aug 2022 в 22:10) [b]ChangeLog 12.08 22:00[/b] * Блоги: На основе блогов сделаны следующие плюхи. При вводе текста (название-описание) он будет сохраняться и при перезагрузке страницы не будет удалено. При отправке данных, если пользователь получит ошибку, он всё так же увидит свой ранее введённый текст и так же сообщение о том, что чтобы не потерять введённое содержимое - ему нужно внести правки. Если он этого не сделает, то данные будут стёрты, т.к. надобности в их хранении уже нет, раз у юзер не планирует дальше вести редактирование. Данная система будет завтра введена на форум (создание тем), новости и комментарии во всех разделах. Так же на основе блогов обновлён алгоритм прикрепления файлов к посту и их удаление (всё ещё при создании). Напомню, что она работает на ajax и всё происходит в livetime. Теперь, если пользователь удаляет файл из прикреплённых, то он так же удалится из временной папки, а не только meta-данных пользователя. При этом учтено, что возможны попытки обмана (попытки удалить совершенно другие файлы через удаление прикреплённых к блогу). При попытке сделать такое у пользователя будут удалены все файлы из meta-данных и из временной папки и показана \"ошибка\". Любые попытки передать \"левую\" информацию в обработчик удаления файла будет вести к такому исходу. Эта система так же будет завтра закреплена в форуме (создание тем/редактирование тем) и внедрена в редактировании блогов. * Класс user - исправлен метод setReply, увеличено количество передаваемых параметров. Это поможет избежать того, что пользователь отметит кого-то для ответа в одном, например, блоге, а затем сразу же перейдёт в другой и попытается ответить ему там. Эта система ответов всё ещё требует доработки. * Так же поправлен метод metadata. Теперь можно проверить существование какой-то меты и удалять не по одиночно, а передать массив удаляемых данных. MarkPrior (12 Aug 2022 в 22:18) [b]Визуал[/b] 1. Пользователь ввёл неверный формат хештега, получил ошибку, но текст сохранился - [url=https://postimg.cc/xNfDsKFd]показана ошибка[/url]. 2. Пользователь [url=https://postimg.cc/Mv4ZGFFb]прикрепил три файла[/url] к блогу, но попытался удалить тот, которого нет в его метаданных - в ответ мы удаляем все прикреплённые файлы [url=https://postimg.cc/ppyXRHqL]и выдаём ошибку[/url]. Сделано так потому, что непреднамеренно передать \"левую\" информацию невозможно. Значит была преднамеренная попытка это сделать. Энмеркар (13 Aug 2022 в 04:32) MarkPrior, Молодец что делаешь хорошие понятные комментарии к коду,, за репозиторий отдельное спасибо что там есть пояснения!) MarkPrior (13 Aug 2022 в 07:42) Энмеркар, часть информации комментариев неактуальна, будет правиться с ходом редактирования разделов, т.к. постоянно что-то меняется для удобства использования. MarkPrior (13 Aug 2022 в 22:07) [b]ChangeLog 13.08 22:00[/b] * обновлён класс Likes. добавлен метод getCommentContent(<data>). он выводит кнопку лайка для комментария и только. перед этим, как и для постов, сперва нужно вызвать класс. по сути, везде это осуществляется одинаково: new Like([\'id_user\' => ID, \'id_object\' => ID2, \'type\' => \'tableName\', \'likes\' => [likesCount, 0]]); например, для комментария блогов это: new Like([\'id_user\' => $user[\'id\'], \'id_object\' => $a[\'id\'], \'type\' => \'notes_komm\', \'likes\' => [$a[\'likes_count\'], 0]]); работает чисто на ajax, без него не будет. здесь так же обязательно типом должно выступать имя таблицы, где хранится объект лайка (для комма блогов - notes_komm). комментарии класса будут обновлены (вариант таких лайков очень сырой). * обновлена функция br. теперь учитывается не один перенос строки, а два. * допилена загрузка изображений к темам форума/блогам на ajax и так же редактирование. [b]Блоги[/b] Полностью адаптированы под дизайн, выводимые изображения так же подстраиваются под экран. Как выглядит главная страницы: [url=https://postimg.cc/vD9tWLq7]Скрин 1[/url], [url=https://postimg.cc/ZvrP44Bs]Скрин 2[/url], [url=https://postimg.cc/BtXQym9D]Скрин 3[/url] Если содержимое больше 512-ти символов, то выведется кнопка \"Показать полностью\", при нажатии которой на этой же странице будет показано остальное содержимое блога (наподобие ВК), но не более 2048 символов. Так же выводится последний комментарий. Здесь же, в принципе, можно сделать подгрузку остальных по клику... Но позже. Сегодняшние обновы пока что выгружаться не будут. Завтра, когда полностью доделаю блоги. MarkPrior (13 Aug 2022 в 22:15) [b]ChangeLog 13.08 22:00 0.2[/b] * обновлён метод nick в классе user. если указаны имя с фамилией - будут выводиться они. если указано только имя - только имя. если этой информации нет - по старинке будет ник [b]Дополнение[/b] Почему вводятся элементы ajax? Потому что всё-таки это современный подход. А в нашем случае это ещё и большой выигрыш в скорости работы. Если мы, к примеру, будет проставлять те же лайки с обновлением страницы, то лишь ради обработки всего одного объекта нам нужно снова выполнить всю ту кипу запросов, находящихся в шапке, получить массивы настроек, обработать это всё... В то время, как с ajax, мы обращаемся лишь к обработчику, где выполняется минимальнейшее количество запросов (от 1-го до 3-ёх) и нет никаких объёмных массивных данных. Разница ощутима. Соответственно и вывод обновлённой информации осуществляется быстро. Sto56 (14 Aug 2022 в 13:27) Привет. Где ты был раньше?) Молоток, уважаю за труд. Ты сделал за недолгое время столько, сколько за все время существования движка, сделано не было. Респект. MarkPrior (14 Aug 2022 в 18:57) [b]ChangeLog 14.08 18:50[/b] * улучшено редактирование прикреплённых изображений к блогам/форуму, в частности обработка передаваемых данных, дабы предотвратить негативные манипуляции... * блоги допилены. (скрины ниже - без боковых панелей, но они так же имеются). [!] По большей мере сегодня правился только фронт. Решил заранее сделать первый шаблон личной страницы пользователя - [url=https://postimg.cc/QBSTdb1N]Начальный вариант[/url]. Вместе с тем отправка постов на стену сразу осуществлена на ajax, относительно файлов надо будет думать позже. Страница полностью адаптируема под все устройства. Ссылка на страницу пользователя теперь будет иметь вид либо /id<ID>, либо @nick. [!] Сделана страница личных блогов пользователя - [url=https://postimg.cc/njP9vh36]Начальный вариант[/url], но, думаю, что таким и оставлю, выглядит прилично. Там так же возможно будет задать мини заставку и небольшой лозунг. [!] Сам блог теперь выглядит [url=https://postimg.cc/MMTjMQm7]следующим образом[/url]. Размеры изображений по мере уменьшения/увеличения разрешения экрана - подстраиваются. Ничто не вылезет за пределы. При наведении на (ред.) будет показано время последнее изменения комментария. Это так же будет введено во все разделы и личную почту. => Во все разделы со временем возможно внедрить отправку комментариев на ajax. Надо лишь будет думать, возможно ли это осуществить через единый обработчик. Пока что в ajax больше уходить не буду. Допишу полностью стену пользователя и дальше начну объединять разделы: репосты с форума в блог, со стены в блог и со стены на стену. Да, на стену репосты с главных разделов идти не будут, она будет нести в себе смысл наподобие \"стены\" в твиттере - короткие месседжи. Возможно, там будут показываться уведомлялки о смене аватарки и другие мелочи, но объёмных данных на ней не будет. P.S. К сожалению, и сегодня обновления на GitHub выгружены не будут. MarkPrior (16 Aug 2022 в 18:22) Вчера отдыхал. [b]ChangeLog 16.08 18:15[/b] * работал над видом сайта для гостей (авторизация/регистрация), в связи с чем были исправлены ошибки в классе User (вызов, если юзера нет) и в частности метод isRegistered, который вызывал бесконечную переадресацию для неавтоизованных. => скрины оформления авторизации/регистрации: [url=https://postimg.cc/fVPBFhQT]Авторизация[/url], [url=https://postimg.cc/Fdyp7dd7]Регистрация, шаг 1[/url], [url=https://postimg.cc/wy8FqcBC]Регистрация, шаг 2[/url]. Картинки сменяются автоматически, можно свои поставить и текст сменить. * работал над начальным шаблоном главной страницы, т.к. два основных раздела (форум и блоги) готовы. Шаблон начальный. Не факт, что так и останется, но пока что всё нравится. Пункты меню в блоках выводятся из таблицы menu, в которую для главной страницы добавлено поле big_icon. Все иконки для меню берутся из /style/icons/menu/ (указывается в виде name.png), а для главного меню - /style/icons/menu/big/. Сразу накидал вариант Фото историй. Пока что это просто публикация какой-то фотки. В принципе, есть наброски для нанесения текста на них, но пока внедрять такое не буду, останется в простом виде. В настройках сториз будет пункт \"Публичный\". Такие смогут выводиться на главной странице. Оформление взято на подобие ВК, лучше варианта не увидел. Фотки будут открываться во всплывающем окне либо на новой странице в зависимости от устройства (это пока допиливается). Скрины главной страницы: [url=https://postimg.cc/mPX0gMYV]Скрин 1[/url], [url=https://postimg.cc/GB4682zR]Скрин 2[/url], [url=https://postimg.cc/KKCwn2sM]Скрин 3[/url]. Сообщения с гостевой будут автообновляться на ajax. Главная страница максимально адаптивная под устройства. Блок с гостевой с уменьшением экрана пропадёт, а новые темы спустятся вниз. Начальная [b]Alpha-версия[/b] для ознакомления, возможно, будет запущена к концу месяца, адрес опубликую тут. Beta-версия для установки пока что не знаю, когда будет доступна, т.к. нужно инсталлер переп MarkPrior (17 Aug 2022 в 15:53) [b]ChangeLog 17.08 15:50[/b] + просмотр блогов в категории блогов; + удаление категорий блогов осуществлено на ajax: ==> из категории должны удалиться все блоги -> комментарии в этих блогах -> все файлы, прикреплённые к комментариям (не просто из БД, а конкретно файлы, которые мы должны получить из БД). в принципе, написать один select запрос с join\'ами, чтобы получить файлы - несложно, но пока что останется так, как было бы максимально понятно - циклы в циклах. да, трешово, но потому и перенесено отдельно и выполняется чисто через ajax, дабы не выполнять всю ту кипу кода с шапки. пока всё не удалится, будет показываться анимация загрузки, но пока что при тесте в 7к файлов (больше на пк нет) всё удалялось очень быстро и почти что не застаёшь анимацию. ==> по тому же принципу переделал удаление блогов, тоже на ajax. * такое удаление будет внедрено и на форуме. Пока что код чуток как каша, сегодня посижу, укомплектую, прокомментирую и выгружу на хаб. Репостинг пока что делать не буду, займусь стеной, чтобы дальше сразу пилить репосты под два раздела: блоги и стена. И дальше начать работать на уведомлениями пользователей (т.к. есть уже три раздела, откуда могут идти уведомлялки) -> раздел Друзей -> лента пользователей. Для обработки ajax создан отдельный файл /sys/inc/ajax.require.php, куда помещён весь нужный код для получения-обработки-вывода. Так же в обработчик можно сунуть лишь /sys/inc/session.php (да, снова вынесен из start.php из-за необходимости юзанья в ajax, но теперь инклудится сразу в него, а не отдельно) и /sys/inc/ajax.db.connect.php для подключения к бд. Т.к. данные бд хранятся в settings.ini, то после установки будет так же создаваться ajax.db.ini, откуда будут браться данные, дабы не тягать весь массив настроек из settings.ini. biket (21 Aug 2022 в 19:14) А чего удалено с гитхаба? MarkPrior (24 Aug 2022 в 17:22) Немного заматался с делами. Репозиторий восстановлю, баганулось и в ветку поверх залился другой проект, пришлось удалять. Сегодня-завтра работа продолжится. MarkPrior (29 Aug 2022 в 10:08) [b]ChangeLog 29.08 10:00 mini[/b] Видел, что писали про панель BB-тегов. Походил по сайтам, которые нашёл на этом двиге, чтобы приблизительные предпочтения посмотреть. Реализовал простой вариант. Панель выглядит [url=https://postimg.cc/wtfh3zVq]следующим образом[/url], будет появляться при нажатии на кнопку \"A\" (не стал делать панель статичной). Расширил количество доступных тегов, изменил их обработчик. Так же добавил тег [url=https://postimg.cc/9RsZtBKs]цвет текста[/url], панель разворачивается при нажатии на кисть. Не стал совать палитру, смысла в этом нет, указан набор плюс/минус популярных цветов, но юзер может указать и другой. Доступные форматы: #FFF, #FFFFFF. Параллельно чисто по фронту изменил [url=https://postimg.cc/LYJj1WCz]отображение капчи[/url]. Насчёт окна со смайлами возникли сложности, т.к. не знаю, нужны ли они, ведь во всех смартфонах есть наборы Emoji. Лишь поэкспериментировал с open-source библиотекой от Twitter, нашёл два варианта опен сорс панелей: [url=https://postimg.cc/D4ssCXK0]первый[/url] оказался тяжеловат, страница зависает на 2-3 секунды, [url=https://postimg.cc/ThWr2ZWx]второй[/url] оказался проще и лучше, но реализация такого окна не нравится. Посему пока что оставлю это на потом. --------------- Для более-менее статичных html-элементов (капча, панель bb-тегов, поле ввода текста в целом (комменты, сообщения)) создан класс /sys/classes/html.class.php с методами captcha, bbpanel, insertMessage. Пример использования: html::captcha(\'Проверка\'). Сделано для того, чтобы для каждого раздела сайта не прописывать вручную одно и то же, а просто передать нужные параметры. Поле ввода текста пока что доделывается. --------------- На гит будет выгружено завтра. Если снова пропаду, то я регулярно появляюсь в телеграме: [url=https://t.me/marknprior]@marknprior[/url]. MarkPrior (30 Aug 2022 в 19:14) [b]ChangeLog 30.08 19:10[/b] * переписывается почта. Этот раздел полностью перерабатывается. Старые таблицы (mail, users_konts) удалены. Теперь будет иметься полноценный функционал мессенджера с групповыми чатами. Новые таблицы: dialogs (id, name, type (personal/group), new_msg), dialogs_msg (id, dialog_id, user_id, time, read, msg), users_dialogs (dialog_id, user_id, type (fav/archive), pin). [url=https://postimg.cc/BL8kgXfP]Список диалогов[/url] (скроллится). [url=https://postimg.cc/dZrfbp1q]Обычная переписка[/url]. [url=https://postimg.cc/HjyF8ctf]Конференция[/url]. Сообщения в своём окне, который скроллится. Пока что не знаю, как реализовать листинг: прогрузка при прокрутке или привычный постраничный листинг. При клике в списке диалогов на нужный контакт/конфу - всё быстро подгружается на ajax. Отправка сообщений тоже на ajax. Единственное, над чем сейчас думаю - реализация автообновления диалога для каждого из собеседников только в том случае, если кем-то отправлено новое сообщение. Это можно было бы плюс/минус легко реализовать при помощи сокетов, но, дабы не грузить мозг обывателям, попробую реализовать на ajax при обращении к файлу-обработчику, который респонсом будет нам сообщать о наличии непрочитанных сообщений в диалоге и только при их наличии будет осуществлено обновление диалога. Хоть это и влечёт за собой постоянное выполнение запроса к БД, но это лучше, чем обновлять весь диалог, в котором запросов гораздо больше. Ещё сыровато, написана лишь сама переписка и ajax-обработчики. * подправлен класс user: ==> добавлен метод dialog_avatar (он тут не особо к месту, но пока что будет здесь). MarkPrior (30 Aug 2022 в 19:19) На днях хочу запустить на хосте, чтобы удобней было параллельно тестить. Если есть желающий хелпануть, телеграм: [url=https://t.me/evcody]evcody (ex. marknprior)[/url] --- Так же у меня отпуск подходит к концу. Уже за три недели была проделана приличная работа, но... Может получиться так, что в дальнейшем работа будет идти довольно медленно. Потому на днях прокомментирую весь код (локально с примерами), дабы было понятно, что-где-как было переделано и реализовано и, если на то пойдёт, местные разрабы смогут что-то взять, что-то доделать. Кому как удобней. Код остался максимально простым, трудностей не возникнет. MarkPrior (31 Aug 2022 в 19:20) [b]ChangeLog 31.08 19:10[/b] Изменения по Почте. Структура таблиц диалогов изменена. На данный момент уже корректно работает начало переписки с пользователем, с которым ещё не было диалога. Ссылка на такую переписку имеет вид: /konts?dialog=<id> При написании сообщения автоматически обновляются контакты в левой панельке списка диалогов и сам блок сообщений с пользователем. Количество запросов уменьшено, работает быстро. При выборе диалога будет показана [url=https://postimg.cc/WDCy15vC]анимация загрузки[/url]. Сообщения в конфе выглядят [url=https://postimg.cc/LJy7rH0H]следующим образом[/url] (здесь видно, что в боковой панели отображено мол посл. сообщение от Пашка, это из-за того, что месседж был добавлен через Б.Д. напрямую). Наше [url=https://postimg.cc/jWL9TGGy]непрочитанное сообщение[/url] имеет тёмный подтон блока, пока что иное не придумал (тут уже видно, что сообщение в панельке обновилось, т.к. было отправлено с сайта). Так же на скрине видно, что диалог с Пашкой помечен галочкой, что означает, что диалог с ним [url=https://postimg.cc/sMfq6Bm6]закреплён[/url]. Пока нет непрочитанных им сообщений, будет галочка, иначе, как на этом скрине - точка, означающая, что собеседник ещё не заходил в диалог. ----- На данный момент сообщения в диалоге для всех собеседников обновляются автоматически только в том случае, если кто-то отправил новый месседж. Далее нужно придумывать то, как проверять, прочитаны ли они кем-то в этот же момент (т.е. диалог открыт собеседником(-ами)) и снова обновлять (или же просто менять стиль блока). Список диалогов, скорее всего, сделаю прогрузкой по скроллу, без листинга, а сообщения будут с листингом. На данный момент это будет единственный раздел, выполненный почти что полностью на ajax (но само собой он ещё не доделан полностью). ----- Сегодня выгружаю на хаб. В порядок пока что не привёл, постепенно обновлю. MarkPrior (31 Aug 2022 в 19:39) Репозиторий: [url=https://github.com/VSpier/DCMS]github.com/vspier/dcms[/url] Оставлено только то, что правилось. Постепенно обновлю, приведу в порядок и прокомментирую. Юрий (31 Aug 2022 в 22:03) --Цитата-- MarkPrior (30 Aug 2022 в 19:14): [b]ChangeLog 30.08 19:10[/b] * переписывается почта. Этот раздел полностью перерабатывается. Старые таблицы (mail, users_konts) удалены. Теперь будет иметься полноценный функционал мессенджера с групповыми чатами. Новые таблицы: dialogs (id, name, type (personal/group), new_msg), dialogs_msg (id, dialog_id, user_id, time, read, msg), users_dialogs (dialog_id, user_id, type (fav/archive), pin). [url=https://postimg.cc/BL8kgXfP]Список диалогов[/url] (скроллится). [url=https://postimg.cc/dZrfbp1q]Обычная переписка[/url]. [url=https://postimg.cc/HjyF8ctf]Конференция[/url]. Сообщения в своём окне, который скроллится. Пока что не знаю, как реализовать листинг: прогрузка при прокрутке или привычный постраничный листинг. При клике в списке диалогов на нужный контакт/конфу - всё быстро подгружается на ajax. Отправка сообщений тоже на ajax. Единственное, над чем сейчас думаю - реализация автообновления диалога для каждого из собеседников только в том случае, если кем-то отправлено новое сообщение. Это можно было бы плюс/минус легко реализовать при помощи сокетов, но, дабы не грузить мозг обывателям, попробую реализовать на ajax при обращении к файлу-обработчику, который респонсом будет нам сообщать о наличии непрочитанных сообщений в диалоге и только при их наличии будет осуществлено обновление диалога. Хоть это и влечёт за собой постоянное выполнение запроса к БД, но это лучше, чем обновлять весь диалог, в котором запросов гораздо больше. Ещё сыровато, написана лишь сама переписка и ajax-обработчики. * подправлен класс user: ==> добавлен метод dialog_avatar (он тут не особо к месту, но пока что будет здесь). ---------- MarkPrior, может лучше сразу сокеты? а для \"обывателей\" можно составить простую документацию по настройке скрипта. Кстати есть место на vps MarkPrior (1 Sep 2022 в 12:36) Юрий, лучше сперва полностью доделать, т.к. разделов много, чем заостряться на одном. И так с почтой увлёкся. Думаю, для неё можно будет аддон делать на сокетах. Для тех, кто на сервере, а не хостинге. То же самое, к примеру, с кешерами, как APCu. MarkPrior (1 Sep 2022 в 12:49) [b]ChangeLog 01.09 12:40[/b] (-) удалены все невостребованные (либо дублированные) функции из /sys/fnc, некоторые под вопросом, пока не нашёл, где они используются; (-) функция rez_text() заменена на cutstr(), которая будет делать \"умное\" обрезание текста по указанному количеству символов, но останавливаясь на последнем слове; (-) удалён файл /sys/inc/fnc.php, все востребованные функции перенесены в /sys/fnc. (-) удалены невостребованные файлы из /sys/inc (pear, mp3, tar, zip & etc.), в дальнейшем какие-то будут заменены. (*) подправлен класс User, передать в него теперь можно так же ник юзера, а не айди (сделано потому, что теперь на страницу пользователя доступна ссылка в виде site.ru/@nickname). (*) подправлен класс Db, убраны пару методов, указаны типы передаваемых данных. В классе имеются методы execute(<sql>) (прямой запрос, как правило без каких-либо параметров), query(<sql>, <params>) (прямой запрос с указанными параметрами). (+) класс /sys/inc/addons/declension - позволяет склонять слова по падежам, пока что просто добавлен, применение найдётся в будущем, т.к. теперь выводится не ник пользователя, а его имя (и фамилия), если те указаны. (*) на данный момент имеются основные ajax обработчики в /sys/inc: ajax.db.connect.php - предусматривает работу только с БД (без вывода информации) и ajax.require.php - с выводом информации, содержит в себе основные функции для вывода текста. со временем он будет удалён, т.к. по итогу может содержать невостребованную информацию. [b]По чату[/b] Чат переписываться не будет, т.к. не вижу в нём необходимости. Потому он будет убран полностью. Есть гостевая, есть лс, форум, блоги и т.п. - общаться есть где. googloff (1 Sep 2022 в 17:48) Когда то можно будет это установить и посмотреть) ждем) MarkPrior (2 Sep 2022 в 17:48) [b]ChangeLog 02.09 17:45[/b] Для почты сделана запись голосовых сообщений. Пример брал с ВК. Слева от поля ввода текста [url=https://postimg.cc/dhjnFG4p]расположена кнопка[/url]-микрофон, по клику на которую поле ввода текста будет скрыто и [url=https://postimg.cc/KkR5twxh]начнётся запись[/url]. Справа будет показан таймер, слева - в кружочке кнопка остановки, по нажатию на которую [url=https://postimg.cc/H8M4hMrS]запись будет остановлена[/url]. Будет отображена длительность записи и имеется возможность [url=https://postimg.cc/tZwNkk4Z]прослушать запись[/url] (при воспроизведении значок паузы). При нажатии на крестик (отмена записи) запись прервётся и будет возвращено поле ввода текста. Отправка пока не сделана, т.к. думаю, как это лучше осуществить - записывать в Б.Д. или сохранять в виде файла.. MarkPrior (2 Sep 2022 в 18:12) Мобильная версия почты выглядит так. Только зашёл в почту: [url=https://postimg.cc/mtHLVW4Z]Скрин[/url] (думаю, сделать всё-таки вывод контактов). Выбор диалога при нажатии на \"Начать переписку\": [url=https://postimg.cc/hX8SW8hH]Выдвижное меню[/url]. Перешли в диалог: [url=https://postimg.cc/hzvgdHMB]Конфа[/url]. Выбор другого диалога: [url=https://postimg.cc/mc8BhbYj]Выдвижное меню[/url]. Выдвижное меню закрывается при нажатии на крестик. Запись голосового так же адаптируется под размер экрана: [url=https://postimg.cc/D8PX5Gnw]Запись[/url]. Главную боковую правую панель (выдвигается по синему значку) в почте, думаю, уберу. Закрывается кнопку действий с диалогом. TheSom (6 Sep 2022 в 21:16) MarkPrior, а ты реально хорош :D MarkPrior (7 Sep 2022 в 12:13) [b]ChangeLog 07.09 12:00[/b] (*) Изменена структура разделов. До этого части разделов хранились в /sys/widgets/*/ Теперь же всё хранится в папках самих разделов в подпапке \'widgets\', дабы не захламлять /sys/. (*) Обработчики ajax перенесены в /sys/ajax/: ajax.db.connection - только для соединения с БД и определения юзера по сессии; ajax.declare.user - с объявлением класса User; ajax.handler - с объявлением некоторых классов для обработки инфы для вывода (будет удаляться). Вызывать лишь один под свои нужды. (+) Добавлен модуль getID3 (/sys/addons/getid3/) под версию PHP 7.x, требуется для работы с медиа-файлами. (*) В почте доработаны голосовые сообщения. На данный момент максимальная продолжительность сообщения - 60 секунд. Сохраняются в /sys/mail/voice/*.mkv. В диалогах голосовые выглядят [url=https://postimg.cc/p9cNKPPb]следующим образом[/url]. Так же для почты сделано выделение сообщений для пересылки или удалений. [url=https://postimg.cc/1VyM5YjC]Скрин 1[/url], [url=https://postimg.cc/Dmhxg8wr]Скрин 2[/url]. Количество выделенных с кнопками управления будут выводиться в верхней панельке диалога вместо имени собеседника/названия конфы. Обработчики пока что не делал, думаю над более простой реализацией пересылки сообщений. Удаление будет возможно только для себя и для всех, если создатель/админ конфы, или только для себя, если простой участник или диалог приватный. (?) Сегодня буду работать над настройками пользователей (приватность), чтобы доделать почту, раздел друзей, стену и доработать приватность блогов. На этом внедрение ajax остановится, дабы допиливать остальные разделы (фото, файлы, знакомства, лента, уведомления и т.п.). Скрипт по итогу не будет работать на версиях PHP ниже 7 (скорее, 7.4), будут требоваться значительные правки. На версиях же выше работать будет. --- Обновление будет выгружено, как доработаю это, чтобы разделы были полностью готовы. Sto56 (17 Sep 2022 в 13:18) Ну вот и все, по ходу :) А все так хорошо начиналось :) TheSom (19 Sep 2022 в 21:36) Sto56, Он писал что вроде как бы отпуск закончился но вскоре выпустит что то :D MarkPrior (23 Sep 2022 в 14:02) Да, ребята, у меня работа. Сейчас свободного времени маловато стало. Недоработки выгружать всё-таки не стану пока что, придётся подождать. Для связи я почти что всегда на связи в своём личном телеграме: [url=https://t.me/marknprior]@marknprior[/url]. =============== [i]Если кто-то уже использует или хочет использовать обновы в будущем для своих уже имеющихся сайтов, то, в принципе, за оплату могу осуществить рерайт чисто для вас и под вас.[/i] Ну а перепись для свободного доступа будет идти всё-таки только в свободное время. Sto56 (24 Sep 2022 в 16:32) TheSom, Помню, было такое дело :) Sto56 (24 Sep 2022 в 16:34) Не в огорчение автору, но мне кажется, что его обновы и весь переписанный код, будет платным. Сейчас идёт реклама и продвижение того, что уже много лет топчется на месте. Ещё раз, не в огорчение, это мое мнение. MarkPrior (25 Sep 2022 в 12:52) Sto56, всё, что переработано уже на данный момент, имеется на github\'е в свободном доступе. Это весь переправленный кор и переработанные форум/блоги, оформление, также дамп бд выгружу сегодня/завтра. Уже на основе этого любой желающий может сам переправлять свои сайты, писать новые разделы, придерживаясь уже имеющейся логики тех же блогов. Код остался столь же простым, каким и был. То есть я не шёл по пути DCMS 7, который умер сразу же после \"переписи\" из-за усложнившегося для понимая кода обычным юзерам. Так что можете уже сейчас брать, разбираться, делать что-то своё. -------- В любом случае, если кто-то хочет что-то непосредственно только для их сайта, могут обратиться лично, как я писал ранее. -------- Если используете наработанное, то советую использовать для работы с кодом тот же PHP Storm, который позволяет увидеть, где что используется (функции, классы и т.п.), дабы не гадать, где та или иная деталь вписана и как она работает. dezerty (25 Sep 2022 в 18:24) Дождемся бд и можно будет юзать. Давненько слежу за темой. Автор красавчик .апл2. Sto56 (26 Sep 2022 в 08:25) MarkPrior, Тогда пардон, думал иначе. За проделанную работу, вам отдельное место в раю приготовлено, спасибо :) facemas (28 Sep 2022 в 18:50) А где собственно, релиз официального движка? MarkPrior (29 Sep 2022 в 20:54) facemas, я не занимаюсь оф. движком. Над ним по-прежнему работают те, что и до этого. Моя наработка не будет в оф. релизе. Единственное, что оговорено biket’ом - какие-то детали будут взяты у меня для оф. релиза. Как я и говорил ранее, от моей работы вы сами можете брать то, что вам нужно. К примеру, переводить свои сайты на обновленное ядро. Если сами не хотите или затруднительно, то связывайтесь со мной, но, естественно, бесплатной работы не будет. —— Когда моя версия будет полностью закончена - не знаю. Предугадать невозможно, ведь я не просто пару строчек правлю. facemas (2 Oct 2022 в 20:21) Не знаю почему, но скачав архив с гитхаба я не могу установить двиг.. ошибка с базой MarkPrior (6 Oct 2022 в 23:27) facemas, версия php только от 7 и выше. Писалось и тестировалось на 7.4. Версии ниже ещё не пробовал. MarkPrior (6 Oct 2022 в 23:53) [b] pre ChangeLog 06.10[/b] (*) Настройки пользователей переносятся в отдельную таблицу: user_settings. Загружаться будут в класс user, параметр для вызова настройки - userSetting. (?) Метод metadata в классе user, возможно, будет реализован иначе. После тестов либо останется на сессиях, либо будет переведён на временные файлы. (?) Сам класс с добавлением настроек пользователя будет так же изменён. (*) Класс html дополняется методом getComments, который будет выводить комментарии к объекту. То есть не придётся вручную прописывать дивы и т.п., будет единое оформление комментариев. Достаточно будет вызвать getComments(\'параметры array|string\',[сортировка], [старт], [лимит]). => параметры array|string: ==> array - в массиве передаём имя таблицы с комментариями, имя столбца, где хранится id объекта, и сам id объекта. Пример: array(\'forum_p\', \'id_them\', 23). ==> string - передаётся только имя таблицы с сообщениями, если нам нужно вывести месседжи с таблицы без выборки по id объекта. Пример: \'guest\'. => сортировка - необязательный параметр, по умолчанию true. Выводить ли блок с кнопками сортировки сообщений (старые/новые). => старт - с какого месседжа начинать. По дефолту это просто 0. => лимит - количество запрашиваемых (выводимых) сообщений. По дефолту вытягивается значение из настроек юзера. Как правило, это 7. Полный пример: 1. getComments(array(\'notes_komm\', \'id_notes\', 4)); - просто выводим комменты, не указывая остальные параметры, то есть будут взяты их дефолтные значения. 2. getComments(array(\'forum_p\', \'id_them\', 2), false, 0, 12) - указываем свои настройки. 3. getComments(\'guest\', false) - указываем лишь что нам не нужна сортировка, т.к. выводим месседжи в гостевой, где также нет и выборки по id. Формироваться листенинг будет аналогично внутри метода. ToDo. Возможно, в будущем возможности будут расширяться, а конкретно - выборка по нескольким MarkPrior (21 Oct 2022 в 16:50) [b]ChangeLog 21.10 16:40[/b] (*) На данный момент переработан дизайн тёмной темы, т.к. \"ядрёно тёмные\" тона давили на глаза не меньше светлого оформления. [url=https://postimg.cc/Xp96PLCY]Главная страница[/url] - справа добавлена навигация на переход в ленту пользователя (посты/блоги/темы форума друзей) и на общие посты (посты со стен пользователей). Пока что там будут выводиться лишь новые записи. Систему \"рейтинга\" предстоит продумывать. [url=https://postimg.cc/dLPzGCxP]Главная страница форума[/url] - выглядит поприличней предыдущего варианта. [url=https://postimg.cc/qN0HHKsX]Раздел форума.[/url] [url=https://postimg.cc/rDq3PkTf]Тема форума.[/url] [url=https://postimg.cc/1gtTyrf6]Личные переписки.[/url] [url=https://postimg.cc/w1FZKGTg]Обычный диалог.[/url] [url=https://postimg.cc/D8rR6z9W]Групповой чат[/url] - реализована возможность установки фонового изображения. В личном диалоге пока что нет. Представленные скрины - своего рода \"планшетная\" версия сайта. [url=https://postimg.cc/jCCnypmc]Полноэкранная версия.[/url] (*) Верхняя панель (лента, почта, уведомления) теперь будет статично отображаться, а не сворачиваться при уменьшении разрешения. [url=https://postimg.cc/hQ0YDJn8]Шаг 1[/url], [url=https://postimg.cc/grqcXNks]Шаг 2[/url],[url=https://postimg.cc/9zjFQvVz]Шаг 3[/url]. MarkPrior (21 Oct 2022 в 20:10) [b]Info[/b] Готовый релиз будет доступен не раньше следующего лета. В лучшем случае весной. Тестовый сайт для общего доступа будет открыт в середине декабря-начале января. Возможно, пораньше. Сейчас к нему имеют доступ пару человек, которые время от времени помогают тестить. Сам адрес сайта: [url=https://dsmod.ru]DSMod.ru[/url] [i]Сейчас там обновляется SSL[/i] До открытия общего теста обновления на гит пока что заливаться не будут, чтобы народ не брал недоработанный код и потом не писал, что что-то не работает, не запускается и т.п. Но сами изменения будут по-прежнему указываться. MarkPrior (24 Oct 2022 в 15:46) [b]ChangeLog 24.10 15:40[/b] (*) Инициализация класса user переправлена под адекватность. Вызывается по-прежнему как new User(id|nick, [params]). Если заранее знаете, какие параметры будете использовать - перечисляем массивом. Если нет - оставляем пустым, возьмутся дефолтные. (*) Накидан прототип системы прав, которая позволит администраторам самим создавать привилегии и указывать, какими правами будут они обладать. Организация: таблица с правами будет содержать список самих прав и ID групп, к которым они присвоены; таблица групп будет содержать ID группы, название, иконку (или иконки онлайн/офлайн); в таблице user поле group (ранее level) будет содержать ID группы; насчёт поля group_access не уверен, буду смотреть дальше, нужна ли. (*) Будет реализовываться класс для кеширования какой-либо инфы. Возможно, пойдёт вместо метода metadata, который построен на сессиях. В принципе, он уже всунут из dcms 7. Буду смотреть, насколько его нужно переправлять, но на первый взгляд всё хорошо. ------- Напомню. Так как рерайт имеет цель изменения в русле \"простоты и понимания\", никаких шаблонизаторов, никакого фулл переписывания, как dcms 7/johncms и т.п., не будет. Не надо мне писать по этому поводу в телегу. ------- [b]Сайт[/b] На [url=https://dsmod.ru]dsmod.ru[/url] организован блок микрологов, где будут указываться некоторые правки, будущие правки и найденные ошибки. [b]GitHub[/b] Как говорил ранее, на гит обновы пока что заливаться не будут, но, скорее всего, будут заливаться обновы из /sys/, если местным разрабам нужны какие-то наброски для будущего релиза. Либо будет создана приватная ветка по необходимости. facemas (26 Oct 2022 в 18:46) Почему Git не доступен? ALASTAR (27 Oct 2022 в 20:07) facemas, видно удалил репозиторий ALASTAR (27 Oct 2022 в 20:09) GitHub временно запривачен, чтобы не использовался нестабильный код. MarkPrior (27 Oct 2022 в 21:44) Репозиторий расположен по той же ссылке, но пока что запривачен. Класс PDO будет подправляться, чтобы запросы было писать попроще, поэтому сейчас нет смысла использовать эти наработки. Само собой чем дальше разработка, тем вероятнее, что что-то уже сделанное будет вновь меняться, без этого никак :) ----- Для информации. Микрологи на [url=https://dsmod.ru]dsmod.ru[/url] обновляются раз в 18 часов, а не при внесении лога. Можете послеживать там, если на форуме инфа не добавляется. ALASTAR (27 Oct 2022 в 22:39) MarkPrior, жаль, хотелось бы глянуть какой он. На скринах не плохо выглядит MarkPrior (27 Oct 2022 в 22:58) ALASTAR, постараюсь до НГ на ОБТ запустить, там увидите :) Думаю, в конце ноября даже получится. В принципе, основное готово. Остаются разделы, которые связаны непосредственно с работой с файлами/медиа. Ну и по ходу работы так или иначе приходится что-то менять в уже готовом, подулучшать. А некоторые уже используют наработки, что слишком рано. Прошло-то едва ли месяца 3 с начала работы. facemas (8 Nov 2022 в 17:28) что-то всё на этом, активности с тестами ноль ALASTAR (9 Nov 2022 в 08:44) facemas, как в гидхабе закрыл и все на этом. Так бы хоть люди тестили facemas (9 Nov 2022 в 21:32) ALASTAR, согласен MarkPrior (13 Nov 2022 в 18:49) Обновлена информация на [url=https://dsmod.ru]DSMod.ru[/url]. Обновлений по рерайту пока что нет, т.к. заняты работой с другим проектом. Единственное - изменил немного класс подключения к БД и конструкторы запросов. Никаких \'defSelect\' и т.п. не нужно будет указывать. Файл будет первым доступным в тесте локального репозитория. Смотреть его смогут все непосредственно со страницы авторизации ЗБТ. ALASTAR (13 Nov 2022 в 21:51) @prior INFO Пока что идёт работа над другим оплачиваемым проектом. К рерайту вернёмся уже в скором времени. Будет открыт локальный репозиторий прямо на этом сайте. В его возможностях будет лишь просмотр файлов и их содержимого ----------- Что движок платный будет MarkPrior (13 Nov 2022 в 22:15) ALASTAR, ничего платного не будет. Попросту сейчас работаю над проектом, который заказали другие люди. Относительно репозитория. Речь о том, что будет собственный репозиторий непосредственно на самом [url=https://dsmod.ru]dsmod.ru[/url]. Попросту до ОБТ не будет возможности скачать. Но просмотреть код файла(-ов), скопировать его - доступно будет. MarkPrior (19 Nov 2022 в 11:51) На [url=https://dsmod.ru]DSMod.ru[/url] заработал локальный репозиторий в тестовом режиме. Просмотр рекомендуется [b]только[/b] с ПК. На данный момент там доступен просмотр нового варианта подключения к БД, среди преимуществ которого - более быстрая \"сборка\" запросов и наиболее лёгкое их конструирование. При этом такой сборщик позволяет конструировать более сложные варианты запросов (например, с разными вариантами join\'ов), не описывая их полностью вручную. Документация будет публиковаться постепенно. Сейчас пока что переправляется остальное содержимое /sys/ на данный вариант конструкции запросов. biket (20 Nov 2022 в 01:41) --Цитата-- MarkPrior (19 Nov 2022 в 11:51): На [url=https://dsmod.ru]DSMod.ru[/url] заработал локальный репозиторий в тестовом режиме. Просмотр рекомендуется [b]только[/b] с ПК. На данный момент там доступен просмотр нового варианта подключения к БД, среди преимуществ которого - более быстрая \"сборка\" запросов и наиболее лёгкое их конструирование. При этом такой сборщик позволяет конструировать более сложные варианты запросов (например, с разными вариантами join\'ов), не описывая их полностью вручную. Документация будет публиковаться постепенно. Сейчас пока что переправляется остальное содержимое /sys/ на данный вариант конструкции запросов. ---------- MarkPrior, посмотри некоторые изменения в офицальной последней версии. может доработаешь их. Например, есть установка модулей без замены оригинальных файлов. Ну и вопрос. Почему же для подключения к бд не использутся статические функции/методы? Это намного удобней же, тем более для новичков. MarkPrior (18 Dec 2022 в 21:51) Пока что занят работой. На рерайт не забили. Как было указано - не раньше мая релиз будет готов. MarkPrior (31 Jul 2026 в 16:34) Вернулся после долгого вынужденного перерыва в кодинге. Смысла в продолжении рерайта не вижу, всё устарело ещё тогда, а сейчас - тем более. Начал работу над другим движком, доступ публичный, опишу в другой теме. Foxy (20 Aug 2026 в 20:06) Ну как идёт работа над движком? Источник: http://www.dcms-social.ru/forum/13/5/63424/