X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Ftext.php;h=21111ba63181f3317a5cfdda78f4b8e7b7c5079f;hb=0ed93df91fcf6cfc1d65ee3e013e4f79eae55ef7;hp=c868499cc69c28ded31a2293bccfb2c8a3068f93;hpb=bfde20f5fea2d0089aea2a7cf41ec90f52ce593e;p=friendica.git diff --git a/include/text.php b/include/text.php index c868499cc6..21111ba631 100644 --- a/include/text.php +++ b/include/text.php @@ -2,6 +2,7 @@ require_once("include/template_processor.php"); require_once("include/friendica_smarty.php"); +require_once("include/Smilies.php"); require_once("include/map.php"); require_once("mod/proxy.php"); @@ -866,7 +867,7 @@ function contact_block() { $micropro = Null; } else { - $r = q("SELECT `id`, `uid`, `addr`, `url`, `name`, `micro`, `network` FROM `contact` + $r = q("SELECT `id`, `uid`, `addr`, `url`, `name`, `thumb`, `network` FROM `contact` WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `hidden` AND NOT `archive` AND `network` IN ('%s', '%s', '%s') ORDER BY RAND() LIMIT %d", @@ -900,20 +901,28 @@ function contact_block() { }} -if(! function_exists('micropro')) { /** + * @brief Format contacts as picture links or as texxt links * - * @param array $contact - * @param boolean $redirect - * @param string $class - * @param boolean $textmode - * @return string #FIXME: remove html + * @param array $contact Array with contacts which contains an array with + * int 'id' => The ID of the contact + * int 'uid' => The user ID of the user who owns this data + * string 'name' => The name of the contact + * string 'url' => The url to the profile page of the contact + * string 'addr' => The webbie of the contact (e.g.) username@friendica.com + * string 'network' => The network to which the contact belongs to + * string 'thumb' => The contact picture + * string 'click' => js code which is performed when clicking on the contact + * @param boolean $redirect If true try to use the redir url if it's possible + * @param string $class CSS class for the + * @param boolean $textmode If true display the contacts as text links + * if false display the contacts as picture links + + * @return string Formatted html */ function micropro($contact, $redirect = false, $class = '', $textmode = false) { - if($class) - $class = ' ' . $class; - + // Use the contact URL if no address is available if ($contact["addr"] == "") $contact["addr"] = $contact["url"]; @@ -932,26 +941,23 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) { else $url = zrl($url); } - $click = ((x($contact,'click')) ? ' onclick="' . $contact['click'] . '" ' : ''); - if($click) + + // If there is some js available we don't need the url + if(x($contact,'click')) $url = ''; - if($textmode) { - return '
'. $contact['name'] . '
' . "\r\n"; - } - else { - return '
' . $contact['name']
-			. '
' . "\r\n"; - } -}} + + return replace_macros(get_markup_template(($textmode)?'micropro_txt.tpl':'micropro_img.tpl'),array( + '$click' => (($contact['click']) ? $contact['click'] : ''), + '$class' => $class, + '$url' => $url, + '$photo' => proxy_url($contact['thumb'], false, PROXY_SIZE_THUMB), + '$name' => $contact['name'], + 'title' => $contact['name'] . ' [' . $contact['addr'] . ']', + '$parkle' => $sparkle, + '$redir' => $redir, + + )); +} @@ -974,6 +980,7 @@ function search($s,$id='search-box',$url='search',$save = false, $aside = true) '$search_label' => t('Search'), '$save_label' => t('Save'), '$savedsearch' => feature_enabled(local_user(),'savedsearch'), + '$search_hint' => t('@name, !forum, #tags, content'), ); if (!$aside) { @@ -1079,160 +1086,6 @@ function get_mood_verbs() { return $arr; } - - -if(! function_exists('smilies')) { -/** - * Replaces text emoticons with graphical images - * - * 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 - * - * @param string $s - * @param boolean $sample - * @return string - * @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array, 'string' => $s) - */ -function smilies($s, $sample = false) { - $a = get_app(); - - if(intval(get_config('system','no_smilies')) - || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) - return $s; - - $s = preg_replace_callback('/
(.*?)<\/pre>/ism','smile_encode',$s);
-	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_encode',$s);
-
-	$texts =  array(
-		'<3',
-		'</3',
-		'<\\3',
-		':-)',
-		';-)',
-		':-(',
-		':-P',
-		':-p',
-		':-"',
-		':-"',
-		':-x',
-		':-X',
-		':-D',
-		'8-|',
-		'8-O',
-		':-O',
-		'\\o/',
-		'o.O',
-		'O.o',
-		'o_O',
-		'O_o',
-		":'(",
-		":-!",
-		":-/",
-		":-[",
-		"8-)",
-		':beer',
-		':homebrew',
-		':coffee',
-		':facepalm',
-		':like',
-		':dislike',
-		'~friendica',
-		'red#',
-		'red#matrix'
-
-	);
-
-	$icons = array(
-		'<3',
-		'</3',
-		'<\\3',
-		':-)',
-		';-)',
-		':-(',
-		':-P',
-		':-p',
-		':-\',
-		':-\',
-		':-x',
-		':-X',
-		':-D',
-		'8-|',
-		'8-O',
-		':-O',
-		'\\o/',
-		'o.O',
-		'O.o',
-		'o_O',
-		'O_o',
-		':\'(',
-		':-!',
-		':-/',
-		':-[',
-		'8-)',
-		':beer',
-		':homebrew',
-		':coffee',
-		':facepalm',
-		':like',
-		':dislike',
-		'~friendica ~friendica',
-		'redred#matrix',
-		'redred#matrixmatrix'
-	);
-
-	$params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
-	call_hooks('smilie', $params);
-
-	if($sample) {
-		$s = '
'; - for($x = 0; $x < count($params['texts']); $x ++) { - $s .= '
' . $params['texts'][$x] . '
' . $params['icons'][$x] . '
'; - } - } - 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
- *
- * @param string $x
- * @return string
- */
-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')) {
 /**
  * Translate days and months names
@@ -1549,7 +1402,7 @@ function prepare_text($text) {
 	if(stristr($text,'[nosmile]'))
 		$s = bbcode($text);
 	else
-		$s = smilies(bbcode($text));
+		$s = Smilies::replace(bbcode($text));
 
 	return trim($s);
 }}
@@ -2239,3 +2092,54 @@ function format_network_name($network, $url = 0) {
 	}
 
 }
+
+/**
+ * @brief Syntax based code highlighting for popular languages.
+ * @param string $s Code block
+ * @param string $lang Programming language
+ * @return string Formated html
+ */
+function text_highlight($s,$lang) {
+	if($lang === 'js')
+		$lang = 'javascript';
+
+	if(! strpos('Text_Highlighter',get_include_path())) {
+		set_include_path(get_include_path() . PATH_SEPARATOR . 'library/Text_Highlighter');
+	}
+
+	require_once('library/Text_Highlighter/Text/Highlighter.php');
+	require_once('library/Text_Highlighter/Text/Highlighter/Renderer/Html.php');
+	$options = array(
+		'numbers' => HL_NUMBERS_LI,
+		'tabsize' => 4,
+		);
+
+	$tag_added = false;
+	$s = trim(html_entity_decode($s,ENT_COMPAT));
+	$s = str_replace("    ","\t",$s);
+
+	// The highlighter library insists on an opening php tag for php code blocks. If 
+	// it isn't present, nothing is highlighted. So we're going to see if it's present.
+	// If not, we'll add it, and then quietly remove it after we get the processed output back.
+
+	if($lang === 'php') {
+		if(strpos('setRenderer($renderer);
+	$o = $hl->highlight($s);
+	$o = str_replace(["    ","\n"],["    ",''],$o);
+
+	if($tag_added) {
+		$b = substr($o,0,strpos($o,'
  • ')); + $e = substr($o,strpos($o,'
  • ')); + $o = $b . $e; + } + + return('' . $o . ''); +}