2016-01-20 03:34:22 +01:00
|
|
|
<?php
|
|
|
|
|
2016-01-24 19:56:23 +01:00
|
|
|
/**
|
2016-04-14 17:05:19 +02:00
|
|
|
* @file include/DirSearch.php
|
|
|
|
* @brief This file includes the DirSearch class with directory related functions
|
2016-01-24 19:56:23 +01:00
|
|
|
*/
|
2016-01-20 03:34:22 +01:00
|
|
|
|
2016-02-01 18:21:29 +01:00
|
|
|
|
2016-01-24 19:56:23 +01:00
|
|
|
/**
|
2016-02-01 18:21:29 +01:00
|
|
|
* @brief This class handels directory related functions
|
2016-01-24 19:56:23 +01:00
|
|
|
*/
|
2016-02-05 14:26:22 +01:00
|
|
|
class DirSearch {
|
2016-02-01 18:21:29 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Search global contact table by nick or name
|
2016-04-16 15:01:03 +02:00
|
|
|
*
|
2016-02-01 18:21:29 +01:00
|
|
|
* @param string $search Name or nick
|
2016-04-16 15:01:03 +02:00
|
|
|
* @param string $mode Search mode (e.g. "community")
|
2016-04-14 17:05:19 +02:00
|
|
|
* @return array with search results
|
2016-02-01 18:21:29 +01:00
|
|
|
*/
|
2016-02-02 22:33:14 +01:00
|
|
|
public static function global_search_by_name($search, $mode = '') {
|
2016-02-01 18:21:29 +01:00
|
|
|
|
2017-01-26 16:01:56 +01:00
|
|
|
if ($search) {
|
2016-02-01 18:21:29 +01:00
|
|
|
// check supported networks
|
|
|
|
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;
|
|
|
|
|
2016-04-16 15:01:03 +02:00
|
|
|
// check if we search only communities or every contact
|
2017-01-26 16:01:56 +01:00
|
|
|
if ($mode === "community") {
|
2016-02-02 22:33:14 +01:00
|
|
|
$extra_sql = " AND `community`";
|
2017-01-26 16:01:56 +01:00
|
|
|
} else {
|
2016-02-02 22:33:14 +01:00
|
|
|
$extra_sql = "";
|
2017-01-26 16:01:56 +01:00
|
|
|
}
|
2016-02-02 22:33:14 +01:00
|
|
|
|
2016-04-17 13:46:49 +02:00
|
|
|
$search .= "%";
|
|
|
|
|
2016-02-01 18:21:29 +01:00
|
|
|
$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
|
2016-02-03 00:25:33 +01:00
|
|
|
`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`, `gcontact`.`community`
|
2016-02-01 18:21:29 +01:00
|
|
|
FROM `gcontact`
|
|
|
|
LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
|
|
|
|
AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
|
|
|
|
AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
|
|
|
|
WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
|
|
|
|
((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
|
2016-04-17 13:46:49 +02:00
|
|
|
(`gcontact`.`addr` LIKE '%s' OR `gcontact`.`name` LIKE '%s' OR `gcontact`.`nick` LIKE '%s') $extra_sql
|
2016-02-01 18:21:29 +01:00
|
|
|
GROUP BY `gcontact`.`nurl`
|
2016-04-16 15:01:03 +02:00
|
|
|
ORDER BY `gcontact`.`nurl` DESC
|
2016-04-17 13:46:49 +02:00
|
|
|
LIMIT 1000",
|
2016-02-01 18:21:29 +01:00
|
|
|
intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
|
|
|
|
dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
|
2016-04-16 15:01:03 +02:00
|
|
|
dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)));
|
2016-04-14 17:05:19 +02:00
|
|
|
|
2016-02-01 18:21:29 +01:00
|
|
|
return $results;
|
|
|
|
}
|
|
|
|
|
2016-01-20 03:34:22 +01:00
|
|
|
}
|
2016-02-01 18:21:29 +01:00
|
|
|
}
|