Создание новой темы, используя API в IP.Board 3

Предположим у вас есть сайт и вы прикрутили к нему форум IPB 3.0.x. Бывает, что вы хотите сделать возможность создавать форумные темы вне форума. К примеру, организовать публикацию новостей или статей на своём сайте, но, чтобы эти же сообщения появились и на форуме. Можно конечно мудрить и самому делать вставки на уровне MySQL. Но IPB предлагает внешние API, которые упрощают работу с форумом.

Использовать API очень просто, например, вот так можно создать новую тему:

01.// Подключаем API
02.$f=Zend_Registry::get('config')->paths->forum;
03.require_once($f.'/initdata.php');
04.//если вы используете ZandFramework, то отключаем автолодер
05.Zend_Loader::registerAutoload('Zend_Loader', false);
06.require_once( $f.'/admin/sources/base/ipsController.php');
07.require_once( IPS_ROOT_PATH . '/sources/base/ipsRegistry.php' );
08.$registry = ipsRegistry::instance();
09.define('CCS_GATEWAY_CALLED', true);
10. 
11.$registry->init();
12.     
13.$request = $this->getRequest();
14.require_once( IPSLib::getAppDir( 'forums' ) . '/sources/classes/post/classPost.php' );
15.$postClass = new classPost(ipsRegistry::instance());
16.// Параметры
17.$forumID = '2';
18.$memberID = '1';
19.// Настраиваем
20.$postClass->setIsPreview(false);
21.$postClass->setPublished(true);
22.$postClass->setForumData( ipsRegistry::getClass('class_forums')-> forum_by_id[$forumId]);
23. 
24.$postClass->setSettings(array(
25.    'enableSignature' => 1,
26.    'enableEmoticons' => 1,
27.    'post_htmlstatus' => 1,
28.    'enableTracker'   => 0,
29.    ));
30. 
31.$postClass->setForumID( $forumID );
32.$postClass->setForumData( $registry->class_forums->forum_by_id[ $forumID ] );
33.     
34.$bbcode = IPSText::getTextClass('bbcode');
35.$bbcode->parse_html      = 1;
36.$bbcode->parse_nl2br     = 1;
37.$bbcode->parse_smilies   = 1;
38.$bbcode->parse_bbcode    = 1;
39.$bbcode->parsing_section = 'global';
40.$text = $bbcode->preDbParse($postmsg;);
41.$postClass->setTopicTitle($posttitle);
42.$postClass->setPostContent( $text );
43.$postClass->setAuthor( $memberID );
44. 
45. 
46. 
47. 
48.try
49.{
50.    $postClass->addTopic();
51.}
52.catch( Exception $error )
53.{
54.    print $error->getMessage();
55.}

Создание новой темы, используя API в IP.Board 3: 2 комментария

  1. zhabba

    вот бы еще документацию внятную сделали ребята из IP, цены бы им не было.

  2. faubyfluona

    I Really wanted to thank you , for sharing this article.I Really looking forward to reading more.Its really good.Thanks.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *