|
8 | 8 | session_start();
|
9 | 9 |
|
10 | 10 | //поддержка ссылок и разметки
|
11 |
| -function reparse($string) { |
| 11 | +function reparse($string, $truncate=false, &$truncate_flag) { |
12 | 12 | global $access;
|
| 13 | + |
13 | 14 | $pre_flag = false;
|
14 | 15 | $string = explode ("\n", $string);
|
| 16 | + if ($truncate && count($string) > $truncate) { |
| 17 | + $string = array_slice($string, 0, $truncate); |
| 18 | + $truncate_flag = true; |
| 19 | + } else $truncate_flag = false; |
| 20 | + |
15 | 21 | for ($i = 0; $i < count ($string); ++$i) {
|
16 | 22 | $string[$i] = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$string[$i]);
|
17 | 23 | $string[$i] = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string[$i]);
|
@@ -39,6 +45,7 @@ function reparse($string) {
|
39 | 45 | $string[$i]=preg_replace("/(^|\s+)(PS|P\.S|ЗЫ|З\.Ы|\/\/|#).+$/i", "<span class='comment'>\\0</span>", $string[$i]);
|
40 | 46 | }
|
41 | 47 | }
|
| 48 | + if ($pre_flag) $string[count($string) - 1] .= "</pre>"; |
42 | 49 | $string = implode("<br />", $string);
|
43 | 50 | return $string;
|
44 | 51 | }
|
@@ -339,7 +346,19 @@ function printMsg($message, $viewonly=false, $plainlink=false) {
|
339 | 346 |
|
340 | 347 | $ret.= " – <span class='date'>".date("H:i:s Y-m-d", $message['time'])."</span>";
|
341 | 348 |
|
342 |
| - $ret.="<br /><br />\n<span class='msgtext'>".reparse($message['msg'])."</span>\n"; |
| 349 | + $truncate = false; $truncate_flag = false; |
| 350 | + if (!$plainlink) { |
| 351 | + // Если мы смотрим на сообщение в ленте, то его надо обрезать |
| 352 | + // А если в окне ответа или в отдельном просмотре, то нет |
| 353 | + // Наличие ссылки на "сырое" сообщение служит индикатором для этого |
| 354 | + $truncate = 15; |
| 355 | + $truncate_flag = false; |
| 356 | + } |
| 357 | + |
| 358 | + $reparsedMessage = reparse($message['msg'], $truncate, $truncate_flag); |
| 359 | + if ($truncate_flag) $reparsedMessage.="<br /><br /><a href='?msgid=$msgid'>>> Читать далее</a>"; |
| 360 | + |
| 361 | + $ret.="<br /><br />\n<span class='msgtext'>".$reparsedMessage."</span>\n"; |
343 | 362 |
|
344 | 363 | $ret.="</div>";
|
345 | 364 | return $ret;
|
|
0 commit comments