Jump to content
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

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

$this->getPostContent()

 

Все перерыл

 

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

Featured Replies

Зачем?

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

  • Author

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

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

 

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

  • Author

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

 

protected function compilePostData()

 

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

 

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

 

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

  • Author

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

 

$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. То есть как при написании постов на форуме.

 

 

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

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

 

$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 );

  • Author

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

Чтобы отфильтровать сообщения используйте 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.

  • Author

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

 

 

        $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

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

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

 

 

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

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

  • Author

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

 

$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);

 

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

  • Author

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

  • Author

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

 

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

 

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

 

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

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.