[Sell] Argos CMS / MVC logic less

Вече е направено горното, имах малко свободно време и се заиграх.
Лайв демо може да видите на новия дизайн: https://argoscms.xyz/test_things/argos/
Вижте в сорса как са заредени вече библиотеките.
Нарочно файла ще е отделен + самата библиотека е инклудната ръчно (седи в папка includes/), защото ако го мина през рутиране и клас, то това ще отнеме доста време, там е и аутолоудъра от composer и става излишно закъснение. За това този файл остава част от Аргос и всеки може да го ползва Пожелание.
 
Днес по-късно ще интегрирам и тази библиотека в системата - https://github.com/JayBizzle/Crawler-Detect
В момента се използва проверката за ботове от phpbb, само че тя поддържа едва 60-тина бота (те са в phpbb_users), докато тази - 1000+.
Аз съм я ползвал през 2017 в мой проект и съм наясно, че работи супер добре.
Просто с нея ще презаместя phpbb метода за ботовете.
Така ще може да се предпазите още по-добре от ботове и нежелани обхождания на вашия уеб проект.
 
Така, библиотеката вече е интегрирана. На мястото на $this->is_bot е вкарана самата функционалност, а phpbb бот проверката вече е $this->is_seo_bot, защото там са най важните ботове, които може да индексират съдържанието ви.
В този ред на мисли сложих и нова функция:
Code:
is_registered_or_seo_bot()
връща true ако потребителя е регистриран и логнат или е seo bot (от ботовете на phpbb)
Има и глобална темплейт дефиниция със същото име
Code:
{{#is_registered_or_seo_bot}} your text {{/is_registered_or_seo_bot}}
Така, примерно ако направите някаква част от сайта си за регистрирани потребители, но искате и ботовете да имат достъп - може да я ползвате.

Също така кеша от min.php го преместих в cache/ папката, защото няма смисъл да е в assets/ папката, по-добре всичко да е на едно място.
Редактирал съм и изтриването на кеша от Конфигурация да го трие от там.
Засега версия 13.0 е стабилна, но може да изникне нещо де, не съм тествал напълно всичко все още.
 
Здравейте!
- timeago функцията вече работи и за бъдещи дати (epoch), до момента работеше само с по-стари дати от сегашното време.
- оптимизации в ajax админските контролери
Това е за версия 13.0 още.

В по-нови версии някога, ще бъде добавена и опция от админ панела, да се разпращат нотификации към всички или към определен потребител с новия нотификейшън клас.
Сега версия 13.0 ще остане така, докато не интегрирам и дизайна.

Мисля, че след 10-тина дни ще съм приключил и ще интегрирам и дизайнът, който на мен лично много ми харесва, но ще се пипне още. (Тъмна тема, Tippy и други библиотеки, които съм си харесал за интеграция)
 
buenas noches, chicos!

В следващата версия 13.1 ще има нов таб в админ панела. Таба ще се казва 'Известия'.
В този таб ще има 2 под таба:
- Нотификации
- Емейли
Когато отворите един от табовете ще видите:
* Селект меню от което ще избирате:
--- Глобално известяване
--- Единично известяване
------При единично известяване ще пада поле за въвеждане на потребителско име или Айди (и 2-те ще са възможни)
--- Текстареа с вашето послание до вашия/ите потребител/и. (при емейлите ще може да се поддържа html)
--- Бутон за изпращане

При двата варианта, вие ще може да изпратите масово известие до всички или единично до 1 потребител.
При емейл известията, особено при масовото изпращане трябва да се подходи по-специфичен начин. Ще има аякс и ще се изпращат на по-малко, защото може да се счете за спам, особено ако ползвате SMTP на гугъл. До момента не съм го тествал, но при всички положения, ако имате много потребители с емейли на gmail - не знам дали всичко ще се изпрати или някои няма да пристигнат/или ще са в папка СПАМ.
За това ще направя аякс скрипт с прогрес бар, който ще разпраща емейлите на по-малко и ще може да следите горе-долу колко време остава.
Може би на 10 секунди 2-3 емейла.
Пак казвам, не съм сигурен как ще работи. Наведнъж ако се разпратят ще има проблем, в това съм сигурен. За това ще го направя така, както съм замислил.
В config.env може да добавя и глобална дефиниция, която е MASS_EMAIL_FREQUENCY = 10 и от там да се сменя на колко секунди да се изпращат емейлите. 2-3 мисля, че е ОК на 10 секунди.

Всичко това няма да е трудно, а всъщност много полезно.
Ще добавя и още 1 sql таблица argos_unsubscribed_emails и в нея ще се съхраняват емейлите, които са се отказали от вашите известия/новини/ъпдейти, които пращате.
Ще има innerjoin и сравнения. Ако емейла е отказан и е в дб таблицата - няма да му се праща нов, а ще го подмине.
Също така ще има специална страница, която ще се посещава и ще има известие, че потребителя се е отказал успешно от абонаментите ви.
Така всичко ще е според правилата!

Има време за всичко, само да свърша... :)
 
Здравейте,
До 2-3 дни трябва да съм свършил с това което правя в момента и след това ще ъпдейтна системата до версия 13.0.
В 13.0 остава да интегрирам дизайна, а 13.1 ще е с новия таб в админ панела - Известия.
След като ъпдейтна системата, ще изляза в почивка за неограничен период от време, само ще ъпвам темата от време на време и ще си записвам неща, които може да се направят в бъдеще.

Добавил съм и нова глобална темплейт дефиниция {{is_anonymous}} - сега вече може да я ползвате в екстеншъните без да я дефинирате. Има вече is_logged, но добавих и тази. Нека има.
Те са през fn() => и реално не се викат, докато не бъдат викнати.
Всичко засега е стабилно и работи перфектно.
Разбира се, ако нещо откриете ще се върна, за да го фиксна. Но реално повече ъпдейти за дълъг период от време няма да се правят, защото тук почва сезона и трябва да се работи...
Ще влизам всеки ден, но вече написах как ще процедирам.
Ако някой иска да купи системата - имам я и на телефона, на флашка, в гугъл драйв и на лаптопа, така, че ще е готова и ще чака някой да я грабне и да й се радва.
Стабилна система с много функции - няма какво повече да се добави.

Иначе аз горе-долу знам какво трябва да се прави.
Трябва да се ъпдейтнат всички екстеншъни, защото покрай новите версии доста неща вече са излишни в тях. Те ще работят и така на версия 13.0, но могат да бъдат оптимизирани.
Имам на телефона към 50 екстеншъна и те трябва да се ъпдейтнат (Правих ги през телефона докато бях в чужбина). Ползват още migrate.php, който трябва да се изтрие.
Също така в старите темплейти трябва да се добави табче или иконка за известия, които ще бъдат вкарани във версия 13.0.
Вече ако и това се свърши - всичко ще е ОК и готово за миграция към PHP 8.4 и големи тестове на система + екстеншъни.
Яд ме е, че не мога да тествам Му онлайн екстеншъните, но може би в бъдеще като взема нов лаптоп ще пусна тестов сървър и ще ги врътна да ги изтествам.

Напомням за хората, които ползват по-стари версии и се оплакват, че зарежда бавно - версия 13.0 е с мащабни промени включително и перформънс и зарежда да не кажа голямо число, но едно 40% по-бързо.
- Ъпдейтната е translate функцията, която бавеше цялото ядро.
- Всички global vars са минати през fn()=> и се викат само при реално повикване, а не да се изпълват наведнъж
- Dependencies клас, който също е с fn() и всичко се вика, при реално повикване, а не наведнъж.
- Lang файловете са разцепени на малки части, а не се викат цели 600 реда код, вече главния езиков файл е 140-150 реда
- Махнати са api-тата в get_user_country и са заменени с локална датабаза на Maxmind
- Други малки оптимизации по функции в includes/ папката

Така, че който ползва стара версия да не се оплаква!

За контакти с мен:
Discord: .pok4
- ЛС

ЦЕНА: 140 ЛВ.
Начини на плащане:
Paypal
Revolut
Банков превод
Easypay
 
Бау,Уау,ЮпиЙоу,ЮпиЙей..

Хрумнаха ми някои неща...Ха-хъ.
Сега разработвам един проект и има много повтарящи се html кодове по екстеншъните.
В template/ папката с темите може да се инклудват темплейтни файлове с {{>template}} през mustache, обаче в екстеншъните не може :( ( Все още обаче )
Питах зайко (chatgpt), и ми каза, че е абсолютно възможно и в екстеншъните да може с custom partials loader, даде ми код и когато почна да работя по версия 13.1 ще видя дали работи.
Ако проработи, ще може да инклудвате други html файлове в екстеншъните, обаче дали mustache дефиницийте ще се компилират и изпълват вече не съм наясно, и май и зайко не знае.
Всичко е до тестове.
Каза ми зайо, че в темплейтите винаги ще трябва да се посочва пълния път, пример:
Code:
{{> pok4/gs_trigger3/template/ha2 }}
ако имате в същата директория ha3.html пак така с пълен път от ha2.
Питах дали може да се оправи това и да е {{>ha3}}, но много сложно става, иска да посочвам аз пътища в partials loader-a, а първия вариант е за рекурсия в ext/ папката. Не е болка за умиране да се пишат пълни пътища, нали ? Стига да работят и всичко да се компилира. Ако не се компилират темплейтните дефиниции, това отпада и няма да го интегрирам.

Също така във версия 13.1 ще интегрирам нова функция, която работи със стоп форум спам апи и връща true, ако емейла е спам.
Ще добавя on/off за нея в Конфигурация и ще се ползва в контактната форма.

Също така във функцията за статистиката ще добавя още една под функция, която логва на всеки рефреш на дадена страница, име на страница (request uri) и count колона, която ще се ъпдейтва с +1 на всеки рефреш и date (epoch), та да си следите импресиите.
В админ панела в статистиката в главната страница ще пробвам да изкарам и бройка импресий за деня (тотал). А пък вече ще добавя и една таблица + странициране, където ще виждате колко хитвания има дадена страница в отделна страница в админ панела

С това мисля 13.1 да бъде завършена, да не я завършвам само с функцията за Известията, а и това да пробвам да вкарам.
 
Done.

13.1:
- Добавена е функция за стоп форум спам в контактната форма (включва/изключва се от админ панела) - is_spam_email($email)
- Добавена е функция за лог на импресии + страница в админ панела за преглед на лога + странициране
- Добавена е опция за инклуд на темплейтни файлове в темплейтите на екстеншъните {{> pok4/test_ext/template/test_html_file }}
- В статистиката в админ панела е добавена още една графа за импресиите през деня

Новия темплейт и Известията ще дойдат с официалната 13.1. Няма смисъл повече да надписвам 13.0, а и назад има доста лог за нея..

Искам само нещо да кажа нещо за инклуда на темплейтни файлове от едни на други екстеншъни.
Всичко работи и е тествано, но има едно условие, за да работи всичко.
Когато инклуднете даден темплейт файл, за да работи както трябва, то той трябва да има същите темплейтни дефиниции като главния от който правите инклуда или да му ги добавите допълнително, ако ползва други. Просто ги връщате в return-a в $this->m->render. Ако ги няма дефинициите то е безмислено и няма да работи. Ще ви върне само чист Html без php. Така че имайте едно на ум. Играх си с ботовете и deepseek и grok, зайко вече изнемогва май май, но както и да е.
Та да знаете, че трябва да предавате същите темплейтни дефиниции, ако имате {{test}} в новия инклуд, но във файла от който го викате няма {{test}}, то няма да се покаже нищо. Надявам се разбирате.


Значи остава само:
- Интеграция на новия стил + тъмната му тема
- Новия таб за Известия в админ панела.

Това е и завършвам всичко.
 
Last edited:
НОВО!:

- Добавена е нова функция за рендиране на темплейтите в екстеншъните. - mrender("pok4/top5_users/template/top5_tables", []); - вече се ползва cache/ папката за компилирания файл. Много по-бърз начин за всичко.
Няма нужда да ползвате this->m->render(file_get_contents("ext/pok4/top5_users/template/top5_tables.html"),[]); - това е стария начин, който ще си остане за обратна съвместимост, но той не ползва кеш и е по-тромав, защото ползва инстанцията всеки път с file_get_contents();
Така че, ако пишете екстеншъни (нови) - ползвайте новия вариант, а ако искате си го презаместете в старите екстеншъни, просто всички ретърни ги сменяте с новия. Функцията е с function mrender(string $templatePath, array ...$varSets): string {
array ... което ви позволява да вкарвате колкото си искате масиви, пример:
mrender("pok4/top5_users/template/top5_tables", $array1, $array2, $array3) - не ви трябва array_merge вече, всичко ще работи с повече масиви при подаването им.
Също така накрая не слагайте .html на темплейтния файл - ще даде грешка, ясно е, че вече трябва да е без .html, защото partial loader-a си го слага сам.

Всичко е направено за максимално улеснение и перформънс.
 
Вече ако зареждате библиотеките през:
Code:
add_event('core_event_head_append', 'ext/pok4/top5_users/css/top5_users.css');
Автоматично ще им се добавя версия и няма нужда да им добавяте вие. Ще им наслагва ?v=get_from_db_config('css_js_ver');
Така ще е още по-лесна и бърза работата ви и браузъра няма да кешира всичко. Ако ползвате екстеншъна a_bar (админ бар панел най-горе с фиксирано действие), може директно да триете кеш и да сменяте css/js още в страницата. Този екстеншън го направих отдавна, но все още никой не го е купувал, в Wordpress има подобен, който си върви със системата.
A-bar-a е много полезен и аз винаги съм с него.
 
За вашето улеснение и бързо писане на екстеншъни съм добавил 2 нови функции.
if(page($page_name)) и if(page_eq($page_name)) (str_contains вариант)
Вече не е нужно да ползвате това:
Code:
if (str_contains($_SERVER['REQUEST_URI'], '/pages/members')) {
в екстеншъните, а може да го съкратите до:
Code:
if (page_eq('members')) {
Дори не е нужно да ползвате /pages/ пред името на страницата, а просто да напишете members, ако това е името на страницата.
/pages/ автоматично се добавя, ако викате функцията в екстеншъните по проверка на името на класа, ако в името на класа се съдържа ext/ ще може да изписвате само името на страницата, а не и /pages/ отпред. За по-голяма бързина при писане.

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

Също така благодарение на горните 2 функции е добавена още една, а именно: is_from_ext() - тя проверява дали кода е от екстеншън, ако е - връща true.
 
Пускам промоция. Може да я закупите само сега отново за 100 лв.

Днес бяха завършени:
- Поредни оптимизации в BaseController-a, print_to_left/print_to_right вече викат друг метод и наслагват променливи, за да не се дублира код-а, който беше доста голям за тях (когато бяха разделени).
- Завършени са Известията в админ панела: (https://i.ibb.co/pBMTWDkQ/1.png, https://i.ibb.co/ccjBDQG5/2.png)
- Добавена е функция за unsubscribe емейли (https://i.ibb.co/VcLRBVhn/3.png, https://i.ibb.co/ymmy0Gdg/4.png)
- Оптимизации в includes/functions.php
- Изменения в lang/ папката

Системата ще се върне отново на 140 лв. когато интегрирам новия дефолт стил. Възможно е пак да има промоции, но напред във времето.

Какво включва пакета ?
- Цялото ядро с всички функции
- Default стил
- Default екстеншъни (15 на брой)
- Автоматични ъпдейти за в в бъдеще

Може да платите с:
- Revolut
- Paypal
- Банков превод към испански IBAN
- Easypay (препоръчително)

За връзка с мен:
- ЛС
- Discord: .pok4
 
Нови ъпдейти:
- Преведена е error handler страницата на всички езици
- Преведена е email unsubscribe страницата на всички езици
- Добавена е нова функция get_user_flag($ip,$w,$h) работи с flagcdn и изобразява флага базирайки се на Ip през get_user_country функцията.
- Добавен е max-width: 600 на формите в страницата за Известия в админ панела
- Добавен е ckeditor за формата за изпращане на масови емейли от админ панела
- Фикснат лек бъг свързан с датите при страницата за следене на импресии

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