config->get('cron_last', 0) < (time() - 43200)) { $message = acym_translation('ACYM_CREATE_CRON_REMINDER'); $message .= ' '.acym_translation('ACYM_GOTO_CONFIG').''; $notification = [ 'name' => 'cron_reminder', 'removable' => 1, ]; acym_enqueueMessage($message, 'warning', true, [$notification]); } } // Get filters data $searchFilter = $this->getVarFiltersListing('string', 'cqueue_search', ''); $tagFilter = $this->getVarFiltersListing('string', 'cqueue_tag', ''); $status = $this->getVarFiltersListing('string', 'cqueue_status', ''); // Get pagination data $pagination = new PaginationHelper(); $campaignsPerPage = $pagination->getListLimit(); $page = $this->getVarFiltersListing('int', 'cqueue_pagination_page', 1); $queueClass = new QueueClass(); $matchingElements = $queueClass->getMatchingCampaigns( [ 'search' => $searchFilter, 'tag' => $tagFilter, 'status' => $status, 'campaignsPerPage' => $campaignsPerPage, 'offset' => ($page - 1) * $campaignsPerPage, ] ); // Prepare the pagination $pagination->setStatus((int)$matchingElements['total']->total, $page, $campaignsPerPage); $tagClass = new TagClass(); $viewData = [ 'allElements' => $matchingElements['elements'], 'pagination' => $pagination, 'search' => $searchFilter, 'tag' => $tagFilter, 'allTags' => $tagClass->getAllTagsByType(TagClass::TYPE_MAIL), 'numberPerStatus' => $matchingElements['status'], 'status' => $status, 'campaignClass' => new CampaignClass(), 'languages' => acym_getLanguages(), 'workflowHelper' => new WorkflowHelper(), ]; $this->prepareToolbar($viewData); $this->breadcrumb[acym_translation('ACYM_MAILS')] = acym_completeLink('queue'); parent::display($viewData); } public function prepareToolbar(array &$data): void { $toolbarHelper = new ToolbarHelper(); $toolbarHelper->addSearchBar($data['search'], 'cqueue_search', 'ACYM_SEARCH'); $toolbarHelper->addButton( acym_translation('ACYM_EMPTY_QUEUE'), [ 'data-task' => 'emptyQueue', 'data-confirmation-message' => 'ACYM_ARE_YOU_SURE', ], 'close' ); $toolbarHelper->addModalButton( [ 'button' => ''.esc_html(acym_translation('ACYM_SEND_MAILS_MANUALLY')), 'attributesModal' => [ 'data-reveal-larger' => true, ], 'attributesButton' => [ 'class' => 'cell medium-6 large-shrink button', 'data-reload' => 'true', 'data-ajax' => 'true', 'data-iframe' => '&ctrl=queue&task=continuesend&id=0&totalsend=0', ], ] ); $toolbarHelper->addFilterByTag($data, 'cqueue_tag', 'acym__queue__filter__tags acym__select'); $data['toolbar'] = $toolbarHelper; if (!empty($data['tag'])) { $data['status_toolbar'] = [ 'cqueue_tag' => $data['tag'], ]; } } public function cancelSending(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $mailId = acym_getVar('int', 'acym__queue__cancel__mail_id'); if (!empty($mailId)) { $hasStat = acym_loadResult('SELECT COUNT(*) FROM #__acym_user_stat WHERE mail_id = '.intval($mailId)); acym_query('DELETE FROM #__acym_queue WHERE mail_id = '.intval($mailId)); acym_query('UPDATE #__acym_mail_stat SET total_subscribers = sent WHERE mail_id = '.intval($mailId)); acym_query('UPDATE #__acym_campaign SET active = 1 WHERE mail_id = '.intval($mailId)); if (empty($hasStat)) { acym_query('UPDATE #__acym_campaign SET draft = "1", sent = "0", sending_date = NULL WHERE mail_id = '.intval($mailId)); acym_query('DELETE FROM #__acym_mail_stat WHERE mail_id = '.intval($mailId)); } } else { acym_enqueueMessage(acym_translation('ACYM_ERROR_QUEUE_CANCEL_CAMPAIGN'), 'error'); } } public function cancelCampaignSending(): void { $this->cancelSending(); $this->campaigns(); } public function playPauseSending(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $active = acym_getVar('int', 'acym__queue__play_pause__active__new_value'); $campaignId = acym_getVar('int', 'acym__queue__play_pause__campaign_id'); if (!empty($campaignId)) { $queueClass = new QueueClass(); $queueClass->unpauseCampaign($campaignId, $active); } else { if (!empty($active)) { acym_enqueueMessage(acym_translation('ACYM_ERROR_QUEUE_RESUME'), 'error'); } else { acym_enqueueMessage(acym_translation('ACYM_ERROR_QUEUE_PAUSE'), 'error'); } } $this->campaigns(); } public function emptyQueue(): void { wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token'); $queueClass = new QueueClass(); $deleted = $queueClass->emptyQueue(); acym_enqueueMessage(acym_translationSprintf('ACYM_EMAILS_REMOVED_QUEUE', $deleted)); $this->campaigns(); } }