]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Contact.php
Merge pull request #8006 from MrPetovan/bug/7991-remove-group-add-restrictions
[friendica.git] / src / Module / Contact.php
index 2c5428e0b5c90fc9be2f1c2a6b2347190d3f49c3..01af275864480e3f1e708d69b246d8571e6accd6 100644 (file)
@@ -75,7 +75,7 @@ class Contact extends BaseModule
                $a->internalRedirect('contact');
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -240,7 +240,7 @@ class Contact extends BaseModule
                Model\Contact::remove($orig_record['id']);
        }
 
-       public static function content($update = 0)
+       public static function content(array $parameters = [], $update = 0)
        {
                if (!local_user()) {
                        return Login::form($_SERVER['REQUEST_URI']);
@@ -646,21 +646,25 @@ class Contact extends BaseModule
                        return $arr['output'];
                }
 
+               $select_uid = local_user();
+
                // @TODO: Replace with parameter from router
                $type = $a->argv[1] ?? '';
 
                switch ($type) {
                        case 'blocked':
-                               $sql_extra = " AND `blocked`";
+                               $sql_extra = sprintf(" AND EXISTS(SELECT `id` from `user-contact` WHERE `contact`.`id` = `user-contact`.`cid` and `user-contact`.`uid` = %d and `user-contact`.`blocked`)", intval(local_user()));
+                               $select_uid = 0;
                                break;
                        case 'hidden':
-                               $sql_extra = " AND `hidden` AND NOT `blocked`";
+                               $sql_extra = " AND `hidden` AND NOT `blocked` AND NOT `pending`";
                                break;
                        case 'ignored':
-                               $sql_extra = " AND `readonly` AND NOT `blocked`";
+                               $sql_extra = sprintf(" AND EXISTS(SELECT `id` from `user-contact` WHERE `contact`.`id` = `user-contact`.`cid` and `user-contact`.`uid` = %d and `user-contact`.`ignored`)", intval(local_user()));
+                               $select_uid = 0;
                                break;
                        case 'archived':
-                               $sql_extra = " AND `archive` AND NOT `blocked`";
+                               $sql_extra = " AND `archive` AND NOT `blocked` AND NOT `pending`";
                                break;
                        case 'pending':
                                $sql_extra = sprintf(" AND `pending` AND NOT `archive` AND ((`rel` = %d)
@@ -762,21 +766,21 @@ class Contact extends BaseModule
 
                $sql_extra2 = ((($sort_type > 0) && ($sort_type <= Model\Contact::FRIEND)) ? sprintf(" AND `rel` = %d ", intval($sort_type)) : '');
 
+               $sql_extra3 = Widget::unavailableNetworks();
+
                $r = q("SELECT COUNT(*) AS `total` FROM `contact`
-                       WHERE `uid` = %d AND `self` = 0 $sql_extra $sql_extra2 ",
-                       intval($_SESSION['uid'])
+                       WHERE `uid` = %d AND `self` = 0 $sql_extra $sql_extra2 $sql_extra3",
+                       intval($select_uid)
                );
                if (DBA::isResult($r)) {
                        $total = $r[0]['total'];
                }
                $pager = new Pager($a->query_string);
 
-               $sql_extra3 = Widget::unavailableNetworks();
-
                $contacts = [];
 
                $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 $sql_extra $sql_extra2 $sql_extra3 ORDER BY `name` ASC LIMIT %d , %d ",
-                       intval($_SESSION['uid']),
+                       intval($select_uid),
                        $pager->getStart(),
                        $pager->getItemsPerPage()
                );
@@ -926,7 +930,7 @@ class Contact extends BaseModule
                                        'default_location' => $a->user['default-location'],
                                        'nickname' => $a->user['nickname'],
                                        'lockstate' => (is_array($a->user) && (strlen($a->user['allow_cid']) || strlen($a->user['allow_gid']) || strlen($a->user['deny_cid']) || strlen($a->user['deny_gid'])) ? 'lock' : 'unlock'),
-                                       'acl' => ACL::getFullSelectorHTML($a->user, true),
+                                       'acl' => ACL::getFullSelectorHTML($a->page, $a->user, true),
                                        'bang' => '',
                                        'visitor' => 'block',
                                        'profile_uid' => local_user(),