summaryrefslogtreecommitdiff
path: root/actions
diff options
context:
space:
mode:
Diffstat (limited to 'actions')
-rw-r--r--actions/apigroupcreate.php8
-rw-r--r--actions/apigrouplistall.php10
-rw-r--r--actions/apistatusnetconfig.php2
-rw-r--r--actions/apitimelinegroup.php18
-rw-r--r--actions/apitimelineuser.php19
-rw-r--r--actions/blockedfromgroup.php9
-rw-r--r--actions/editgroup.php17
-rw-r--r--actions/foafgroup.php17
-rw-r--r--actions/groupdesignsettings.php5
-rw-r--r--actions/grouplogo.php5
-rw-r--r--actions/groupmembers.php9
-rw-r--r--actions/grouprss.php9
-rw-r--r--actions/groups.php18
-rw-r--r--actions/hcard.php120
-rw-r--r--actions/joingroup.php32
-rw-r--r--actions/leavegroup.php32
-rw-r--r--actions/newgroup.php10
-rw-r--r--actions/showgroup.php10
-rw-r--r--actions/subscribe.php2
-rw-r--r--actions/twitapisearchatom.php2
-rw-r--r--actions/twitapisearchjson.php1
-rw-r--r--actions/twitapitrends.php2
22 files changed, 266 insertions, 91 deletions
diff --git a/actions/apigroupcreate.php b/actions/apigroupcreate.php
index 028d76a78..145806356 100644
--- a/actions/apigroupcreate.php
+++ b/actions/apigroupcreate.php
@@ -123,7 +123,9 @@ class ApiGroupCreateAction extends ApiAuthAction
'description' => $this->description,
'location' => $this->location,
'aliases' => $this->aliases,
- 'userid' => $this->user->id));
+ 'userid' => $this->user->id,
+ 'local' => true));
+
switch($this->format) {
case 'xml':
$this->showSingleXmlGroup($group);
@@ -306,9 +308,9 @@ class ApiGroupCreateAction extends ApiAuthAction
function groupNicknameExists($nickname)
{
- $group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
- if (!empty($group)) {
+ if (!empty($local)) {
return true;
}
diff --git a/actions/apigrouplistall.php b/actions/apigrouplistall.php
index d2ef2978a..e1b54a832 100644
--- a/actions/apigrouplistall.php
+++ b/actions/apigrouplistall.php
@@ -134,13 +134,13 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
function getGroups()
{
- $groups = array();
-
- // XXX: Use the $page, $count, $max_id, $since_id, and $since parameters
+ $qry = 'SELECT user_group.* '.
+ 'from user_group join local_group on user_group.id = local_group.group_id '.
+ 'order by created desc ';
$group = new User_group();
- $group->orderBy('created DESC');
- $group->find();
+
+ $group->query($qry);
while ($group->fetch()) {
$groups[] = clone($group);
diff --git a/actions/apistatusnetconfig.php b/actions/apistatusnetconfig.php
index 0345a9bc0..bff8313b5 100644
--- a/actions/apistatusnetconfig.php
+++ b/actions/apistatusnetconfig.php
@@ -32,8 +32,6 @@ if (!defined('STATUSNET')) {
exit(1);
}
-require_once INSTALLDIR . '/lib/api.php';
-
/**
* Gives a full dump of configuration variables for this instance
* of StatusNet, minus variables that may be security-sensitive (like
diff --git a/actions/apitimelinegroup.php b/actions/apitimelinegroup.php
index 0bb4860ea..04456ffea 100644
--- a/actions/apitimelinegroup.php
+++ b/actions/apitimelinegroup.php
@@ -107,8 +107,6 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
$sitename = common_config('site', 'name');
$avatar = $this->group->homepage_logo;
$title = sprintf(_("%s timeline"), $this->group->nickname);
- $taguribase = TagURI::base();
- $id = "tag:$taguribase:GroupTimeline:" . $this->group->id;
$subtitle = sprintf(
_('Updates from %1$s on %2$s!'),
@@ -138,19 +136,9 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
try {
- // If this was called using an integer ID, i.e.: using the canonical
- // URL for this group's feed, then pass the Group object into the feed,
- // so the OStatus plugin, and possibly other plugins, can access it.
- // Feels sorta hacky. -- Z
+ $atom = new AtomGroupNoticeFeed($this->group);
- $atom = null;
- $id = $this->arg('id');
-
- if (strval(intval($id)) === strval($id)) {
- $atom = new AtomGroupNoticeFeed($this->group);
- } else {
- $atom = new AtomGroupNoticeFeed();
- }
+ // @todo set all this Atom junk up inside the feed class
$atom->setId($id);
$atom->setTitle($title);
@@ -169,6 +157,8 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
$aargs['id'] = $id;
}
+ $atom->setId($this->getSelfUri('ApiTimelineGroup', $aargs));
+
$atom->addLink(
$this->getSelfUri('ApiTimelineGroup', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
diff --git a/actions/apitimelineuser.php b/actions/apitimelineuser.php
index 3e849cc78..b3ded97c0 100644
--- a/actions/apitimelineuser.php
+++ b/actions/apitimelineuser.php
@@ -116,8 +116,6 @@ class ApiTimelineUserAction extends ApiBareAuthAction
$sitename = common_config('site', 'name');
$title = sprintf(_("%s timeline"), $this->user->nickname);
- $taguribase = TagURI::base();
- $id = "tag:$taguribase:UserTimeline:" . $this->user->id;
$link = common_local_url(
'showstream',
array('nickname' => $this->user->nickname)
@@ -148,21 +146,10 @@ class ApiTimelineUserAction extends ApiBareAuthAction
header('Content-Type: application/atom+xml; charset=utf-8');
- // If this was called using an integer ID, i.e.: using the canonical
- // URL for this user's feed, then pass the User object into the feed,
- // so the OStatus plugin, and possibly other plugins, can access it.
- // Feels sorta hacky. -- Z
+ // @todo set all this Atom junk up inside the feed class
- $atom = null;
- $id = $this->arg('id');
-
- if (strval(intval($id)) === strval($id)) {
- $atom = new AtomUserNoticeFeed($this->user);
- } else {
- $atom = new AtomUserNoticeFeed();
- }
+ $atom = new AtomUserNoticeFeed($this->user);
- $atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
@@ -181,6 +168,8 @@ class ApiTimelineUserAction extends ApiBareAuthAction
$aargs['id'] = $id;
}
+ $atom->setId($this->getSelfUri('ApiTimelineUser', $aargs));
+
$atom->addLink(
$this->getSelfUri('ApiTimelineUser', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
diff --git a/actions/blockedfromgroup.php b/actions/blockedfromgroup.php
index 0b4caf5bf..a0598db27 100644
--- a/actions/blockedfromgroup.php
+++ b/actions/blockedfromgroup.php
@@ -74,7 +74,14 @@ class BlockedfromgroupAction extends GroupDesignAction
return false;
}
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+
+ if (!$local) {
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
+
+ $this->group = User_group::staticGet('id', $local->group_id);
if (!$this->group) {
$this->clientError(_('No such group.'), 404);
diff --git a/actions/editgroup.php b/actions/editgroup.php
index ad0b6e185..4b596cade 100644
--- a/actions/editgroup.php
+++ b/actions/editgroup.php
@@ -86,10 +86,14 @@ class EditgroupAction extends GroupDesignAction
}
$groupid = $this->trimmed('groupid');
+
if ($groupid) {
$this->group = User_group::staticGet('id', $groupid);
} else {
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+ if ($local) {
+ $this->group = User_group::staticGet('id', $local->group_id);
+ }
}
if (!$this->group) {
@@ -245,6 +249,7 @@ class EditgroupAction extends GroupDesignAction
$this->group->homepage = $homepage;
$this->group->description = $description;
$this->group->location = $location;
+ $this->group->mainpage = common_local_url('showgroup', array('nickname' => $nickname));
$result = $this->group->update($orig);
@@ -259,6 +264,12 @@ class EditgroupAction extends GroupDesignAction
$this->serverError(_('Could not create aliases.'));
}
+ if ($nickname != $orig->nickname) {
+ common_log(LOG_INFO, "Saving local group info.");
+ $local = Local_group::staticGet('group_id', $this->group->id);
+ $local->setNickname($nickname);
+ }
+
$this->group->query('COMMIT');
if ($this->group->nickname != $orig->nickname) {
@@ -272,10 +283,10 @@ class EditgroupAction extends GroupDesignAction
function nicknameExists($nickname)
{
- $group = User_group::staticGet('nickname', $nickname);
+ $group = Local_group::staticGet('nickname', $nickname);
if (!empty($group) &&
- $group->id != $this->group->id) {
+ $group->group_id != $this->group->id) {
return true;
}
diff --git a/actions/foafgroup.php b/actions/foafgroup.php
index f5fd7fe88..ebdf1cee2 100644
--- a/actions/foafgroup.php
+++ b/actions/foafgroup.php
@@ -56,7 +56,14 @@ class FoafGroupAction extends Action
return false;
}
- $this->group = User_group::staticGet('nickname', $this->nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+
+ if (!$local) {
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
+
+ $this->group = User_group::staticGet('id', $local->group_id);
if (!$this->group) {
$this->clientError(_('No such group.'), 404);
@@ -113,7 +120,7 @@ class FoafGroupAction extends Action
if ($this->group->homepage_logo) {
$this->element('depiction', array('rdf:resource' => $this->group->homepage_logo));
}
-
+
$members = $this->group->getMembers();
$member_details = array();
while ($members->fetch()) {
@@ -123,7 +130,7 @@ class FoafGroupAction extends Action
);
$this->element('member', array('rdf:resource' => $member_uri));
}
-
+
$admins = $this->group->getAdmins();
while ($admins->fetch()) {
$admin_uri = common_local_url('userbyid', array('id'=>$admins->id));
@@ -132,7 +139,7 @@ class FoafGroupAction extends Action
}
$this->elementEnd('Group');
-
+
ksort($member_details);
foreach ($member_details as $uri => $details) {
if ($details['is_admin'])
@@ -158,7 +165,7 @@ class FoafGroupAction extends Action
));
}
}
-
+
$this->elementEnd('rdf:RDF');
$this->endXML();
}
diff --git a/actions/groupdesignsettings.php b/actions/groupdesignsettings.php
index e290ba514..526226a28 100644
--- a/actions/groupdesignsettings.php
+++ b/actions/groupdesignsettings.php
@@ -90,7 +90,10 @@ class GroupDesignSettingsAction extends DesignSettingsAction
if ($groupid) {
$this->group = User_group::staticGet('id', $groupid);
} else {
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+ if ($local) {
+ $this->group = User_group::staticGet('id', $local->group_id);
+ }
}
if (!$this->group) {
diff --git a/actions/grouplogo.php b/actions/grouplogo.php
index 3c9b56296..f414a23cc 100644
--- a/actions/grouplogo.php
+++ b/actions/grouplogo.php
@@ -92,7 +92,10 @@ class GrouplogoAction extends GroupDesignAction
if ($groupid) {
$this->group = User_group::staticGet('id', $groupid);
} else {
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+ if ($local) {
+ $this->group = User_group::staticGet('id', $local->group_id);
+ }
}
if (!$this->group) {
diff --git a/actions/groupmembers.php b/actions/groupmembers.php
index f16e972a4..a16debd7b 100644
--- a/actions/groupmembers.php
+++ b/actions/groupmembers.php
@@ -77,7 +77,14 @@ class GroupmembersAction extends GroupDesignAction
return false;
}
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+
+ if (!$local) {
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
+
+ $this->group = User_group::staticGet('id', $local->group_id);
if (!$this->group) {
$this->clientError(_('No such group.'), 404);
diff --git a/actions/grouprss.php b/actions/grouprss.php
index 866fc66eb..490f6f945 100644
--- a/actions/grouprss.php
+++ b/actions/grouprss.php
@@ -92,7 +92,14 @@ class groupRssAction extends Rss10Action
return false;
}
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+
+ if (!$local) {
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
+
+ $this->group = User_group::staticGet('id', $local->group_id);
if (!$this->group) {
$this->clientError(_('No such group.'), 404);
diff --git a/actions/groups.php b/actions/groups.php
index 10a1d5964..8aacff8b0 100644
--- a/actions/groups.php
+++ b/actions/groups.php
@@ -109,17 +109,21 @@ class GroupsAction extends Action
}
$offset = ($this->page-1) * GROUPS_PER_PAGE;
- $limit = GROUPS_PER_PAGE + 1;
+ $limit = GROUPS_PER_PAGE + 1;
+
+ $qry = 'SELECT user_group.* '.
+ 'from user_group join local_group on user_group.id = local_group.group_id '.
+ 'order by user_group.created desc '.
+ 'limit ' . $limit . ' offset ' . $offset;
$groups = new User_group();
- $groups->orderBy('created DESC');
- $groups->limit($offset, $limit);
$cnt = 0;
- if ($groups->find()) {
- $gl = new GroupList($groups, null, $this);
- $cnt = $gl->show();
- }
+
+ $groups->query($qry);
+
+ $gl = new GroupList($groups, null, $this);
+ $cnt = $gl->show();
$this->pagination($this->page > 1, $cnt > GROUPS_PER_PAGE,
$this->page, 'groups');
diff --git a/actions/hcard.php b/actions/hcard.php
new file mode 100644
index 000000000..55d0f65c8
--- /dev/null
+++ b/actions/hcard.php
@@ -0,0 +1,120 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Show the user's hcard
+ *
+ * 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 Personal
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * User profile page
+ *
+ * @category Personal
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link http://status.net/
+ */
+
+class HcardAction extends Action
+{
+ var $user;
+ var $profile;
+
+ function prepare($args)
+ {
+ parent::prepare($args);
+
+ $nickname_arg = $this->arg('nickname');
+ $nickname = common_canonical_nickname($nickname_arg);
+
+ // Permanent redirect on non-canonical nickname
+
+ if ($nickname_arg != $nickname) {
+ $args = array('nickname' => $nickname);
+ common_redirect(common_local_url('hcard', $args), 301);
+ return false;
+ }
+
+ $this->user = User::staticGet('nickname', $nickname);
+
+ if (!$this->user) {
+ $this->clientError(_('No such user.'), 404);
+ return false;
+ }
+
+ $this->profile = $this->user->getProfile();
+
+ if (!$this->profile) {
+ $this->serverError(_('User has no profile.'));
+ return false;
+ }
+
+ return true;
+ }
+
+ function handle($args)
+ {
+ parent::handle($args);
+ $this->showPage();
+ }
+
+ function title()
+ {
+ return $this->profile->getBestName();
+ }
+
+ function showContent()
+ {
+ $up = new ShortUserProfile($this, $this->user, $this->profile);
+ $up->show();
+ }
+
+ function showHeader()
+ {
+ return;
+ }
+
+ function showAside()
+ {
+ return;
+ }
+
+ function showSecondaryNav()
+ {
+ return;
+ }
+}
+
+class ShortUserProfile extends UserProfile
+{
+ function showEntityActions()
+ {
+ return;
+ }
+} \ No newline at end of file
diff --git a/actions/joingroup.php b/actions/joingroup.php
index 235e5ab4c..f87e5dae2 100644
--- a/actions/joingroup.php
+++ b/actions/joingroup.php
@@ -62,23 +62,33 @@ class JoingroupAction extends Action
}
$nickname_arg = $this->trimmed('nickname');
- $nickname = common_canonical_nickname($nickname_arg);
+ $id = intval($this->arg('id'));
+ if ($id) {
+ $this->group = User_group::staticGet('id', $id);
+ } else if ($nickname_arg) {
+ $nickname = common_canonical_nickname($nickname_arg);
+
+ // Permanent redirect on non-canonical nickname
+
+ if ($nickname_arg != $nickname) {
+ $args = array('nickname' => $nickname);
+ common_redirect(common_local_url('leavegroup', $args), 301);
+ return false;
+ }
- // Permanent redirect on non-canonical nickname
+ $local = Local_group::staticGet('nickname', $nickname);
- if ($nickname_arg != $nickname) {
- $args = array('nickname' => $nickname);
- common_redirect(common_local_url('joingroup', $args), 301);
- return false;
- }
+ if (!$local) {
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
- if (!$nickname) {
- $this->clientError(_('No nickname.'), 404);
+ $this->group = User_group::staticGet('id', $local->group_id);
+ } else {
+ $this->clientError(_('No nickname or ID.'), 404);
return false;
}
- $this->group = User_group::staticGet('nickname', $nickname);
-
if (!$this->group) {
$this->clientError(_('No such group.'), 404);
return false;
diff --git a/actions/leavegroup.php b/actions/leavegroup.php
index 9b9d83b6c..329b5aafe 100644
--- a/actions/leavegroup.php
+++ b/actions/leavegroup.php
@@ -62,23 +62,33 @@ class LeavegroupAction extends Action
}
$nickname_arg = $this->trimmed('nickname');
- $nickname = common_canonical_nickname($nickname_arg);
+ $id = intval($this->arg('id'));
+ if ($id) {
+ $this->group = User_group::staticGet('id', $id);
+ } else if ($nickname_arg) {
+ $nickname = common_canonical_nickname($nickname_arg);
+
+ // Permanent redirect on non-canonical nickname
+
+ if ($nickname_arg != $nickname) {
+ $args = array('nickname' => $nickname);
+ common_redirect(common_local_url('leavegroup', $args), 301);
+ return false;
+ }
- // Permanent redirect on non-canonical nickname
+ $local = Local_group::staticGet('nickname', $nickname);
- if ($nickname_arg != $nickname) {
- $args = array('nickname' => $nickname);
- common_redirect(common_local_url('leavegroup', $args), 301);
- return false;
- }
+ if (!$local) {
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
- if (!$nickname) {
- $this->clientError(_('No nickname.'), 404);
+ $this->group = User_group::staticGet('id', $local->group_id);
+ } else {
+ $this->clientError(_('No nickname or ID.'), 404);
return false;
}
- $this->group = User_group::staticGet('nickname', $nickname);
-
if (!$this->group) {
$this->clientError(_('No such group.'), 404);
return false;
diff --git a/actions/newgroup.php b/actions/newgroup.php
index 25da7f8fc..75bc293ec 100644
--- a/actions/newgroup.php
+++ b/actions/newgroup.php
@@ -180,6 +180,8 @@ class NewgroupAction extends Action
}
}
+ $mainpage = common_local_url('showgroup', array('nickname' => $nickname));
+
$cur = common_current_user();
// Checked in prepare() above
@@ -192,16 +194,18 @@ class NewgroupAction extends Action
'description' => $description,
'location' => $location,
'aliases' => $aliases,
- 'userid' => $cur->id));
+ 'userid' => $cur->id,
+ 'mainpage' => $mainpage,
+ 'local' => true));
common_redirect($group->homeUrl(), 303);
}
function nicknameExists($nickname)
{
- $group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
- if (!empty($group)) {
+ if (!empty($local)) {
return true;
}
diff --git a/actions/showgroup.php b/actions/showgroup.php
index eb1238902..0139ba157 100644
--- a/actions/showgroup.php
+++ b/actions/showgroup.php
@@ -122,7 +122,15 @@ class ShowgroupAction extends GroupDesignAction
return false;
}
- $this->group = User_group::staticGet('nickname', $nickname);
+ $local = Local_group::staticGet('nickname', $nickname);
+
+ if (!$local) {
+ common_log(LOG_NOTICE, "Couldn't find local group for nickname '$nickname'");
+ $this->clientError(_('No such group.'), 404);
+ return false;
+ }
+
+ $this->group = User_group::staticGet('id', $local->group_id);
if (!$this->group) {
$alias = Group_alias::staticGet('alias', $nickname);
diff --git a/actions/subscribe.php b/actions/subscribe.php
index 3745311b6..b1243f393 100644
--- a/actions/subscribe.php
+++ b/actions/subscribe.php
@@ -145,7 +145,7 @@ class SubscribeAction extends Action
$this->element('title', null, _('Subscribed'));
$this->elementEnd('head');
$this->elementStart('body');
- $unsubscribe = new UnsubscribeForm($this, $this->other->getProfile());
+ $unsubscribe = new UnsubscribeForm($this, $this->other);
$unsubscribe->show();
$this->elementEnd('body');
$this->elementEnd('html');
diff --git a/actions/twitapisearchatom.php b/actions/twitapisearchatom.php
index e389ddec8..24aa619bd 100644
--- a/actions/twitapisearchatom.php
+++ b/actions/twitapisearchatom.php
@@ -31,8 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1);
}
-require_once INSTALLDIR.'/lib/api.php';
-
/**
* Action for outputting search results in Twitter compatible Atom
* format.
diff --git a/actions/twitapisearchjson.php b/actions/twitapisearchjson.php
index 741ed78d6..b5c006aa7 100644
--- a/actions/twitapisearchjson.php
+++ b/actions/twitapisearchjson.php
@@ -31,7 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1);
}
-require_once INSTALLDIR.'/lib/api.php';
require_once INSTALLDIR.'/lib/jsonsearchresultslist.php';
/**
diff --git a/actions/twitapitrends.php b/actions/twitapitrends.php
index 779405e6d..5a04569a2 100644
--- a/actions/twitapitrends.php
+++ b/actions/twitapitrends.php
@@ -31,8 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1);
}
-require_once INSTALLDIR.'/lib/api.php';
-
/**
* Returns the top ten queries that are currently trending
*