Предположим у вас есть сайт и вы прикрутили к нему форум 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.
}
вот бы еще документацию внятную сделали ребята из IP, цены бы им не было.
I Really wanted to thank you , for sharing this article.I Really looking forward to reading more.Its really good.Thanks.