Replace the legacy function
This commit is contained in:
parent
ee2b249d00
commit
41dc6cea2b
4 changed files with 22 additions and 126 deletions
|
@ -92,11 +92,13 @@ class Widget
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return unavailable networks as array
|
* Return unavailable networks as array
|
||||||
|
*
|
||||||
|
* @return array Unsupported networks
|
||||||
*/
|
*/
|
||||||
public static function unavailableNetworksAsArray()
|
public static function unavailableNetworks()
|
||||||
{
|
{
|
||||||
// Always hide content from these networks
|
// Always hide content from these networks
|
||||||
$networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET];
|
$networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET, Protocol::ZOT];
|
||||||
|
|
||||||
if (!Addon::isEnabled("discourse")) {
|
if (!Addon::isEnabled("discourse")) {
|
||||||
$networks[] = Protocol::DISCOURSE;
|
$networks[] = Protocol::DISCOURSE;
|
||||||
|
@ -128,24 +130,6 @@ class Widget
|
||||||
return $networks;
|
return $networks;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return unavailable networks
|
|
||||||
*/
|
|
||||||
public static function unavailableNetworks()
|
|
||||||
{
|
|
||||||
$networks = self::unavailableNetworksAsArray();
|
|
||||||
|
|
||||||
if (!sizeof($networks)) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$network_filter = implode("','", $networks);
|
|
||||||
|
|
||||||
$network_filter = "AND `network` NOT IN ('$network_filter')";
|
|
||||||
|
|
||||||
return $network_filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a generic filter widget based on a list of options
|
* Display a generic filter widget based on a list of options
|
||||||
*
|
*
|
||||||
|
@ -274,10 +258,12 @@ class Widget
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$extra_sql = self::unavailableNetworks();
|
$networks = self::unavailableNetworks();
|
||||||
|
$extra_sql = " AND NOT `network` IN (" . substr(str_repeat("?, ", count($networks)), 0, -2) . ")";
|
||||||
|
$sql_values = array_merge([local_user()], $networks);
|
||||||
|
|
||||||
$r = DBA::p("SELECT `network` FROM `contact` WHERE `uid` = ? AND NOT `deleted` AND `network` != '' $extra_sql GROUP BY `network` ORDER BY `network`",
|
$r = DBA::p("SELECT `network` FROM `contact` WHERE `uid` = ? AND NOT `deleted` AND `network` != '' $extra_sql GROUP BY `network` ORDER BY `network`",
|
||||||
local_user()
|
$sql_values
|
||||||
);
|
);
|
||||||
|
|
||||||
$nets = array();
|
$nets = array();
|
||||||
|
|
|
@ -664,42 +664,25 @@ class Contact extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($group) {
|
if ($group) {
|
||||||
$sql_extra = " AND EXISTS(SELECT `id` FROM `group_member` WHERE `gid` = ? AND `contact`.`id` = `contact-id`)";
|
$sql_extra .= " AND EXISTS(SELECT `id` FROM `group_member` WHERE `gid` = ? AND `contact`.`id` = `contact-id`)";
|
||||||
$sql_values[] = $group;
|
$sql_values[] = $group;
|
||||||
}
|
}
|
||||||
|
|
||||||
$total = 0;
|
$networks = Widget::unavailableNetworks();
|
||||||
$stmt = DBA::p("SELECT COUNT(*) AS `total`
|
$sql_extra .= " AND NOT `network` IN (" . substr(str_repeat("?, ", count($networks)), 0, -2) . ")";
|
||||||
FROM `contact`
|
$sql_values = array_merge($sql_values, $networks);
|
||||||
WHERE `uid` = ?
|
|
||||||
AND `self` = 0
|
$condition = ["`uid` = ? AND NOT `self` AND NOT `deleted`" . $sql_extra];
|
||||||
AND NOT `deleted`
|
$condition = array_merge($condition, $sql_values);
|
||||||
$sql_extra
|
|
||||||
" . Widget::unavailableNetworks(),
|
$total = DBA::count('contact', $condition);
|
||||||
$sql_values
|
|
||||||
);
|
|
||||||
if (DBA::isResult($stmt)) {
|
|
||||||
$total = DBA::fetch($stmt)['total'];
|
|
||||||
}
|
|
||||||
DBA::close($stmt);
|
|
||||||
|
|
||||||
$pager = new Pager(DI::l10n(), DI::args()->getQueryString());
|
$pager = new Pager(DI::l10n(), DI::args()->getQueryString());
|
||||||
|
|
||||||
$sql_values[] = $pager->getStart();
|
|
||||||
$sql_values[] = $pager->getItemsPerPage();
|
|
||||||
|
|
||||||
$contacts = [];
|
$contacts = [];
|
||||||
|
|
||||||
$stmt = DBA::p("SELECT *
|
$stmt = DBA::select('contact', [], $condition, ['order' => ['name'], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]]);
|
||||||
FROM `contact`
|
|
||||||
WHERE `uid` = ?
|
|
||||||
AND `self` = 0
|
|
||||||
AND NOT `deleted`
|
|
||||||
$sql_extra
|
|
||||||
ORDER BY `name` ASC
|
|
||||||
LIMIT ?, ?",
|
|
||||||
$sql_values
|
|
||||||
);
|
|
||||||
while ($contact = DBA::fetch($stmt)) {
|
while ($contact = DBA::fetch($stmt)) {
|
||||||
$contact['blocked'] = Model\Contact\User::isBlocked($contact['id'], local_user());
|
$contact['blocked'] = Model\Contact\User::isBlocked($contact['id'], local_user());
|
||||||
$contact['readonly'] = Model\Contact\User::isIgnored($contact['id'], local_user());
|
$contact['readonly'] = Model\Contact\User::isIgnored($contact['id'], local_user());
|
||||||
|
|
|
@ -130,10 +130,8 @@ class Acl extends BaseModule
|
||||||
$group_count = DBA::count('group', $condition_group);
|
$group_count = DBA::count('group', $condition_group);
|
||||||
}
|
}
|
||||||
|
|
||||||
$networks = Widget::unavailableNetworksAsArray();
|
$networks = Widget::unavailableNetworks();
|
||||||
if (!empty($networks)) {
|
$condition = DBA::mergeConditions($condition, array_merge(["NOT `network` IN (" . substr(str_repeat("?, ", count($networks)), 0, -2) . ")"], $networks));
|
||||||
$condition = DBA::mergeConditions($condition, array_merge(["NOT `network` IN (" . substr(str_repeat("?, ", count($networks)), 0, -2) . ")"], $networks));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case self::TYPE_MENTION_CONTACT_GROUP:
|
case self::TYPE_MENTION_CONTACT_GROUP:
|
||||||
|
|
|
@ -55,7 +55,6 @@ function frio_install()
|
||||||
Hook::register('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu');
|
Hook::register('item_photo_menu', 'view/theme/frio/theme.php', 'frio_item_photo_menu');
|
||||||
Hook::register('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu');
|
Hook::register('contact_photo_menu', 'view/theme/frio/theme.php', 'frio_contact_photo_menu');
|
||||||
Hook::register('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav');
|
Hook::register('nav_info', 'view/theme/frio/theme.php', 'frio_remote_nav');
|
||||||
Hook::register('acl_lookup_end', 'view/theme/frio/theme.php', 'frio_acl_lookup');
|
|
||||||
Hook::register('display_item', 'view/theme/frio/theme.php', 'frio_display_item');
|
Hook::register('display_item', 'view/theme/frio/theme.php', 'frio_display_item');
|
||||||
|
|
||||||
Logger::log('installed theme frio');
|
Logger::log('installed theme frio');
|
||||||
|
@ -239,76 +238,6 @@ function frio_remote_nav(App $a, array &$nav_info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Search for contacts
|
|
||||||
*
|
|
||||||
* This function search for a users contacts. The code is copied from contact search
|
|
||||||
* in /src/Module/Contact.php. With this function the contacts will permitted to acl_lookup()
|
|
||||||
* and can grabbed as json. For this we use the type="r". This is usful to to let js
|
|
||||||
* grab the contact data.
|
|
||||||
* We use this to give the data to textcomplete and have a filter function at the
|
|
||||||
* contact page.
|
|
||||||
*
|
|
||||||
* @todo Is this function still in use?
|
|
||||||
*
|
|
||||||
* @param App $a The app data @TODO Unused
|
|
||||||
* @param array $results The array with the originals from acl_lookup()
|
|
||||||
*/
|
|
||||||
function frio_acl_lookup(App $a, &$results)
|
|
||||||
{
|
|
||||||
$nets = !empty($_GET['nets']) ? Strings::escapeTags(trim($_GET['nets'])) : '';
|
|
||||||
|
|
||||||
// we introduce a new search type, r should do the same query like it's
|
|
||||||
// done in /src/Module/Contact.php for connections
|
|
||||||
if ($results['type'] !== 'r') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql_extra = '';
|
|
||||||
if ($results['search']) {
|
|
||||||
$search_txt = DBA::escape(Strings::protectSprintf(preg_quote($results['search'])));
|
|
||||||
$sql_extra .= " AND (`attag` LIKE '%%" . $search_txt . "%%' OR `name` LIKE '%%" . $search_txt . "%%' OR `nick` LIKE '%%" . $search_txt . "%%') ";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($nets) {
|
|
||||||
$sql_extra .= sprintf(" AND network = '%s' ", DBA::escape($nets));
|
|
||||||
}
|
|
||||||
|
|
||||||
$total = 0;
|
|
||||||
$r = DBA::fetchFirst("SELECT COUNT(*) AS `total` FROM `contact`
|
|
||||||
WHERE `uid` = ? AND NOT `self` AND NOT `deleted` AND NOT `pending` $sql_extra ", $_SESSION['uid']);
|
|
||||||
if (DBA::isResult($r)) {
|
|
||||||
$total = $r['total'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql_extra3 = Widget::unavailableNetworks();
|
|
||||||
|
|
||||||
$r = DBA::toArray(DBA::p("SELECT * FROM `contact` WHERE `uid` = ? AND NOT `self` AND NOT `deleted` AND NOT `pending` $sql_extra $sql_extra3 ORDER BY `name` ASC LIMIT ?, ? ",
|
|
||||||
$_SESSION['uid'], $results['start'], $results['count']
|
|
||||||
));
|
|
||||||
|
|
||||||
$contacts = [];
|
|
||||||
|
|
||||||
if (DBA::isResult($r)) {
|
|
||||||
foreach ($r as $rr) {
|
|
||||||
$contacts[] = Module\Contact::getContactTemplateVars($rr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$results['items'] = $contacts;
|
|
||||||
$results['tot'] = $total;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Manipulate the data of the item
|
|
||||||
*
|
|
||||||
* At the moment we use this function to add some own stuff to the item menu
|
|
||||||
*
|
|
||||||
* @param App $a App $a The app data
|
|
||||||
* @param array $arr Array with the item and the item actions<br>
|
|
||||||
* 'item' => Array with item data<br>
|
|
||||||
* 'output' => Array with item actions<br>
|
|
||||||
*/
|
|
||||||
function frio_display_item(App $a, &$arr)
|
function frio_display_item(App $a, &$arr)
|
||||||
{
|
{
|
||||||
// Add follow to the item menu
|
// Add follow to the item menu
|
||||||
|
|
Loading…
Reference in a new issue