Опубликовано: 26 января 20169 г Где находится данная функция?$this->getPostContent() Все перерыл formatPost, нашел, а getPostContent нету
Опубликовано: 26 января 20169 г Зачем? Нет такого метода. У этого класса есть метод __call который обрабатывает гетеры и сетеры - несуществующие методы с get или set префиксом.
Опубликовано: 27 января 20169 г Автор Мне необходимо при отправки формы, пост формы. Обработать ее как html и записать ее в таблицу, вот я и ищу ту функцию через которую проходит пост форма(при создании темы). Дабы сделать в своем модуле то же самое.
Опубликовано: 27 января 20169 г Для этого есть хук поинты postAddTopic и postAddReply. Если же лезть в код то classPost::compilePostData
Опубликовано: 27 января 20169 г Автор Не совсем понимаю, а как пользоваться та хоть classPost::compilePostData protected function compilePostData() Как я в нее отправлю содержимое формы? IPSLib::doDataHooks($this->entry, 'blogEditEntryData'); Какую роль играет эта строчка при отправке отредактированной записи...?
Опубликовано: 27 января 20169 г Как собирались пользоваться getPostContent так и пользуйтесь. Какую роль играет эта строчка при отправке отредактированной записи...?DataHooks - http://ipbskins.ru/forum/topic10049.html#entry65536
Опубликовано: 27 января 20169 г Автор Нашел, вроде то что необходимо. Смотри $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. То есть как при написании постов на форуме. Не подскажешь как с этим работать?
Опубликовано: 27 января 20169 г Парсер сообщений $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 );
Опубликовано: 27 января 20169 г Автор Спасибо, работает. Но вот тут меня мучает один вопрос. Инъекции и взломы, как с этим обстоят деля при таком использовании...?
Опубликовано: 27 января 20169 г Чтобы отфильтровать сообщения используйте 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.
Опубликовано: 27 января 20169 г Автор То есть есть уязвимость в первом способе? $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)); Такой огромный год получается ради того, чтобы текст обработать. Есть варианты более компактные? У меня такой вот вопрос. На форуме все ок, обзацы имеются. В блога, при обработке они пропадают. Причем это уже стандартно было. Не знаю в чем дело... Изменено 27 января 20169 г пользователем Testweb
Опубликовано: 27 января 20169 г То есть есть уязвимость в первом способе?В парсере ббкодов нет фильтрации html, если вы это имеет имеете ввиду. Такой огромный год получается ради того, чтобы текст обработать. Есть варианты более компактные?Пишите свой короче.
Опубликовано: 27 января 20169 г Автор Дак, у меня это только было, ваш вариант $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); Просто за уязвимости переживаю, то есть по другому никак. Чтобы инъекции не моли сделать...
Опубликовано: 27 января 20169 г Автор Беда, если если пропускать через оба обработчика. У меня за место одной пустой строки, сразу две))
Опубликовано: 2 февраля 20169 г Автор Вот такой вот к тебе вопрос уважаемы. Сделал казалось бы все ок, но вот уже при редактировании записи, как пропустить этот html(что в бд сохранился) через обработчики, чтобы вставить его в редактор... Он вставляется, работает но вот к примеру. Вставил видос, ссылку, сохранил запись. Стал редактировать, открыл реадактор и это окно видоса, прямо в редакторе... Искал как пропускается при редактировании поста в топике, не нашел. Не подскажешь?
Где находится данная функция?
Все перерыл
formatPost, нашел, а getPostContent нету