X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fdirfind.php;h=3f9c82576a3bf02845082e266ba1dfb0e66095cf;hb=9a307a4e2bf1d9f61d2da86ad6fa32e32ebe377f;hp=c2b18e3e24143d036d21545c3e3b9664d7f1b7cb;hpb=2205c372db514f7e84e641f51b6e801990b6a63b;p=friendica.git diff --git a/mod/dirfind.php b/mod/dirfind.php index c2b18e3e24..3f9c82576a 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -25,13 +25,20 @@ function dirfind_init(&$a) { function dirfind_content(&$a, $prefix = "") { $community = false; + $discover_user = false; $local = get_config('system','poco_local_search'); $search = $prefix.notags(trim($_REQUEST['search'])); - if(strpos($search,'@') === 0) + if(strpos($search,'@') === 0) { $search = substr($search,1); + if ((valid_email($search) AND validate_email($search)) OR + (substr(normalise_link($search), 0, 7) == "http://")) { + $user_data = probe_url($search); + $discover_user = (in_array($user_data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))); + } + } if(strpos($search,'!') === 0) { $search = substr($search,1); @@ -42,7 +49,32 @@ function dirfind_content(&$a, $prefix = "") { if($search) { - if ($local) { + if ($discover_user) { + $j = new stdClass(); + $j->total = 1; + $j->items_page = 1; + $j->page = $a->pager['page']; + + $objresult = new stdClass(); + $objresult->cid = 0; + $objresult->name = $user_data["name"]; + $objresult->addr = $user_data["addr"]; + $objresult->url = $user_data["url"]; + $objresult->photo = $user_data["photo"]; + $objresult->tags = ""; + $objresult->network = $user_data["network"]; + + $contact = q("SELECT `id` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", + dbesc(normalise_link($user_data["url"])), intval(local_user())); + if ($contact) + $objresult->cid = $contact[0]["id"]; + + + $j->results[] = $objresult; + + poco_check($user_data["url"], $user_data["name"], $user_data["network"], $user_data["photo"], + "", "", "", "", "", datetime_convert(), 0); + } elseif ($local) { if ($community) $extra_sql = " AND `community`"; @@ -52,14 +84,24 @@ function dirfind_content(&$a, $prefix = "") { $perpage = 80; $startrec = (($a->pager['page']) * $perpage) - $perpage; + if (get_config('system','diaspora_enabled')) + $diaspora = NETWORK_DIASPORA; + else + $diaspora = NETWORK_DFRN; + + if (!get_config('system','ostatus_disabled')) + $ostatus = NETWORK_OSTATUS; + else + $ostatus = NETWORK_DFRN; + $count = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND (`url` REGEXP '%s' OR `name` REGEXP '%s' OR `location` REGEXP '%s' OR `about` REGEXP '%s' OR `keywords` REGEXP '%s')".$extra_sql, - dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA), + dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search))); - $results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`photo`, `gcontact`.`network` , `gcontact`.`keywords` + $results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`photo`, `gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr` FROM `gcontact` LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl` AND `contact`.`uid` = %d AND NOT `contact`.`blocked` @@ -71,7 +113,7 @@ function dirfind_content(&$a, $prefix = "") { GROUP BY `gcontact`.`nurl` ORDER BY `gcontact`.`updated` DESC LIMIT %d, %d", intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND), - dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA), + dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), intval($startrec), intval($perpage)); @@ -91,6 +133,7 @@ function dirfind_content(&$a, $prefix = "") { $objresult = new stdClass(); $objresult->cid = $result["cid"]; $objresult->name = $result["name"]; + $objresult->addr = $result["addr"]; $objresult->url = $result["url"]; $objresult->photo = $result["photo"]; $objresult->tags = $result["keywords"]; @@ -124,7 +167,9 @@ function dirfind_content(&$a, $prefix = "") { $alt_text = ""; - $itemurl = $jj->url; + $contact_details = get_contact_details_by_url($jj->url, local_user()); + + $itemurl = (($contact_details["addr"] != "") ? $contact_details["addr"] : $jj->url); // If We already know this contact then don't show the "connect" button if ($jj->cid > 0) { @@ -157,6 +202,10 @@ function dirfind_content(&$a, $prefix = "") { 'conntxt' => $conntxt, 'connlnk' => $connlnk, 'photo_menu' => $photo_menu, + 'details' => $contact_details['location'], + 'tags' => $contact_details['keywords'], + 'about' => $contact_details['about'], + 'account_type' => (($contact_details['community']) ? t('Forum') : ''), 'network' => network_to_name($jj->network, $jj->url), 'id' => ++$id, );