if ($this->_user === -1) {
$this->_user = User::getKV('id', $this->id);
}
- if (!($this->_user instanceof User)) {
+ if (!$this->_user instanceof User) {
throw new NoSuchUserException(array('id'=>$this->id));
}
return $this->_user;
}
+ protected $_group = -1;
+
+ public function getGroup()
+ {
+ if ($this->_group === -1) {
+ $this->_group = User_group::getKV('profile_id', $this->id);
+ }
+ if (!$this->_group instanceof User_group) {
+ throw new NoSuchGroupException(array('profile_id'=>$this->id));
+ }
+
+ return $this->_group;
+ }
+
+ public function isGroup()
+ {
+ try {
+ $this->getGroup();
+ return true;
+ } catch (NoSuchGroupException $e) {
+ return false;
+ }
+ }
+
public function isLocal()
{
try {
'primary key' => array('id'),
'unique keys' => array(
'user_group_uri_key' => array('uri'),
+// when it's safe and everyone's run upgrade.php 'user_profile_id_key' => array('profile_id'),
),
'foreign keys' => array(
'user_group_id_fkey' => array('profile', array('profile_id' => 'id')),
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * class for an exception when a User_group is not found by certain criteria
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Exception
+ * @package GNUsocial
+ * @author Evan Prodromou <evan@status.net>
+ * @author Mikael Nordfeldth <mmn@hethane.se>
+ * @copyright 2013 Free Software Foundation, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link http://status.net/
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+/**
+ * Class for an exception when a local user is not found by certain criteria
+ *
+ * @category Exception
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @author Mikael Nordfeldth <mmn@hethane.se>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link http://status.net/
+ */
+
+class NoSuchGroupException extends ServerException
+{
+ public $data = array();
+
+ /**
+ * constructor
+ *
+ * @param array $data User_group search criteria
+ */
+
+ public function __construct(array $data)
+ {
+ // filter on unique keys for User_group entries
+ foreach(array('id', 'profile_id') as $key) {
+ if (isset($data[$key]) && !empty($data[$key])) {
+ $this->data[$key] = $data[$key];
+ }
+ }
+
+ // Here we could log the failed lookup
+
+ parent::__construct(_('No such user found.'));
+ }
+}
* @link http://status.net/
*/
-if (!defined('STATUSNET')) {
- exit(1);
-}
+if (!defined('GNUSOCIAL')) { exit(1); }
/**
* Class for an exception when a local user is not found by certain criteria
function showAddressees()
{
- $ga = $this->getGroupAddressees();
$pa = $this->getProfileAddressees();
- $a = array_merge($ga, $pa);
-
- if (!empty($a)) {
+ if (!empty($pa)) {
$this->out->elementStart('span', 'addressees');
$first = true;
- foreach ($a as $addr) {
+ foreach ($pa as $addr) {
if (!$first) {
// TRANS: Separator in profile addressees list.
$this->out->text(_m('SEPARATOR',', '));
}
}
- function getGroupAddressees()
- {
- $ga = array();
-
- $groups = $this->getGroups();
-
- $user = common_current_user();
-
- $streamNicknames = !empty($user) && $user->streamNicknames();
-
- foreach ($groups as $group) {
- $ga[] = array('href' => $group->homeUrl(),
- 'title' => $group->nickname,
- 'class' => 'addressee group',
- 'text' => ($streamNicknames) ? $group->nickname : $group->getBestName());
- }
-
- return $ga;
- }
-
- function getGroups()
- {
- return $this->notice->getGroups();
- }
-
function getProfileAddressees()
{
$pa = array();
- $replies = $this->getReplyProfiles();
+ $attentions = $this->getReplyProfiles();
$user = common_current_user();
$streamNicknames = !empty($user) && $user->streamNicknames();
- foreach ($replies as $reply) {
- $pa[] = array('href' => $reply->profileurl,
- 'title' => $reply->nickname,
- 'class' => 'addressee account',
- 'text' => ($streamNicknames) ? $reply->nickname : $reply->getBestName());
+ foreach ($attentions as $attn) {
+ $class = $attn->isGroup() ? 'group' : 'account';
+ $pa[] = array('href' => $attn->profileurl,
+ 'title' => $attn->nickname,
+ 'class' => "addressee {$class}",
+ 'text' => ($streamNicknames) ? $attn->nickname : $attn->getBestName());
}
return $pa;
========
user*: user part of the jid
server*: server part of the jid
-resource*: resource part of the jid
+resource (gnusocial): resource part of the jid
port (5222): port on which to connect to the server
encryption (true): use encryption on the connection
host (same as server): host to connect to. Usually, you won't set this.