Чтение онлайн

на главную - закладки

Жанры

Разрботка расширений для CMS Joomla
Шрифт:

В этом случае желательно указать кодировку письма - base64, чтобы в нем не появились нежелательные символы:

$mailer->Encoding = 'base64';

Отправка

Наконец, для отправки письма используется метод Send, возвращающий true при успешной отправке или объект JError в случае ошибки:

if ($mailer->Send !== true) die('Ошибка отправки письма');

Проверка корректности e-mail

Помимо класса JMail, существует статический класс JMailHelper. Большинство его методов предназначены для очистки данных перед добавлением к электронному письму и используются классом JMail. Интерес для разработчика представляет

метод isEmailAddress, который проверяет, является ли заданная строка корректным адресом электронной почты:

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 - возвращать только путь или также вернуть хост и порт.

Построение

запроса (т.е. компонента URI):

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 - переводить ли текст.

Поделиться:
Популярные книги

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7

На границе империй. Том 2

INDIGO
2. Фортуна дама переменчивая
Фантастика:
космическая фантастика
7.35
рейтинг книги
На границе империй. Том 2

Легат

Прокофьев Роман Юрьевич
6. Стеллар
Фантастика:
боевая фантастика
рпг
6.73
рейтинг книги
Легат

Младший сын князя

Ткачев Андрей Сергеевич
1. Аналитик
Фантастика:
фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Младший сын князя

Восьмое правило дворянина

Герда Александр
8. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восьмое правило дворянина

Энфис 4

Кронос Александр
4. Эрра
Фантастика:
городское фэнтези
рпг
аниме
5.00
рейтинг книги
Энфис 4

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Комбинация

Ланцов Михаил Алексеевич
2. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Комбинация

Чехов книга 3

Гоблин (MeXXanik)
3. Адвокат Чехов
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Чехов книга 3

Двойня для босса. Стерильные чувства

Лесневская Вероника
Любовные романы:
современные любовные романы
6.90
рейтинг книги
Двойня для босса. Стерильные чувства

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много