Шрифт:
(есть увеличенное изображение)
Рис. 4.1. Пример использования вложенных множеств для организации иерархии пунктов меню
Каждому элементу иерархии соответствуют два числа - левый и правый ключи.
Для каждого пункта в таблице #__menuхранится idродителя parent_id, уровень levelи левый и правый ключи lftи rgt. На рис. 4.2 оранжевым цветом показаны id, синим - уровни, красным - левые и правые ключи.
(есть увеличенное изображение)
Рис. 4.2. Данные, хранящиеся для каждого пункта меню как элемента иерархии
Отправка писем (класс JMail)
Класс JMail предназначен для создания и отправки электронных писем. JMail поддерживает три механизма отправки почты: функцию PHP mail, Sendmail и SMTP.
Доступ к глобальному объекту JMail можно получить через метод getMailer класса JFactory:
$mailer =& JFactory::getMailer;
Отправитель письма
Для задания отправителя письма используется метод
JMail setSender(mixed $from)
где $from - либо строка, содержащая e-mail отправителя, либо массив, который содержит e-mail и имя отправителя.
Примеры:
// Первый вариант $mailer =& JFactory::getMailer; $mailer->setSender('vasya@mysite.ru'); // Второй вариант $sender = array('vasya@mysite.ru', 'Вася') $mailer->setSender($sender);
Правильнее будет не задавать эти значения вручную, а получать их из настроек отправки почты, заданных в панели управления ( "Сайт" - "Общие настройки" - "Сервер"):
$config =& JFactory::getConfig; $sender = array( $config->getValue('config.mailfrom'), $config->getValue('config.fromname')); $mailer->setSender($sender);
Адреса для ответа
Адреса для ответа задаются методом
JMail addReplyTo(array $replyto)
где $replyto - пара e-mail-имя или массив таких пар.
Например:
// Первый вариант $reply = array('vasya@mysite.ru', 'Вася'); $mailer->addReplyTo($reply); // Второй вариант $reply0 = array('vasya@mysite.ru', 'Вася'); $reply1 = array('vanya@mysite.ru', 'Ваня'); $replies = array($reply0, $reply1); $mailer->addReplyTo($replies);
Получатель
Для задания получателя, получателя копии (Carbon Copy) и получателя скрытой копии (Blind Carbon Copy), используются методы
JMail addRecipient(mixed $recipient, mixed name = '') JMail addCC(mixed $cc, mixed name = '') JMail addBCC(mixed $bcc, mixed name = '')
где
$recipient, $cc, $bcc - e-mail или массив, состоящий из e-mail; $name - имя получателя или массив, состоящий из имен.
Для примера зададим в качестве адреса получателя адрес текущего пользователя:
$user =& JFactory::getUser; $mailer->addRecipient($user->email);
Задание нескольких получателей:
$recipient = array('vasya@mysite.ru', 'vanya@mysite.ru'); $mailer->addRecipient($recipient);
Тема, текст, вложения
Тема, текст и вложения письма задаются методами
JMail setSubject(string $subject) JMail setBody(string $content) JMail addAttachment(mixed $attachment, mixed $name = '', mixed $encoding = 'base64', mixed $type = 'application/octet-stream')
где
$subject - строка, содержащая тему письма; $content - строка, содержащая текст письма; $attachment - строка, содержащая путь к файлу, или массив таких строк; $name - строка, содержащая имя файла, или массив таких строк; $encoding - кодировка сообщения: 8bit, 7bit, binary, base64, quoted-printable; $type - MIME-тип файла.
Например:
$mailer->setSubject('Тема письма'); $mailer->setBody("Текст письма"); $mailer->addAttachment(JPATH_COMPONENT.DS.'files'.DS.'document.pdf');
По умолчанию содержимое письма имеет формат plain text. Если вам нужно отправить письмо в формате HTML, используйте метод IsHTML, задающий MIME-тип содержимого письма как text/html:
$mailer->IsHTML(true); $mailer->setBody("Текст письма, содержащий <b>HTML-теги</b>");