Skip to content
Browse files

MDL-23335 mod_forum: allow multi-lang filtering of shortened messages

  • Loading branch information...
1 parent d2aa53b commit 02d10ca0ba92e71ec6d6ecde84c885f81127b194 @deraadt deraadt committed
Showing with 13 additions and 46 deletions.
  1. +10 −46 mod/forum/lib.php
  2. +3 −0 mod/forum/upgrade.txt
View
56 mod/forum/lib.php
@@ -3490,9 +3490,10 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa
$options->trusted = $post->messagetrust;
$options->context = $modcontext;
if ($shortenpost) {
- // Prepare shortened version
+ // Prepare shortened version by filtering the text then shortening it.
$postclass = 'shortenedpost';
- $postcontent = format_text(forum_shorten_post($post->message), $post->messageformat, $options, $course->id);
+ $postcontent = format_text($post->message, $post->messageformat, $options);
+ $postcontent = shorten_text($postcontent, $CFG->forum_shortpost);
$postcontent .= html_writer::link($discussionlink, get_string('readtherest', 'forum'));
$postcontent .= html_writer::tag('div', '('.get_string('numwords', 'moodle', count_words($post->message)).')',
array('class'=>'post-word-count'));
@@ -3828,61 +3829,24 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring=""
}
-
/**
+ * This function is now deprecated. Use shorten_text($message, $CFG->forum_shortpost) instead.
+ *
* Given a post object that we already know has a long message
* this function truncates the message nicely to the first
* sane place between $CFG->forum_longpost and $CFG->forum_shortpost
*
+ * @deprecated since Moodle 2.6
+ * @see shorten_text()
+ * @todo finalise deprecation in 2.8 in MDL-40851
* @global object
* @param string $message
* @return string
*/
function forum_shorten_post($message) {
-
global $CFG;
-
- $i = 0;
- $tag = false;
- $length = strlen($message);
- $count = 0;
- $stopzone = false;
- $truncate = 0;
-
- for ($i=0; $i<$length; $i++) {
- $char = $message[$i];
-
- switch ($char) {
- case "<":
- $tag = true;
- break;
- case ">":
- $tag = false;
- break;
- default:
- if (!$tag) {
- if ($stopzone) {
- if ($char == ".") {
- $truncate = $i+1;
- break 2;
- }
- }
- $count++;
- }
- break;
- }
- if (!$stopzone) {
- if ($count > $CFG->forum_shortpost) {
- $stopzone = true;
- }
- }
- }
-
- if (!$truncate) {
- $truncate = $i;
- }
-
- return substr($message, 0, $truncate);
+ debugging('forum_shorten_post() is deprecated since Moodle 2.6. Please use shorten_text($message, $CFG->forum_shortpost) instead.', DEBUG_DEVELOPER);
+ return shorten_text($message, $CFG->forum_shortpost);
}
/**
View
3 mod/forum/upgrade.txt
@@ -5,6 +5,9 @@ information provided here is intended especially for developers.
* The file post_form.php should not be included, the class it contained has
been moved so that it can benefit from autoloading.
+* The function forum_shorten_post() has been deprecated. It was doing a poor
+ job of shortening forum post text and the shorten_text() function does a
+ much better job.
=== 2.5 ===

0 comments on commit 02d10ca

Please sign in to comment.
Something went wrong with that request. Please try again.