Invision Power Board 3
Содержание раздела
- Введение в разработку
- Каркас приложения на PHP 5
- Делая шаблоны проще
- Расширяя механизмы авторизации
- Дизайн
- Каркас для пользовательских приложений
- Ревизия системы BBCode
- Управление заблокированными пользователями
- Приоткрывая завесу над ipsRegistry
- Теги шаблонов, перезагрузка
- Управление языками в IP.Board 3
- Глобальный поиск в IP.Board 3
- Глобальные права доступа
- Делая интеграцию проще
- Система жалоб на сообщения
- Дополнения и хуки
- Система репутации
- Такой новый модуль вывода
- Обновление стиля
- Обзор механизма пометки прочитанности тем
- Улучшения системы обработки ошибок
- Наконец-то, дружественные URL'ы!
- Личные беседы
- Взаимосвязь с внешними приложениями
- Оптимизация для поисковых систем
- Улучшение ядра системы
- Упрощение администрирования
- IP.Blog, IP.Gallery и IP.Downloads
- Прочие возможности
Взаимосвязь с внешними приложениями
В данной записи мы распишем новые возможности IP.Board 3, которые позволят вам настроить взаимодействие форумов с вашим сайтом и создать собственную сеть.
Управление пользователями
С момента IP.Board 2, мы ввели возможность под названием "Модули входа". На самом деле это мини-каркас, позволяющий использовать собственный код для аутентификации и регистрации пользователей. Например, у вас есть база данных пользователей и вы хотите дать возможность им использовать форум с уже существующим аккаунтом (логин и пароль), тогда вы можете создать модуль входа, который бы работал с существующей базой пользователей или иной системой (через SOAP, XML-RPC, и тому подобное).
Система была доукомплектована новыми модулями по просьбам пользователей, теперь IP.Board будет комплектоваться модулями для LDAP и OpenID, что позволит легко использовать данные системы для аутентификации пользователей.
Использование IP.Board Engine
Не секрет, что IP.Board 3 полностью переписан. Новый каркас в полную силу использует PHP 5 и включает огромное количество экономящих время разработчика возможностей.
Довольно часто наши клиенты просят помочь объединить некоторые части форума с существующим сайтом. Например, они хотят получить список последних тем и сообщений с форума на сайте. Для решения таких вещей мы создали класс API в IP.Board 2.
Однако в случае, если необходимо было отправить какие-то данные в IP.Board, например новое сообщение или новое персональное сообщение, нужно было повозиться. Даже для использования какого-либо шаблона системы приходилось копировать и много кода.
Например, для того чтобы использовать наш механизм для работы с данными или нашу шаблонную систему, необходимо было копировать большую часть 'index.php', чтобы ipsclass корректно подключился. В IP.Board 3 этого больше не требуется. Теперь использование стало очень простым:
require_once( './initdata.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' ); $registry = ipsRegistry::instance(); $registry->init();
Эти несколько строк дадут вам полноценный доступ к: кешам, настройкам, управлению пользователями, работу с базой данных и многое другое.
Написание собственного кода
Довольно часто бывает необходимо добавить возможности IP.Board на собственный сайт. В Invision Power Board 3 это сделать легко.
Хотите добавить новое сообщение? Без проблем, просто используйте следующий код:
require_once( IPSLib::getAppDir( 'forums' ) . '/sources/classes/post/classPost.php' ); $postClass = new classPostForms( $registry ); $postClass->setForumID( $forumID ); $postClass->setForumData( $this->registry->class_forums->forum_by_id[ $forumID ] ); $postClass->setTopicTitle( "Моя тема" ) $postClass->setPostContent( "Привет, я содержимое сообщения!" ); $postClass->setAuthor( $memberID ); try { $postClass->addTopic(); } catch( Exception $error ) { print $error->getMessage(); }
Да все действительно просто, как в примере выше. Кстати, вы заметили try -> catch блок? Теперь он согласуется со всеми API-похожими функциями. Мы воспользовались механизмом исключений пятого PHP, чтобы возвращать в вызывающую программу информацию о возникших проблемах (конечно если такие будут). Мы так же вскоре предоставим список всех возможных исключений (в формате phpDoc).
Авторы модификаций для версии IP.Board 2 должны быть уже знакомы с похожими функциями, которые существовали в API второй версии. Тогда для них будет хорошей новостью информация о том, что для реализации данных возможностей API прослойка больше не нужна, потому как теперь используется оригинальный код форума, да-да тот самый, что используется в работе самого форума.
Хотите создать новое персональное обсуждение из собственной программы? Легко!
require_once( IPSLib::getAppDir( 'members' ) . '/sources/classes/messaging/messengerFunctions.php' ); $messengerFunctions = new messengerFunctions( $registry ); $messengerFunctions->sendNewPersonalTopic( $toMemberID, $fromMemberID, $invitedUserIDArray, $msgTitle, $msgContent );
Нужен список личных сообщений?
require_once( IPSLib::getAppDir( 'members' ) . '/sources/classes/messaging/messengerFunctions.php' ); $messengerFunctions = new messengerFunctions( $registry ); $messengerFunctions->getPersonalTopicsList( $memberID, 'in' );
Другой довольно частый запрос это подключение шаблонов IP.Board в своем коде, снова все очень просто:
require_once( './initdata.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' ); $registry = ipsRegistry::instance(); $registry->init(); print $registry->output->getTemplate( $templateGroup )->templateName( $templateArguments);
И это далеко не все, что вы сможете сделать. Однако, на перечисление всех возможных действий, которые вы теперь сможете сделать, потребовалось бы очень много времени и получилась бы очень большая заметка, поэтому мы ограничились самими интересными возможностями.
Используйте данные возможности с новой системой хуков и дополнений и вы получите очень быстрый способ написания нового кода на основе нашего ядра. Мы с нетерпением хотим увидеть это!
← Предыдущая · Следующая →