[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 всичко ще си дойде на мястото. :)