forked from leftypol/leftypol
PM inbox
This commit is contained in:
parent
d6d017e368
commit
9dc1e98704
4 changed files with 98 additions and 1 deletions
|
@ -279,6 +279,8 @@
|
|||
$config['mod']['rebuild_timelimit'] = 0;
|
||||
// Server-side confirm button for actions like deleting posts, for when Javascript is disabled or the DOM isn't loaded.
|
||||
$config['mod']['server-side_confirm'] = true;
|
||||
// PM snippet (for ?/inbox) length in characters
|
||||
$config['mod']['snippet_length'] = 75;
|
||||
|
||||
// Probably best not to change these:
|
||||
if(!defined('JANITOR')) {
|
||||
|
|
|
@ -92,6 +92,24 @@
|
|||
)));
|
||||
}
|
||||
|
||||
function pm_snippet($body) {
|
||||
global $config;
|
||||
|
||||
// Replace line breaks with some whitespace
|
||||
$body = str_replace('<br/>', ' ', $body);
|
||||
|
||||
// Strip tags
|
||||
$body = strip_tags($body);
|
||||
|
||||
// Unescape HTML characters, to avoid splitting them in half
|
||||
$body = html_entity_decode_utf8($body);
|
||||
|
||||
$body = substr($body, 0, $config['mod']['snippet_length']) . (strlen($body) > $config['mod']['snippet_length'] ? '…' : '');
|
||||
|
||||
// Re-escape the characters.
|
||||
return '<em>' . utf8tohtml($body) . '</em>';
|
||||
}
|
||||
|
||||
function confirmLink($text, $title, $confirm, $href) {
|
||||
global $config, $mod;
|
||||
if($config['mod']['server-side_confirm'])
|
||||
|
|
|
@ -1023,6 +1023,37 @@
|
|||
$body = preg_replace("/\n/", '<br/>', $body);
|
||||
}
|
||||
|
||||
function html_entity_decode_utf8($string) {
|
||||
static $trans_tbl;
|
||||
|
||||
// replace numeric entities
|
||||
$string = preg_replace('~&#x([0-9a-f]+);~ei', 'code2utf(hexdec("\\1"))', $string);
|
||||
$string = preg_replace('~&#([0-9]+);~e', 'code2utf(\\1)', $string);
|
||||
|
||||
// replace literal entities
|
||||
if (!isset($trans_tbl)) {
|
||||
$trans_tbl = array();
|
||||
|
||||
foreach (get_html_translation_table(HTML_ENTITIES) as $val=>$key)
|
||||
$trans_tbl[$key] = utf8_encode($val);
|
||||
}
|
||||
|
||||
return strtr($string, $trans_tbl);
|
||||
}
|
||||
|
||||
// Returns the utf string corresponding to the unicode value (from php.net, courtesy - romans@void.lv)
|
||||
function code2utf($num) {
|
||||
if ($num < 128)
|
||||
return chr($num);
|
||||
if ($num < 2048)
|
||||
return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
|
||||
if ($num < 65536)
|
||||
return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
|
||||
if ($num < 2097152)
|
||||
return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
|
||||
return '';
|
||||
}
|
||||
|
||||
function utf8tohtml($utf8, $encodeTags=true) {
|
||||
$result = '';
|
||||
for ($i = 0; $i < strlen($utf8); $i++) {
|
||||
|
@ -1040,7 +1071,7 @@
|
|||
} else if ($ascii < 240) {
|
||||
// three-byte character
|
||||
$ascii1 = ord($utf8[$i+1]);
|
||||
$ascii2 = ord($utf8[$i+2]);
|
||||
$ascii2 = @ord($utf8[$i+2]);
|
||||
$unicode = (15 & $ascii) * 4096 +
|
||||
(63 & $ascii1) * 64 +
|
||||
(63 & $ascii2);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue