Новосибирск +7(983)

По всем вопросам :

Телеграм : @radgura

Массовая рассылка Joomla - прикрепить файл к письму

Заказать доработку
Joomla 3.x

Стоимость 500


@radgura.ru
Адриена Лежена
63089
Новосибирск
Адриена Лежена
+7(983)
3067856
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Статьи

Вы можете Заказать доработку 500руб. RUB
Речь пойдет о стандартном компоненте "Менеджер пользователей", который позволяет делать рассылку четным записям Joomla.

У стандартной формы нет возможности прикрепить файл, чтобы это исправить вносим изменения:

1.Добавляем поле с типом "файл", в файле конфигурации 

<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset>
<field
name="recurse"
type="checkbox"
label="COM_USERS_MAIL_FIELD_RECURSE_LABEL"
description="COM_USERS_MAIL_FIELD_RECURSE_DESC"
value="1"
/>
<field
name="fileupload"
type="file"
label="Прикрепленный файл"
description=""
/>
...

 2.На форме массовой рассылки, добавляем вызов поля для загрузки файла и обязательно у формы ставить атрибут enctype="multipart/form-data"

<form action="<?php echo JRoute::_('index.php?option=com_users&view=mail'); ?>" name="adminForm" method="post" id="adminForm" enctype="multipart/form-data">
<div class="row-fluid">
<div class="span9">
<fieldset class="adminform">
<div class="control-group">
<div class="control-label"><?php echo $this->form->getLabel('subject'); ?></div>
<div class="controls"><?php echo JComponentHelper::getParams('com_users')->get('mailSubjectPrefix'); ?>
<?php echo $this->form->getInput('subject'); ?></div>
</div>
<div class="control-group">
<div class="controls"><?php echo $this->form->getInput('fileupload'); ?></div>
</div>
<div class="control-group">
<div class="control-label"><?php echo $this->form->getLabel('message'); ?></div>
<div class="controls"><?php echo $this->form->getInput('message'); ?><br>
<?php echo JComponentHelper::getParams('com_users')->get('mailBodySuffix'); ?></div>
</div>

3.В модели добавляем обработчик поля и прикрепление файла к письму

public function send()
{
$app = JFactory::getApplication();
$data = $app->input->post->get('jform', array(), 'array');
$user = JFactory::getUser();
$access = new JAccess;
$db = $this->getDbo();
$mode = array_key_exists('mode', $data) ? (int) $data['mode'] : 0;
$subject = array_key_exists('subject', $data) ? $data['subject'] : '';
$grp = array_key_exists('group', $data) ? (int) $data['group'] : 0;
$recurse = array_key_exists('recurse', $data) ? (int) $data['recurse'] : 0;
$bcc = array_key_exists('bcc', $data) ? (int) $data['bcc'] : 0;
$disabled = array_key_exists('disabled', $data) ? (int) $data['disabled'] : 0;
$message_body = array_key_exists('message', $data) ? $data['message'] : '';
// Automatically removes html formatting
if (!$mode) {$message_body = JFilterInput::getInstance()->clean($message_body, 'string');}
// Check for a message body and subject
if (!$message_body || !$subject)
{
$app->setUserState('com_users.display.mail.data', $data);
$this->setError(JText::_('COM_USERS_MAIL_PLEASE_FILL_IN_THE_FORM_CORRECTLY'));
return false;
}
// Get users in the group out of the ACL
$to = $access->getUsersByGroup($grp, $recurse);
// Get all users email and group except for senders
$query = $db->getQuery(true)
->select('email')
->from('#__users')
->where('id != ' . (int) $user->get('id'));
if ($grp !== 0)
{
if (empty($to)) {$query->where('0');}
else {$query->where('id IN (' . implode(',', $to) . ')');}
}
if ($disabled == 0){$query->where('block = 0');}
$db->setQuery($query);
$rows = $db->loadColumn();
// Check to see if there are any users in this group before we continue
if (!count($rows))
{
$app->setUserState('com_users.display.mail.data', $data);
if (in_array($user->id, $to)){$this->setError(JText::_('COM_USERS_MAIL_ONLY_YOU_COULD_BE_FOUND_IN_THIS_GROUP'));}
else
{$this->setError(JText::_('COM_USERS_MAIL_NO_USERS_COULD_BE_FOUND_IN_THIS_GROUP'));} return false;
}
// Get the Mailer
$mailer = JFactory::getMailer();
$params = JComponentHelper::getParams('com_users');
// Build email message format.
$mailer->setSender(array($app->get('mailfrom'), $app->get('fromname')));
$mailer->setSubject($params->get('mailSubjectPrefix') . stripslashes($subject));
$mailer->setBody($message_body . $params->get('mailBodySuffix'));
$mailer->IsHtml($mode);
// Add recipients
if ($bcc)
{
$mailer->addBcc($rows);
$mailer->addRecipient($app->get('mailfrom'));
}
else{$mailer->addRecipient($rows);}
Доступ к этому контенту разрешен только участникам проекта.
Вы можете получить доступ,купив эту доработку

if ($filename!='') {if (JFile::upload($src, $dest))
{$mailer->addAttachment($dest);}
else
{$this->setError(JText::_('Не удалось прикрепить файл '.$src));}}
// Send the Mail
$rs = $mailer->Send();
// Check for an error
if ($rs instanceof Exception)
{
$app->setUserState('com_users.display.mail.data', $data);
$this->setError($rs->getError());
return false;
}
elseif (empty($rs))
{
$app->setUserState('com_users.display.mail.data', $data);
$this->setError(JText::_('COM_USERS_MAIL_THE_MAIL_COULD_NOT_BE_SENT'));
return false;
}
else
{
$data['mode'] = $mode;
$data['subject'] = $subject;
$data['group'] = $grp;
$data['recurse'] = $recurse;
$data['bcc'] = $bcc;
$data['message'] = $message_body;
$data['file_upload'] = $file_upload;
$app->setUserState('com_users.display.mail.data', array());
$app->enqueueMessage(JText::plural('COM_USERS_MAIL_EMAIL_SENT_TO_N_USERS', count($rows)), 'message');
return true;
}
}

Комментарии (0)

Здесь ещё нет оставленных комментариев.

Оставьте свой комментарий

  1. Добавление комментария от гостя.
Вложения (0 / 3)
Share Your Location

Как с нами связаться

По всем вопросам пишите  

Телеграм: @radgura

OnLine заказ

Отправить сообщение

Нажимая на кнопку «Отправить сообщение», я соглашаюсь:
* с условиями публичной оферты
* обработку моих персональных данных


RAD компоненты

Please publish modules in offcanvas position.