You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
5.4 KiB
196 lines
5.4 KiB
<?php |
|
|
|
/** |
|
* AVE.cms - Модуль Рассылки |
|
* |
|
* @package AVE.cms |
|
* @subpackage module_mailer |
|
* @filesource |
|
*/ |
|
|
|
if (!defined('BASE_DIR')) exit; |
|
|
|
if (defined('ACP')) |
|
{ |
|
$modul['ModuleName'] = 'Рассылка / Подписка'; |
|
$modul['ModuleSysName'] = 'mailer'; |
|
$modul['ModuleVersion'] = '2.2.1'; |
|
$modul['ModuleDescription'] = 'Данный модуль позволяет создавать внутренние (по группам пользователей сайта), внешние (по спискам) и комбинированные рассылки. Для вывода в публичной части сайта формы подписки на рассылку, используйте системный тег <strong>[mod_subscribe:XXX]</strong>, где XXX - идентификатор списка рассылки, в который будет добавлен подписчик.'; |
|
$modul['ModuleAutor'] = 'val005'; |
|
$modul['ModuleCopyright'] = '© 2007-2013 AVE.CMS'; |
|
$modul['ModuleIsFunction'] = 1; |
|
$modul['ModuleTemplate'] = 1; |
|
$modul['ModuleAdminEdit'] = 1; |
|
$modul['ModuleFunction'] = 'mod_subscribe'; |
|
$modul['ModuleTag'] = '[mod_subscribe:XXX]'; |
|
$modul['ModuleTagLink'] = null; |
|
$modul['ModuleAveTag'] = '#\\\[mod_subscribe:(\\\d+)]#'; |
|
$modul['ModulePHPTag'] = "<?php mod_subscribe(''$1''); ?>"; |
|
} |
|
|
|
/** |
|
* Обработка тега модуля |
|
* |
|
* @param int $list_id идентификатор списка рассылки |
|
*/ |
|
function mod_subscribe($list_id) |
|
{ |
|
include_once(BASE_DIR . '/modules/mailer/class.mailer.php'); |
|
$mailer = new mailer; |
|
$mailer->tpl_dir = BASE_DIR . '/modules/mailer/templates/'; |
|
|
|
global $AVE_Template; |
|
$lang_file = BASE_DIR . '/modules/mailer/lang/' . $_SESSION['user_language'] . '.txt'; |
|
$AVE_Template->config_load($lang_file, 'public'); |
|
|
|
$list_id = (int)preg_replace('/\D/', '', $list_id); |
|
$_POST['email'] = trim($_POST['email']); |
|
|
|
switch ($_POST['action']) |
|
{ |
|
case 'subscribe': |
|
$result = $mailer->mailerSubscribe(); |
|
switch ($result) |
|
{ |
|
case 0: |
|
$mes = $AVE_Template->get_config_vars('MAILER_WRONG_EMAIL'); |
|
break; |
|
|
|
case 1: |
|
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_SUBSCRIBED')); |
|
$AVE_Template->assign('hide_sub',true); |
|
break; |
|
|
|
case 2: |
|
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_SUBSCRIBE_EXIST')); |
|
$AVE_Template->assign('hide_sub',true); |
|
break; |
|
} |
|
break; |
|
|
|
case 'unsubscribe': |
|
$result = $mailer->mailerUnsubscribe(); |
|
switch ($result) |
|
{ |
|
case 0: |
|
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_DEL_NO')); break; |
|
case 1: |
|
$mes = str_replace('%email%',$_POST['email'],$AVE_Template->get_config_vars('MAILER_DELETED')); break; |
|
} |
|
$AVE_Template->assign('hide_unsub',true); |
|
break; |
|
} |
|
$AVE_Template->assign('message', $mes); |
|
$AVE_Template->assign('action', $_POST['action']); |
|
$AVE_Template->assign('list_id', $list_id); |
|
$AVE_Template->display($mailer->tpl_dir . 'public_form.tpl'); |
|
} |
|
|
|
/** |
|
* Внешнее обращение |
|
*/ |
|
if (!defined('ACP') && $_REQUEST['module'] == 'mailer') |
|
{ |
|
global $AVE_DB; |
|
switch ($_REQUEST['action']) |
|
{ |
|
case 'show': |
|
$mail = $AVE_DB->Query(" |
|
SELECT body, appeal, type |
|
FROM " . PREFIX . "_module_mailer_mails |
|
WHERE id = " . $_REQUEST['id'] |
|
)->FetchRow(); |
|
$body = str_replace( |
|
array('%NAME%' ,'%SHOW%'), |
|
array($mail->appeal ,'#'), |
|
$mail->body); |
|
echo ($mail -> type == 'text') ? '<pre>'.$body.'</pre>' : $body; |
|
} |
|
} |
|
|
|
/** |
|
* Админка |
|
*/ |
|
if (defined('ACP') && $_REQUEST['mod'] == 'mailer') |
|
{ |
|
include_once(BASE_DIR . '/modules/mailer/class.mailer.php'); |
|
$mailer = new mailer; |
|
$mailer->tpl_dir = BASE_DIR . '/modules/mailer/templates/'; |
|
|
|
$lang_file = BASE_DIR . '/modules/mailer/lang/' . $_SESSION['admin_language'] . '.txt'; |
|
$AVE_Template->config_load($lang_file, 'admin'); |
|
|
|
switch ($_REQUEST['moduleaction']) |
|
{ |
|
// Вывод списка рассылок |
|
case '': |
|
case '1': |
|
$mailer->mailerShowMails(); |
|
break; |
|
|
|
// Загрузка вложения из отправленной рассылки |
|
case 'getfile': |
|
if (file_exists($_REQUEST['file'])) |
|
{ |
|
if ($_REQUEST['check']) exit('1'); |
|
else $mailer->_mailerGetFile($_REQUEST['file']); |
|
} |
|
exit; |
|
|
|
// Вывод списка рассылок |
|
case 'editmail': |
|
include_once(BASE_DIR . '/class/class.user.php'); |
|
$AVE_User = new AVE_User; |
|
$mailer->mailerEditMail(); |
|
break; |
|
|
|
case 'savemail': |
|
include_once(BASE_DIR . '/class/class.user.php'); |
|
$AVE_User = new AVE_User; |
|
$mailer->mailerSaveMail($_REQUEST['id'],$_REQUEST['act']); |
|
break; |
|
|
|
case 'countmail': |
|
$mailer->mailerCountMail($_REQUEST['id']); |
|
break; |
|
|
|
case 'testsend': |
|
$emails = $mailer->mailerTestSend($_REQUEST['id'],$_REQUEST['emails']); |
|
echo implode(', ',$emails); |
|
exit; |
|
|
|
case 'sendmail': |
|
$mailer->mailerSendMail(); |
|
break; |
|
|
|
case 'showlists': |
|
$mailer->mailerShowLists(); |
|
break; |
|
|
|
case 'editlist': |
|
$mailer->mailerEditList(); |
|
break; |
|
|
|
case 'savelist': |
|
$mailer->mailerSaveList(); |
|
break; |
|
|
|
case 'multiadd': |
|
$mailer->mailerMultiAdd(); |
|
break; |
|
|
|
case 'multisave': |
|
$mailer->mailerMultiSave(); |
|
break; |
|
|
|
case 'delreceiver': |
|
$mailer->_mailerDelReceiver($_REQUEST['rec_id']); |
|
break; |
|
|
|
case 'checkemail': |
|
echo $mailer->_mailerCheckEmail(trim($_REQUEST['email']),(int)trim($_REQUEST['list_id'])); |
|
exit; |
|
} |
|
} |
|
|
|
?>
|