Перейти к контенту

Постинг тем из другой CMS


Рекомендуемые сообщения

Пишу примочку к существующей системе публикации статей в MKPortal. Хочу, чтобы пользователи могли при желании одновременно с публикацией новости (статьи и т.д.) разместить ее и в нужном форуме и в дальнейшем обсуждать. Использую следующий код, загоняющий данные из новостей на форум в БД:

 

//add by cybermad IPB
if($inaforum==1) {

//add by cybermad
$query1 = $DB->query( "SELECT tid FROM ibf_topics ORDER BY `tid`");
while( $trow = $DB->fetch_row($query1)) {
$tid = $trow['tid'];
}
$tid = $tid+1;

	$query2 = $DB->query( "SELECT pid FROM ibf_posts ORDER BY `pid`");
while( $prow = $DB->fetch_row($query2)) {
$pid = $prow['pid'];
}
$pid = $pid+1;
//		

$query3="INSERT INTO ibf_topics(title, state, posts, starter_id, start_date, last_poster_id, last_post, icon_id,
starter_name, last_poster_name, poll_state, views, forum_id, approved, author_mode,
pinned, topic_firstpost)
VALUES('$titolo', 'open', '0', '$idaut', '$cdata', '$idaut', '$cdata', '0', '$autore', '$autore', '0', '0', '$fcategoria', '1', '1', '0', '$pid')";

$query4="INSERT INTO ibf_posts(author_id, author_name, use_sig, use_emo, post_date, icon_id, post,   	
topic_id, new_topic)
VALUES('$idaut', '$autore', '1', '1', '$cdata', '0', '$testo', '$tid', '1')";

	$DB->query($query3);
	$DB->query($query4);

$DB->query("UPDATE ibf_forums SET last_post = '$cdata',   	
last_poster_id ='$idaut', last_poster_name='$autore', last_title='$titolo', last_id='$tid' , newest_title= '$titolo', newest_id = '$tid' WHERE id='$fcategoria'");
	$DB->close_db();		

	}
//

 

Бяка в том, что данные появляются, как мне и нужно, НО!

1. на главной странице форума последний топик, таким образом созданный, не отображается.

2. Если таким образом создать тему в пустом форуме, то сверху форума идет надпись, что тем не обнаружено, а ниже идет моя размещенная тема :D

 

Все проблемы пропадают после выполнения синхронизации форумов.

 

В чем загвоздка???

Ссылка на комментарий
Поделиться на других сайтах

Не используя будет трудно, там создаётся дерево в кеше, определённой структуры, кода на пару экранов. Можно вашими средствами сделать выборку всех записей из ibf_forums, а потом использовать функцию создания кеша. См. class_forums.php
Ссылка на комментарий
Поделиться на других сайтах

Это ясно :D но каким образом выполнить программным способом обновление кэша, не используя средства IPB?

чего тебе ясно?

Если бы было ясно ты бы спросил как обновить кеш.

Ссылка на комментарий
Поделиться на других сайтах

чего тебе ясно?

Если бы было ясно ты бы спросил как обновить кеш.

Что-то на хамство это смахивает, а не на поддержку. ТЫкайте кому-то другому.

 

P.S. 2Sannis: благодарю Вас за Ваши ответы и направления в какую сторону копать.

Ссылка на комментарий
Поделиться на других сайтах

Если вы так ответили только потому, что считаете что поддержка клиентов осуществляется на форуме, то вы ошибаетесь. поддержка, которую вы покупали вместе с лицензией у АйБиРесурс, осуществляется сотрудниками техподдержки только в клиентцентре.

 

Так что давайте уважать тех людей, которые отвечают на уйму вопросов на этом форуме. Могли бы и помочь им.

Ссылка на комментарий
Поделиться на других сайтах

Так что давайте уважать тех людей, которые отвечают на уйму вопросов на этом форуме. Могли бы и помочь им.
Хочется, чтобы все было взаимно. Ок. Вопрос закрыт.
Ссылка на комментарий
Поделиться на других сайтах

Так что давайте уважать тех людей, которые отвечают на уйму вопросов на этом форуме. Могли бы и помочь им.
Хочется, чтобы все было взаимно. Ок. Вопрос закрыт.

И нам хочется. Nолько статистика говорит об обратном, к сожалению.

 

Пример создания темы/сообщения так, чтобы обновлялись все необходимые поля, есть в ./sources/api/api_topics_and_posts.php, за обновления информации в связанных таблицах отвечают tap_rebuild_forum() и tap_rebuild_stats(). Если что, $this->func_mod -- это класс func_mod из ./sources/lib/func_mod.php.

Ссылка на комментарий
Поделиться на других сайтах

@Sannis: благодарю

@Song: извиняюсь, если ответил грубостью. У вас на форуме тоже нашел полезную инфу. Как создать топик? Создание топика в форуме; все версии IPB - в соответствии с инструкциями делаю так:

 

require_once $_SERVER['DOCUMENT_ROOT']."/board/sources/api/api_topics_and_posts.php";
$ipb = $_SERVER['DOCUMENT_ROOT']."/board/"; // укажите здесь свой путь к форуму или оставьте этот вариант
$api = new api_topics_and_posts();
$api->path_to_ipb = $ipb;
$api->api_init(); // инициализация функций API

$api->set_author_by_id($idaut); // id автора топика
$api->set_post_content("post content goes here"); // текст 1-го поста топика
$api->set_forum_id($fcategoria); // id форума
$api->set_topic_title("title"); // название топика
$api->set_topic_description("des"); // описание топика
$api->set_topic_state('open'); // состояние топика
$api->create_new_topic(); // вызов функции "Создать топик"

 

выбивает вот что: Fatal error: Call to a member function simple_construct() on a non-object in \home\xxx.ru\www\board\sources\ipsclass.php on line 1372

 

по указанному адресу вижу код:

 

$this->DB->simple_construct( array( 'select' => '*',

в чем загвоздка???

Изменено пользователем cybermad
Ссылка на комментарий
Поделиться на других сайтах

Сам спросил - сам нашел ответ :D

 

Здесь сказано, что апи инициализируем так:

Перед вызовами любых функций API, эту библиотеку нужно проинициализировать.

Это делается следующим кодом:

 

require_once $ipb."sources/api/api_topics_and_posts.php";

$ipb = $_SERVER['DOCUMENT_ROOT']."/forum/"; // укажите здесь свой путь к форуму или оставьте этот вариант

$api = new api_topics_and_posts();

$api->path_to_ipb = $ipb;

$api->api_init(); // инициализация функций API

 

а самом апишнике присутствует следующая подсказка:

* ПРИМЕР ИСПОЛЬЗОВАНИЯ

* <code>

* $api = new api_topics_and_posts();

* $api->ipsclass =& $this->ipsclass;

* // ДОБАВЛЕНИЕ ОТВЕТА

* $api->set_author_by_name('matt');

 

В первой цитате отсутствует почему то код:

 $api->ipsclass =& $this->ipsclass;

 

Попробовал сделать инициализацию так:

require_once ROOT_PATH   . "sources/api/api_topics_and_posts.php";
$ipb = $_SERVER['DOCUMENT_ROOT']."/forum/"; // укажите здесь свой путь к форуму или оставьте этот вариант
$api = new api_topics_and_posts();
$api->ipsclass =& $ipsclass;
$api->path_to_ipb = $ipb;
$api->api_init(); // инициализация функций API

и все заработало.

 

Спасибо всем, кто помогал! Удачи!

Ссылка на комментарий
Поделиться на других сайтах

Сам спросил - сам нашел ответ

+1 к статистике :D

Ссылка на комментарий
Поделиться на других сайтах

Навязчивое подталкивание к регистрации? Ай-ай-ай.
Ссылка на комментарий
Поделиться на других сайтах

Почему подталкивание??????? т.е если MKP работает в связке с ИПБ, то мне не стоит здесь публиковать решения для портала? Если бы я подталкивал к регистрации, то не публиковал бы 100% инструкцию для установки, а опубликовал бы, скажем, процентов 95, а остальное можно было бы скачать или дочитать у нас. Этого нет. В первую очередь хочу поделиться тем, что у меня получается с другими!
Ссылка на комментарий
Поделиться на других сайтах

Что ж вы такой нервный... :D Просто вы должны понимать, что при всех плюсах и полезности вашей статьи, в ней 2 ссылки на ваш ресурс, не считая подписи, причём по одной кроме сообщения о том, что доступ к скачиванию разрешён только авторизованным, ничего полезного нет. => Прийдёт кто-то добрый и пошлёт вас читать правила форума.
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.