ARGOS multigaming cms

version 5.1
Сменен е autoloader-a с нов. https://github.com/nette/robot-loader, стария беше aura/autoloader. (в гитхъб може да го разгледате)
Настоящия е готов за Php 8 и има кеш, за да не се изпълнява всеки път целия скрипт.
Добавена е http://mobiledetect.net/ тази библиотека през composer
В следствие на нея, са добавени и 2 темплейтни дефниции:
is_mobile и is_tablet, може да ги ползвате в {{}} в темплейтите, за да изнасяте код специално за мобилни устройства.
Естествено, ако погледнете линка, може да видите как да я ползвате в контролерите. В core.php е дефинирана като $mdetect.
SQL файла е индетнат и са сменени някои типове на колоните в таблиците според това, което ще съдържат. (най-вече text->varchar)
Добавена е иконка с 'око' от FontAwesome към новините и срещу нея седят бройката прегледи на всяка новина (отчита рефреш на страницата)
Добавено е "Запомни ме" тикче за логина във всички теми, които имат логин форма.

Останалата част от промените, вече се спомена, но ето и нея:
Добавено input поле с линка на видео клипа в админ панела при редакция (да може да го редактирате, ако понякой път не показва видеото)
Добавена е опция за exclude на линкове в юзър access файла App\Controllers\Admin\Add_Edit_User_Access.php
(ако не искате някои страници да излизат в менюто за даване на права на потребителите към админ панела)
В orizon темата беше добавена темплейт дефиниция за изкарване на аватара в панела на потребителя в дясно, тъй като до момента седеше линк само към no_avatar.png.
(липсваше проверка за изкарване на аватара на потребителя)
Премахнати повтарящи се коментари към кода на места.
Премахната е ventrilo поддръжката, има няма 10 сървъра на кръст в gametracker.com

Цялата система беше отново тествана изцяло за бъгове.
 
Защо просто не използваш autoloader-а на Composer? Така или иначе използваш външни библиотеки. А ако има причина, каква е тя? Сори, ако вече си отговарял на въпроса.
 
Да, той работи, инклуднат е :
Код:
require_once __DIR__.'/vendor/autoload.php';

//ENV
$dotenv = new Dotenv\Dotenv(__DIR__, 'config.env');
$dotenv->load();

..........................

Но, работи само за това, което е в него, поне така мисля ?
А цялата система е в App папката и всичко в нея е регистрирано в аутолоудъра, за да мога да използвам контролери/модели и останалите неща едно в друго.

Като махна това:
Код:
//Our Autoloader class
$loader = new Nette\Loaders\RobotLoader;

$loader->addDirectory(__DIR__ . '/App/Models');
$loader->addDirectory(__DIR__ . '/App/Controllers');
$loader->addDirectory(__DIR__ . '/App/Entity');
$loader->addDirectory(__DIR__ . '/ext');

// use 'temp' directory for cache
$loader->setTempDirectory(__DIR__ . '/cache');
$loader->register(); // Run the RobotLoader

Системата спира да работи и е нормално. Как ще стане с composer ?
Ако може да дадеш пример, ще ми е от полза, ако мога да го разкарам и да ползвам composer-a, но аз се съмнявам, че ще стане. :D
 
Работи, но от части. За папката ext/ не иска. Там са екстеншъните. Изтрих всичко и пробвах с:
Код:
$loader->addPsr4('App\\Models\\', __DIR__. '/App/Models');
$loader->addPsr4('App\\Controllers\\', __DIR__. '/App/Controllers');
$loader->addPsr4('App\\Entity\\', __DIR__. '/App/Entity');
$loader->addPsr4('ext\\', __DIR__. '/ext/');
Пробвах и без / накрая.

Това с екстеншъните беше голяма играчка вчера, за да тръгнат с ajax в самите им класове. Вътре е пълно с различни папки и файлове. Може би този лоудър не е толкова разширен, колкото този който ползвам в момента.
 
Тези екстеншъни отговарят ли на PSR-4? Виж пак документацията на Composer, там пише да добавиш директорията в composer.json. Достатъчно е да добавиш App от горните, Composer ще се сети за поддиректориите по namespace-а.
 
Да ти кажа честно, не бих си играл с това. Този сега ми харесва и си има и кеш. Ето и лог от кеша: https://pastebin.com/n4kVXbfH
Създава 2 файла, един php и един .lock с еднакви имена.
Системата сега като че зарежда още по-бързо и отпреди. (Може и вече да си въобразявам :D)
То на лоудъра си го пише:
RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.
Явно доста рови из папките :D

Иначе в ext/ папката както може да видиш в пейстбина има различни папки, ето пример:
ext/pok4/test_ext/ext.php
ext/author2/snow/ext.php

Някои имат неймспейсове, някои нямат. Неймспейса е само за тези, които ползват ajax, за другите не е необходим.

Лоудъра работи и не искам да го сменям за сега.
 
Нали знаеш - ползваш това, което ти върши работа. Щом имаш основателна причина, няма нужда да променяш каквото и да е. На мен просто ми беше интересно, не бях виждал да се ползват два autoloader-а.
 
За сега всичко е ОК. В понеделник ще направя още 2 екстеншъна. Надявам се да имам време да ги направя.
Единия ще работи с Twitch API-то и ще изкарва стриймове от json масив.
Другият ще работи със STEAM за проверка на инвентара на даден акаунт.

Вчера се свързаха по емейл с мен и ми пратиха стара датабаза на форума, където е създадена системата отначало. Там имало готови модули, които можело да се портнат като екстеншъни, за да не се пейства Php в страниците.
(Пробвах да я импортна, но 22 мб и xampp-а се издъни, ще трябва да пипам конфигурацията)

Ще я кача и на хостинга от @Revelation и ще дам ново демо.
Планирам да направя и нова документация с нов дизайн. Този сега го взех наготово от едно място и редактирах.
Ще дам информация за всички функции в системата и темплейт дефинициите, които са налични за кодиране.
 
Благодаря.
Днес мислех дали да не вкарам и това - https://github.com/wpsharks/html-compressor

Много е яко, но отдавна не е ъпдейтвано и съм със съмнения дали ще работи на php8.
Ползвал съм го в един стар проект.
Някога, когато ъпдейтна всичко, ако проработи ще го сложа задължително.
 
Здравейте хора,

Днес ъпдейтнах някои неща от Composer-a.
Версия 5.2 ще дойде с някои чисто нови неща, като например event dispatcher-a. За съжаление всички екстеншъни ще претърпят малки редакции.
Настоящия event dispatcher е този - walmsles/event-dispatch, доста прост и лек, но пък вече не се поддържа и няма предложения за смяната му.
За това потърсих еквивалент и попаднах на този - https://github.com/igorw/evenement - който ще свърши работата.
GameQ библиотеката беше ъпдейтната преди 2 дни, днес я ъпдейтнах и даде на всички сървъри, че са офлайн.
Нещо са бърникали по A2S_ заявките към Source енджина и заради това сигурно. Писах им.

Pimple контейнера също претъря ъпдейт, като там всичко си е ОК.
Mustache вече е с последната версия и съм добавил към масива за декларацията му 'entity_flags' => ENT_QUOTES,
както автора съветва, за да се избегнат CSS атаки.

PHP FastCache е версия 4.х, а вече са стигнали до 9. За сега то ще остане за най-накрая, както и phpdotenv библиотеката.
Те са с промени и по кода, така че ще архивирам на няколко пъти до като стигна версия 5.2stable. (ще правя редакциите 1 по 1)

Composer-a изглежда така:
Код:
{
    "minimum-stability": "dev",
    "require": {
        "walmsles/event-dispatch": "^0.1.0",
        "phpfastcache/phpfastcache": "^4.3",
        "dannyvankooten/php-router": "^1.2@alpha",
        "vlucas/phpdotenv": "^2.4",
        "nette/robot-loader": "v3.4.x-dev",
        "mobiledetect/mobiledetectlib": "dev-master",
        "mustache/mustache": "dev-main",
        "pimple/pimple": "dev-main",
        "austinb/gameq": "v3.x-dev"
    }
}

За сега. :)
 
5.2:
Mustache е ъпдейтнат до последна версия [php 8 ready]
GameQ е ъпдейтнат до последна версия [php 8 не се споменава, но най-вероятно ще работи, поне за някои от поддържаните игри - https://github.com/Austinb/GameQ/issues/589]
Pimple Container-a е ъпдейтнат до последна версия [php 8 ready]
PhpdotENV е ъпдейтната до последна версия [php 8 ready]
phpfastcache е ъпдейтнато до последна версия [php 8 ready] (чрез нея вече няма да има проблем със статистиката долу, която по-някой път не показваше нищо до обновяване на страницата)
Заменен е event dispatcher-a с нов [php 8 ready]
Допълнения към robots.txt
Добавен е малък метод за ъпдейт върху файла config.env в Install контролера. (Вече се ползва file_put_contents)
Промени по ядрото заради новите промени и по екстеншъните.
В конфигурационния контролер, който е отговорен за настройките от админ панела, беше сложено да се трие localhost папката в cache/ папката...
Стария кеш от phpfastcache правеше директория с името на сайта, разбирате за какво иде реч... Не е могло да се трие до сега както трябва. За това сетнах в настройките папката да се казва _phpfastcache_ и зададох името във функцията, която трие папката.
Намерих стар модел, който не се ползва и го изтрих. (Emoticons_Model.php)
Също така при качване на клип от youtube вече се ползва функцията get_string_between, за да прихваща айдито на видеото точно (от watch?v= до &). В моделите имаше променливи, които не се ползват и ги изтрих.
В анкетата открих лек бъг. Когато някой гласува на въпрос с отговори,които започват и свършват с еднакви думи, Пример:
Коя игра харесвате ?
CS 1.6
1.6 CS
И ако някой гласува за 1-едното, гласа му ще бъде отчетен и за 2-те. И така гласа отива и за 2-та отговора и се отчита.
Не ме питайте как, анкетата е писана и я няма в нета, работи с explode (много шантав начин) и добавих невидим текст, който е различен към всеки отговор и го стрипвам :)
Надявам се, че няма да ползвате символа ^ в отговорите на анкетите си.
Системата вече е преведена и на испански език. Поддържаните езици са: ru/en/bg/es
Всичко отново беше тествано изцяло и не са намерени грешки.

За сега има 24 екстеншъна. 15, които си идват по-начало със системата и още 9 от мен. (Като ще пиша още в бъдеще, имам и базови, които не са довършени)
Ще кача ново демо в най-скоро време.
 

Прикачени файлове

  • Без име.png
    Без име.png
    107.1 KB · Преглеждания: 8
Аз го оправих, може би по най-добрия начин. Добавих след всеки отговор ^number^ на мястото number е Count от foreach. Броя резултатите и тези символи с бройката са за всеки отговор. Можех да ползвам и някой html symbol, но си казах, че почти няма вариант някой да ползва този символ във възможни отговори.
Анкетата може да се види тук - https://github.com/Pok4/argos/blob/main/includes/functions.php от ред 477 до 561.
 
©Number©
 
Аз го оправих, може би по най-добрия начин. Добавих след всеки отговор ^number^ на мястото number е Count от foreach. Броя резултатите и тези символи с бройката са за всеки отговор. Можех да ползвам и някой html symbol, но си казах, че почти няма вариант някой да ползва този символ във възможни отговори.
Анкетата може да се види тук - https://github.com/Pok4/argos/blob/main/includes/functions.php от ред 477 до 561.
Очевидно не е по най-добрия начин, ако се надяваш, че даден случай, който знаеш че може да създаде проблем, няма да се случи.

Просто не звучи сериозно. Поне не споделяй проблеми, за които знаеш, публично. Утре някой ще намери твоята система да се ползва някъде и ще направи поразии понеже си му дал насоки какво може да се бъгне.
 
Не, то нищо няма да стане, ето как записва в датабазата (прикачвам снимка)

Всичко работи по-шантав начин и няма да тръгна сега да интегрирам нова анкета. Тази е правена така, че да не работи със сесии.
Виж снимката и виж как записва. Нормално е да бъгне, ако не добавя това като проверки из кода. (да добавя накрая текст, който на практика не е видим за потребителите)
Да, прав си, има го във value= в инпут-а. (не съм си играл да видя, дали ако го редактирам през конзолата, ще го събмитне с едита)
Но не се вижда, а и все пак, да не забравяме, че тези отговори ги пишат админите, а не потребителите.
Нищо не може да стане кой знае какво :)

Давам обяснение за снимката:

testdeh^1^##1;244^2^##0;rgg^3^##0;rrrpartir^4^##0

testdeh^1^##1
това ще рече, че testdeh е възможен отговор в ^1^ означава, че е първия такъв и след ##1 след тези ## символи - единицата значи, че е гласувано 1 път за този отговор.
Ако се махне ^1^ (добавките) от моя страна, ще бъгне и ще го има този бъг.

Някой да си играе да променя html-a не ми се вярва. Даже не съм си играл да видя дали е възможно, мразя да правя мръсотии :)
 

Прикачени файлове

  • Без име.png
    Без име.png
    34.6 KB · Преглеждания: 5
Даже сега се сетих, че мога просто да добавя проверка дали в стринга се съдържат :)
Но няма да е сега, а в 5.3.
 
5.3:
- Добавена е ново рутиране и контролер. Вече може да се достъпва your-site.com/language/bg и ще сетва кукита според езика и обратен редирект към индекса.
Всичко е автоматизирано:
Код:
public function Lang_Change() {
    //set user language via url
    $get_last_chars = substr($_SERVER['REQUEST_URI'], -2); //will be print es/en/ru/bg
      
    //check file exist and the requested url:
    if(strpos($_SERVER['REQUEST_URI'],'/language/')!== false && file_exists('lang/'.$get_last_chars.'/'.$get_last_chars.'.php')) {
        //SET a cookie with a choosed language and redirect to index
        setcookie("argos_lang", $get_last_chars, time()+31556926, '/');  /* expire in 1 year */
        header('location: '.url().''); //redirect to index
    } else {
        echo 'This language is not supported.'; //print this to user if language is not exist.
    }
}
Сега вече може да предлагате на потребителите си този тип линкове, за да сменят езиците си. Не знам дали, ако се събмитне в google add url страницата, дали ботовете ще обхождат, но предполагам, че да.
- Добавена е проверка за гласуването в анкетата, която реже направо страницата с DIE(), ясно е, че който стигне до там, не е искал да гласува, а да прави други работи...
- Изтриване на още глобално дефинирани променливи, останали от първите версии. $poll_send_vote = ""; (примерно, останали са от първите версии, за да глобализират променливи във foreach/while цикли при броене)
Не се ползват вече :)
- Добавена е $user->update_session_infos(); в phpbb_bridge, целта му е винаги да ъпдейтва сесийната таблица на phpbb от сайта. До сега не го правеше и отчиташе юзъра само в core.php, а сега
core.php/aboutus.php (актуализира се в реално време). Не е нужно да правите нищо, функцията си е вградена в phpbb. (ъпдейтва и session_time колоната)
- Добавени са бордери около аватара на потребителите в чата според това дали са офлайн или онлайн (зелен/червен) - демо: https://i.ibb.co/NmYvN9h/image.png
Научих, че phpbb 3.3.5 тръгва и на PHP 8, но с някои изключения, ако успея да направя xampp-a да тръгне под 8-цата, ще тествам :)
 
Последно редактирано:

Back
Горе