From e5a7b3e24b5eccf31be7ef5b78580b599a94952f Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 27 Oct 2011 19:12:30 -0700 Subject: [PATCH] add contact-id to auto-complete response to resolve duplicates --- include/bb2diaspora.php | 27 ++++++++++++++++++++++++++- js/fk.autocomplete.js | 2 +- mod/item.php | 12 +++++++++++- mod/photos.php | 13 ++++++++++++- mod/search.php | 3 ++- 5 files changed, 52 insertions(+), 5 deletions(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index f7398067b9..efbf347587 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -17,11 +17,36 @@ function diaspora2bb($s) { $s = preg_replace("/\[url\=?(.*?)\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism",'[vimeo]$2[/vimeo]',$s); $s = preg_replace("/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism",'[vimeo]$1[/vimeo]',$s); $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url]$2$3$4[/url]',$s); - + $s = scale_diaspora_images($s); return $s; } +function scale_diaspora_images($s) { + + $matches = null; + $c = preg_match_all('/\[img\](.*?)\[\/img\]/ism',$s,$matches,PREG_SET_ORDER); + if($c) { + require_once('include/Photo.php'); + foreach($matches as $mtch) { + $i = fetch_url($mtch[1]); + if($i) { + $ph = new Photo($i); + if($ph->is_valid()) { + if($ph->getWidth() > 600 || $ph->getHeight() > 600) { + $ph->scaleImage(600); + $new_width = $ph->getWidth(); + $new_height = $ph->getHeight(); + $s = str_replace($mtch[0],'[img=' . $new_width . 'x' . $new_height. ']' . $mtch[1] . '[/img]' + . "\n" . '[url=' . $mtch[1] . ']' . t('view full size') . '[/url]' . "\n",$s); + } + } + } + } + } + return $s; +} + function stripdcode_br_cb($s) { return '[code]' . str_replace('
', "\n\t", $s[1]) . '[/code]'; } diff --git a/js/fk.autocomplete.js b/js/fk.autocomplete.js index 6a1f1965aa..c17d61fc57 100644 --- a/js/fk.autocomplete.js +++ b/js/fk.autocomplete.js @@ -65,7 +65,7 @@ ACPopup.prototype._search = function(){ that.cont.show(); $(data.items).each(function(){ html = "{1} ({2})".format(this.photo, this.name, this.nick) - that.add(html, this.nick + ' - ' + this.link); + that.add(html, this.nick + '+' + this.id + ' - ' + this.link); }); } else { that.cont.hide(); diff --git a/mod/item.php b/mod/item.php index 0e855d54d9..2c8704a315 100644 --- a/mod/item.php +++ b/mod/item.php @@ -407,7 +407,17 @@ function item_post(&$a) { else { $newname = $name; $alias = ''; - if(strstr($name,'_') || strstr($name,' ')) { + $tagcid = 0; + if(strrpos($newname,'+')) + $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); + + if($tagcid) { + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($tagcid), + intval($profile_uid) + ); + } + elseif(strstr($name,'_') || strstr($name,' ')) { $newname = str_replace('_',' ',$name); $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", dbesc($newname), diff --git a/mod/photos.php b/mod/photos.php index 663d0a40cb..63bd46a6cb 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -408,7 +408,18 @@ function photos_post(&$a) { } else { $newname = $name; - if(strstr($name,'_') || strstr($name,' ')) { + $alias = ''; + $tagcid = 0; + if(strrpos($newname,'+')) + $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); + + if($tagcid) { + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($tagcid), + intval($profile_uid) + ); + } + elseif(strstr($name,'_') || strstr($name,' ')) { $newname = str_replace('_',' ',$name); $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", dbesc($newname), diff --git a/mod/search.php b/mod/search.php index e2c365fd3a..819100204c 100644 --- a/mod/search.php +++ b/mod/search.php @@ -96,10 +96,11 @@ function search_content(&$a) { // Only public wall posts can be shown // OR your own posts if you are a logged in member + $escaped_search = str_replace(array('[',']'),array('\\[','\\]'),$search); // $s_bool = sprintf("AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )", dbesc($search)); $s_regx = sprintf("AND ( `item`.`body` REGEXP '%s' OR `item`.`tag` REGEXP '%s' )", - dbesc($search), dbesc('\\]' . $search . '\\[')); + dbesc($escaped_search), dbesc('\\]' . $escaped_search . '\\[')); // if(mb_strlen($search) >= 3) // $search_alg = $s_bool;