summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/oauthconnectionssettings.php32
-rw-r--r--classes/Profile.php9
-rw-r--r--lib/applicationlist.php68
3 files changed, 79 insertions, 30 deletions
diff --git a/actions/oauthconnectionssettings.php b/actions/oauthconnectionssettings.php
index e4b5af158..56e7b02fb 100644
--- a/actions/oauthconnectionssettings.php
+++ b/actions/oauthconnectionssettings.php
@@ -48,6 +48,16 @@ require_once INSTALLDIR . '/lib/applicationlist.php';
class OauthconnectionssettingsAction extends ConnectSettingsAction
{
+
+ var $page = null;
+
+ function prepare($args)
+ {
+ parent::prepare($args);
+ $this->page = ($this->arg('page')) ? ($this->arg('page') + 0) : 1;
+ return true;
+ }
+
/**
* Title of the page
*
@@ -59,6 +69,11 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
return _('Connected Applications');
}
+ function isReadOnly($args)
+ {
+ return true;
+ }
+
/**
* Instructions for use
*
@@ -86,13 +101,16 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
$application = $profile->getApplications($offset, $limit);
- if ($application) {
- $al = new ApplicationList($application, $this->user, $this);
- $cnt = $al->show();
- if (0 == $cnt) {
- $this->showEmptyListMessage();
- }
- }
+ $cnt == 0;
+
+ if (!empty($application)) {
+ $al = new ApplicationList($application, $user, $this, true);
+ $cnt = $al->show();
+ }
+
+ if ($cnt == 0) {
+ $this->showEmptyListMessage();
+ }
$this->pagination($this->page > 1, $cnt > APPS_PER_PAGE,
$this->page, 'connectionssettings',
diff --git a/classes/Profile.php b/classes/Profile.php
index 687215b11..fef2a2171 100644
--- a/classes/Profile.php
+++ b/classes/Profile.php
@@ -355,10 +355,11 @@ class Profile extends Memcached_DataObject
function getApplications($offset = 0, $limit = null)
{
$qry =
- 'SELECT oauth_application_user.* ' .
- 'FROM oauth_application_user ' .
- 'WHERE profile_id = %d ' .
- 'ORDER BY created DESC ';
+ 'SELECT a.* ' .
+ 'FROM oauth_application_user u, oauth_application a ' .
+ 'WHERE u.profile_id = %d ' .
+ 'AND a.id = u.application_id ' .
+ 'ORDER BY u.created DESC ';
if ($offset > 0) {
if (common_config('db','type') == 'pgsql') {
diff --git a/lib/applicationlist.php b/lib/applicationlist.php
index 5392ddab8..e305437f4 100644
--- a/lib/applicationlist.php
+++ b/lib/applicationlist.php
@@ -57,13 +57,14 @@ class ApplicationList extends Widget
/** Action object using us. */
var $action = null;
- function __construct($application, $owner=null, $action=null)
+ function __construct($application, $owner=null, $action=null, $connections = false)
{
parent::__construct($action);
$this->application = $application;
$this->owner = $owner;
$this->action = $action;
+ $this->connections = $connections;
}
function show()
@@ -97,36 +98,65 @@ class ApplicationList extends Widget
$this->out->element('img', array('src' => $this->application->icon));
}
- $this->out->elementStart('a',
- array('href' => common_local_url(
- 'showapplication',
- array(
- 'nickname' => $user->nickname,
- 'id' => $this->application->id
- )
- ),
- 'class' => 'url')
- );
+ if (!$this->connections) {
+
+ $this->out->elementStart('a',
+ array('href' =>
+ common_local_url('showapplication',
+ array('nickname' => $user->nickname,
+ 'id' => $this->application->id)),
+ 'class' => 'url')
+ );
$this->out->raw($this->application->name);
$this->out->elementEnd('a');
+ } else {
+ $this->out->elementStart('a',
+ array('href' => $this->application->source_url,
+ 'class' => 'url'));
- $this->out->raw(' by ');
+ $this->out->raw($this->application->name);
+ $this->out->elementEnd('a');
+ }
- $this->out->elementStart('a',
+ $this->out->raw(' by ');
+
+ $this->out->elementStart('a',
array(
- 'href' => $this->application->homepage,
- 'class' => 'url'
+ 'href' => $this->application->homepage,
+ 'class' => 'url'
)
- );
- $this->out->raw($this->application->organization);
- $this->out->elementEnd('a');
+ );
+ $this->out->raw($this->application->organization);
+ $this->out->elementEnd('a');
- $this->out->elementStart('p', 'note');
+ $this->out->elementStart('p', 'note');
$this->out->raw($this->application->description);
$this->out->elementEnd('p');
+ $this->out->elementEnd('li');
+
+ if ($this->connections) {
+
+ $appUser = Oauth_application_user::getByKeys($this->owner, $this->application);
+
+ if (empty($appUser)) {
+ common_debug("empty appUser!");
+ }
+
+ $this->out->elementStart('li');
+
+ $access = ($this->application->access_type & Oauth_application::$writeAccess)
+ ? 'read-write' : 'read-only';
+
+ $txt = 'Approved ' . common_exact_date($appUser->modified) .
+ " $access for access.";
+
+ $this->out->raw($txt);
$this->out->elementEnd('li');
+
+ // XXX: Add revoke access button
+ }
}
/* Override this in subclasses. */