X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FModel%2FContact.php;h=1b15f1c76d89faafa38bae7187a7184552962ecd;hb=916236ce2fe2c0e9e48d000c6d665f96fecf00a9;hp=3708603ba33051cd5d2656e5b0f291843bff1ebf;hpb=5ba6c7717a06842c27fec15508ff8cabb3d9a31b;p=friendica.git diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 3708603ba3..1b15f1c76d 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -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(