X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Ftext.php;h=9dc90ac50ae19723f5803fd1e44e645f1dea9819;hb=5d3613c8bc057392d3d43986357da6dddf60ce85;hp=5b64ef2f9404705cca7f268e12a7ab3adc84a8bd;hpb=5501dd0759cdec41f74b4bc104fca526ecbb0eef;p=friendica.git
diff --git a/include/text.php b/include/text.php
index 5b64ef2f94..9dc90ac50a 100644
--- a/include/text.php
+++ b/include/text.php
@@ -6,16 +6,17 @@
// returns substituted string.
// WARNING: this is pretty basic, and doesn't properly handle search strings that are substrings of each other.
// For instance if 'test' => "foo" and 'testing' => "bar", testing could become either bar or fooing,
-// depending on the order in which they were declared in the array.
+// depending on the order in which they were declared in the array.
require_once("include/template_processor.php");
require_once("include/friendica_smarty.php");
-if(! function_exists('replace_macros')) {
+if(! function_exists('replace_macros')) {
function replace_macros($s,$r) {
global $t;
-// $ts = microtime();
+ $stamp1 = microtime(true);
+
$a = get_app();
if($a->theme['template_engine'] === 'smarty3') {
@@ -23,7 +24,6 @@ function replace_macros($s,$r) {
if(gettype($s) === 'string') {
$template = $s;
$s = new FriendicaSmarty();
- $s->error_reporting = E_ALL & ~E_NOTICE;
}
foreach($r as $key=>$value) {
if($key[0] === '$') {
@@ -35,12 +35,12 @@ function replace_macros($s,$r) {
}
else {
$r = $t->replace($s,$r);
-
+
$output = template_unescape($r);
}
-// $tt = microtime() - $ts;
-// $a = get_app();
-// $a->page['debug'] .= "$tt
\n";
+ $a = get_app();
+ $a->save_timestamp($stamp1, "rendering");
+
return $output;
}}
@@ -174,10 +174,11 @@ function autoname($len) {
if(! function_exists('xmlify')) {
function xmlify($str) {
- $buffer = '';
+/* $buffer = '';
- for($x = 0; $x < mb_strlen($str); $x ++) {
- $char = $str[$x];
+ $len = mb_strlen($str);
+ for($x = 0; $x < $len; $x ++) {
+ $char = mb_substr($str,$x,1);
switch( $char ) {
@@ -205,7 +206,14 @@ function xmlify($str) {
$buffer .= $char;
break;
}
- }
+ }*/
+
+ $buffer = mb_ereg_replace("&", "&", $str);
+ $buffer = mb_ereg_replace("'", "'", $buffer);
+ $buffer = mb_ereg_replace("\"", """, $buffer);
+ $buffer = mb_ereg_replace("<", "<", $buffer);
+ $buffer = mb_ereg_replace(">", ">", $buffer);
+
$buffer = trim($buffer);
return($buffer);
}}
@@ -215,8 +223,13 @@ function xmlify($str) {
if(! function_exists('unxmlify')) {
function unxmlify($s) {
- $ret = str_replace('&','&', $s);
- $ret = str_replace(array('<','>','"','''),array('<','>','"',"'"),$ret);
+// $ret = str_replace('&','&', $s);
+// $ret = str_replace(array('<','>','"','''),array('<','>','"',"'"),$ret);
+ $ret = mb_ereg_replace('&', '&', $s);
+ $ret = mb_ereg_replace(''', "'", $ret);
+ $ret = mb_ereg_replace('"', '"', $ret);
+ $ret = mb_ereg_replace('<', "<", $ret);
+ $ret = mb_ereg_replace('>', ">", $ret);
return $ret;
}}
@@ -426,15 +439,26 @@ function load_view_file($s) {
$lang = 'en';
$b = basename($s);
$d = dirname($s);
- if(file_exists("$d/$lang/$b"))
- return file_get_contents("$d/$lang/$b");
-
+ if(file_exists("$d/$lang/$b")) {
+ $stamp1 = microtime(true);
+ $content = file_get_contents("$d/$lang/$b");
+ $a->save_timestamp($stamp1, "file");
+ return $content;
+ }
+
$theme = current_theme();
- if(file_exists("$d/theme/$theme/$b"))
- return file_get_contents("$d/theme/$theme/$b");
-
- return file_get_contents($s);
+ if(file_exists("$d/theme/$theme/$b")) {
+ $stamp1 = microtime(true);
+ $content = file_get_contents("$d/theme/$theme/$b");
+ $a->save_timestamp($stamp1, "file");
+ return $content;
+ }
+
+ $stamp1 = microtime(true);
+ $content = file_get_contents($s);
+ $a->save_timestamp($stamp1, "file");
+ return $content;
}}
if(! function_exists('get_intltext_template')) {
@@ -449,17 +473,28 @@ function get_intltext_template($s) {
if(! isset($lang))
$lang = 'en';
- if(file_exists("view/$lang$engine/$s"))
- return file_get_contents("view/$lang$engine/$s");
- elseif(file_exists("view/en$engine/$s"))
- return file_get_contents("view/en$engine/$s");
- else
- return file_get_contents("view$engine/$s");
+ if(file_exists("view/$lang$engine/$s")) {
+ $stamp1 = microtime(true);
+ $content = file_get_contents("view/$lang$engine/$s");
+ $a->save_timestamp($stamp1, "file");
+ return $content;
+ } elseif(file_exists("view/en$engine/$s")) {
+ $stamp1 = microtime(true);
+ $content = file_get_contents("view/en$engine/$s");
+ $a->save_timestamp($stamp1, "file");
+ return $content;
+ } else {
+ $stamp1 = microtime(true);
+ $content = file_get_contents("view$engine/$s");
+ $a->save_timestamp($stamp1, "file");
+ return $content;
+ }
}}
if(! function_exists('get_markup_template')) {
function get_markup_template($s, $root = '') {
-// $ts = microtime();
+ $stamp1 = microtime(true);
+
$a = get_app();
if($a->theme['template_engine'] === 'smarty3') {
@@ -467,19 +502,20 @@ function get_markup_template($s, $root = '') {
$template = new FriendicaSmarty();
$template->filename = $template_file;
+ $a->save_timestamp($stamp1, "rendering");
-// $tt = microtime() - $ts;
-// $a->page['debug'] .= "$tt
\n";
return $template;
}
else {
$template_file = get_template_file($a, $s, $root);
-// $file_contents = file_get_contents($template_file);
-// $tt = microtime() - $ts;
-// $a->page['debug'] .= "$tt
\n";
-// return $file_contents;
- return file_get_contents($template_file);
- }
+ $a->save_timestamp($stamp1, "rendering");
+
+ $stamp1 = microtime(true);
+ $content = file_get_contents($template_file);
+ $a->save_timestamp($stamp1, "file");
+ return $content;
+
+ }
}}
if(! function_exists("get_template_file")) {
@@ -490,12 +526,12 @@ function get_template_file($a, $filename, $root = '') {
if($root !== '' && $root[strlen($root)-1] !== '/')
$root = $root . '/';
- if(file_exists($root . "view/theme/$theme/$filename"))
- $template_file = $root . "view/theme/$theme/$filename";
- elseif (x($a->theme_info,"extends") && file_exists($root . "view/theme/".$a->theme_info["extends"]."/$filename"))
- $template_file = $root . "view/theme/".$a->theme_info["extends"]."/$filename";
+ if(file_exists("{$root}view/theme/$theme/$filename"))
+ $template_file = "{$root}view/theme/$theme/$filename";
+ elseif (x($a->theme_info,"extends") && file_exists("{$root}view/theme/{$a->theme_info["extends"]}/$filename"))
+ $template_file = "{$root}view/theme/{$a->theme_info["extends"]}/$filename";
else
- $template_file = $root . "view/$filename";
+ $template_file = "{$root}view/$filename";
return $template_file;
}}
@@ -535,8 +571,10 @@ function logger($msg,$level = 0) {
if((! $debugging) || (! $logfile) || ($level > $loglevel))
return;
-
+
+ $stamp1 = microtime(true);
@file_put_contents($logfile, datetime_convert() . ':' . session_id() . ' ' . $msg . "\n", FILE_APPEND);
+ $a->save_timestamp($stamp1, "file");
return;
}}
@@ -1009,27 +1047,62 @@ function link_compare($a,$b) {
return false;
}}
+
+// Find any non-embedded images in private items and add redir links to them
+
+if(! function_exists('redir_private_images')) {
+function redir_private_images($a, &$item) {
+
+ $matches = false;
+ $cnt = preg_match_all('|\[img\](http[^\[]*?/photo/[a-fA-F0-9]+?(-[0-9]\.[\w]+?)?)\[\/img\]|', $item['body'], $matches, PREG_SET_ORDER);
+ if($cnt) {
+ //logger("redir_private_images: matches = " . print_r($matches, true));
+ foreach($matches as $mtch) {
+ if(strpos($mtch[1], '/redir') !== false)
+ continue;
+
+ if((local_user() == $item['uid']) && ($item['private'] != 0) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN)) {
+ //logger("redir_private_images: redir");
+ $img_url = $a->get_baseurl() . '/redir?f=1&quiet=1&url=' . $mtch[1] . '&conurl=' . $item['author-link'];
+ $item['body'] = str_replace($mtch[0], "[img]".$img_url."[/img]", $item['body']);
+ }
+ }
+ }
+
+}}
+
+
// Given an item array, convert the body element from bbcode to html and add smilie icons.
// If attach is true, also add icons for item attachments
-
if(! function_exists('prepare_body')) {
function prepare_body($item,$attach = false) {
$a = get_app();
call_hooks('prepare_body_init', $item);
- $cachefile = get_cachefile($item["guid"]."-".strtotime($item["edited"])."-".hash("crc32", $item['body']));
+ //$cachefile = get_cachefile($item["guid"]."-".strtotime($item["edited"])."-".hash("crc32", $item['body']));
+ $cachefile = get_cachefile($item["guid"]."-".hash("md5", $item['body']));
if (($cachefile != '')) {
- if (file_exists($cachefile))
+ if (file_exists($cachefile)) {
+ $stamp1 = microtime(true);
$s = file_get_contents($cachefile);
- else {
+ $a->save_timestamp($stamp1, "file");
+ } else {
+ redir_private_images($a, $item);
$s = prepare_text($item['body']);
+
+ $stamp1 = microtime(true);
file_put_contents($cachefile, $s);
+ $a->save_timestamp($stamp1, "file");
+
+ logger('prepare_body: put item '.$item["id"].' into cachefile '.$cachefile);
}
- } else
+ } else {
+ redir_private_images($a, $item);
$s = prepare_text($item['body']);
+ }
$prep_arr = array('item' => $item, 'html' => $s);
@@ -1043,16 +1116,27 @@ function prepare_body($item,$attach = false) {
return $s;
}
- $arr = explode(',',$item['attach']);
+ $arr = explode('[/attach],',$item['attach']);
if(count($arr)) {
$s .= '