getVarFiltersListing('string', 'mails_search', ''); $tagFilter = $this->getVarFiltersListing('string', 'mails_tag', ''); $ordering = $this->getVarFiltersListing('cmd', 'mails_ordering', 'creation_date'); $orderingSortOrder = $this->getVarFiltersListing('cmd', 'mails_ordering_sort_order', 'desc'); $pagination = new PaginationHelper(); // Get pagination data $mailsPerPage = $pagination->getListLimit(); $page = $this->getVarFiltersListing('int', 'mails_pagination_page', 1); $mailClass = new MailClass(); $status = MailClass::TYPE_STANDARD; $requestData = [ 'ordering' => $ordering, 'search' => $searchFilter, 'elementsPerPage' => $mailsPerPage, 'offset' => ($page - 1) * $mailsPerPage, 'tag' => $tagFilter, 'status' => $status, 'ordering_sort_order' => $orderingSortOrder, 'onlyStandard' => true, ]; $matchingMails = $this->getMatchingElementsFromData($requestData, $status, $page); $matchingMailsNb = count($matchingMails['elements']); if (empty($matchingMailsNb) && $page > 1) { $this->setVarFiltersListing('mails_pagination_page', 1); $this->listing(); return; } // Prepare the pagination $pagination->setStatus($matchingMails['total']->total, $page, $mailsPerPage); ob_start(); require acym_getView('mails', 'listing_import', true); $templateImportView = ob_get_clean(); $tagClass = new TagClass(); $mailsData = [ 'allMails' => $matchingMails['elements'], 'allTags' => $tagClass->getAllTagsByType(TagClass::TYPE_MAIL), 'pagination' => $pagination, 'search' => $searchFilter, 'tag' => $tagFilter, 'ordering' => $ordering, 'status' => $status, 'mailNumberPerStatus' => $matchingMails['status'], 'orderingSortOrder' => $orderingSortOrder, 'templateImportView' => $templateImportView, 'mailClass' => $mailClass, 'favoriteTemplateId' => (int)$this->config->get('favorite_template', 0), ]; if (!empty($mailsData['tag'])) { $mailsData['status_toolbar'] = [ 'mails_tag' => $mailsData['tag'], ]; } $this->prepareToolbar($mailsData); parent::display($mailsData); } public function prepareToolbar(array &$data): void { $toolbarHelper = new ToolbarHelper(); $toolbarHelper->addSearchBar($data['search'], 'mails_search', 'ACYM_SEARCH'); $toolbarHelper->addFilterByTag($data, 'mails_tag', 'acym__templates__filter__tags acym__select'); $toolbarHelper->addButton(acym_translation('ACYM_ADD_DEFAULT_TMPL'), ['data-task' => 'installDefaultTmpl', 'id' => 'acym__mail__install-default'], 'content_copy'); $toolbarHelper->addModalButton( [ 'button' => ''.esc_html(acym_translation('ACYM_IMPORT')), 'modalContent' => $data['templateImportView'], 'id' => 'acym__template__import__reveal', 'attributesButton' => [ 'class' => 'button button-secondary cell medium-6 large-shrink', 'data-reload' => 'true', 'data-ajax' => 'false', ], ] ); $toolbarHelper->addModalButton( [ 'button' => ''.esc_html(acym_translation('ACYM_CREATE')), 'modalContent' => '
', 'attributesButton' => [ 'class' => 'acym_vcenter button cell medium-6 large-shrink', ], 'isLarge' => false, ] ); $data['toolbar'] = $toolbarHelper; } public function doUploadTemplate(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); if (!acym_isAdmin() || !acym_isAllowed('mails')) { die('Access denied'); } $mailClass = new MailClass(); $mailClass->doupload(); $this->listing(); } public function export(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); // Get passed data and check if we have everything we need $templateId = acym_getVar('int', 'templateId', 0); if (empty($templateId)) { exit; } $mailClass = new MailClass(); $template = $mailClass->getOneById($templateId); // We have all we need for the export, prepare the headers for the download $exportHelper = new ExportHelper(); $exportHelper->exportTemplate($template); exit; } public function installDefaultTmpl(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $updateHelper = new UpdateHelper(); $updateHelper->installTemplates(); $this->listing(); } public function favorite(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $templateId = acym_getVar('int', 'templateId', 0); if (empty($templateId)) { acym_enqueueMessage(acym_translationSprintf('ACYM_NOT_FOUND', acym_translation('ACYM_TEMPLATE')), 'error'); $this->listing(); return; } $favoriteTemplateId = $this->config->get('favorite_template', 0); $this->config->saveConfig(['favorite_template' => (int)$favoriteTemplateId === $templateId ? 0 : $templateId]); $this->listing(); } public function massDuplicate(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $ids = acym_getVar('array', 'elements_checked', []); if (!empty($ids)) { $this->duplicate($ids); } $this->listing(); } public function oneDuplicate(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $templateId = acym_getVar('int', 'templateId', 0); if (empty($templateId)) { acym_enqueueMessage(acym_translation('ACYM_TEMPLATE_DUPLICATE_ERROR'), 'error'); $this->listing(); return; } $this->duplicate([$templateId]); $this->listing(); } public function duplicate(array $templates = []): void { $mailClass = new MailClass(); $tmplError = []; foreach ($templates as $templateId) { $oldTemplate = $mailClass->getOneById($templateId); if (empty($oldTemplate)) { $tmplError[] = $templateId; continue; } $newTemplate = $oldTemplate; $newTemplate->id = 0; $newTemplate->name = $oldTemplate->name.'_copy'; $newTemplate->creator_id = acym_currentUserId(); unset($newTemplate->thumbnail); $mailClass->save($newTemplate); } if (!empty($tmplError)) { acym_enqueueMessage(acym_translationSprintf('ACYM_TEMPLATE_X_DUPLICATE_ERROR', implode(', ', $tmplError)), 'error'); } } public function delete(): void { parent::delete(); $returnListing = acym_getVar('string', 'return_listing', ''); if (!empty($returnListing)) { if (acym_isAdmin()) { acym_redirect(acym_completeLink($returnListing, false, true)); } else { $itemId = acym_getVar('int', 'acym_itemid'); $itemId = empty($itemId) ? '' : '&Itemid='.$itemId; $urlRedirect = acym_completeLink($returnListing.$itemId, false, true); acym_redirect($urlRedirect); } } } public function getMailByIdAjax(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $mailId = acym_getVar('int', 'id', 0); if (empty($mailId)) { acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false); } $mailClass = new MailClass(); $mail = $mailClass->getOneById($mailId); if (empty($mail)) { acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false); } if (!$mailClass->hasUserAccess($mailId)) { die('Access denied for this mail'); } acym_sendAjaxResponse('', ['mail' => $mail]); } }