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

API по IPB 3.4.x


fini

Вопрос

//-------------------------
// Init
//-------------------------

define( 'IPB_THIS_SCRIPT', 'public' );
define( 'IPS_PUBLIC_SCRIPT', 'index.php');
define( 'IPS_ENFORCE_ACCESS', true);
require_once( 'initdata.php' );

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );

$registry = ipsRegistry::instance();
$registry->init();
$DB = $registry->DB();

require_once( IPSLib::getAppDir('forums') . '/sources/classes/post/classPost.php' );

$member_id = 1;
$member = IPSMember::Load( $member_id, 'members' );
$member['member_group_id'] = 4;
$member['g_post_new_topics'] = 1;

$forumID = 28;
for ($i=0;$i<=$count-1;$i++) {
	$postClass = new classPost( $registry );
	$postClass->setForumID( $forumID );
	$postClass->setForumData( ipsRegistry::getClass('class_forums')->forum_by_id[$forumID] );
	$postClass->setTopicTitle( $title );
	$postClass->setPostContent($data);
	$postClass->setAuthor( $member );
	if($postClass->addTopic())
	{
		echo "ok";
	}
	else
	{
		echo $postClass->_postErrors."<br>".
				$postClass->getAuthor( 'member_id' )."<br>".
				$postClass->getAuthor('g_post_new_topics')."<br>".
				$perm_array;
	}

}	

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

Если я сам через браузер запускаю его, всё хорошо, если через крон - выводит следующее

 

БЛА-бла-блабла<br />

<br />

-БЛА-бла-блабла БЛА-бла-блабла<br />   

 

 

Пробовал убирать <br /> регуляркой, тогда весь текст получался в одну строку, пробовал заменить на \n\r - тоже не помогло!

Помогите, как решить эту проблему?

 

Пробовал ещё php_get_connect запустить, тоже не помогло  :help:

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

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

  • 0

вот он бр то, нет?

Нет, этот <br> при ошибке появляется.

 

Суть в том, что при запуске скрипта вручную, $postClass->addTopic() обрабатывает <br / > правильно и они в сообщении не отображаются

А при запуске скрипта через CRON $postClass->addTopic() добавляет в конце каждого сообщения  <br / >

Хочу удалить это <br/> В конце каждого сообщения

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

  • 0

Вы браузером запускаете php как модуль апача или fast-cgi или php-fpm, а cron запускает php-cli. У них могут быть разные конфиги, да и вообще, они могут быть разных версий. 

А откуда вы $data берете? Если в строке запроса задаете, то тут тоже есть нюансы с html-enteties . А как оно на другие теги в тексте реагирует?
Попробуйте еще включить режим html:
 

$postClass->setSettings( array( 'enableSignature' => 1, 'enableEmoticons' => 1, 'post_htmlstatus' => 1 ) );
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Проблему решил вот этим костылём

$datatext = preg_replace("/<br \/>/", "\n\r", $datatext);

$postClass->setSettings( array( 'enableSignature' => 1, 'enableEmoticons' => 1, 'post_htmlstatus' => 1 ) );

не помогло

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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