Предположим у вас есть сайт и вы прикрутили к нему форум IPB 3.0.x. Бывает, что вы хотите сделать возможность создавать форумные темы вне форума. К примеру, организовать публикацию новостей или статей на своём сайте, но, чтобы эти же сообщения появились и на форуме. Можно конечно мудрить и самому делать вставки на уровне MySQL. Но IPB предлагает внешние API, которые упрощают работу с форумом.
Использовать API очень просто, например, вот так можно создать новую тему:
// Подключаем API $f=Zend_Registry::get('config')->paths->forum; require_once($f.'/initdata.php'); //если вы используете ZandFramework, то отключаем автолодер Zend_Loader::registerAutoload('Zend_Loader', false); require_once( $f.'/admin/sources/base/ipsController.php'); require_once( IPS_ROOT_PATH . '/sources/base/ipsRegistry.php' ); $registry = ipsRegistry::instance(); define('CCS_GATEWAY_CALLED', true); $registry->init(); $request = $this->getRequest(); require_once( IPSLib::getAppDir( 'forums' ) . '/sources/classes/post/classPost.php' ); $postClass = new classPost(ipsRegistry::instance()); // Параметры $forumID = '2'; $memberID = '1'; // Настраиваем $postClass->setIsPreview(false); $postClass->setPublished(true); $postClass->setForumData( ipsRegistry::getClass('class_forums')-> forum_by_id[$forumId]); $postClass->setSettings(array( 'enableSignature' => 1, 'enableEmoticons' => 1, 'post_htmlstatus' => 1, 'enableTracker' => 0, )); $postClass->setForumID( $forumID ); $postClass->setForumData( $registry->class_forums->forum_by_id[ $forumID ] ); $bbcode = IPSText::getTextClass('bbcode'); $bbcode->parse_html = 1; $bbcode->parse_nl2br = 1; $bbcode->parse_smilies = 1; $bbcode->parse_bbcode = 1; $bbcode->parsing_section = 'global'; $text = $bbcode->preDbParse($postmsg;); $postClass->setTopicTitle($posttitle); $postClass->setPostContent( $text ); $postClass->setAuthor( $memberID ); try { $postClass->addTopic(); } catch( Exception $error ) { print $error->getMessage(); }