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;
*/
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
*
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;
}
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)
);
}
if (($r["avatar"] != $avatar) || $force) {
- $photos = Image::importProfilePhoto($avatar, $uid, $cid, true);
+ $photos = Photo::importProfilePhoto($avatar, $uid, $cid, true);
if ($photos) {
dba::update(