0) { $abstract = Text\BBCode::getAbstract($item['body']); } } } if ($abstract != '') { $post['text'] = $abstract; if ($post['type'] == 'text') { $post['type'] = 'link'; $post['url'] = $item['plink']; } } $html = Text\BBCode::convert($post['text'] . ($post['after'] ?? ''), false, $htmlmode); $msg = Text\HTML::toPlaintext($html, 0, true); $msg = trim(html_entity_decode($msg, ENT_QUOTES, 'UTF-8')); $link = ''; if ($includedlinks) { if ($post['type'] == 'link') { $link = $post['url']; } elseif ($post['type'] == 'text') { $link = $post['url'] ?? ''; } elseif ($post['type'] == 'video') { $link = $post['url']; } elseif ($post['type'] == 'photo') { $link = $post['image']; } if (($msg == '') && isset($post['title'])) { $msg = trim($post['title']); } if (($msg == '') && isset($post['description'])) { $msg = trim($post['description']); } // If the link is already contained in the post, then it neeedn't to be added again // But: if the link is beyond the limit, then it has to be added. if (($link != '') && strstr($msg, $link)) { $pos = strpos($msg, $link); // Will the text be shortened in the link? // Or is the link the last item in the post? if (($limit > 0) && ($pos < $limit) && (($pos + 23 > $limit) || ($pos + strlen($link) == strlen($msg)))) { $msg = trim(str_replace($link, '', $msg)); } elseif (($limit == 0) || ($pos < $limit)) { // The limit has to be increased since it will be shortened - but not now // Only do it with Twitter (htmlmode = 8) if (($limit > 0) && (strlen($link) > 23) && ($htmlmode == 8)) { $limit = $limit - 23 + strlen($link); } $link = ''; if ($post['type'] == 'text') { unset($post['url']); } } } } if ($limit > 0) { // Reduce multiple spaces // When posted to a network with limited space, we try to gain space where possible while (strpos($msg, ' ') !== false) { $msg = str_replace(' ', ' ', $msg); } // Twitter is using its own limiter, so we always assume that shortened links will have this length if (iconv_strlen($link, 'UTF-8') > 0) { $limit = $limit - 23; } if (iconv_strlen($msg, 'UTF-8') > $limit) { if (($post['type'] == 'text') && isset($post['url'])) { $post['url'] = $item['plink']; } elseif (!isset($post['url'])) { $limit = $limit - 23; $post['url'] = $item['plink']; } elseif (strpos($item['body'], '[share') !== false) { $post['url'] = $item['plink']; } elseif (DI::pConfig()->get($item['uid'], 'system', 'no_intelligent_shortening')) { $post['url'] = $item['plink']; } $msg = Text\Plaintext::shorten($msg, $limit); } } $post['text'] = trim($msg); return $post; } }