]> git.mxchange.org Git - friendica.git/blobdiff - include/text.php
Merge pull request #5294 from annando/use-gravity
[friendica.git] / include / text.php
index b7f7b5abb13e377b1f686d2f58b94c044057d95c..04bbb672446646eaf49ee1da1431b106f40cae32 100644 (file)
@@ -14,6 +14,7 @@ use Friendica\Core\L10n;
 use Friendica\Core\PConfig;
 use Friendica\Core\System;
 use Friendica\Database\DBM;
+use Friendica\Model\Contact;
 use Friendica\Model\Event;
 use Friendica\Model\Item;
 use Friendica\Model\Profile;
@@ -151,7 +152,7 @@ function autoname($len) {
                                'nd','ng','nk','nt','rn','rp','rt'];
 
        $noend = ['bl', 'br', 'cl','cr','dr','fl','fr','gl','gr',
-                               'kh', 'kl','kr','mn','pl','pr','rh','tr','qu','wh'];
+                               'kh', 'kl','kr','mn','pl','pr','rh','tr','qu','wh','q'];
 
        $start = mt_rand(0,2);
        if ($start == 0) {
@@ -177,14 +178,13 @@ function autoname($len) {
        $word = substr($word,0,$len);
 
        foreach ($noend as $noe) {
-               if ((strlen($word) > 2) && (substr($word, -2) == $noe)) {
-                       $word = substr($word, 0, -1);
+               $noelen = strlen($noe);
+               if ((strlen($word) > $noelen) && (substr($word, -$noelen) == $noe)) {
+                       $word = autoname($len);
                        break;
                }
        }
-       if (substr($word, -1) == 'q') {
-               $word = substr($word, 0, -1);
-       }
+
        return $word;
 }
 
@@ -462,33 +462,6 @@ function perms2str($p) {
        return $ret;
 }
 
-
-/**
- * generate a guaranteed unique (for this domain) item ID for ATOM
- * safe from birthday paradox
- *
- * @param string $hostname
- * @param int $uid
- * @return string
- */
-function item_new_uri($hostname, $uid, $guid = "") {
-
-       do {
-               if ($guid == "") {
-                       $hash = get_guid(32);
-               } else {
-                       $hash = $guid;
-                       $guid = "";
-               }
-
-               $uri = "urn:X-dfrn:" . $hostname . ':' . $uid . ':' . $hash;
-
-               $dups = dba::exists('item', ['uri' => $uri]);
-       } while ($dups == true);
-
-       return $uri;
-}
-
 /**
  * @deprecated
  * wrapper to load a view template, checking for alternate
@@ -501,7 +474,7 @@ function item_new_uri($hostname, $uid, $guid = "") {
  */
 function load_view_file($s) {
        global $lang, $a;
-       if (! isset($lang)) {
+       if (!isset($lang)) {
                $lang = 'en';
        }
        $b = basename($s);
@@ -546,7 +519,7 @@ function get_intltext_template($s) {
                $engine = "/smarty3";
        }
 
-       if (! isset($lang)) {
+       if (!isset($lang)) {
                $lang = 'en';
        }
 
@@ -648,8 +621,8 @@ function logger($msg, $level = 0) {
        $loglevel = intval(Config::get('system','loglevel'));
 
        if (
-               ! $debugging
-               || ! $logfile
+               !$debugging
+               || !$logfile
                || $level > $loglevel
        ) {
                return;
@@ -716,7 +689,7 @@ function dlogger($msg, $level = 0) {
        }
 
        $logfile = Config::get('system', 'dlogfile');
-       if (! $logfile) {
+       if (!$logfile) {
                return;
        }
 
@@ -961,13 +934,9 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
        $redir = false;
 
        if ($redirect) {
-               $redirect_url = 'redir/' . $contact['id'];
-               if (local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === NETWORK_DFRN)) {
-                       $redir = true;
-                       $url = $redirect_url;
+               $url = Contact::magicLink($contact['url']);
+               if (strpos($url, 'redir/') === 0) {
                        $sparkle = ' sparkle';
-               } else {
-                       $url = Profile::zrl($url);
                }
        }
 
@@ -1015,7 +984,7 @@ function search($s, $id = 'search-box', $url = 'search', $save = false, $aside =
                        '$action_url' => $url,
                        '$search_label' => L10n::t('Search'),
                        '$save_label' => $save_label,
-                       '$savedsearch' => Feature::isEnabled(local_user(),'savedsearch'),
+                       '$savedsearch' => local_user() && Feature::isEnabled(local_user(),'savedsearch'),
                        '$search_hint' => L10n::t('@name, !forum, #tags, content'),
                        '$mode' => $mode
                ];
@@ -1208,8 +1177,8 @@ function put_item_in_cache(&$item, $update = false)
                }
 
                if ($update && ($item["id"] > 0)) {
-                       dba::update('item', ['rendered-html' => $item["rendered-html"], 'rendered-hash' => $item["rendered-hash"]],
-                                       ['id' => $item["id"]], false);
+                       Item::update(['rendered-html' => $item["rendered-html"], 'rendered-hash' => $item["rendered-hash"]],
+                                       ['id' => $item["id"]]);
                }
        }
 
@@ -1284,9 +1253,7 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
        $s = $hook_data['html'];
        unset($hook_data);
 
-       $s = apply_content_filter($s, $filter_reasons);
-
-       if (! $attach) {
+       if (!$attach) {
                // Replace the blockquotes with quotes that are used in mails.
                $mailquote = '<blockquote type="cite" class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">';
                $s = str_replace(['<blockquote>', '<blockquote class="spoiler">', '<blockquote class="author">'], [$mailquote, $mailquote, $mailquote], $s);
@@ -1300,11 +1267,7 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
        foreach ($matches as $mtch) {
                $mime = $mtch[3];
 
-               if ((local_user() == $item['uid']) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN)) {
-                       $the_url = 'redir/' . $item['contact-id'] . '?f=1&url=' . $mtch[1];
-               } else {
-                       $the_url = $mtch[1];
-               }
+               $the_url = Contact::magicLinkById($item['author-id'], $mtch[1]);
 
                if (strpos($mime, 'video') !== false) {
                        if (!$vhead) {
@@ -1393,6 +1356,8 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
                $s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
        }
 
+       $s = apply_content_filter($s, $filter_reasons);
+
        $hook_data = ['item' => $item, 'html' => $s];
        Addon::callHooks('prepare_body_final', $hook_data);
 
@@ -1588,7 +1553,7 @@ function generate_user_guid() {
                $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
                        dbesc($guid)
                );
-               if (! DBM::is_result($x)) {
+               if (!DBM::is_result($x)) {
                        $found = false;
                }
        } while ($found == true);
@@ -1630,7 +1595,7 @@ function base64url_decode($s) {
  *  // Uncomment if you find you need it.
  *
  *     $l = strlen($s);
- *     if (! strpos($s,'=')) {
+ *     if (!strpos($s,'=')) {
  *             $m = $l % 4;
  *             if ($m == 2)
  *                     $s .= '==';
@@ -1853,7 +1818,7 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
                $check_new_tags = explode(",",file_tag_file_to_list($file_new,$type));
 
                foreach ($check_new_tags as $tag) {
-                       if (! stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket)) {
+                       if (!stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket)) {
                                $new_tags[] = $tag;
                        }
                }
@@ -1865,7 +1830,7 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
                $check_deleted_tags = explode(",",file_tag_file_to_list($file_old,$type));
 
                foreach ($check_deleted_tags as $tag) {
-                       if (! stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket)) {
+                       if (!stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket)) {
                                $deleted_tags[] = $tag;
                        }
                }
@@ -1894,20 +1859,17 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
        return true;
 }
 
-function file_tag_save_file($uid, $item, $file)
+function file_tag_save_file($uid, $item_id, $file)
 {
-       if (! intval($uid)) {
+       if (!intval($uid)) {
                return false;
        }
 
-       $r = q("SELECT `file` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
-               intval($item),
-               intval($uid)
-       );
-       if (DBM::is_result($r)) {
-               if (!stristr($r[0]['file'],'[' . file_tag_encode($file) . ']')) {
-                       $fields = ['file' => $r[0]['file'] . '[' . file_tag_encode($file) . ']'];
-                       Item::update($fields, ['id' => $item]);
+       $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
+       if (DBM::is_result($item)) {
+               if (!stristr($item['file'],'[' . file_tag_encode($file) . ']')) {
+                       $fields = ['file' => $item['file'] . '[' . file_tag_encode($file) . ']'];
+                       Item::update($fields, ['id' => $item_id]);
                }
                $saved = PConfig::get($uid, 'system', 'filetags');
                if (!strlen($saved) || !stristr($saved, '[' . file_tag_encode($file) . ']')) {
@@ -1918,9 +1880,9 @@ function file_tag_save_file($uid, $item, $file)
        return true;
 }
 
-function file_tag_unsave_file($uid, $item, $file, $cat = false)
+function file_tag_unsave_file($uid, $item_id, $file, $cat = false)
 {
-       if (! intval($uid)) {
+       if (!intval($uid)) {
                return false;
        }
 
@@ -1932,16 +1894,13 @@ function file_tag_unsave_file($uid, $item, $file, $cat = false)
                $termtype = TERM_FILE;
        }
 
-       $r = q("SELECT `file` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
-               intval($item),
-               intval($uid)
-       );
-       if (! DBM::is_result($r)) {
+       $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
+       if (!DBM::is_result($item)) {
                return false;
        }
 
-       $fields = ['file' => str_replace($pattern,'',$r[0]['file'])];
-       Item::update($fields, ['id' => $item]);
+       $fields = ['file' => str_replace($pattern,'',$item['file'])];
+       Item::update($fields, ['id' => $item_id]);
 
        $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
                dbesc($file),
@@ -1967,6 +1926,10 @@ function undo_post_tagging($s) {
        $cnt = preg_match_all('/([!#@])\[url=(.*?)\](.*?)\[\/url\]/ism', $s, $matches, PREG_SET_ORDER);
        if ($cnt) {
                foreach ($matches as $mtch) {
+                       if (in_array($mtch[1], ['!', '@'])) {
+                               $contact = Contact::getDetailsByURL($mtch[2]);
+                               $mtch[3] = empty($contact['addr']) ? $mtch[2] : $contact['addr'];
+                       }
                        $s = str_replace($mtch[0], $mtch[1] . $mtch[3],$s);
                }
        }
@@ -1977,18 +1940,22 @@ function protect_sprintf($s) {
        return str_replace('%', '%%', $s);
 }
 
-
+/// @TODO Rewrite this
 function is_a_date_arg($s) {
        $i = intval($s);
+
        if ($i > 1900) {
                $y = date('Y');
+
                if ($i <= $y + 1 && strpos($s, '-') == 4) {
                        $m = intval(substr($s, 5));
-                       if ($m > 0 && $m <= 12)
+
+                       if ($m > 0 && $m <= 12) {
                                return true;
                        }
                }
        }
+
        return false;
 }
 
@@ -1997,6 +1964,7 @@ function is_a_date_arg($s) {
  */
 function deindent($text, $chr = "[\t ]", $count = NULL) {
        $lines = explode("\n", $text);
+
        if (is_null($count)) {
                $m = [];
                $k = 0;