]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Fix docblocks types
[friendica.git] / src / Model / Contact.php
index 3708603ba33051cd5d2656e5b0f291843bff1ebf..1b15f1c76d89faafa38bae7187a7184552962ecd 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBM;
 use Friendica\Network\Probe;
-use Friendica\Object\Image;
+use Friendica\Model\Photo;
 use Friendica\Protocol\Diaspora;
 use Friendica\Protocol\DFRN;
 use Friendica\Protocol\OStatus;
@@ -20,6 +20,7 @@ use Friendica\Protocol\Salmon;
 use dba;
 
 require_once 'boot.php';
+require_once 'include/dba.php';
 require_once 'include/text.php';
 
 /**
@@ -27,6 +28,66 @@ require_once 'include/text.php';
  */
 class Contact extends BaseObject
 {
+       /**
+        * @brief Returns a list of contacts belonging in a group
+        *
+        * @param int $gid
+        * @return array
+        */
+       public static function getByGroupId($gid)
+       {
+               $return = [];
+               if (intval($gid)) {
+                       $stmt = dba::p('SELECT `group_member`.`contact-id`, `contact`.*
+                               FROM `contact`
+                               INNER JOIN `group_member`
+                                       ON `contact`.`id` = `group_member`.`contact-id`
+                               WHERE `gid` = ?
+                               AND `contact`.`uid` = ?
+                               AND NOT `contact`.`self`
+                               AND NOT `contact`.`blocked`
+                               AND NOT `contact`.`pending`
+                               ORDER BY `contact`.`name` ASC',
+                               $gid,
+                               local_user()
+                       );
+                       if (DBM::is_result($stmt)) {
+                               $return = dba::inArray($stmt);
+                       }
+               }
+
+               return $return;
+       }
+
+       /**
+        * @brief Returns the count of OStatus contacts in a group
+        *
+        * @param int $gid
+        * @return int
+        */
+       public static function getOStatusCountByGroupId($gid)
+       {
+               $return = 0;
+               if (intval($gid)) {
+                       $contacts = dba::fetch_first('SELECT COUNT(*) AS `count`
+                               FROM `contact`
+                               INNER JOIN `group_member`
+                                       ON `contact`.`id` = `group_member`.`contact-id`
+                               WHERE `gid` = ?
+                               AND `contact`.`uid` = ?
+                               AND `contact`.`network` = ?
+                               AND `contact`.`notify` != ""',
+                               $gid,
+                               local_user(),
+                               NETWORK_OSTATUS
+                       );
+                       $return = $contacts['count'];
+               }
+
+               return $return;
+       }
+
+
        /**
         * Creates the self-contact for the provided user id
         *
@@ -36,11 +97,11 @@ class Contact extends BaseObject
        public static function createSelfFromUserId($uid)
        {
                // Only create the entry if it doesn't exist yet
-               if (dba::exists('contact', ['uid' => intval($uid), 'self'])) {
+               if (dba::exists('contact', ['uid' => $uid, 'self' => true])) {
                        return true;
                }
 
-               $user = dba::select('user', ['uid', 'username', 'nickname'], ['uid' => intval($uid)], ['limit' => 1]);
+               $user = dba::select('user', ['uid', 'username', 'nickname'], ['uid' => $uid], ['limit' => 1]);
                if (!DBM::is_result($user)) {
                        return false;
                }
@@ -136,7 +197,7 @@ class Contact extends BaseObject
         * up or some other transient event and that there's a possibility we could recover from it.
         *
         * @param array $contact contact to mark for archival
-        * @return type
+        * @return null
         */
        public static function markForArchival(array $contact)
        {
@@ -545,7 +606,9 @@ class Contact extends BaseObject
                        AND NOT `pending`
                        AND `id` NOT IN (
                                SELECT DISTINCT(`contact-id`)
-                               FROM `group_member` WHERE `uid` = %d
+                               FROM `group_member`
+                               INNER JOIN `group` ON `group`.`id` = `group_member`.`gid`
+                               WHERE `group`.`uid` = %d
                        )
                        LIMIT %d, %d", intval($uid), intval($uid), intval($start), intval($count)
                );
@@ -921,7 +984,7 @@ class Contact extends BaseObject
                }
 
                if (($r["avatar"] != $avatar) || $force) {
-                       $photos = Image::importProfilePhoto($avatar, $uid, $cid, true);
+                       $photos = Photo::importProfilePhoto($avatar, $uid, $cid, true);
 
                        if ($photos) {
                                dba::update(