refactor newsletter module and disable prepare/user templates
This commit is contained in:
514
autoload/admin/Controllers/NewsletterController.php
Normal file
514
autoload/admin/Controllers/NewsletterController.php
Normal file
@@ -0,0 +1,514 @@
|
||||
<?php
|
||||
namespace admin\Controllers;
|
||||
|
||||
use Domain\Newsletter\NewsletterRepository;
|
||||
use Domain\Newsletter\NewsletterPreviewRenderer;
|
||||
use admin\ViewModels\Common\PaginatedTableViewModel;
|
||||
use admin\ViewModels\Forms\FormAction;
|
||||
use admin\ViewModels\Forms\FormEditViewModel;
|
||||
use admin\ViewModels\Forms\FormField;
|
||||
use admin\Support\Forms\FormRequestHandler;
|
||||
|
||||
class NewsletterController
|
||||
{
|
||||
private NewsletterRepository $repository;
|
||||
private NewsletterPreviewRenderer $previewRenderer;
|
||||
private FormRequestHandler $formHandler;
|
||||
|
||||
public function __construct(NewsletterRepository $repository, NewsletterPreviewRenderer $previewRenderer)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
$this->previewRenderer = $previewRenderer;
|
||||
$this->formHandler = new FormRequestHandler();
|
||||
}
|
||||
|
||||
public function list(): string
|
||||
{
|
||||
return $this->emails_list();
|
||||
}
|
||||
|
||||
public function view_list(): string
|
||||
{
|
||||
return $this->list();
|
||||
}
|
||||
|
||||
public function emails_list(): string
|
||||
{
|
||||
$sortableColumns = ['email', 'status'];
|
||||
$filterDefinitions = [
|
||||
[
|
||||
'key' => 'email',
|
||||
'label' => 'Email',
|
||||
'type' => 'text',
|
||||
],
|
||||
[
|
||||
'key' => 'status',
|
||||
'label' => 'Potwierdzony',
|
||||
'type' => 'select',
|
||||
'options' => [
|
||||
'' => '- potwierdzony -',
|
||||
'1' => 'tak',
|
||||
'0' => 'nie',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$listRequest = \admin\Support\TableListRequestFactory::fromRequest(
|
||||
$filterDefinitions,
|
||||
$sortableColumns,
|
||||
'email'
|
||||
);
|
||||
|
||||
$sortDir = $listRequest['sortDir'];
|
||||
if (trim((string)\S::get('sort')) === '') {
|
||||
$sortDir = 'ASC';
|
||||
}
|
||||
|
||||
$result = $this->repository->listSubscribersForAdmin(
|
||||
$listRequest['filters'],
|
||||
$listRequest['sortColumn'],
|
||||
$sortDir,
|
||||
$listRequest['page'],
|
||||
$listRequest['perPage']
|
||||
);
|
||||
|
||||
$rows = [];
|
||||
$lp = ($listRequest['page'] - 1) * $listRequest['perPage'] + 1;
|
||||
foreach ($result['items'] as $item) {
|
||||
$id = (int)($item['id'] ?? 0);
|
||||
$email = trim((string)($item['email'] ?? ''));
|
||||
$status = (int)($item['status'] ?? 0);
|
||||
|
||||
$rows[] = [
|
||||
'lp' => $lp++ . '.',
|
||||
'email' => htmlspecialchars($email, ENT_QUOTES, 'UTF-8'),
|
||||
'status' => $status === 1 ? 'tak' : '<span style="color: #FF0000;">nie</span>',
|
||||
'_actions' => [
|
||||
[
|
||||
'label' => 'Usun',
|
||||
'url' => '/admin/newsletter/email_delete/id=' . $id,
|
||||
'class' => 'btn btn-xs btn-danger',
|
||||
'confirm' => 'Na pewno chcesz usunac wybrany adres email?',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$total = (int)$result['total'];
|
||||
$totalPages = max(1, (int)ceil($total / $listRequest['perPage']));
|
||||
|
||||
$viewModel = new PaginatedTableViewModel(
|
||||
[
|
||||
['key' => 'lp', 'label' => 'Lp.', 'class' => 'text-center', 'sortable' => false],
|
||||
['key' => 'email', 'sort_key' => 'email', 'label' => 'Email', 'sortable' => true],
|
||||
['key' => 'status', 'sort_key' => 'status', 'label' => 'Potwierdzony', 'class' => 'text-center', 'sortable' => true, 'raw' => true],
|
||||
],
|
||||
$rows,
|
||||
$listRequest['viewFilters'],
|
||||
[
|
||||
'column' => $listRequest['sortColumn'],
|
||||
'dir' => $sortDir,
|
||||
],
|
||||
[
|
||||
'page' => $listRequest['page'],
|
||||
'per_page' => $listRequest['perPage'],
|
||||
'total' => $total,
|
||||
'total_pages' => $totalPages,
|
||||
],
|
||||
array_merge($listRequest['queryFilters'], [
|
||||
'sort' => $listRequest['sortColumn'],
|
||||
'dir' => $sortDir,
|
||||
'per_page' => $listRequest['perPage'],
|
||||
]),
|
||||
$listRequest['perPageOptions'],
|
||||
$sortableColumns,
|
||||
'/admin/newsletter/emails_list/',
|
||||
'Brak danych w tabeli.'
|
||||
);
|
||||
|
||||
return \Tpl::view('newsletter/emails-list', [
|
||||
'viewModel' => $viewModel,
|
||||
]);
|
||||
}
|
||||
|
||||
public function email_delete(): void
|
||||
{
|
||||
if ($this->repository->deleteSubscriber((int)\S::get('id'))) {
|
||||
\S::alert('Adres email zostal usuniety.');
|
||||
}
|
||||
|
||||
header('Location: /admin/newsletter/emails_list/');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$this->email_delete();
|
||||
}
|
||||
|
||||
public function prepare(): string
|
||||
{
|
||||
\S::alert('Funkcjonalnosc "Wysylka - przygotowanie" jest tymczasowo wylaczona.');
|
||||
header('Location: /admin/newsletter/emails_list/');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function preview(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
public function send(): void
|
||||
{
|
||||
\S::alert('Funkcjonalnosc "Wysylka - przygotowanie" jest tymczasowo wylaczona.');
|
||||
header('Location: /admin/newsletter/emails_list/');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function settings(): string
|
||||
{
|
||||
$settings = $this->repository->getSettings();
|
||||
$validationErrors = $_SESSION['form_errors'][$this->settingsFormId()] ?? null;
|
||||
if ($validationErrors) {
|
||||
unset($_SESSION['form_errors'][$this->settingsFormId()]);
|
||||
}
|
||||
|
||||
return \Tpl::view('newsletter/settings', [
|
||||
'form' => $this->buildSettingsFormViewModel($settings, $validationErrors),
|
||||
]);
|
||||
}
|
||||
|
||||
public function settings_save(): void
|
||||
{
|
||||
$legacyValues = \S::get('values');
|
||||
if ($legacyValues) {
|
||||
$values = json_decode((string)$legacyValues, true);
|
||||
if (!is_array($values)) {
|
||||
echo json_encode(['status' => 'error', 'msg' => 'Nieprawidlowe dane formularza.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->repository->saveSettings($values);
|
||||
\S::alert('Ustawienia zostaly zapisane.');
|
||||
|
||||
echo json_encode(['status' => 'ok', 'msg' => 'Ustawienia zostaly zapisane.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$viewModel = $this->buildSettingsFormViewModel($this->repository->getSettings());
|
||||
$result = $this->formHandler->handleSubmit($viewModel, $_POST);
|
||||
if (!$result['success']) {
|
||||
$_SESSION['form_errors'][$this->settingsFormId()] = $result['errors'];
|
||||
echo json_encode(['success' => false, 'errors' => $result['errors']]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->repository->saveSettings($result['data']);
|
||||
\S::alert('Ustawienia zostaly zapisane.');
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => 'Ustawienia zostaly zapisane.',
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
public function email_templates_user(): string
|
||||
{
|
||||
\S::alert('Funkcjonalnosc "Szablony uzytkownika" jest tymczasowo wylaczona.');
|
||||
header('Location: /admin/newsletter/email_templates_admin/');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function email_templates_admin(): string
|
||||
{
|
||||
$viewModel = $this->templatesListViewModel();
|
||||
return \Tpl::view('newsletter/email-templates-admin', [
|
||||
'viewModel' => $viewModel,
|
||||
]);
|
||||
}
|
||||
|
||||
public function email_template_edit(): string
|
||||
{
|
||||
$template = $this->repository->templateDetails((int)\S::get('id'));
|
||||
if (!is_array($template) || (int)($template['is_admin'] ?? 0) !== 1) {
|
||||
\S::alert('Dostepne sa tylko szablony administracyjne.');
|
||||
header('Location: /admin/newsletter/email_templates_admin/');
|
||||
exit;
|
||||
}
|
||||
|
||||
$formId = $this->templateFormId((int)$template['id']);
|
||||
$validationErrors = $_SESSION['form_errors'][$formId] ?? null;
|
||||
if ($validationErrors) {
|
||||
unset($_SESSION['form_errors'][$formId]);
|
||||
}
|
||||
|
||||
return \Tpl::view('newsletter/email-template-edit', [
|
||||
'form' => $this->buildTemplateFormViewModel($template, $validationErrors),
|
||||
]);
|
||||
}
|
||||
|
||||
public function template_save(): void
|
||||
{
|
||||
$legacyValues = \S::get('values');
|
||||
if ($legacyValues) {
|
||||
$values = json_decode((string)$legacyValues, true);
|
||||
$response = ['status' => 'error', 'msg' => 'Podczas zapisywania wystapil blad.'];
|
||||
|
||||
if (is_array($values)) {
|
||||
$templateId = (int)($values['id'] ?? 0);
|
||||
$template = $this->repository->templateDetails($templateId);
|
||||
|
||||
if (is_array($template) && (int)($template['is_admin'] ?? 0) === 1) {
|
||||
$id = $this->repository->saveTemplate(
|
||||
$templateId,
|
||||
(string)($values['name'] ?? ''),
|
||||
(string)($values['text'] ?? '')
|
||||
);
|
||||
if ($id) {
|
||||
$response = ['status' => 'ok', 'msg' => 'Zmiany zostaly zapisane.', 'id' => $id];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
exit;
|
||||
}
|
||||
|
||||
$template = $this->repository->templateDetails((int)\S::get('id'));
|
||||
if (!is_array($template) || (int)($template['is_admin'] ?? 0) !== 1) {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'errors' => ['general' => 'Dostepne sa tylko szablony administracyjne.'],
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$form = $this->buildTemplateFormViewModel($template);
|
||||
$result = $this->formHandler->handleSubmit($form, $_POST);
|
||||
if (!$result['success']) {
|
||||
$_SESSION['form_errors'][$this->templateFormId((int)$template['id'])] = $result['errors'];
|
||||
echo json_encode(['success' => false, 'errors' => $result['errors']]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$data = $result['data'];
|
||||
$id = $this->repository->saveTemplate(
|
||||
(int)($template['id'] ?? 0),
|
||||
(string)($data['name'] ?? ''),
|
||||
(string)($data['text'] ?? '')
|
||||
);
|
||||
|
||||
if ($id) {
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'id' => $id,
|
||||
'message' => 'Zmiany zostaly zapisane.',
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'errors' => ['general' => 'Podczas zapisywania wystapil blad.'],
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
public function email_template_delete(): void
|
||||
{
|
||||
\S::alert('Usuwanie szablonow uzytkownika jest tymczasowo wylaczone.');
|
||||
header('Location: /admin/newsletter/email_templates_admin/');
|
||||
exit;
|
||||
}
|
||||
|
||||
private function buildSettingsFormViewModel(array $settings, ?array $errors = null): FormEditViewModel
|
||||
{
|
||||
$data = [
|
||||
'newsletter_header' => (string)($settings['newsletter_header'] ?? ''),
|
||||
'newsletter_footer' => (string)($settings['newsletter_footer'] ?? ''),
|
||||
];
|
||||
|
||||
$fields = [
|
||||
FormField::editor('newsletter_header', [
|
||||
'label' => 'Naglowek',
|
||||
'height' => 150,
|
||||
]),
|
||||
FormField::editor('newsletter_footer', [
|
||||
'label' => 'Stopka',
|
||||
'height' => 150,
|
||||
]),
|
||||
];
|
||||
|
||||
$actionUrl = '/admin/newsletter/settings_save/';
|
||||
$actions = [
|
||||
FormAction::save($actionUrl, '/admin/newsletter/settings/'),
|
||||
];
|
||||
|
||||
return new FormEditViewModel(
|
||||
$this->settingsFormId(),
|
||||
'Edycja ustawien newslettera',
|
||||
$data,
|
||||
$fields,
|
||||
[],
|
||||
$actions,
|
||||
'POST',
|
||||
$actionUrl,
|
||||
'/admin/newsletter/settings/',
|
||||
true,
|
||||
[],
|
||||
null,
|
||||
$errors
|
||||
);
|
||||
}
|
||||
|
||||
private function buildTemplateFormViewModel(array $template, ?array $errors = null): FormEditViewModel
|
||||
{
|
||||
$templateId = (int)($template['id'] ?? 0);
|
||||
$isAdminTemplate = (int)($template['is_admin'] ?? 0) === 1;
|
||||
$isNew = $templateId <= 0;
|
||||
|
||||
$data = [
|
||||
'id' => $templateId,
|
||||
'name' => (string)($template['name'] ?? ''),
|
||||
'text' => (string)($template['text'] ?? ''),
|
||||
];
|
||||
|
||||
$nameAttrs = [];
|
||||
if ($isAdminTemplate) {
|
||||
$nameAttrs['readonly'] = 'readonly';
|
||||
}
|
||||
|
||||
$fields = [
|
||||
FormField::text('name', [
|
||||
'label' => 'Nazwa',
|
||||
'required' => true,
|
||||
'attributes' => $nameAttrs,
|
||||
]),
|
||||
FormField::editor('text', [
|
||||
'label' => 'Tresc',
|
||||
'required' => true,
|
||||
'height' => 350,
|
||||
]),
|
||||
];
|
||||
|
||||
$backUrl = '/admin/newsletter/email_templates_admin/';
|
||||
$actionUrl = '/admin/newsletter/template_save/' . ($isNew ? '' : ('id=' . $templateId));
|
||||
$actions = [
|
||||
FormAction::save($actionUrl, $backUrl),
|
||||
FormAction::cancel($backUrl),
|
||||
];
|
||||
|
||||
return new FormEditViewModel(
|
||||
$this->templateFormId($templateId),
|
||||
'Edycja szablonu newslettera',
|
||||
$data,
|
||||
$fields,
|
||||
[],
|
||||
$actions,
|
||||
'POST',
|
||||
$actionUrl,
|
||||
$backUrl,
|
||||
true,
|
||||
['id' => $templateId],
|
||||
null,
|
||||
$errors
|
||||
);
|
||||
}
|
||||
|
||||
private function templatesListViewModel(): PaginatedTableViewModel
|
||||
{
|
||||
$sortableColumns = ['name'];
|
||||
$filterDefinitions = [
|
||||
[
|
||||
'key' => 'name',
|
||||
'label' => 'Nazwa',
|
||||
'type' => 'text',
|
||||
],
|
||||
];
|
||||
|
||||
$basePath = '/admin/newsletter/email_templates_admin/';
|
||||
|
||||
$listRequest = \admin\Support\TableListRequestFactory::fromRequest(
|
||||
$filterDefinitions,
|
||||
$sortableColumns,
|
||||
'name'
|
||||
);
|
||||
|
||||
$sortDir = $listRequest['sortDir'];
|
||||
if (trim((string)\S::get('sort')) === '') {
|
||||
$sortDir = 'ASC';
|
||||
}
|
||||
|
||||
$result = $this->repository->listTemplatesForAdmin(
|
||||
true,
|
||||
$listRequest['filters'],
|
||||
$listRequest['sortColumn'],
|
||||
$sortDir,
|
||||
$listRequest['page'],
|
||||
$listRequest['perPage']
|
||||
);
|
||||
|
||||
$rows = [];
|
||||
$lp = ($listRequest['page'] - 1) * $listRequest['perPage'] + 1;
|
||||
foreach ($result['items'] as $item) {
|
||||
$id = (int)($item['id'] ?? 0);
|
||||
$name = trim((string)($item['name'] ?? ''));
|
||||
|
||||
$actions = [
|
||||
[
|
||||
'label' => 'Edytuj',
|
||||
'url' => '/admin/newsletter/email_template_edit/id=' . $id,
|
||||
'class' => 'btn btn-xs btn-primary',
|
||||
],
|
||||
];
|
||||
|
||||
$rows[] = [
|
||||
'lp' => $lp++ . '.',
|
||||
'name' => '<a href="/admin/newsletter/email_template_edit/id=' . $id . '">' . htmlspecialchars($name, ENT_QUOTES, 'UTF-8') . '</a>',
|
||||
'_actions' => $actions,
|
||||
];
|
||||
}
|
||||
|
||||
$total = (int)$result['total'];
|
||||
$totalPages = max(1, (int)ceil($total / $listRequest['perPage']));
|
||||
|
||||
return new PaginatedTableViewModel(
|
||||
[
|
||||
['key' => 'lp', 'label' => 'Lp.', 'class' => 'text-center', 'sortable' => false],
|
||||
['key' => 'name', 'sort_key' => 'name', 'label' => 'Nazwa', 'sortable' => true, 'raw' => true],
|
||||
],
|
||||
$rows,
|
||||
$listRequest['viewFilters'],
|
||||
[
|
||||
'column' => $listRequest['sortColumn'],
|
||||
'dir' => $sortDir,
|
||||
],
|
||||
[
|
||||
'page' => $listRequest['page'],
|
||||
'per_page' => $listRequest['perPage'],
|
||||
'total' => $total,
|
||||
'total_pages' => $totalPages,
|
||||
],
|
||||
array_merge($listRequest['queryFilters'], [
|
||||
'sort' => $listRequest['sortColumn'],
|
||||
'dir' => $sortDir,
|
||||
'per_page' => $listRequest['perPage'],
|
||||
]),
|
||||
$listRequest['perPageOptions'],
|
||||
$sortableColumns,
|
||||
$basePath,
|
||||
'Brak danych w tabeli.'
|
||||
);
|
||||
}
|
||||
|
||||
private function settingsFormId(): string
|
||||
{
|
||||
return 'newsletter-settings-edit';
|
||||
}
|
||||
|
||||
private function templateFormId(int $templateId): string
|
||||
{
|
||||
return 'newsletter-template-edit-' . $templateId;
|
||||
}
|
||||
}
|
||||
@@ -275,6 +275,17 @@ class Site
|
||||
new \Domain\Languages\LanguagesRepository( $mdb )
|
||||
);
|
||||
},
|
||||
'Newsletter' => function() {
|
||||
global $mdb;
|
||||
|
||||
return new \admin\Controllers\NewsletterController(
|
||||
new \Domain\Newsletter\NewsletterRepository(
|
||||
$mdb,
|
||||
new \Domain\Settings\SettingsRepository( $mdb )
|
||||
),
|
||||
new \Domain\Newsletter\NewsletterPreviewRenderer()
|
||||
);
|
||||
},
|
||||
];
|
||||
|
||||
return self::$newControllers;
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
<?php
|
||||
namespace admin\controls;
|
||||
|
||||
class Newsletter
|
||||
{
|
||||
public static function emails_list()
|
||||
{
|
||||
return \admin\view\Newsletter::emails_list();
|
||||
}
|
||||
|
||||
public static function send()
|
||||
{
|
||||
if ( \admin\factory\Newsletter::send( \S::get( 'dates' ), \S::get( 'template' ) ) )
|
||||
\S::alert( 'Newsletter został dodany do kolejki wysyłania.' );
|
||||
|
||||
header( 'Location: /admin/newsletter/prepare/' );
|
||||
exit;
|
||||
}
|
||||
|
||||
public static function prepare()
|
||||
{
|
||||
return \admin\view\Newsletter::prepare(
|
||||
\admin\factory\Newsletter::templates_list()
|
||||
);
|
||||
}
|
||||
|
||||
public static function settings_save()
|
||||
{
|
||||
$values = json_decode( \S::get( 'values' ), true );
|
||||
$settingsRepository = new \Domain\Settings\SettingsRepository();
|
||||
|
||||
$settingsRepository -> updateSetting( 'newsletter_footer', $values['newsletter_footer'] ?? '' );
|
||||
$settingsRepository -> updateSetting( 'newsletter_header', $values['newsletter_header'] ?? '' );
|
||||
|
||||
\S::alert( 'Ustawienia zostały zapisane.' );
|
||||
|
||||
echo json_encode( [ 'status' => 'ok', 'msg' => 'Ustawienia zostały zapisane.' ] );
|
||||
exit;
|
||||
}
|
||||
|
||||
public static function settings()
|
||||
{
|
||||
$settingsRepository = new \Domain\Settings\SettingsRepository();
|
||||
|
||||
return \admin\view\Newsletter::settings(
|
||||
$settingsRepository -> getSettings()
|
||||
);
|
||||
}
|
||||
|
||||
public static function email_templates_user()
|
||||
{
|
||||
return \admin\view\Newsletter::email_templates_user();
|
||||
}
|
||||
|
||||
public static function email_templates_admin()
|
||||
{
|
||||
return \admin\view\Newsletter::email_templates_admin();
|
||||
}
|
||||
|
||||
public static function email_template_delete()
|
||||
{
|
||||
$is_admin = \admin\factory\Newsletter::is_admin_template( \S::get( 'id' ) );
|
||||
|
||||
if ( !$is_admin and \admin\factory\Newsletter::newsletter_template_delete( \S::get( 'id' ) ) )
|
||||
\S::alert( 'Szablon newslettera został usunięty.' );
|
||||
|
||||
if ( $is_admin )
|
||||
header( 'Location: /admin/newsletter/email_templates_admin/' );
|
||||
else
|
||||
header( 'Location: /admin/newsletter/email_templates_user/' );
|
||||
exit;
|
||||
}
|
||||
|
||||
public static function email_template_edit()
|
||||
{
|
||||
return \admin\view\Newsletter::email_template_edit(
|
||||
\admin\factory\Newsletter::email_template_detalis(
|
||||
\S::get( 'id' )
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public static function template_save()
|
||||
{
|
||||
$response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania wystąpił błąd. Proszę spróbować ponownie.' ];
|
||||
$values = json_decode( \S::get( 'values' ), true );
|
||||
|
||||
if ( $id = \admin\factory\Newsletter::template_save( $values['id'], $values['name'], $values['text'] ) )
|
||||
$response = [ 'status' => 'ok', 'msg' => 'Zmiany zostały zapisane.', 'id' => $id ];
|
||||
|
||||
echo json_encode( $response );
|
||||
exit;
|
||||
}
|
||||
}
|
||||
@@ -1,76 +1,48 @@
|
||||
<?php
|
||||
namespace admin\factory;
|
||||
|
||||
use Domain\Newsletter\NewsletterRepository;
|
||||
use Domain\Settings\SettingsRepository;
|
||||
|
||||
class Newsletter
|
||||
{
|
||||
public static function is_admin_template( $template_id )
|
||||
{
|
||||
global $mdb;
|
||||
return $mdb -> get( 'pp_newsletter_templates', 'is_admin', [ 'id' => (int)$template_id ] );
|
||||
return self::repository() -> isAdminTemplate( (int)$template_id );
|
||||
}
|
||||
|
||||
|
||||
public static function newsletter_template_delete( $template_id )
|
||||
{
|
||||
global $mdb;
|
||||
return $mdb -> delete( 'pp_newsletter_templates', [ 'id' => (int)$template_id ] );
|
||||
return self::repository() -> deleteTemplate( (int)$template_id );
|
||||
}
|
||||
|
||||
|
||||
public static function send( $dates, $template )
|
||||
{
|
||||
global $mdb;
|
||||
|
||||
$results = $mdb -> select( 'pp_newsletter', 'email', [ 'status' => 1 ] );
|
||||
if ( is_array( $results ) and !empty( $results ) ) foreach ( $results as $row )
|
||||
{
|
||||
$mdb -> insert( 'pp_newsletter_send', [
|
||||
'email' => $row,
|
||||
'dates' => $dates,
|
||||
'id_template' => $template ? $template : null
|
||||
] );
|
||||
}
|
||||
return true;
|
||||
return self::repository() -> queueSend( (string)$dates, (int)$template );
|
||||
}
|
||||
|
||||
public static function email_template_detalis ($id_template)
|
||||
|
||||
public static function email_template_detalis( $id_template )
|
||||
{
|
||||
global $mdb;
|
||||
|
||||
$result = $mdb -> get ('pp_newsletter_templates', '*', [ 'id' => (int)$id_template ] );
|
||||
return $result;
|
||||
return self::repository() -> templateDetails( (int)$id_template );
|
||||
}
|
||||
|
||||
|
||||
public static function template_save( $id, $name, $text )
|
||||
{
|
||||
global $mdb;
|
||||
|
||||
if ( !$id )
|
||||
{
|
||||
if ( $mdb -> insert( 'pp_newsletter_templates', [
|
||||
'name' => $name,
|
||||
'text' => $text
|
||||
] ) )
|
||||
{
|
||||
\S::delete_dir( '../temp/' );
|
||||
return $mdb -> id();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$mdb -> update( 'pp_newsletter_templates', [
|
||||
'name' => $name,
|
||||
'text' => $text
|
||||
], [
|
||||
'id' => (int)$id
|
||||
] );
|
||||
|
||||
\S::delete_dir( '../temp/' );
|
||||
return $id;
|
||||
}
|
||||
return self::repository() -> saveTemplate( (int)$id, (string)$name, (string)$text );
|
||||
}
|
||||
|
||||
|
||||
public static function templates_list()
|
||||
{
|
||||
global $mdb;
|
||||
return $mdb -> select( 'pp_newsletter_templates', '*', [ 'is_admin' => 0, 'ORDER' => [ 'name' => 'ASC' ] ] );
|
||||
return self::repository() -> listTemplatesSimple( false );
|
||||
}
|
||||
}
|
||||
|
||||
private static function repository(): NewsletterRepository
|
||||
{
|
||||
global $mdb;
|
||||
|
||||
return new NewsletterRepository(
|
||||
$mdb,
|
||||
new SettingsRepository($mdb)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
namespace admin\view;
|
||||
|
||||
class Newsletter
|
||||
{
|
||||
public static function emails_list()
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
return $tpl -> render( 'newsletter/emails-list' );
|
||||
}
|
||||
|
||||
public static function preview( $articles, $settings, $template, $dates = '' )
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
$tpl -> articles = $articles;
|
||||
$tpl -> settings = $settings;
|
||||
$tpl -> template = $template;
|
||||
$tpl -> dates = $dates;
|
||||
return $tpl -> render( 'newsletter/preview' );
|
||||
}
|
||||
|
||||
public static function prepare( $templates )
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
$tpl -> templates = $templates;
|
||||
return $tpl -> render( 'newsletter/prepare' );
|
||||
}
|
||||
|
||||
public static function settings( $settings )
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
$tpl -> settings = $settings;
|
||||
return $tpl -> render( 'newsletter/settings' );
|
||||
}
|
||||
|
||||
public static function email_templates_user()
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
return $tpl -> render( 'newsletter/email-templates-user' );
|
||||
}
|
||||
|
||||
public static function email_templates_admin()
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
return $tpl -> render( 'newsletter/email-templates-admin' );
|
||||
}
|
||||
|
||||
public static function email_template_edit($template)
|
||||
{
|
||||
$tpl = new \Tpl;
|
||||
$tpl -> email_template = $template;
|
||||
return $tpl -> render( 'newsletter/email-template-edit' );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user