Jump to content
Дизайн и модификация Invision Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Testweb

Где находится функция getPostContent

Recommended Posts

Где находится данная функция?

$this->getPostContent()

 

Все перерыл

 

formatPost, нашел, а getPostContent нету

Share this post


Link to post

Зачем?

Нет такого метода. У этого класса есть метод __call который обрабатывает гетеры и сетеры - несуществующие методы с get или set префиксом.

Share this post


Link to post

Мне необходимо при отправки формы, пост формы. Обработать ее как html и записать ее в таблицу, вот я и ищу ту функцию через которую проходит пост форма(при создании темы). Дабы сделать в своем модуле то же самое.

Share this post


Link to post

Для этого есть хук поинты postAddTopic и postAddReply.

 

Если же лезть в код то classPost::compilePostData

Share this post


Link to post

Не совсем понимаю, а как пользоваться та хоть classPost::compilePostData

 

protected function compilePostData()

 

Как я в нее отправлю содержимое формы?

 

IPSLib::doDataHooks($this->entry, 'blogEditEntryData');

 

Какую роль играет эта строчка при отправке отредактированной записи...?

Share this post


Link to post

Как собирались пользоваться getPostContent так и пользуйтесь.

 

Какую роль играет эта строчка при отправке отредактированной записи...?

DataHooks - http://ipbskins.ru/forum/topic10049.html#entry65536

Share this post


Link to post

Нашел, вроде то что необходимо. Смотри

 

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH.'sources/classes/editor/composite.php', 'classes_editor_composite' );
$this->editor = new $classToLoad();
// $this->editor->setLegacyMode(false);
$this->editor->setIsHtml(1);

$entry['post'] = $this->editor->process($this->entry['post']);

 

Отправляю запись с bbcodami.

$entry['post'] содержит пост с и тд, его необходимо преобразовать и записать в таблицу уже как html. То есть как при написании постов на форуме.

 

 

Не подскажешь как с этим работать?

Share this post


Link to post

Парсер сообщений

 

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
$parser = new $classToLoad();

$parser->set( array( 'memberData'     => $this->memberData,
				 'parseBBCode'    => 1,
				 'parseArea'	  => 'topics',
				 'parseHtml'      => 0,
				 'parseEmoticons' => 1 ) );

$postContent = $parser->display( $postContent );

Share this post


Link to post

Спасибо, работает. Но вот тут меня мучает один вопрос. Инъекции и взломы, как с этим обстоят деля при таком использовании...?

Share this post


Link to post

Чтобы отфильтровать сообщения используйте classes_editor_composite, только естественно с setIsHtml( false )

 

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
$editor = new $classToLoad();
$editor->setLegacyMode( false );
$editor->setIsHtml( false );

$postContent = $editor->process( $_POST['postContent'] );

 

Для парсинга ббкодов используйте classes_text_parser.

Share this post


Link to post

То есть есть уязвимость в первом способе?

 

 

        $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
       $editor = new $classToLoad();
       $editor->setLegacyMode(false);
       $editor->setIsHtml(false);

       $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
       $parser = new $classToLoad();
       $parser->set(array('memberData' => $this->memberData, 'parseBBCode' => 1, 'parseArea' => 'topics','parseHtml' => 0,'parseEmoticons' => 1 ) );

       $this->post = $parser->display($editor->process($this->post));

 

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

 

У меня такой вот вопрос. На форуме все ок, обзацы имеются. В блога, при обработке они пропадают. Причем это уже стандартно было. Не знаю в чем дело...

Edited by Testweb

Share this post


Link to post

То есть есть уязвимость в первом способе?

В парсере ббкодов нет фильтрации html, если вы это имеет имеете ввиду.

 

 

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

Пишите свой короче.

Share this post


Link to post

Дак, у меня это только было, ваш вариант

 

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
$parser = new $classToLoad();
$parser->set(array('memberData' => $this->memberData, 'parseBBCode' => 1, 'parseArea' => 'topics','parseHtml' => 0,'parseEmoticons' => 1 ) );

$this->post = $parser->display($this->post);

 

Просто за уязвимости переживаю, то есть по другому никак. Чтобы инъекции не моли сделать...

Share this post


Link to post

Беда, если если пропускать через оба обработчика. У меня за место одной пустой строки, сразу две))

Share this post


Link to post

Вот такой вот к тебе вопрос уважаемы. Сделал казалось бы все ок, но вот уже при редактировании записи, как пропустить этот html(что в бд сохранился) через обработчики, чтобы вставить его в редактор...

 

Он вставляется, работает но вот к примеру.

 

Вставил видос, ссылку, сохранил запись. Стал редактировать, открыл реадактор и это окно видоса, прямо в редакторе...

 

Искал как пропускается при редактировании поста в топике, не нашел. Не подскажешь?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...