X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Ftext.php;h=c8c03174e613625281240e0f0276c74e56d2e630;hb=eec4cff84be630bf3a4165321a423c29ed7926e9;hp=45881b9a64bf15dfceddbed19a3ed014818a8df5;hpb=4222f506a82c7b2a50b602c51a83a85e1912450c;p=friendica.git diff --git a/include/text.php b/include/text.php index 45881b9a64..c8c03174e6 100755 --- a/include/text.php +++ b/include/text.php @@ -14,7 +14,13 @@ if(! function_exists('replace_macros')) { function replace_macros($s,$r) { global $t; - return $t->replace($s,$r); + //$ts = microtime(); + $r = $t->replace($s,$r); + //$tt = microtime() - $ts; + + //$a = get_app(); + //$a->page['debug'] .= "$tt
\n"; + return $r; }} @@ -675,12 +681,24 @@ function linkify($s) { * @Parameter: string $s * * Returns string + * + * It is expected that this function will be called using HTML text. + * We will escape text between HTML pre and code blocks from being + * processed. + * + * At a higher level, the bbcode [nosmile] tag can be used to prevent this + * function from being executed by the prepare_text() routine when preparing + * bbcode source for HTML display + * */ if(! function_exists('smilies')) { function smilies($s, $sample = false) { $a = get_app(); + $s = preg_replace_callback('/
(.*?)<\/pre>/ism','smile_encode',$s);
+	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_encode',$s);
+
 	$texts =  array( 
 		'<3', 
 		'</3', 
@@ -716,9 +734,10 @@ function smilies($s, $sample = false) {
 		':homebrew', 
 		':coffee', 
 		':facepalm',
+		':headdesk',
 		'~friendika', 
 		'~friendica', 
-		'Diaspora*' 
+//		'Diaspora*' 
 	);
 
 	$icons = array(
@@ -756,9 +775,10 @@ function smilies($s, $sample = false) {
 		':homebrew',
 		':coffee',
 		':facepalm',
+		':headdesk',
 		'~friendika ~friendika',
-		'~friendica ~friendica',
-		'DiasporaDiaspora*',
+		'~friendica ~friendica',
+//		'DiasporaDiaspora*',
 
 	);
 
@@ -772,13 +792,37 @@ function smilies($s, $sample = false) {
 		}
 	}
 	else {
+		$params['string'] = preg_replace_callback('/<(3+)/','preg_heart',$params['string']);
 		$s = str_replace($params['texts'],$params['icons'],$params['string']);
 	}
-             
+
+	$s = preg_replace_callback('/
(.*?)<\/pre>/ism','smile_decode',$s);
+	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_decode',$s);
+
 	return $s;
 
 }}
 
+function smile_encode($m) {
+	return(str_replace($m[1],base64url_encode($m[1]),$m[0]));
+}
+
+function smile_decode($m) {
+	return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
+}
+
+// expand <3333 to the correct number of hearts
+
+function preg_heart($x) {
+	$a = get_app();
+	if(strlen($x[1]) == 1)
+		return $x[0];
+	$t = '';
+	for($cnt = 0; $cnt < strlen($x[1]); $cnt ++)
+		$t .= '<3';
+	$r =  str_replace($x[0],$t,$x[0]);
+	return $r;
+}
 
 
 if(! function_exists('day_translate')) {
@@ -970,7 +1014,7 @@ function lang_selector() {
 			}
 			$ll = substr($l,5);
 			$ll = substr($ll,0,strrpos($ll,'/'));
-			$selected = (($ll === $lang && (x($_SESSION['language']))) ? ' selected="selected" ' : '');
+			$selected = (($ll === $lang && (x($_SESSION, 'language'))) ? ' selected="selected" ' : '');
 			$o .= '';
 		}
 	}
@@ -1175,3 +1219,16 @@ function reltoabs($text, $base)
   return $text;
 }
 
+function item_post_type($item) {
+	if(intval($item['event-id']))
+		return t('event');
+	if(strlen($item['resource-id']))
+		return t('photo');
+	if(strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST)
+		return t('activity');
+	if($item['id'] != $item['parent'])
+		return t('comment');
+	return t('post');
+}
+
+