// newsletter creation page } elseif ($mode == 'preview_popup') { Registry::get('view')->display('addons/newsletters/views/newsletters/components/preview_popup.tpl'); exit; // newsletter manage page } elseif ($mode == 'manage') { // do we list newsletters or templates or autoresponders? $newsletter_type = !empty($_REQUEST['type']) ? $_REQUEST['type'] : NEWSLETTER_TYPE_NEWSLETTER; // Use pagination for a newsletters $params = array('type' => $newsletter_type, 'only_available' => false); $items_per_page = 0; if ($newsletter_type == NEWSLETTER_TYPE_NEWSLETTER) { $params = fn_array_merge($params, $_REQUEST); $items_per_page = Registry::get('settings.Appearance.admin_elements_per_page'); } list($newsletters, $search) = fn_get_newsletters($params, $items_per_page, DESCR_SL); list($mailing_lists) = fn_get_mailing_lists(); foreach ($newsletters as $newsletter_id => $data) { if (!empty($data['mailing_lists'])) { $lists = array(); foreach ($data['mailing_lists'] as $mailing_list_id) { $lists[] = $mailing_lists[$mailing_list_id]['object']; } $newsletters[$newsletter_id]['mailing_list_names'] = implode(', ', $lists); } } Registry::get('view')->assign('newsletter_type', $newsletter_type); Registry::get('view')->assign('mailing_lists', $mailing_lists); Registry::get('view')->assign('newsletters', $newsletters); Registry::get('view')->assign('search', $search); fn_newsletters_generate_sections($newsletter_type);
} return array(CONTROLLER_STATUS_OK, 'mailing_lists.manage'); } if ($mode == 'update') { list($autoresponders) = fn_get_newsletters(array('type' => NEWSLETTER_TYPE_AUTORESPONDER, 'only_available' => false), 0, DESCR_SL); Registry::get('view')->assign('autoresponders', $autoresponders); Registry::get('view')->assign('mailing_list', fn_get_mailing_list_data($_REQUEST['list_id'], DESCR_SL)); } elseif ($mode == 'manage') { $params = $_REQUEST; $params['only_available'] = false; list($mailing_lists) = fn_get_mailing_lists($params, 0, DESCR_SL); $subscribers = db_get_hash_array("SELECT * FROM ?:subscribers", 'subscriber_id'); foreach ($mailing_lists as &$list) { $list['subscribers_num'] = db_get_field("SELECT COUNT(*) FROM ?:user_mailing_lists WHERE list_id = ?i", $list['list_id']); } list($autoresponders) = fn_get_newsletters(array('type' => NEWSLETTER_TYPE_AUTORESPONDER, 'only_available' => false), 0, DESCR_SL); Registry::get('view')->assign('mailing_lists', $mailing_lists); Registry::get('view')->assign('autoresponders', $autoresponders); Registry::get('view')->assign('subscribers', $subscribers); fn_newsletters_generate_sections('mailing_lists'); } function fn_update_mailing_list($mailing_list_data, $list_id, $lang_code = DESCR_SL) { if (empty($list_id)) { $list_id = db_query("INSERT INTO ?:mailing_lists ?e", $mailing_list_data); $_data = $mailing_list_data; $_data['object_id'] = $list_id; $_data['object_holder'] = 'mailing_lists'; $_data['object'] = $_data['name']; foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("REPLACE INTO ?:common_descriptions ?e", $_data);
} return array(CONTROLLER_STATUS_OK, "mailing_lists.manage"); } if ($mode == 'update') { fn_add_breadcrumb(fn_get_lang_var('newsletters'), "newsletters.manage"); $view->assign('autoresponders', fn_get_newsletters(array('type' => NEWSLETTER_TYPE_AUTORESPONDER, 'only_available' => false), DESCR_SL)); $view->assign('mailing_list', fn_get_mailing_list_data($_REQUEST['list_id'], DESCR_SL)); } elseif ($mode == 'delete') { if (!empty($_REQUEST['list_id'])) { db_query("DELETE FROM ?:common_descriptions WHERE object_id = ?i AND object_holder='mailing_lists'", $_REQUEST['list_id']); db_query("DELETE FROM ?:mailing_lists WHERE list_id = ?i", $_REQUEST['list_id']); db_query("DELETE FROM ?:user_mailing_lists WHERE list_id = ?i", $_REQUEST['list_id']); $_mailing_lists = fn_get_mailing_lists(array('only_available' => false, 'limit' => $limit), DESCR_SL); if (empty($_mailing_lists)) { $view->display('addons/news_and_emails/views/mailing_lists/manage.tpl'); } } exit; } elseif ($mode == 'manage') { $total_pages = db_get_field("SELECT COUNT(*) FROM ?:mailing_lists"); $limit = fn_paginate(@$_REQUEST['page'], $total_pages, Registry::get('settings.Appearance.admin_elements_per_page')); $mailing_lists = fn_get_mailing_lists(array('only_available' => false, 'limit' => $limit), DESCR_SL); $subscribers = db_get_hash_array("SELECT * FROM ?:subscribers", 'subscriber_id'); foreach ($mailing_lists as &$list) { $list['subscribers_num'] = db_get_field("SELECT COUNT(*) FROM ?:user_mailing_lists WHERE list_id={$list['list_id']}"); } $view->assign('mailing_lists', $mailing_lists); $view->assign('autoresponders', fn_get_newsletters(array('type' => NEWSLETTER_TYPE_AUTORESPONDER, 'only_available' => false), DESCR_SL)); $view->assign('subscribers', $subscribers); } /** /Body **/
$view->assign('mailing_lists', fn_get_mailing_lists(array('only_available' => false))); // newsletter creation page } elseif ($mode == 'preview_popup') { $view->display('addons/news_and_emails/views/newsletters/components/preview_popup.tpl'); exit; // newsletter manage page } elseif ($mode == 'manage') { // do we list newsletters or templates or autoresponders? $newsletter_type = !empty($_REQUEST['type']) ? $_REQUEST['type'] : NEWSLETTER_TYPE_NEWSLETTER; // Use pagination for a newsletters $params = array(); if ($newsletter_type == NEWSLETTER_TYPE_NEWSLETTER) { $params = array('paginate' => true, 'page' => empty($_REQUEST['page']) ? 1 : $_REQUEST['page']); } $view->assign('newsletter_type', $newsletter_type); $view->assign('newsletters', fn_get_newsletters(fn_array_merge(array('type' => $newsletter_type, 'only_available' => false), $params), DESCR_SL)); fn_newsletters_generate_sections($newsletter_type); } elseif ($mode == 'campaigns') { list($campaigns, $search) = fn_get_campaigns($_REQUEST); $view->assign('campaigns', $campaigns); $view->assign('search', $search); fn_newsletters_generate_sections('C'); } elseif ($mode == 'campaign_stats') { $campaign = db_get_row("SELECT c.*, d.* FROM ?:newsletter_campaigns c INNER JOIN ?:common_descriptions d ON c.campaign_id=d.object_id LEFT JOIN ?:newsletters ON c.campaign_id=?:newsletters.campaign_id WHERE d.object_holder='newsletter_campaigns' AND c.campaign_id = ?i", $_REQUEST['campaign_id']); $stats = db_get_array("SELECT n.*, d.*, SUM(e.clicks) as clicks FROM ?:newsletters n INNER JOIN ?:newsletter_descriptions d ON n.newsletter_id=d.newsletter_id LEFT JOIN ?:newsletter_links e ON n.newsletter_id = e.newsletter_id AND e.campaign_id = n.campaign_id WHERE n.campaign_id=?i GROUP BY e.newsletter_id", $_REQUEST['campaign_id']); $view->assign('campaign', $campaign); $view->assign('campaign_stats', $stats); } elseif ($mode == 'delete') { if (!empty($_REQUEST['newsletter_id'])) { fn_delete_newsletter($_REQUEST['newsletter_id']); }