[Sell] Argos CMS / MVC logic less

Както обещах завърших и дискорд нотификациите от админ панела.
Ето и демо снимки:
https://i.ibb.co/FJhjcxH/Screenshot-20241006-135209.png
https://i.ibb.co/wzcFptj/Screenshot-20241006-135252.png
След като юзъра натисне бутона отпред, ще му иска разрешение и след това ще му вземе юзър айдито, и ще го впише в датабазата. От админ панела пък ще може да изпратите до всички абонирани потрбители съобщение, което вие решите благодарение на текстареата.
С бота изградихме код на база sleep, за да избегнем рейт лимитите от 50 рекуеста на секунда, ако имате над 50 потребителя абонирани.
Разбира се не съм го тествал обстойно, при мен за сега работи ок, но трябва да се тества с над 50 абонирани.

Важно е, че базата я има, а ако има проблем ще се отстрани лесно.

Днес точно изтича хоста за демото в jump.bg. Не знам колко време ще го държат сайта, но както написах няма да го подновявам.
 
Обмислям да вкарам тази библиотека https://github.com/Webklex/php-imap в системата. Сега като изтрия 200 migrate.php файла, ще се отвори малко място и за тази библиотека.
Php 8.4 няма да поддържа imap екстеншъна повече (https://php.watch/versions/8.4/imap-unbundled)
Pecl как ще се настройва с imap на споделен хостинг ще се мъдри сигурно доста време, а библиотеката която споделям е независима и работи без модули.
Много ми е важно емейлите от контактната форма да могат да отиват в sent папката на вашия емейл провайдър, било то на roundcube на вашия хост или gmail.
Планирам още при инсталация да има тикчета и при клик да се пускат полета за попълване и за smtp и за imap настройки. Те няма да са задължителни, но който повече разбира, ще си ги попълни.
Дори и не попълнени, те ще се впишат в config.env и може да се попълнят на по късен етап.

Бота даде вариант за съвместно ползване с nette библиотеката, ето го и него:
Code:
<?php

require 'vendor/autoload.php';

use PhpImap\Mailbox;
use Nette\Mail\Message;
use Nette\Mail\SmtpMailer;

// Sending the email
$mail = new Message;
$mail->setFrom('Your Name <[email protected]>')
     ->addTo('[email protected]')
     ->setSubject('Test Email')
     ->setBody("Hello, this is a test email sent using Nette Mail.");

$mailer = new SmtpMailer([
    'host' => 'smtp.gmail.com',
    'username' => '[email protected]',
    'password' => 'your-app-password',
    'secure' => 'ssl',
]);

// Send the email
$mailer->send($mail);

// Connecting to Gmail via IMAP
$server = 'imap.gmail.com:993/imap/ssl';
$username = '[email protected]';
$password = 'your-app-password'; // App-specific password for Gmail

$mailbox = new Mailbox(
    '{' . $server . '}INBOX',  // Folder where to move the email
    $username,
    $password,
    __DIR__,  // Path to directory for attachments (if any)
    'UTF-8'   // Server encoding
);

// Constructing the raw message to append
$rawMessage = $mail->generateMessage();

// Move the message to the Inbox
$mailbox->appendMessageToMailbox($rawMessage);

// Disconnect from IMAP
$mailbox->disconnect();

Лично ще го тествам и няма много да го мисля, ако всичко работи.
Също така сега ще има и бутон за цитат при отговора на емейли и от там ще може да цитирате даден емейл, за да знаете какво е писал потребителя. В комбинация с imap всичко ще си дойде на мястото. :)
 
Здравейте,
Вече съм в София, но не съм взел зарядното за лаптопа от Слънчев бряг. В понеделник ще посетя тук един сервиз, за да взема зарядно, ако имат такова, че лаптопа е специфичен...
Взех и хоста от easyhost.bg.
:)
 
Вече съм си в Слънчев бряг, но зарядното го няма и тук. Откачих!
Поръчах ново зарядно след търсене в гугъл от Емаг.
Очаквана доставка 1 - 4 Ноември.
С наще си имаме работа с документи тези дни, така че ще съм зает и без това...
Жалко..сърбяха ме ръцете, но ще чакам. Канех се утре да търся по Несебър и Бургас, но зарядното е много специфично и само в Емаг намерих такова, което да стане и да е със същите параметри.
Лаптопа въобще не си заслужава инвестиция в него, но все пак сега няма да взимам все още нов, а и вътре имам важни неща...
Ще чакам търпеливо и стискам палци всичко да тръгне...:)
 
Зарядното пристигна :) В момента работя по 8.8.1fixfree, която ще пусна като нов пост малко по-късно. Дали ще е днес или утре, зависи.
Най-сетне хахаха :)
 
Както знаете, версия 9.0 беше започната и днес беше завършена.

Предоставям чейнчлог:
- Оптимизации по цялото ядро (Всички ArrayIterator-и са премахнати, pdo prepare вече се ползва почти навсякъде, там където не се, не се ползват променливи в заявките. Оставям за в бъдеще сбиването на масивите с compact и разпределянето на ланг файловете по страници.)
- Добавена е rollback екстрата с която вече няма сайта да спира при грешка в някой екстеншън или във _functions.php в темплейтите.
- Добавена е Alphabetic no avatar функция, която сетва но аватари с определен цвят за всяка първа буква от ника
- Добавено е избиране на тайм зона от админ панела
- Добавен е калкулатор в админ панела
- Добавена е опция за включване и изключване на къстъм страниците от админ панела.
- Добавена е опция за включване и изключване на последните теми от форума от админ панела.
- Фикснат е рефреша на каптчата под файърфокс (от бутона)
- Добавена е опция каптчата да е само с цифри от админ панела.
- Добавена е voice captcha екстра и при клик на бутона се чува с глас през google api (free)
- Добавено е поле в конфигурация за промяна на мета таг-а 'theme-color'. (hex цвят)
- Добавени са SMTP и IMAP настройки в конфигурация
- Добавена е Under Construction страница, която се активира от админ панела
- Добавен е Activity log в админ панела

Който не е видял темата с безплатната 8.8.1fixfree и нейния чейнчлог, то - https://darksteam.net/threads/argos-cms-8-8-1fix-free-multigaming-cms.26510/#post-220902

За да ъпдейтнете от 8.8.1 или 8.8.1FixFree към 9.0 е нужно да презамените/качите:
App/
assets/
admin/
includes/
install/
lang/
core.php
routes.json
и да изпълните следните sql заявки:
Code:
ALTER TABLE argos_pages ADD COLUMN `show` VARCHAR(255) NOT NULL DEFAULT '1';
ALTER TABLE argos_pages ADD COLUMN `addon_regex` VARCHAR(255) NOT NULL DEFAULT '';
INSERT INTO argos_config (config_name, config_value) VALUES ('alphabeticava', '1');
INSERT INTO argos_config (config_name, config_value) VALUES ('no_avatar_path', 'assets/img/no_avatar.png');
INSERT INTO argos_config (config_name, config_value) VALUES ('timezone', 'Europe/Sofia');
INSERT INTO argos_config (config_name, config_value) VALUES ('last_forum_topics_enable', '1');
INSERT INTO argos_config (config_name, config_value) VALUES ('captcha_numbers', '1');
INSERT INTO argos_config (config_name, config_value) VALUES ('hex_theme_color', '#272727');
INSERT INTO argos_config (config_name, config_value) VALUES ('smtp_host', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('smtp_user', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('smtp_pass', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('imap_server', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('imap_email', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('imap_pass', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('imap_folder', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('under_construction', '0');
CREATE TABLE `argos_acp_user_visits` (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(100) NOT NULL,
    ip_address VARCHAR(45) NOT NULL,
    page_name VARCHAR(255) NOT NULL,
    browser VARCHAR(255) NOT NULL,
    visit_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=0;
(ако префикса на таблиците ви не е "argos_" сменете го с вашия!)

В бъдещи версии ще има още нововъведения и оптимизации.
За сега всичко уж е стабилно, но си трябват повече тестове. Аз съм сам и може да излезе нещо, ако вие тествате, но ще го оправим бързо!
За това тествайте!
 
В следващата версия на Аргос очаквайте privacy policy страница и интегриране на чисто нов cookie law плъгин, преведен цялостно и интегриран със страницата за политиката за ползване.
Ето и демо https://argoscms.xyz/cookie/cookie.html - плъгина е писан с бота и на места има код от мен и не е индентнат кода, защото е правен от телефона. (ще го оправя)
Също така всички темплейти ще претърпят промени и fontawesome 4 ще бъде заменен с версия 6.6.0.
Има и друго. Функцията за страницирането ще претърпи промени, защото не поддържа масиви в get параметрите. (вече е направено)
В core.php съм махнал едно условие, което е досадно и не беше съобразено от мен заради новата функция за пускане и спиране на къстъм страниците.
Ще бъде добавен bootstrap 3 js за всички темплейти, които го нямат, а ползват версия 3.

Това ще е за сега, но може да изникнат още неща, искам да преправя и логиките на аякс чатовете, да не работят толкова на често, но ще ползвaм бота, защото не знам кой подход ще е най-добър.
 
Last edited:
9.1:
- Добавена е индентация в jquery_js страницата на js/jquery кода
- Кода който поставяте там в js/jquery страницата се форматира като base64 вече, за да заобикаля mod_security и да не се налага да го спирате
- Добавенa e force_redirect функцията на 3 секунди след събмит на jquery_js код в страницата, която споменахме по-горе.
- Добавен е фикс и поддръжка на масиви в GET параметрите в pagination (функцията за странициране) във functions.php
- Добавени са новите функции add_page и remove_page с които може да добавяте къстъм страници от към екстеншъните във functions.php
- Премахнато е условие в core.php, което не беше съобразено добре от мен свързано със спирането/пускането на къстъм страници. Беше поставено в sql заявката отговаряща за това в core.php
- Добавен е bootstrap js файла за версия 3 за по-старите темплейти, които го ползват.
- Изменения в readme.txt
- Във всички екстеншъни, които ползват ALTER TABLE в sql.php е добавено 'NOT EXIST' с цел да се избегнат грешки при спиране и пускане на екстеншъните.
- Всички чатове свързани с Аргос, включително и екстеншъните са ъпдейтнати и вече четат текстовия файл за последното чат съобщение.
- Добавен е FontAwesome 6.6.0 с backward compatibility за версия 4.7.0 във всички темплейти

Тъй като времето напредна днес, оставям за 9.2 въвеждането на новия cookie policy плъгин и новата страница за политика за ползване в админ панела.

Напомням, че версията струва точно 100 лв.
Плащането става с:
- Банков превод
- Easypay
- Еконт/Спиди

Връзка с мен:
Discord: .pok4
- или тук на ЛС!

пс:
Ъпдейт от 9.0 към 9.1:
- Заменя се core.php
- Заменя се App/
- Заменя се admin/
- Заменя се includes/
- Заменя се readme/
- Заменя се template/
- Заменя се greyfish/ папката (заради новата иконка на cs2)
1.Ако имате промени по темплейтите, заменяте fontawesome 4.7.0 в header.html с:
Code:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/v4-shims.min.css">
2.Oтваряте footer.html и под jquery библиотеката добавяте:
Code:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
във всички теми, които в header са с инклуднат bootstrap 3x.
3.Също така в папките на темплейтите отваряте js папките и презамествате globals.js
 
Last edited:
В следващата версия, нововъведенията ще са:
- премахване на ajax.html файловете от темплейтите и от админ темплейта. Файлът ще бъде преместен в assets папката и ще е само 1.
- В globals.js отново ще има промени, трябва да се добавят условия "> 0" на length проверките, защото без тях кода се изпълнява отново, защото се връща обект. Това е много старо и сега ще го оправя.
- Ще бъде добавена новата страница за политика и cookie manager js файла.
- В инсталатора ще бъдат добавени още проверки и няма да се изисква въвеждане на наклонена черта при папката на форума и ще се търси в нея config.php, ако не бъде намерен, значи форума не е на лице.
- в екстеншъните по начало май все още има arrayiterrator-и и ще ги махна
- ще бъде добавена иконка със стрелка нагоре в админ панел таба Конфигурация до полето за js/css версиите, за да е по удобно вдигането им. (на база js)

Общо взето това е най-важното за 9.2 на която ще се заседя по-дълго време, докато не ми хрумне нещо, което да си струва.

ПС:
Ще бъде вкарана още една нова библиотека, а именно https://github.com/vanilla/htmlawed
Всички екстеншъни, които ползват htmlpurifier ще бъдат с нея едитнати, а purifier-a изтрит.
Също така библиотеката ще се разхвърля и в админ панелите, където има ckeditor.
Ще бъде добавено и това нещо:
Code:
<noscript>
    <meta http-equiv="refresh" content="0; url={{baseurl}}">
</noscript>
в админ панела, за да се подсигурим, че ако допуснете някой до него, няма да мишкува и да търси пропуски по страниците.
 
Last edited:
Направих едни бързи банери, защото смятам скоро да публикувам системата на още други места.

000.png


web-based-conte-66070997.png


Двата банера ще имат и английска и българска версия.
Също така чейнчлога в темата вече ще се предоставя в таймлайн снимка, като:
1000015730.png

под него ще е и като текст написан от мен.
Искам всичко да е както трябва занапред.

Имам и нов текст за първия пост като въведение, но за него още е рано. Да кача първо демото и да свърша с опашката от чакащи...
4те банера и html за чейнчлога ще са в папка readme/ качени.
 
Новата 9.2 пристига в Неделя
:)

Следваща нова версия ще има когато xampp и хостинг провайдърите имат поддръжка за php 8.4.
До тогава ще се пишат екстеншъни и темплейти.
 
Събрах и нови неща за в бъдеще, а именно 9.3:
9.3
- вкарване на още поддържани игри в greyfish
- emojionearea бутон за ckeditor-a и замяна на текущите му иконки в acp
(custom news екстеншъните ще претърпят също промени с добавяне на горния бутон + youtube бутон)
- създаване на нов default темплейт
- пренаписване на код (ако е необходимо заради php 8.4 и обновяване на библиотеките през composer)
- проба за вкарване на нова глобална темплейтна дефиниция през mustache lambdas и екстенд на класа, а именно {{get_from_db | tablename | columnname}}
чрез нея в темплейтите ще може да викате каквото се сетите от датабазата.
- добавяне на опция в админ панела за колко страници да показва 'per side' (на страна) в страницирането. Това е важно, защото е препоръчително да е 1, ако не ползвате toggle класа(за бутона) за мобилни устройства. В момента е хардкоднато, но ще го заменя навсякъде и по система и по екстеншъни.
Това е за страницирането и ако сте на 5-та страница да кажем, колко бутона да се виждат от ляво и дясно на бутона за местене назад/напред. Повечето пъти е 3, но за мобилни е добре да е 1, особено ако бутоните са големи.


Пак казвам, че следващата версия зависи кога php 8.4 ще стане по масова и достъпна в xampp, за да мога да работя върху нея.
 
Подраних, но обстоятелствата са такива, че в Събота и Неделя ще съм зает с други неща. Е, ето 9.2:
changelog92.png


9.2 said:
- Вкарана е htmlawed библиотеката и е разположена filter_xss (новата функция) в админ панела в някои страници.
- Всички библиотеки са ъпдейтнати през composer
- ajax.html са изтрити от папките на темплейтите в админ панела и стиловете, файла е преместен в assets/ папката
- Добавен е trim на някои полета в install контролера
- В installator-a са добавени проверки за директорията на форума, вече не е нужно да слагате / накрая на пътя
- Добавен е noscript тага в админ панела с цел ако си изключи някой JS в браузъра да го редиректне в индекса и да не рови из админ панела.
- Ъпдейтнат е FontAwesome до последната 6.7.1 версия
- Всички globals.js файлове бяха обходени и е добавена проверката за '> 0' в length if-овете.
- Добавен е новия jquery плъгин за cookie manager и новата страница в админ панела за политика за поверителност.
- Оптимизации по темплейтите
- В readme/ папката са добавени новите 4 банера за системата, last_changelog html файла и privacy policy примери на en и bg
- Промени в includes/functions.php и функцията за транслейт. В момента работи на chunks, 10 думи наведнъж.

Начин за ъпдейт:
9.1 -> 9.2:
Заменят се:
App/
vendor/
includes/
lang/
admin/
routes.json
assets/
readme/
template/
install/
composer.json

Ако имате промени във вашият темплейт, от на ръка, то правите това:
Слагате cookie-manager.css от архива във вашия темплейт в css папката му.
В header.html в head секцията слагате:
Code:
<link rel="stylesheet" href="{{baseurl}}/template/{{current_style}}/css/cookie-manager.css?v={{css_js_ver}}">

В header.html заменяте cookie policy bar-a с:
Code:
{{#cookie_policy_enable}}
<div class="argos_cookie-banner">
    {{lang_cookie_policy}}<br/>
    <button class="argos_cookie-button">&#128065; {{lang_cookie_manager_cookies}}</button>
    <button class="argos_terms-button">&#128065; {{lang_privacy_policy}}</button>
    <button class="argos_close-banner">&#10004; {{lang_cookie_manager_accept}}</button>
    <button class="argos_remove-cookies">&#10006; {{lang_cookie_manager_remove_cookies}}</button>
</div>

<div class="argos_cookie-popup">
    <button class="argos_close-popup">&#10006;</button>
    <div class="argos_cookie-content"></div>
</div>

<div class="argos_cookie-removal-popup">
    <button class="argos_close-removal-popup">&#10006;</button>
    <h3>{{lang_cookie_manager_delete_cookies}}</h3>
    <div class="argos_cookies-list"></div>
    <button class="argos_remove-selected-cookies" data-alert="Please choose a cookie" data-successmsg="has been deleted">{{lang_cookie_manager_remove_choosen_cookies}}</button>
</div>

<div class="argos_cookie-alert"></div>
{{/cookie_policy_enable}}
Влизате във footer.html и над globals.js слагате:
Code:
<script type="text/javascript" src="{{baseurl}}/assets/cookie-manager/cookie-manager.js?v={{css_js_ver}}"></script>

Заменяте globals.js с този от архива, вашия в template/your-style/js.

Вдигате js/css версиите и триете кеша.

Изпълнявате следния sql накрая:
Code:
CREATE TABLE IF NOT EXISTS `table_prefix_privacypolicy` (
`privacypolicy` text NOT NULL,
`language` varchar(255)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
като сменяте table_prefix с вашия, по-начало е argos
 
Last edited:
В Сряда ще пусна нова версия, става дума за 9.2.1, която ще има нов кеш тип към phpfastcache, а именно sqlite. Ако ползвате системата на локалка или нямате redis, то sqlite е за препоръчване пред file кеша и може да ползвате него. По-добре е, защото се създават 2 файла като датабази, а не 62.
Също така функцията за странициране ще бъде едитната да поддържа нов параметър, който ще се задава къстъм, там където се определя по колко резултата да вади на страница. Става дума за 'add_in_url'=>['servers','view'] ако да речем добавите това, то тези неща допълнително ще се наслоят при страниците долу, за да слухтят за тези наслагвания.
Ако url е /pages/wreck?page=1 ще стане /pages/wreck/servers/view?page=1 с къстъм параметрите.
Това ще е много добра придобивка за по изчанчени адреси, които не фигурират в датабазата с пълен път, а до половината и ползват новата addon_regex функция.
Това ще го правя с бота, че функцията много набъбна и ще го мъчим някакси.
Слагам си и todo за gmon-a, защото не съм тествал страницирането при pages/server/view/ip за последните купувания на пакети като хронология, ревютата пак ще тествам и csstats страницирането.

Общо взето един бърз ъпдейт :)
 
Last edited:
9.2.1:
changelog.png

9.2.1:
- Оправено е страницирането така, че да работи с addon_regex екстрата
- Добавена е нова функция detect_language($text), която връща country code, ако е открила съвпадения по scoring базиран на модели, базирайки се на първите 40 думи от текста
- Добавен е sqlite кеша в Аргос и неговия phpfastcache модул.


Начин на ъпдейт 9.2 -> 9.2.1:
Презаместват се:
includes/functions.php
install/install.html (само 1 option атрибут е добавен)

в core.php ако искате да ползвате sqlite намирате: "CACHE_TYPE"="sqlite" и го правите така, да е sqlite. Другите възможни опции са files и redis, но в бъдеще ще добавим и още опции за кеш.
 
Още допълнения към 9.3

- добавяне на опция за качване на локална снимка за новината от админ панела
- добавяне на нова колона 'type' и 'title' в галерията, в които ще се съхранява admin/user и тайтъл текст, който ще е само при качване от админите. Тоест, ще добавя нова страница в админ панела за качване на снимки от админите и с тайтъл тагове.
- време е да се създаде страница за автоматични ъпдейти.
Как ще работи?
- На база аякс (с прогрес бар) скрипта ще се свързва към мой отдалечен хост и ще тегли zip архив, който ще бъде разархивиран в temp директория и ще премести и презамести файловете за ъпдейт. Ако има sql.txt ще бъде ижектиран към mysql, за да се създадат и новите таблици или колони. След това temp директорията ще се трие.
Това е бонус към 9.3, ще потърся и евтин хост, който да подновя за няколко години напред, за да качвам там ъпдейтите. (тоест zip архивите)
Ще има и проверка за наличие на нова версия.
 
От 23 Декември тази година до 31 Декември по случай празниците, свалям ядрото на 80 лв. като са включени и 6 месеца безплатни ъпдейти.
Дискорд: .pok4
 
Argos продължава развитието си :) Това ще е засега финалната версия, след известно време ще продължа пак с ъпдейтите, както написах и по-горе, заради PHP 8.4.

Този ъпдейт е бърз, защото направих лесни неща, разделих ланг файловете и оправих едно и две други неща.

Ето и чейнчлог:
chn.png


9.2.2:
- Изменения в lang/ папката, вече админ панела е с отделен езиков файл, както и инсталатора, -500 ключа от масивите за нормалните юзъри
- Изменения по част от екстеншъните (замяна на acp lang дефиниции с тези от common файла (bg.php/en.php/fr.php..etc..) и промяна в някои темплейтни файлове, от които и greyfish_zone.html/greyfish_list.html
- Изменения в core.php заради по-горните промени
- Изменения в App/ заради по-горните промени
- Добавена е нова функция get_user_agent() - връща браузъра на потребителя
- Фикснати са () празните скоби в админ панела при преглед на новините, бройката в скобите се показва само в индекса, нарочно съм го направил така.
- Добавено е <br> в admin_add_file файла в админ панела, защото без него бъгва под мобилни устройства, самите полета за качване на файл се преместват до текста. Сега е ОК.
- Именения в readme/

9.2.1 -> 9.2.2:
Замяна на:
admin/
App/
template/your-style/greyfish_zone.html и greyfish_list.html
includes/
lang/
readme/
Отворете си екстеншъните и където срещнете lang_acp го заменете с някое от common файловете (bg.php,es.php,ru.php,fr.php,en.php), броят се на пръсти.
В gmon екстеншъна е само 2 пъти, ако не се лъжа lang_acp_delete -> lang_delete

След Нова година цената на ядрото ще се качи, защото вече навлизаме в стадии, в който са направени изключително много неща, а и ще правя нов дефолт темплейт с последния Bootstrap и трябва да се получи много добре.
Цената предполагам, че ще е 150 лв., но ще има промоции от време на време. Който я купи сега, получава 6 месеца ъпдейти безплатно и съответно ще получи и новия дефолт темплейт, както и всички новости като функции.
 
Открих защо системата ми зарежда бавно на моя локален хост и съответно, не е добра производителността на максимума, който трябва.
В phpbb_bridge имаме пре-дефиниции на phpbb:
Code:
$token_sid = ($user->data['user_id'] == ANONYMOUS && !empty($config['form_token_sid_guests'])) ? $user->session_id : '';
$token = sha1(time() . $user->data['user_form_salt'] . 'login' . $token_sid);
$bb_is_anonymous = ($user->data['user_id'] == ANONYMOUS);
$bb_session_id = $user->session_id;
$bb_user_id = $user->data['user_id'];
$bb_is_bot = $user->data['is_bot'];
$bb_mail = $user->data['user_email'];
$bb_username = $user->data['username'];
$bb_username_clean = $user->data['username_clean'];
$bb_is_admin = $auth->acl_get('a_user');
$bb_user_ip = $user->ip;
$bb_user_sig = $user->data['user_sig'];
$bb_bbcode_uid = $user->data['user_sig_bbcode_uid'];
$bb_bbcode_bitfield = $user->data['user_sig_bbcode_bitfield'];
$bb_user_last_visit = $user->data['user_lastvisit'];
$bb_user_color = $user->data['user_colour'];
$bb_current_page = $user->page['page'];
$bb_new_pm = $user->data['user_new_privmsg'];
$bb_unread_pm = $user->data['user_unread_privmsg'];
$bb_user_posts = $user->data['user_posts'];
$bb_user_ava = $user->data['user_avatar'];
$bb_group_id = $user->data['group_id'];
$bb_ava_type = $user->data['user_avatar_type'];
$bb_user_rank = phpbb_get_user_rank($user->data, ($user->data['user_id'] != ANONYMOUS ? $user->data['user_posts'] : false))['title'];
switch ($bb_ava_type) {
  case '': {
      $bb_ava_type = 0;
      break;
    }
  case 'avatar.driver.upload': {
      $bb_ava_type = 1;
      break;
    }
  case 'avatar.driver.remote': {
      $bb_ava_type = 2;
      break;
    }
  case 'avatar.driver.local': {
      $bb_ava_type = 3;
      break;
    }
  case 'avatar.driver.gravatar': {
      $bb_ava_type = 4;
      break;
    }
}
$bb_user_warns = $user->data['user_warnings'];
Същите ги имаме пак пре-дефинирани в бейсконтролера, само че с $this.
От тях тръгва цялата работа и бавното зареждане.
Защо?
Най-малкото това са 60 sql заявки, които се изпълняват накуп и отделно викат други функции/методи и става мазало. Само на добри машини няма да се забележи, но на слаби компютри и лаптопи ще забозва.
Какво можем да направим?
Да ги премахнем всичките и да пренапишем App/, ext/ и includes/.
Няма друг вариант.
За това аз ще пренапиша всичко и ще ъпдейтна вашите екстеншъни безплатно, докато все още е време и системата не е продавана толкова много. Все още я нямат много хора и това е добре за мен.

Дебъгнах всичко с XDebug и разбрах откъде идват проблемите и съм сигурен, че е от тези променливи.
Проблемът си е бил още от самото създаване на системата.

Тъй като казах, че няма да има нови версии, то ще направя още един ъпдейт специално за тези неща и ще чакаме 8.4 php ъпдейта или ще ползвам AMPPS, който се ъпдейтва непрестанно, и в момента има ъпдейт за 8.4.
Очаквайте новия ъпдейт в Сряда под версия 9.2.3.
 
Днес имах време и завърших малко по-мащабен ъпдейт, а именно 9.3
image.png


9.3:
- Оправено е цялостното представяне на ядрото
- Добавени са 2 нови класа в includes/ - phpBB.php и в App/Enitity - Dependencies.php.
- Оптимизации по анкетата в includes/functions.php
- Изменения в readme/
- Добавен е IF NOT EXISTS в install/sql.php на две места, и също така е махнато site_news като default стойност и е заменено с alter table modify (превенция на бъг при инсталация под mysql драйвъра)
- Съкратено е времето за съхранение на сесийната бисквитка в core.php
- Добавени са нови емоджи иконки за всички ckeditor-и в админ панела (TODO: да се вкарат и в custom news екстеншъните)
- Добавени са още 9 нови игри към greyfish: quake2, quake3, cod, cod2, cod4, rust, dod, left4dead, left4dead2
- Всички темплейти бяха обходени и е заменен <html lang="en"> с <html lang="{{current_language}}"> с цел да се окаже на ботовете от търсачките езика на страниците.

9.2.2 -> 9.3:
Презамествате:
App/
admin/
readme/
install/
core.php
greyfish/
includes/