[Sell] Argos CMS / MVC logic less

8.1.3:
- Оправен е бъга под revelio с мобилните устройства. Също така и подредбата на анкетата.
- Добавен е :first селектор на who_viewtopic екстеншъна, защото показваше бокса по 2 пъти на orizon темата
- Ъпдейти и фиксове в шоп екстеншъна (вече се поддържа recaptcha и вградената, избирате си ги с променлива в ext.php)
 
8.1.4:
- Оправен е грешен инър джойн в ajax profile view екстеншъна
- Добавена е възможност да променяте дизайна на чата с бисквитки от контролера му Chat_Reloader.php, бисквитката е с име : argos_chat_newstyle
- Добавен е нов стил - foxstrike

Live demo на новият стил foxstrike, тук: https://argoscms.pw/style/foxstrike

За него ще има и специален екстеншън (който ще работи и на другите темплейти), но съм вдъхновен от него - а именно екстеншън който ще е за приятели/врагове с търсачка и т.н. Утре ще е готов.
 
Завърших нов екстеншън!
Става дума за екстеншън, който логва браузър, айпи, име, дата и локация (с ip-api.com - безплатно е).
Екстеншъна работи само за определени темплейти, тъй като не всички разполагат с логин полета, някои редиректват към форума за логин. Няма как да стане (сещате се), чрез аякс заявка следи за събмит на формата и проверява чрез функция от phpbb дали логина е success.
Ако е успешен вкарва в датабазата заявка, която потребителя след това може да види в таблица, ето така:
https://i.ibb.co/qxjd7RN/image.png

Има странициране и всичко си работи коректно. Който ползва темплейт без логин бокс - да пише, мога да създам бокс където пожелаете.
Инпут полетата се засичат по input[name=ime_na_poleto], а не по клас или айди.
Естествено това може да се заобиколи, ако юзъра се логне директно през форума, но който желае, мога да напиша и екстеншън за phpbb3 (имам вече няколко и ми е ясно как работи), където може да виждате абсолютно същата информация в къстъм страница на форума.
Цена няма да му слагам, който има интерес нека пише и ще се договорим :)
 
Още 1 екстеншън: https://i.ibb.co/5k11HS9/image.png
Подобни теми, който ползва следната заявка:
Code:
SELECT title,author,date,seourl,views FROM argos_news WHERE MATCH(title,text) AGAINST('".$title."') AND title!='".$title."';
Изважда примерни теми на база MATCH (при включване на екстеншъна се изпълнява заявка, която ъпдейтва news таблицата, а именно форматира колоните title,text с FULLTEXT, добавя им индекси)
Ако тази заявка не се изпълни екстеншъна няма да работи.
Тествал съм го и работи коректно, а заявката е взета от нета и дори сравних с precise similar topics за phpbb3 и той работи по същия начин.
Екстеншъна може да се счита като бета, тъй като няма конкретен евент в който да се инжектира и го инжектирам в бокса с коментарите към новините (само там има евент) и е в техния бокс и седи грозно... Под таблицата седи това:
Code:
    {{#lob2}}
        $(".similar_topics").parent().parent().insertBefore(".argos_last_forum_topics");
    {{/lob2}}
    {{#foxstrike}}
        $(".similar_topics").parent().insertBefore(".argos_last_forum_topics");
    {{/foxstrike}}
Така го премествам над последните теми от форумите и вече е ОК.
Така че за сега ще седи така, не ми се добавя нов евент само за това нещо... Под някои теми трябва да се преработи, виждате как съм започнал. Няма да има проблеми никакви, но за сега ще седи с преработка само на тези 2-те, а пък ако някой го закупи и иска друг темплейт - ще добавя още 1 правило за конкретния темплейт, за да се изобразява както трябва. От гледна точка на SEO този екстеншън би бил добра придобивка към вече напомпаната система :)
 
Още 1 нов екстеншън този път за рожденни дни.

Демо с клип:
Конфети ефекта е откраднат от ThemeForest. Ботовете, които се появяват са със сетната user_birthday дата в phpbb3 колоната.
Бокса и ефекта се появяват само, ако има засечен рожден ден на текущата дата за даден потребител.
Бокса се появява само в индекса.
Стана добре :)
 
Още 1 екстеншън е готов. Става дума за прост слайдър с последни изображения от галерията.
Ползвам това - https://codepen.io/krishanakila/pen/jOObOWw с малко редакции от мен, за да не си пречи с останалите слайдъри от темплейтите.

Демо:
https://i.ibb.co/Y05xpX6/image.png
Показва се под новините, като за темплейти като foxstrike/lob2 (които ползват 3 колони и повече), ще трябва да се премести в друг евент.
Когато няма изображения качени в галерията вади съобщение, че няма и толкова...
 
Поредният екстеншън е готов! Става дума за Unban екстеншън чрез който може да премахвате бана си чрез закупуване на кредити (Работи с кредит системата от профил екстеншъна) в GoldSRC/SourceDS сървърите, които хоствате. Плъгина работи с банлистите Gmbans/Freshbans/AmxBans/SourceBans/Sourcebans++.

Какво представлява ?
https://i.ibb.co/L6GxnQx/unban.png
https://i.ibb.co/rtN4sTj/unban2.png
Формата при събмит отново проверява дали играча е баннат, ако не е не му взима кредити, ако е - премахва бана и му взима кредитите.
Търси и в 2-те банлисти, ако сте ги активирали. Променливите са както следва:
Code:
        $this->srcds_unban_enable = 1; //Sourcebanlist unban activation, set 0 to disable
        $this->goldsrcds_unban_enable = 1; //AMXBANS/Freshbans/Gmbans unban activation, set 0 to disable
        $this->credit_cost_to_unban = 15; //how much credits we get from user to can unban from our servers?
      
        //SourceDS (CS:S,CS:GO,TF2,LEFT4DEAD,CS2) ban list configuration details
        $this->srcds_bd_db = "sourcebans"; //sourcebans++ db
        $this->srcds_bd_table = "sb_bans"; //sourcebans++ bans table name
      
        //GoldSrc (CS1.6/HL/CS:CZ/CS1.5) ban list configuration details
        $this->goldsrcds_bd_db = "banlist"; //freshbans/amxbans/gmbans db
        $this->goldsrcds_bd_table = "amx_bans"; //freshbans/amxbans/gmbans bans table name

Тествал съм го и работи коректно. Превел съм го на en/ru/fr/es/bg.
Ако има някакъв проблем - пишете и го отстранявам максимално бързо :)
 
Последните 2 дни работих над нещо по-големичко, но няма да го предлагам за продажба.
Става дума за напълно "аякс" базиран портал за гейминг между играчи и партньори. Партньорите са определена група от форума, а играчите са потребителите. Те се свързват помежду си чрез системата. Играчите трябва да си заредят кредити (с пейпал) и да подадат заявка, а след това чакат в реално време партньор да се свърже с тях. Партньорите имат ограничена частна страница пак аякс базирана и в реално време виждат опашките от играчи. Има категории и всеки може да си избира какво да играе. Партньорите си избират играчите и комуникират през лайв чат в системата.
По-желание може да се добави discord bot нотификация с webhooks (през настройките на сървъра се генерира web кука и с проста curl заявка се праща съобщение до определена чат стая в дискорд). Все още не е ясно дали го искат и аз съм на стоп относно това.
Партньорите взимат 80% процента от сумата, която играча е избрал при заявката (зависи от типа игра)
Така всички печелят и са доволни. Играта е League of Legends, но скрипта може да се преправи за всяка друга игра и да се добави слайдър с игри и формата да се обновява динамично. Има и админ панел където може да следите заявките за искане на суми (минимум 50 лв.) и да давате/премахвате и проверявате баланс по user ID.

Ето демо с видео:

Клиента брои 300 лв. за всичко.
Тоест повече от системата дори. 2 дни и половина работа.
Извинявам се за качеството просто ми е слаб лаптопа и нацепва. Също така видях, че се показва и 1 flash на 1 алерт прозорец, но той не се вижда по принцип, просто като пуснах bandicam и отделно аякс заявките и процесора отива на 100% и забива и не може всичко да се възпроизвежда нормално.

За CS2 може да се преработи разбира се и то главно само категориите, иначе функционалността се запазва. Всичко е strong тествано и работещо. Екстеншъна има 2-ра част (админска) и общо са 3000 реда код.
Остава да завърша и friends/foe екстеншъна и се отдавам на почивка, че имам друг проект който трябва да развивам...
 
Last edited:
Радостен съм да съобщя, че friends/foes екстеншъна е завършен и преведен!
Демо може да видите по-долу на клип, а и вече качен на https://argoscms.pw/ (работи за сега само под foxstrike темплейта)), може да го тествате с демо акаунтите, които споделих в темата!
Също така, ако на някой модал-а под светлата тема му излиза с тъмни прозорци - нека влезе през инкогнито, тъй като му е кеширало ?v=100 версията. (не съм я променял, тя се append-ва в head секцията с js)
Демо с видео:

Край на мъките и трудната комуникация! Всичко стана бързо и лесно с този екстеншън и така може да намерите повече приятели/съотборници и да не губите времето си.
По желание на клиентите мога да го разширявам още, а в момента работи само под foxstrike, тъй като беше в дизайна на темплейта. Дизайна може да се промени и да пасне и за други темплейти в аргос или нови!
Също така както написах мога да го разширявам още. Бордерите в търсачката около аватара са 2 - зелен и червен (онлайн/офлайн)
Всичко е тествано и работещо коректно.
С този екстеншън приклчючвам за неопределен период от време, защото си имам лични ангажименти!
За връзка с мен на лс или дискорд: .pok4
 
Уникален си приятел. Имаш ли дискорд
 
Днеска бях свободен и реших да я ръчкам. 2 нови версии:

8.1.5:
- Ъпдейтнат е рийдми файла
- Всички библиотеки са ъпдейтнати през composer
- Добавена е проверка дали user_id е empty във функцията get_username_by_id
- Малки добавки в някои екстеншъни
- Фиксване на typo грешка в lob2 темплейта във _functions.php файла. (ланг дефинициите)

8.2:
- Добавена е нова функция watermark($source_file,$image,$save_file) - може да презамества текущи изображения с воден знак, ако на $source_file и $save_file седи едно и също изображение!
Водния знак и дали да е включена опцията се контролират от админ панела и важи за галерията и ъплоуд-а на изображения през Dropzone.JS. Забележка: прекъсва анимационния ефект на gif-овете!
- Добавена е опция за вкл./изкл. на production mode (може да си добавяте код и в темплейтите с {{#production}}code{{/production}} или ако сте извън {{^production}}code{{/production}})
Чрез тази променлива вече спирам автоматичния лоуд на класове в robotautoloader-а, защото при продъкшън е логично, че няма да правите промени. Така сайта ще зарежда по-бързо, а и в описанието в гитхъб се препоръчва в продъкшън да е изключен метода.
Когато е изключен, но сте качили екстеншън и той не работи - трябва да изтриете кеша, за да пре-лоудне всичко отначало.
- Добавени са 4 нови темплейт дефиниции {{insta_link}}, {{tiktok_link}}, {{steam_link}} и {{discord_link}} (от админ панела се въвеждат в раздел Конфигурация)
- Добавена е опция в админ панела със switch за изкл./вкл. на HTML минификацията в output-a на страниците. Това е нова благинка, която беше интегрирана в няколко предишни версии, но се контролираше от core.php ръчно...
- Добавена е опция за вкл./изкл. на рекламните банери в темплейтите (advertise.html)
- Добавено е CDN на bootstrap иконките в админ панела.
 
Last edited:
8.3:
- Добавени са бутони 'Към сайта' и 'Към форума'
- Добавен е jquery calendar в индекса на admin панела
- Добавен е Geo STATS API с Google Charts (взима инфо от stats таблицата)
- Добавено е api при статистиката за взимане на държавата на даден юзър по неговото IP
- Кешът в админ панела вече се изтрива с AJAX. (избягване на генериране на error log, тъй като не откриваше кеш и излизаше грешка, но не всеки път). Проблема е отстранен по този начин.

demo на добавките (новостите):
https://i.ibb.co/8sD6xZX/1.png
https://i.ibb.co/xj09VDN/2.png
При посочване на дадена държава показва колко потребителя е открила статистиката за нея.
 
Вчера клиента ми (lob.bg) пожела да разширя календара с възможност за бележки за конкретна дата. Цялата логика вече е изградена и календара се превърна в Event Calendar. Само че работи с кукита, тъй като не ми се занимаваше да правя контролер и да ползвам аякс.
Може би по-нататък, когато нямам толкова неща на главата.

Демо с клипче:
 
Нов екстеншън!
Става въпрос за team страница, която може да се контролира от админ панела.
Дизайна е такъв: https://i.ibb.co/Hd9mDdw/image.png
Взет е от нета и леко редактиран от мен.
От админ панела може да качвате цялата информация за вашия отбор/екип, а от фронт частта, ако сте админ ще видите бутон от който може да триете даден съотборник.
Дизайна е приятен, но ползва font awesome от новите версии и на default темата и някои други иконките ще трябва да се преправят (иконките за социалните мрежи).
Всичко работи коректно. :)
 
От вчера се мъча да направя гаг плъгини за AMXX и Source MOD и успях! Ползват и 2-та старата типизация, но ако има проблем под най-новите версии на АМХХ/Sourcemod няма никакъв проблем да ги пренапиша. 2-та плъгина са абсолютно еднакви като функции и менюта.
Командите са:
Source mod:
sm_pgag <player name>
sm_pungag <player name>
sm_gagmenu - отваря меню с избор на играч и опции след това за гаг и ънгаг.
Админите и ботовете не се показват в менюто, а командите също са с имунитет проверки.

За AMXX:
amx_pgag <player name>
amx_pungag <player name>
amx_gagmenu - отваря абсолютно същото меню както при Sourcemod.

2-та плъгина са по 300 реда код, абсолютно орязани и еднакви като функции. Работят разбира се със SQL датабаза.
Колоните и таблиците също са еднакви, по-начало:
gag_players_goldsrcds: Колони: ip / format: text
gag_players_srcds: Колони: ip / format: text
Това са таблиците. По-желание и срещу допълнително заплащане мога да добавя още колони и да съхранявам информация като име на играч, име на админ, дата. Мога да вкарам и colorchat библиотеки и да сложа допълнителни неща, ако искате.
Гага веднъж сетнат е перманентен (нарочно), за да накарате даден играч да си плати. По-желание мога да добавя и време, но срещу допълнително заплащане! При писане в чата играча вижда съобщение изпратено само до него, с което се подканва да влезе в сайта и да махне гага си.

Естествено това по-горе ми беше достатъчно, за да напиша и поредния екстеншън, демо:
https://i.ibb.co/vYwcCtH/image.png

КОНФИГУРАЦИЯ:
Code:
        $this->srcds_ungag_enable = 1; //Source mod ungag activation, set 0 to disable
        $this->goldsrcds_ungag_enable = 1; //Gold Source ungag activation, set 0 to disable
        $this->credit_cost_to_ungag = 7; //how much credits we get from user to can ungag from our servers?
      
        //SourceDS (CS:S,CS:GO,TF2,LEFT4DEAD,CS2) ungag configuration details
        $this->srcds_ungag_db = "pok4_gag"; //db which holds gag table
        $this->srcds_ungag_table = "gag_players_srcds"; //gag table
      
        //GoldSrc (CS1.6/HL/CS:CZ/CS1.5) ungag configuration details
        $this->goldsrcds_ungag_db = "banlist"; //db which holds gag table
        $this->goldsrcds_ungag_table = "gag_players_goldsrcds"; //gag table

Това е абсолютно същия екстеншън като ънбан екстеншъна, но е пригоден да работи с горните плъгини и таблиците им. Така давате на потребителите възможност да си махат гага от вашите сървъри срещу кредити (заплащане).
Всичко е тествано и работи коректно. Екстеншъна е преведен на en/bg/ru/fr/es.

В момента разглеждам и възможност да напиша calladmin плъгин с discord нотификация за sourcemod.
Има достатъчно библиотеки за curl в alliedmodders и няма да е трудно, даже вече видях, че има и готови кодове там.
Екстеншъна който направих върви с привейт плъгините, които написах. Няма да ги намерите никъде в интернет!
 
Last edited:
Нов екстеншън на хоризонта!

Повечето CMS-и имат файлови мениджъри и реших да интегрирам това - https://github.com/Studio-42/elFinder/
Също така сложих и password протекция с този урок - https://dcblog.dev/securing-elfinder-with-a-login-page
В ext/pok4/elfinder/elfinder/elfinder.php трябва да си редактирате следните редове:
Code:
if($_POST['username'] =='admin' && $_POST['password'] == 'mypassword'){
На мястото на admin слагате вашето потребителско име, а на мястото на mypassword - вашата парола за вход.
Не качвайте нищо преди да сте редактирали тези редове във файла!
Пробвах да инклудна phpbb интеграцията и да сложа проверки по сесията за админите, но не се съобразих, че ползвам дотенв библиотеката и няма да стане.. Ще трябва да е много хардкоднато и да променяте пътя към форума и т.н.
За това сложих тази бейсик авторизация за вход.
Забележка: Създава .tmb папки по директориите, когато листвате из тях. Не съм търсил начин дали може да се премахне това, но който иска - да си търси по github постовете на библиотеката...

Работи перфектно, тествано е, има си едитъри, прихваща автоматично езика на браузъра и сетва. Разполага и с български.
Имайте едно на ум и никога не давайте паролата и юзъра си за логин на други хора! С това не бива да се правят компромиси, защото хем могат да свалят всичко, хем да сложат зловреден код по файловете или да качат злонамерени файлове!

Това е с цел вие да си имате достъп и когато сте далеч и нямате ftp - да си ровите и променяте неща..

Демо:
https://i.ibb.co/pynxPJc/ftp.png

8.3.1:
- Ъпдейтнати са всички библиотеки през composer
- Ъпдейтнат рийдми файл
- Добавена е опция за пращане на емейли в папка "Изпратени" от формата за отговори на емейли от админ панела
 
Направих някои оптимизации днес и засягат и демото: https://argoscms.pw/
Трябва да зарежда една идея по-бързо. Сложих кеш на curl/json заявките за twitch/csgo новините. Също така сложих и кеш на DELETE sql заявките за лога и статистиката.
В момента на демото са включени 36 екстеншъна. Ако ви зарежда бавно, то това явно е защото се генерира кеш. Сложен е на 10 минути. Тоест след първото бавно зареждане вече след това трябва да е по-бързо до следващите 10 минути. Ако има много посетители в сайта това не би трябвало да се забелязва.

Ще направя още оптимизации, тъй като някои екстеншъни ползват админ евентите директно и след това има проверка дали са на текущата страница с if(str_contains($_SERVER['REQUEST_URI']) . Екстеншъна се инжектира директно в евента, а след това е проверката.. Това според мен е грешно, защото евента коства повече време от колкото тази проста иф проверка, която трябва да е преди него.
Така ще спестя още време, но не знам колко по-бързо ще зарежда след това.. Реално 36 екстеншъна са си 36 екстеншъна - доста са.
Това ще стане тези дни, тъй като утре съм зает целия ден. Екстеншъните не са много, но ще обходя всички и ще индентна кода на места, където не е ок.
 
8.4:
- Всички екстеншъни бяха обходени и strpos е заменено със str_contains
- На get_from_db_config функцията е добавена кеш - през php fast cache
- На get_user_avatar_by_id функцията е добавена кеш - през php fast cache
- На get_user_color_by_id функицята е добавена кеш - през php fast cache
На горните функции кеша е 10 минути, ако направите промени и не влязат в сила изтрийте кеша от админ панела!
Поддръжката за файловия кеш е премахната и е заменена с Redis. Имам достъп до хостинг акаунти и в jump.bg и в superhosting.bg и 2-та предлагат redis. Така ще е една идея по-бързо зареждането на сайта.
В инсталатора са добавени опции за redis server и redis port. (задължителни са за попълване). Redis се активира с 1 клик и след това ви се предоставят ip и port, които да въведете в инсталатора.
Забележка: Някои хостинги искат и redis php модула да е включен. В jump.bg е активиран по-начало (по-спомен!)
За локалхост под Windows: Не ви трябват уроци за инсталация на Ubuntu под windows! Използвайте memurai - https://www.memurai.com/get-memurai. След инсталация въведете на мястото на redis server - 127.0.0.1 и redis port - 6379.
Програмката се инсталира с next next finish - нищо не променяйте при инсталация и маркирайте отметката за enviromenth path!
Под Линукс ако сте - си инсталирайте redis!
- Добавен е exclude (пропускане) на някои файлове като преводите,sql.php и migrate.php, а и езиците bg.php,en.php,ru.php,es.php,fr.php, тъй като не са класове, а autoloader-a ги хващаше и тях..
- Фиксване на typo грешки в админ панела свързани с custom css/custom lang категориите. (Някои файлове не се отваряха и имаше error log)
- print_to методите за вкарване на съдържание в менютата са преместени в basecontroller-a. Там им е мястото, а не във всеки екстеншън да се вкарват на ръка. Вече се викат с parent: print_to($content).
 
8.4.1:
- Преправих всичко с PSR12 (екстеншъни, ядро + папката includes). Използвах VSCode + най-популярния плъгин за индент (10 милиона тегления)
- Обновени са paymentwall и stripe библиотеките.