38 lines
980 B
PHP
38 lines
980 B
PHP
|
<?php
|
||
|
/**
|
||
|
* @file src/Content/Text/Plaintext.php
|
||
|
*/
|
||
|
namespace Friendica\Content\Text;
|
||
|
|
||
|
class Plaintext
|
||
|
{
|
||
|
/**
|
||
|
* Shortens message
|
||
|
*
|
||
|
* @param type $msg
|
||
|
* @param type $limit
|
||
|
* @return type
|
||
|
*
|
||
|
* @todo For Twitter URLs aren't shortened, but they have to be calculated as if.
|
||
|
*/
|
||
|
public static function shorten($msg, $limit)
|
||
|
{
|
||
|
$lines = explode("\n", $msg);
|
||
|
$msg = "";
|
||
|
$recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8');
|
||
|
$ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8');
|
||
|
foreach ($lines as $row => $line) {
|
||
|
if (iconv_strlen(trim($msg . "\n" . $line), "UTF-8") <= $limit) {
|
||
|
$msg = trim($msg . "\n" . $line);
|
||
|
} elseif (($msg == "") || (($row == 1) && (substr($msg, 0, 4) == $recycle))) {
|
||
|
// Is the new message empty by now or is it a reshared message?
|
||
|
$msg = iconv_substr(iconv_substr(trim($msg . "\n" . $line), 0, $limit, "UTF-8"), 0, -3, "UTF-8") . $ellipsis;
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $msg;
|
||
|
}
|
||
|
}
|