Перейти к контенту
  • 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 ) );

не помогло

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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