ARGOS multigaming cms

Гут дей,
В 13.4 или 13.5 ще интегрирам tasks или накратко задачи, които се създават от админ панела (cron задачите, за които споменах по-напред, ще са си отделно от това)
Task-овете ще се създават от админ панела и ще може да инжектирате php код в текстареата, както и да зададете на какво време да се изпълнява. Трябва да сте запознати със системата и функциите й, за да ги ползвате ползотворно.
Самите таскове ще са под формата на json файлове и ще седят в папка tasks в root dir-a и ще са защитени от htaccess.
Ще ги правя с json manager-a.
Самия php скрипт ще е в нов контролер, който ще рутира your-site.com/tasks и вече ще може да го закачите към крон задача от cpanel/crontab на vps. Това ще си е изцяло отделна страница, която ще може да я ползвате пожелание.
Ще е много удобно, защото ще може да я комбинирате с крон задачите, и ще може да я заредите като крон и от админ панела на аргос, стига да ви е позволено от хоста (exec командата).
Все още съм леко объркан, бота ми даде решение да се изпълнява php кода с eval, но никога не съм ползвал тази функция, а и в момента от телефона, не ми се занимава да я проучвам. Като стигна до там, ще ръчкам тогава.
Това, ако се случи по план ще е удобно, защото може да разпращате разни съобщения, да триете кеш, да правите други неща с функциите на системата през определено време.
 
Към горния пост ще добавя само, че ще има опция за спиране и пускане на определена задача с ios switch бутон.
Също така тасковете ще се засичат с phpfastcache и няма да може да се преизпълняват докато не мине точното им време. (превенция за директен достъп до tasks страницата)

Днес в почивките благодарение на AsusRogStrix@amxx-bg.info открихме 2 бъга, но няма как да пусна ъпдейт, заради телефона и индентацията на код, не ми се ползват туулове, така, че ще ви кажа как и какво (бъговете не са сериозни и даже на някои хостинги, не се появяват), зависи от конфигурацията.

Аргос винаги ползва utf8mb4 unicode ci,
но някои екстеншъни в бързината, може по невнимание да се ползва друг тип колация и при специални символи да даде грешка. За това е добре да се подсигурим още в началото, за това трябва да се влезе в core.php и да намерите:
Код:
$dbg = new PDO("mysql:host=" . $dbhost . ";dbname=" . $dbname . ";charset=utf8mb4", $dbuser, $dbpass);
и да го преправите на :
Код:
  $dbh = new PDO(
    "mysql:host=" . $dbhost . ";dbname=" . $dbname . ";charset=utf8mb4",
    $dbuser,
    $dbpass,
    [
      PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4",
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]
  );
Това е правено с бота, и за това е такава индентацията, за това няма да правя автоматичен ъпдейт, за да си се съобразя с моята индентация, която е по-различна.

Това ще наложи utf8mb4 още повече, за да няма проблеми повече.
Ето и зайко какво написа:
charset=utf8mb4 в DSN е само информативен за PDO, не задава реално charset-а на самата сесия в MySQL.

SET NAMES utf8mb4 гарантира, че и клиентът (PHP), и MySQL сесията комуникират с един и същи енкодинг.

Без него, ще получаваш Incorrect string value при символи като ®, ™, или емоджита.

Другите неща пак са свързани с енкодинг, защото ползват лош iconv и някои специални символи не се компилират и трябваше да бъдат заменени с последната функция ignore_non_utf8($string).

1. Влезте в App/Controllers/Admin и отворете Add_Server.php и намерете :
Код:
$hostname = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $result['s']['name']);
заменете с --->
Код:
$hostname = ignore_non_utf8($result['s']['name']);

Отворете includes/functions.php и намерете:
Код:
$hostname = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $result['s']['name']);
заменете с ---->
Код:
$hostname = ignore_non_utf8($result['s']['name']);

Това ще влезе в новите ъпдейти някога, ако имате проблеми с добавянето на сървъри със специални имена е добре да го направите, ако ли не, просто подминете и изчакайте новия автоматичен ъпдейт.

2.Другия бъг е свързан с коментарите към галерия и видео клипове, отворете App/Entity/CommentSystem.php и намерете:
Код:
':created_by_current_user' => false,
':user_has_upvoted' => false,
заменете false и на 2те места с 0.
Това е в execute pdo заявката, само там, на други места не ги променяйте.
Ако не ги промените, коментарите няма да работят, но само на някои хостинги.
Така, че е добре да бъдат презаменени.
 
Последно редактирано:
Накарах зайко да ми напише wrapper за ssh2 библиотеката. Ще слагам спомагателен клас в App/Entity, защото може да потрябва някога за някой екстеншън.
По принцип повечето хостинг компании поддържат ssh2, но при някои трябва да я поискате отделно.
На easyhost, на които съм - я имат по-начало, но ако сте на vps 100% ще трябва да я инсталирате отделно и да я добавите в php.ini. (не е много лесно, питайте бота)
За хостингите, вече ще трябва да пишете на съпорта.
Има еквивалент - phpseclib, но е голяма и не мога да си я позволя в ядрото. Phpseclib може да се свали и да се постави в някой екстеншън и аутолоудъра ще я прихване. (В случай, че няма как да инсталирате ssh2)
Vendor папката е 3100 файла, да я приддържам в този й вид...(засега)

На есен с песен, ако сме still alive.
- поздрави !
 
Онзи ден по време на инсталация имаше проблем под hestia с неразрешени права на apache user-a.
Който има проблем и му излиза еррор лог за права, да изпълни :
Код:
sudo find /home/MyUser/web/example.com/public_html/ -type d -exec chmod 755 {} \;
sudo find /home/MyUser/web/example.com/public_html/ -type f -exec chmod 644 {} \;

sudo chown -R YourUser:YourUser /home/YourUser/web/your-site.com/public_html/

Това е забелязано под hestia control panel с къстъм юзър, и понеже не са му дадени права, и по време на инсталация дава грешки.

Бота ми подготви функция за даване на chmod права по време на отварянето на аргос инсталатора, но пробвах да я тествам на моя споделен хостинг, като махна правата от install.html темплейтния файл, но без успех, веднага сетва нови на юзъра. (Явно настройка на хоста)
За това есента като взема аз vps и инсталирам hestia, ще си го ръчкам сам и ще преценя дали да интегрирам функцията от бота за автоматичен chmod, за да няма грешки повече.

Също така errorhandler класа може първи да даде грешка, ако няма нужните права и ще се чудите какво става, за това в следващия ъпдейт ще го обхвана с проверка дали системата е инсталирана и тогава да сработва, че иначе няма да знаете какво става и какъв всъщност е проблема.
Който има проблеми нека пише, ще помогна.

Пример за грешки:
Код:
[Tue Jun 24 19:33:34.182295 2025] [proxy_fcgi:error] [pid 235420:tid 140031964472896] [client 51.158.252.178:0] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught ErrorException: Trying to access array offset on null in /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php:91\nStack trace:\n#0 /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php(91): App\\Controllers\\ErrorHandler::handle()\n#1 /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php(38): App\\Controllers\\ErrorHandler->renderErrorPage()\n#2 [internal function]: App\\Controllers\\ErrorHandler::handleException()\n#3 {main}\n  thrown in /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php on line 91; PHP message: PHP Fatal error:  Uncaught ErrorException: Trying to access array offset on null in /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php:91\nStack trace:\n#0 /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php(91): App\\Controllers\\ErrorHandler::handle()\n#1 /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php(38): App\\Controllers\\ErrorHandler->renderErrorPage()\n#2 /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php(47): App\\Controllers\\ErrorHandler::handleException()\n#3 /home/MyUser/web/example.com/public_html/core.php(20): App\\Controllers\\ErrorHandler::handleShutdown()\n#4 [internal function]: {closure}()\n#5 {main}\n  thrown in /home/MyUser/web/example.com/public_html/App/Controllers/ErrorHandler.php on line 91', referer: https://example.com/

и:
Код:
[Tue Jun 24 19:43:55.513515 2025] [proxy_fcgi:error] [pid 235420:tid 140031905723968] [client 51.158.252.49:0] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught RuntimeException: Unable to create directory '/home/MyUser/web/example.com/public_html/cache/autoloader_front' in /home/MyUser/web/example.com/public_html/includes/autoloader.php:488\nStack trace:\n#0 /home/MyUser/web/example.com/public_html/core.php(142): Nette\Loaders\RobotLoader->setTempDirectory()\n#1 {main}\n  thrown in /home/MyUser/web/example.com/public_html/includes/autoloader.php on line 488', referer: https://example.com/

И двете се оправят с chmod командите по-горе в моя пост. Надявам се, че ще успея да го оправя, като взема VPS, макар, че системата не е виновна и това не се отнася за нея толкова, но да е автоматизирано всичко.
Phpbb също сетва chmod по време на инсталация, защо и Аргос да не го прави?!
 

Back
Горе