summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2010-02-25 18:57:12 -0800
committerZach Copley <zach@status.net>2010-02-25 18:57:12 -0800
commitcf61f36e6b313659b3c3fb253972d06c7113f1e8 (patch)
tree25372b7649e125b2ee149da155f2f9fbae169c2e /lib
parentd8d8d59a03ef3fa12a0ea668b4a2f383f80486dc (diff)
parent2fa953da22fe932f758882a93106672ab22c1c6d (diff)
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
* 'testing' of gitorious.org:statusnet/mainline: OStatus: pull best-sized avatar image (96x96 if found, otherwise largest, otherwise if none labeled takes the first) info about discovery in Ostatus_profile::ensureWebfinger() cache Web responses in Webfinger library
Diffstat (limited to 'lib')
-rw-r--r--lib/activity.php43
1 files changed, 41 insertions, 2 deletions
diff --git a/lib/activity.php b/lib/activity.php
index 161232c42..b20153213 100644
--- a/lib/activity.php
+++ b/lib/activity.php
@@ -360,6 +360,25 @@ class ActivityUtils
return null;
}
+ static function getLinks(DOMNode $element, $rel, $type=null)
+ {
+ $links = $element->getElementsByTagnameNS(self::ATOM, self::LINK);
+ $out = array();
+
+ foreach ($links as $link) {
+
+ $linkRel = $link->getAttribute(self::REL);
+ $linkType = $link->getAttribute(self::TYPE);
+
+ if ($linkRel == $rel &&
+ (is_null($type) || $linkType == $type)) {
+ $out[] = $link;
+ }
+ }
+
+ return $out;
+ }
+
/**
* Gets the first child element with the given tag
*
@@ -472,6 +491,24 @@ class AvatarLink
public $type;
public $size;
public $width;
+ public $height;
+
+ function __construct($element=null)
+ {
+ if ($element) {
+ // @fixme use correct namespaces
+ $this->url = $element->getAttribute('href');
+ $this->type = $element->getAttribute('type');
+ $width = $element->getAttribute('media:width');
+ if ($width != null) {
+ $this->width = intval($width);
+ }
+ $height = $element->getAttribute('media:height');
+ if ($height != null) {
+ $this->height = intval($height);
+ }
+ }
+ }
static function fromAvatar($avatar)
{
@@ -640,8 +677,10 @@ class ActivityObject
if ($this->type == self::PERSON || $this->type == self::GROUP) {
$this->displayName = $this->title;
- // @fixme we may have multiple avatars with different resolutions specified
- $this->avatar = ActivityUtils::getLink($element, 'avatar');
+ $avatars = ActivityUtils::getLinks($element, 'avatar');
+ foreach ($avatars as $link) {
+ $this->avatarLinks[] = new AvatarLink($link);
+ }
$this->poco = new PoCo($element);
}