Разрботка расширений для CMS Joomla
Шрифт:
В этом случае желательно указать кодировку письма - base64, чтобы в нем не появились нежелательные символы:
$mailer->Encoding = 'base64';
Отправка
Наконец, для отправки письма используется метод Send, возвращающий true при успешной отправке или объект JError в случае ошибки:
if ($mailer->Send !== true) die('Ошибка отправки письма');
Проверка корректности e-mail
Помимо класса JMail, существует статический класс JMailHelper. Большинство его методов предназначены для очистки данных перед добавлением к электронному письму и используются классом JMail. Интерес для разработчика представляет
if (!JMailHelper::isEmailAddress($str)) die('Недопустимый формат e-mail');
Перед использованием класса JMailHelper необходимо подключить библиотеку JMail:
jimport('joomla.utilities.mail');
WYSIWYG-редактор (класс JEditor)
Класс JEditor используется для работы с WYSIWYG-редактором.
Получить ссылку на глобальный объект JEditor можно так:
$editor =& JFactory::getEditor;
Отображение редактора
Для отображения выбранного администратором сайта редактора используется метод display. Если не выбран ни один редактор, то будет отображено поле <textarea>.
string display(string $name, string $html, string $width, string $height, int $col, int $row, bool $buttons = true, string $id = null, string $asset = null, object $author = null, array $params = array)
где
$name - имя элемента управления формы; $html - содержимое поля; $width - ширина текстового поля в процентах или пикселях; $height - высота текстового поля; $col - количество столбцов в поле <textarea> (применяется, если администратор выбрал не использовать HTML-редактор); $row - количество строк в <textarea>; $buttons - отображать ли кнопки редактора (" Материал", " Изображение", " Разрыв страницы", " Подробнее…"); $id - idэлемента управления формы; $asset и $author - используются для подтверждения прав доступа пользователя к некоторым функциям плагина редактора. Более подробная информация об этих параметрах в справочной документации отсутствует; $params - ассоциативный массив параметров редактора.
Пример:
echo $editor->display('question', $row->question,'100%', '250', '40', '10');
Если по умолчанию задан редактор TinyMCE, то этот код выведет на экран следующее (рис. 4.3).
(есть увеличенное изображение)
Рис. 4.3. Отображение WYSIWYG-редактора
URI (класс JURI)
Чтобы создать новый объект класса JURI или получить ссылку на глобальный объект, используется метод
JURI &getInstance(string $uri='SERVER')
где $uri - URI страницы. При $uri='SERVER' метод вернет ссылку на глобальный объект, который представляет URI текущей страницы. В противном случае будет создан новый объект.
Например, так можно получить URI текущей страницы:
$u =& JURI::getInstance; echo $u->toString;
Методы класса JURI
Методы класса JURI хорошо документированы (ссылка: http://docs.joomla.org/JURI), поэтому здесь мы только перечислим некоторые из них.
Получение базового URI сайта:
string base(bool $pathonly)
где $pathonly - возвращать только путь или также вернуть хост и порт.
Построение
string buildQuery(array $params)
где $params - ассоциативный массив пар " имя-значение".
Получение текущего URI без запроса и фрагмента:
string current
Получение отдельных компонентов URI:
фрагмента - string getFragment; хоста - string getHost; пароля - string getPass; пути - string getPath; порта - string getPort; запроса - string getQuery(bool $toArray), где $toArray задает, возвращать ли элементы запроса в виде ассоциативного массива или в виде строки; схемы - string getScheme; имени пользователя - string getUser.
Получение заданной переменной из запроса:
string getVar(string $name, string $default)
где
$name - имя переменной; $default - значение по умолчанию.
Заполнение полей класса значениями, полученными из заданного URI ($uri):
boolean parse(string $uri)
Получение корневого URI сайта:
string root(bool $pathonly, string $path)
где $path - задает новый путь.
Ошибки (класс JError)
Методы raiseError, raiseNotice и raiseWarning класса JError вызываются при возникновении каких-либо ошибок. Все они возвращают объект JException, содержащий сведения об ошибке, например, в каких файлах она возникла. raiseError добавляет заданное сообщение в очередь сообщений и останавливает выполнение расширения, а остальные два метода только добавляют сообщение в очередь, но работа расширения продолжается.
JException raiseError(string $code, string $msg, mixed $info = null) JException raiseWarning(string $code, string $msg, mixed $info = null) JException raiseNotice(string $code, string $msg, mixed $info = null)
где
$code - внутренний код ошибки, задается по усмотрению программиста; $msg - сообщение об ошибке для пользователя; $info - дополнительная информация об ошибке для программиста.
Пример:
if ($this->published == 0) JError::raiseError (404, "Нет такой страницы");
Перечисленные методы создавались в то время, когда Joomla работала с PHP4, где отсутствовал механизм обработки исключений. Если на хостинге стоит PHP5, предпочтительнее использовать класс Exception.
Даты (класс JDate)
JDate - класс для работы с датами. Для создания объекта JDate используется метод getDate класса JFactory:
JDate JFactory::getDate(mixed $time = 'now', mixed $tzOffset = null)
где
$time - дата и время в формате, годном для функции PHP strtotime; $tzOffset - временная зона. Может задаваться числом от -12 до 14 (смещение относительно всемирного координированного времени - UTC) или строкой из числа временных зон, поддерживаемых PHP (их список можно найти на странице ссылка: http://www.php.net/manual/ru/timezones.php).
В отличие от многих других методов JFactory, getDate не возвращает глобальный объект, а создает новый. Поэтому перед вызовом этого метода не нужно ставить амперсанд:
$now = JFactory::getDate; // текущие дата и время $some_date = JFactory::getDate('2012-01-01 00:00:00','Europe/Moscow');
Получение даты в каком-либо формате
string format(string $format, bool $local = false, bool $translate = true)
где
$format - формат; $local - возвращать дату в локальной временной зоне или в GMT; $translate - переводить ли текст.