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

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

Жанры

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

Рассмотрим пример получения доступа к объекту JUser:

$user =& JFactory::getUser; if ($user->guest) echo "Вы не вошли на сайт"; else echo "Вы вошли на сайт как ".$user->name;

Обратите внимание на знак амперсанда перед вызовом метода getUser. Мы получаем ссылку на объект-представитель текущего пользователя. Если пропустить амперсанд, то будет создана копия этого объекта и изменения, которые мы будем в ней производить, не затронут оригинал.

HTTP-запрос (класс JRequest)

В Joomla вместо непосредственного использования глобальных массивов $_GET, $_POST, $_FILES, $_COOKIE, $_ENV, $_SERVER

и $_REQUEST удобнее применять класс JRequest. Его методы пропускают данные, введенные пользователем, через фильтр во избежание инъекций.

Для получения переменных запроса GET/POST используется метод mixed getVar(string $name, string $default=null, string $hash='default', string $type='none', int $mask=0), где:

$name имя переменной; $default значение по умолчанию, которое вернет метод getVar, если значение переменной не задано; $hash источник данных, по умолчанию они будут получены из массива $_REQUEST. Явное указание массива GET или POST повысит безопасность кода; $type тип ожидаемого значения: INT INTEGER FLOAT DOUBLE BOOL BOOL WORD ALNUM допускает только буквенно-цифровые значения; CMD BASE64 допускает только те символы, которые могут быть представлены в кодировке base64 (т.е. a-z, A-Z, 0-9, /, + и =); STRING ARRAY PATH исключает возможность атаки. Например, если исходное значение содержало /./ или /../, то вместо него метод вернет пустую строку; USERNAME удаляет управляющие символы (0x00 - 0x1F), 0x7F, <, >, ", ', % и &; $mask константа, задающая опции фильтрации: JREQUEST_NOTRIM не удалять пробелы в начале и конце строки; JREQUEST_ALLOWRAW без какой-либо фильтрации; JREQUEST_ALLOWHTML не удалять HTML-код, но пропустить значение через фильтр (в частности, удалить опасные теги - script, applet, iframe и др.).

Эти константы не заключаются в кавычки, т.к. это не строки, а статические переменные. Если ни одной опции не задано, то HTML-теги, а также пробелы в начале и конце строки будут удалены.

Пример:

$answer = JRequest::getVar('answer', 'no answer', 'post', 'string', JREQUEST_ALLOWRAW);

Если нужно получить весь массив переменных запроса в отфильтрованном виде, используется

mixed get(string $hash='default', int $mask=0)

Например, получим массив $_POST:

$arr = JRequest::get('post');

Для присвоения переменным запроса значений используется метод string setVar(string $name, string $value=null, string $hash='method', bool $overwrite=true)

Если $overwrite=false и в запросе уже задано значение переменной $name, то метод просто вернет само это значение. В противном случае переменной будет присвоено значение $value, а метод вернет старое значение $name.

Пример:

JRequest::setVar('var1', 'val1');

Класс JRequest содержит также методы, позволяющие получить значение определенного типа: getBool, getCmd, getFloat, getInt, getString, getWord.

Приложение (класс JApplication)

Очередь сообщений

В Joomla существует очередь сообщений– массив строк, которые будут выведены на экран при следующей загрузке какой-либо страницы. Стандартными являются три типа сообщений (рис. 1.2): message (собственно сообщение), notice (предупреждение) и error (ошибка):

Рис. 1.2.

Типы сообщений

Для добавления сообщений в очередь используется метод void enqueueMessage(string $msg, [string $type = 'message']), где:

$msg - текст сообщения; $type - тип сообщения.

Например:

global $app; $app->enqueueMessage('Message'); $app->enqueueMessage('Notice', 'notice'); $app->enqueueMessage('Error', 'error');

В данном примере $app - это глобальный объект JApplication.

Для получения копии очереди сообщений используется метод array getMessageQueue. Например, для предыдущей очереди из трех сообщений он возвращает массив:

Array ( [0]=>Array ( [message]=>Message [type]=>message ) [1]=>Array ( [message]=>Notice [type]=>notice ) [2]=>Array ( [message]=>Error [type]=>error ) )

Перенаправление

Для перенаправления пользователя к другому URL используется метод void redirect(string $url, string $msg='', string $msgType='message', bool $moved=false), где:

$url - URL, к которому перенаправляется пользователь; $msg - сообщение, которое должно быть при этом выведено; $msgType - тип сообщения; $moved - при значении true браузер получит код состояния "301 Permanently Moved", в противном случае - "303 See Other".

Данный метод добавляет сообщение к очереди сообщений, перенаправляет браузер пользователя к заданному URL и завершает работу приложения Joomla. Например:

global $app; $app->redirect('index.php', JText::_('NOTICE'), 'notice');

Второй способ организации перенаправления - использовать метод JController::setRedirect, который будет рассмотрен ниже вместе с другими методами класса JController.

Получение параметров конфигурации сайта

В число параметров конфигурации сайта входят настройки базы данных, почты, сервера, FTP, метаданных, SEO и другие. Для получения значений этих параметров используется метод

mixed getCfg(string $varname, string $default=null)

где $varname - название параметра.

Для примера получим название сайта:

global $app; echo $app->getCfg('sitename');

Определение типа запущенного приложения Joomla

Чтобы определить, откуда запущен код, можно использовать методы

int getClientId bool isAdmin bool isSite

Метод getClientId возвращает id запущенного приложения: 0 (сайт), 1 (панель управления), 2 (установщик).

Метод isAdmin определяет, является ли запущенное приложение бэкендом, isSite - фронтендом.

Панели инструментов (класс JToolBarHelper)

Joomla автоматически загружает в верхней правой части экрана бэкенда компонента файл, который называется toolbar.<имя компонента>.php. Таким образом можно отображать различные панели инструментов.

Класс JToolBarHelper содержит методы, которые генерируют HTML-код для построения кнопок панелей инструментов. Для отображения кнопок, которые часто используются в компонентах, - "Сохранить", "Отменить", "Удалить" - существуют готовые методы этого класса. Их список можно найти в документации Joomla: ссылка: http://docs.joomla.org/JToolBarHelper.

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

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

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

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

Мимик нового Мира 6

Северный Лис
5. Мимик!
Фантастика:
юмористическая фантастика
попаданцы
рпг
5.00
рейтинг книги
Мимик нового Мира 6

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Совпадений нет

Безрукова Елена
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Совпадений нет

Кровь на эполетах

Дроздов Анатолий Федорович
3. Штуцер и тесак
Фантастика:
альтернативная история
7.60
рейтинг книги
Кровь на эполетах

Лорд Системы 4

Токсик Саша
4. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 4

Я тебя не предавал

Бигси Анна
2. Ворон
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Я тебя не предавал

Горничная для тирана

Шагаева Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Горничная для тирана

Купидон с топором

Юнина Наталья
Любовные романы:
современные любовные романы
7.67
рейтинг книги
Купидон с топором

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Мимик нового Мира 12

Северный Лис
11. Мимик!
Любовные романы:
эро литература
5.00
рейтинг книги
Мимик нового Мира 12

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Рождение победителя

Каменистый Артем
3. Девятый
Фантастика:
фэнтези
альтернативная история
9.07
рейтинг книги
Рождение победителя