return DBA::update('contact', $fields, $condition, $old_fields);
}
+ /**
+ * @param integer $id Contact ID
+ * @param array $fields Array of selected fields, empty for all
+ * @return array|boolean Contact record if it exists, false otherwise
+ * @throws \Exception
+ */
+ public static function getAccountById(int $id, array $fields = [])
+ {
+ return DBA::selectFirst('account-user-view', $fields, ['id' => $id]);
+ }
+
/**
* @param integer $id Contact ID
* @param array $fields Array of selected fields, empty for all
if ($default_avatar && Proxy::isLocalImage($avatar)) {
$fields = [
- 'avatar' => $avatar, 'avatar-date' => DateTimeFormat::utcNow(),
+ 'avatar' => $avatar,
+ 'avatar-date' => DateTimeFormat::utcNow(),
'photo' => $avatar,
'thumb' => self::getDefaultAvatar($contact, Proxy::SIZE_THUMB),
'micro' => self::getDefaultAvatar($contact, Proxy::SIZE_MICRO)
throw new NotFoundException($this->t('Contact not found.'));
}
- $contact = Model\Contact::getById($pcid);
+ $contact = Model\Contact::getAccountById($pcid);
if (empty($contact)) {
throw new NotFoundException($this->t('Contact not found.'));
}
Nav::setSelected('contact');
- $options = [
- 'lockstate' => ACL::getLockstateForUserId($this->userSession->getLocalUserId()) ? 'lock' : 'unlock',
- 'acl' => ACL::getFullSelectorHTML($this->page, $this->userSession->getLocalUserId(), true, []),
- 'bang' => '',
- 'content' => ($contact['contact-type'] == ModelContact::TYPE_COMMUNITY ? '!' : '@') . ($contact['addr'] ?: $contact['url']),
- ];
- $o = $this->conversation->statusEditor($options);
+ if (!$contact['ap-posting-restricted']) {
+ $options = [
+ 'lockstate' => ACL::getLockstateForUserId($this->userSession->getLocalUserId()) ? 'lock' : 'unlock',
+ 'acl' => ACL::getFullSelectorHTML($this->page, $this->userSession->getLocalUserId(), true, []),
+ 'bang' => '',
+ 'content' => ($contact['contact-type'] == ModelContact::TYPE_COMMUNITY ? '!' : '@') . ($contact['addr'] ?: $contact['url']),
+ ];
+ $o = $this->conversation->statusEditor($options);
+ }
$o .= Contact::getTabsHTML($contact, Contact::TAB_CONVERSATIONS);
$o .= Model\Contact::getThreadsFromId($contact['id'], $this->userSession->getLocalUserId(), 0, 0, $request['last_created'] ?? '');
switch ($type) {
case self::TYPE_MENTION_CONTACT_CIRCLE:
$condition = DBA::mergeConditions($condition,
- ["NOT `self` AND NOT `blocked` AND `notify` != ? AND `network` != ?", '', Protocol::OSTATUS
+ ["NOT `self` AND NOT `blocked` AND `network` != ?", Protocol::OSTATUS
]);
break;
case self::TYPE_MENTION_CONTACT:
$condition = DBA::mergeConditions($condition,
- ["NOT `self` AND NOT `blocked` AND `notify` != ?", ''
+ ["NOT `self` AND NOT `blocked`",
]);
break;
case self::TYPE_MENTION_GROUP:
$condition = DBA::mergeConditions($condition,
- ["NOT `self` AND NOT `blocked` AND `notify` != ? AND `contact-type` = ?", '', Contact::TYPE_COMMUNITY
+ ["NOT `self` AND NOT `blocked` AND (NOT `ap-posting-restricted` OR `ap-posting-restricted` IS NULL) AND `contact-type` = ?", Contact::TYPE_COMMUNITY
]);
break;
case self::TYPE_PRIVATE_MESSAGE:
$condition = DBA::mergeConditions($condition,
- ["NOT `self` AND NOT `blocked` AND `notify` != ? AND `network` IN (?, ?, ?)", '', Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA
+ ["NOT `self` AND NOT `blocked` AND `network` IN (?, ?, ?)", Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA
]);
break;
}
- $contact_count = $this->database->count('contact', $condition);
+ $contact_count = $this->database->count('account-user-view', $condition);
$resultTotal = $circle_count + $contact_count;
$contacts = [];
if ($type != self::TYPE_MENTION_CIRCLE) {
- $contacts = Contact::selectToArray([], $condition, ['order' => ['name']]);
+ $contacts = Contact::selectAccountToArray([], $condition, ['order' => ['name']]);
}
$groups = [];