Вставки в базу данных новых строк и обновления существующих строк являются распространенной программистской задачей. Код обычно определяет, что нужно осуществить — вставку или изменение — а затем выполняет необходимую операцию.
С помощью уровня абстракции баз данных Drupal поддерживает различные СУБД — MySQL, PostreSQL, SQLite и т.д. Каждый модуль, которому для работы нужна таблица базы данных, описывает эту таблицу для Drupal с помощью определения схемы. Затем Drupal транслирует такое определение в синтаксис, понятный для конкретной СУБД.
Уровень абстракции баз данных облегчает запоминание имен функций, а, кроме того, еще и обеспечивает защиту запросов. Иногда бывает нужно подключиться к сторонним или унаследованным базам данных, и было бы хорошо использовать для этого — а также для защиты запросов — API-интерфейс баз данных Drupal. И это действительно возможно! Например, модуль может открыть подключение к базе данных вне Drupal и извлечь оттуда данные.
Пользователи — это смысл работы с Drupal. Среда Drupal может помочь пользователям создавать общие проекты, совместно работать над ними и формировать онлайновые сообщества. В данной главе вы узнаете о механизмах аутентификации, входа и внутреннего представления пользователей. Мы начнем с рассмотрения объекта $user и его структуры. Затем разберемся с процессом регистрации, входа и аутентификации пользователей. В конце главы будет показано, как связать Drupal с внешними системами аутентификации, такими как LDAP и Pubcookie.
Реализация хуков пользователя позволяет модулям реагировать на различные действия, выполняемые с пользовательской учетной записью, и изменять объект $user. Имеются несколько вариантов функции hook_user, и каждый вариант предназначен для выполнения своего действия (табл. 6.2).
По умолчанию для регистрации пользователя на сайте Drupal нужно лишь ввести пользовательское имя и допустимый адрес электронной почты. Модули могут добавлять в форму регистрации пользователя собственные поля, реализуя несколько хуков пользователя. Сейчас мы напишем модуль с именем legalagree.module, который поможет сайту выжить в полном опасностей современном мире.