diff --git a/QvitterPlugin.php b/QvitterPlugin.php
index a115df8..8a14f83 100644
--- a/QvitterPlugin.php
+++ b/QvitterPlugin.php
@@ -83,6 +83,9 @@ class QvitterPlugin extends Plugin {
array('action' => 'apiqvitterupdatebackgroundcolor'));
$m->connect('api/qvitter/checklogin.json',
array('action' => 'apiqvitterchecklogin'));
+ $m->connect('api/qvitter/allfollowing/:id.json',
+ array('action' => 'apiqvitterallfollowing',
+ 'id' => Nickname::INPUT_FMT));
$m->connect('api/qvitter/statuses/friends_timeline.json',
array('action' => 'apiqvitterfriends'));
$m->connect('api/qvitter/statuses/friends_timeline/:id.json',
diff --git a/actions/apiqvitterallfollowing.php b/actions/apiqvitterallfollowing.php
new file mode 100644
index 0000000..8b84182
--- /dev/null
+++ b/actions/apiqvitterallfollowing.php
@@ -0,0 +1,140 @@
+ \\\\_\ ·
+ · \\) \____) ·
+ · ·
+ · ·
+ · Qvitter 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 three of the License or (at ·
+ · your option) any later version. ·
+ · ·
+ · Qvitter is distributed in hope that it will be useful but WITHOUT ANY ·
+ · WARRANTY; without even the implied warranty of MERCHANTABILTY 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 Qvitter. If not, see . ·
+ · ·
+ · Contact h@nnesmannerhe.im if you have any questions. ·
+ · ·
+ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · */
+
+
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class ApiQvitterAllFollowingAction extends ApiBareAuthAction
+{
+
+ var $profiles = null;
+ var $users_stripped = null;
+
+ /**
+ * Take arguments for running
+ *
+ * @param array $args $_REQUEST args
+ *
+ * @return boolean success flag
+ */
+ protected function prepare(array $args=array())
+ {
+ parent::prepare($args);
+
+ $this->count = 5000; // max 5000, completely arbitrary...
+
+ $this->target = $this->getTargetProfile($this->arg('id'));
+
+
+ if (!($this->target instanceof Profile)) {
+ // TRANS: Client error displayed when requesting a list of followers for a non-existing user.
+ $this->clientError(_('No such user.'), 404);
+ }
+
+ $this->profiles = $this->getProfiles();
+
+
+ // only keep id, name, nickname and avatar filename
+ foreach($this->profiles as $p) {
+ try {
+ $avatar = Avatar::byProfile($p, AVATAR_STREAM_SIZE);
+ $avatar = $avatar->filename;
+ } catch (Exception $e) {
+ $avatar = false;
+ }
+ $this_user = array($p->fullname,$p->nickname,$avatar);
+ $this->users_stripped[$p->id] = $this_user;
+ }
+
+ return true;
+ }
+
+ /**
+ * Handle the request
+ *
+ * @param array $args $_REQUEST data (unused)
+ *
+ * @return void
+ */
+ protected function handle()
+ {
+ parent::handle();
+
+
+ $this->initDocument('json');
+ $this->showJsonObjects($this->users_stripped);
+ $this->endDocument('json');
+ }
+
+ /**
+ * Get profiles
+ *
+ * @return array Profiles
+ */
+ protected function getProfiles()
+ {
+ $offset = ($this->page - 1) * $this->count;
+ $limit = $this->count + 1;
+
+ $subs = null;
+
+ if (isset($this->tag)) {
+ $subs = $this->target->getTaggedSubscriptions(
+ $this->tag, $offset, $limit
+ );
+ } else {
+ $subs = $this->target->getSubscribed(
+ $offset,
+ $limit
+ );
+ }
+
+ $profiles = array();
+
+ while ($subs->fetch()) {
+ $profiles[] = clone($subs);
+ }
+
+ return $profiles;
+ }
+
+}
diff --git a/actions/qvitter.php b/actions/qvitter.php
index 7f3cfea..6899556 100644
--- a/actions/qvitter.php
+++ b/actions/qvitter.php
@@ -151,12 +151,14 @@ class QvitterAction extends ApiAction
?>
-
-
-
-
-
+
+
+
+
+