Пишем текстовый чат на PHP с приватом. Описание методов взаимодействия с базой данных.

Перейти к техническому заданию на разработку чата.

Статические переменные модели

$pdo - хранит объект взаимодействия с базой данных;
$userFields - хранит массив полей таблицы users базы данных;
$nikFields - хранит массив полей таблицы chatniks базы данных;
$chatMaxTimeInactivityForOnline - время через которое система присваивает пользователю статус offline в случаи если этот пользователь не нажимая кнопку "выход" не производит обновление сессии(связь с ним отсутствует).

Служебные методы

dbInit() - инициализация объекта для работы с базой данных. Метод соединяется с сервером базы данных сообщая ему логин, пароль и имя базы данных. В случаи успешного соединения так же устанавливается кодировка UTF-8, а созданный объект PDO присваивается статической переменной класса.

Методы для работы с зарегистрированными никами пользователей в системе и их связями с идентификатором пользователя.

getNiksByUserIdOrNikId($id=false) - запрос информации о чат никах пользователя зарегистрированных в системе по Id пользователя или пр Id ника. Таким образом метод должен принимать хотя бы один параметр или Id пользователя(первый параметр) или Id ника(второй параметр). В случаи если первый параметр нет необходимости передавать в качестве его необходимо указать NULL или false. Матод возвращает массив с информацией о никах пользователей(даже если поиск осуществлялся по Id ника) или false в случаи ошибки или при отсутствии информации по указанному Id пользователя в базе данных.

deleteNiksById($id=false) - метод удаляет ники из таблицы `chatniks` по переданному в единственном параметре Id ника или массиву Id ников. В случаи успешного запроса в базу данных возвращает true[не проверено], в случаи ошибки при обращении к базе данных возвращает false.

checkHaveNiksInDb($niks=false,$userId=false) - метод проверяет был ли зарегистрирован ник в другом аккаунте. Метод принимает 2 обязательных параметра: 1) текст ника или массив текстов ников и 2) Id пользователя. Текст ника можно передавать как в верхнем так и в нижнем регистре, внутри метода в любом случаи будет осуществляться регистронезависимый поиск. Проверка производится по таблице `chatniks`, причем с условием, что Id пользователя не равен переданному в метод Id пользователя. В случаи если совпадения ников в других пользовательских аккаунтах имеются, будет возвращён массив совпадающих текстов ников в верхнем регистре.

addNikForUserId($userId=false,$nik=false) - метод добавляет новый ник в таблицу `chatniks` по двум обязательным параметрам: 1) Id пользователя; 2) текст ника. Обратите внимание сам метод производит проверку только на положительное и целое переданное Id пользователя, при этом не производится проверка есть ли пользователь с таким Id пользователя в системе или свободен ли данный ник среди аккаунтов других пользователей и не дублируется ли он у текущего пользователя.

Методы для работы с пользователями в статусе онлайн

chatUpdateOnline($userId=false) - метод для обновления информации о последней сессии пользователя с чат-системой. Метод обновляет ячейку таблицы с именем `updatetime` в таблице `chatonline` для переданного Id пользователя и в случаи если старое значение ячейки `updatetime` не отличается от текущего времени(определяемому через time()) более чем на время в указанное в статической переменной $chatMaxTimeInactivityForOnline класса указанного в секундах. Метод возвращает true в случаи если запрос был выполнен(даже если передан неверный Id пользователя) и false если в ходе выполнения запроса к базе данных возникла ошибка.

chatGetOnline($userId=false) - получает массив пользователей находящихся в статусе онлайн. Метод может использоваться без параметров, или принимать единственный параметр - Id пользователя(userId) в последнем случаи ожидается массив из одного элемента, если пользователь с таким Id уже находится в online или пустой массив, если же с переданным параметром $userId возвращён массив более чем из одного элемента - имеется ошибка в логике работы чата, поскольку если пользователь уже находится в статусе онлайн повторно добавляться в таблицу записей онлайн пользователей он не может. Если метод с переданным параметром Id пользователя вернул false, значит был передан не целочисленный или отрицательный параметр userId. Если пользователи в статусе онлайн отсутствуют метод возвращает пустой массив. Если произошла ошибка при обращении к базе данных метод возвращает false.

chatAddOnline($userId=false,$nikId=false,$nik=false) - метод добавляет пользователя к онлайн списку чата. Метод принимает 3 обязательных параметра: 1) Id пользовалеля, 2) Id ника и 3) сам ник. Обратите внимание при добавлении пользователя данным методом не проверяется соответствеи между всеми перечисленными выше параметрами, то-есть если передать Id пользователя не соответствующий Id ника пользователя - информация всё равно будет добавлена, причём в переданном не корректном виде. Метод возвращает true если запрос к базе данных успешно выполнен[не проверено] и false если при запросе к базе данных произошла ошибка.

chatDeleteOnlineById($id=false) - метод удаляет пользователей из спаиска онлайн чата. Передаётся единственный обязательный параметр - Id записи ника в таблице `chatonline` или массив таких записей. Метод возвращает true в случаи успешного обращения к базе данных[не проверено] и false в случаи возникновения ошибки при обращении к базе данных[не проверено].

Методы для работы с авторизацией через социальную сеть.

getUserByVKId($vkid) - метод возвращает информацию о пользователе из таблицы `users` по единственному обязательному параметру - Id социальной сети ВКонтакте. Идентификатор в социальной сети передаётся как целое число без текстового префикса "id". Метод возвращаем массив с информацией о пользователи если поиск по Id в социальной сети успешный и false в остальных случаях.

Методы для работы с системными пользователями

userInsert($data=array()) - метод для добавления записи в таблицу пользователей `users`. Принимает массив данных, с ключами идентичиными названию полей в таблице базы данных. Корректность передаваемых полей(ключей массива) проверяется в соответствии с статической переменной класса $userFields, значения которых нет в массиве $userFields отбрасываются. Метод возвращает Id успешно добавленной записи в таблицу базы данных и false в случаи возникновения ошибки.

userUpdateById($id=false,$data=array()) - метод обновляет информацию в строке таблицы `users` базы данных идентификатор которой совпадает с переданным в первом параметре метода. В качестве второго параметра передаётся массив, ключи которого должны соответствовать именам полей таблицы, а в качестве значений передаются новые устанавливаемые значения полей строки таблицы `users` базы данных. Передаваемые ключи массива сверяются с указанными в статической переменной класса $userFields, ключи которых нет в массиве $userFields будут отброшены. Метод возвращает ture если запрос к базе данных успешно выполнен и false в случаи возникновения ошибки.

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: