Rationalize group activity stuff
This commit is contained in:
		@@ -399,25 +399,41 @@ class User_group extends Memcached_DataObject
 | 
			
		||||
        return $xs->getString();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an XML string fragment with group information as an
 | 
			
		||||
     * Activity Streams <activity:subject> element.
 | 
			
		||||
     *
 | 
			
		||||
     * Assumes that 'activity' namespace has been previously defined.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    function asActivitySubject()
 | 
			
		||||
    {
 | 
			
		||||
        $xs = new XMLStringer(true);
 | 
			
		||||
        return $this->asActivityNoun('subject');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        $xs->elementStart('activity:subject');
 | 
			
		||||
        $xs->element('activity:object', null, 'http://activitystrea.ms/schema/1.0/group');
 | 
			
		||||
        $xs->element('id', null, $this->permalink());
 | 
			
		||||
        $xs->element('title', null, $this->getBestName());
 | 
			
		||||
        $xs->element(
 | 
			
		||||
            'link', array(
 | 
			
		||||
                'rel'  => 'avatar',
 | 
			
		||||
                'href' =>  empty($this->homepage_logo)
 | 
			
		||||
                    ? User_group::defaultLogo(AVATAR_PROFILE_SIZE)
 | 
			
		||||
                    : $this->homepage_logo
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $xs->elementEnd('activity:subject');
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an XML string fragment with group information as an
 | 
			
		||||
     * Activity Streams noun object with the given element type.
 | 
			
		||||
     *
 | 
			
		||||
     * Assumes that 'activity', 'georss', and 'poco' namespace has been
 | 
			
		||||
     * previously defined.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $element one of 'actor', 'subject', 'object', 'target'
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    function asActivityNoun($element)
 | 
			
		||||
    {
 | 
			
		||||
        $noun = ActivityObject::fromGroup($this);
 | 
			
		||||
        return $noun->asString('activity:' . $element);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        return $xs->getString();
 | 
			
		||||
    function getAvatar()
 | 
			
		||||
    {
 | 
			
		||||
        return empty($this->homepage_logo)
 | 
			
		||||
            ? User_group::defaultLogo(AVATAR_PROFILE_SIZE)
 | 
			
		||||
            : $this->homepage_logo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function register($fields) {
 | 
			
		||||
 
 | 
			
		||||
@@ -223,6 +223,37 @@ class PoCo
 | 
			
		||||
        return $poco;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function fromGroup($group)
 | 
			
		||||
    {
 | 
			
		||||
        if (empty($group)) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $poco = new PoCo();
 | 
			
		||||
 | 
			
		||||
        $poco->preferredUsername = $group->nickname;
 | 
			
		||||
        $poco->displayName       = $group->getBestName();
 | 
			
		||||
 | 
			
		||||
        $poco->note = $group->description;
 | 
			
		||||
 | 
			
		||||
        $paddy = new PoCoAddress();
 | 
			
		||||
        $paddy->formatted = $group->location;
 | 
			
		||||
        $poco->address = $paddy;
 | 
			
		||||
 | 
			
		||||
        if (!empty($group->homepage)) {
 | 
			
		||||
            array_push(
 | 
			
		||||
                $poco->urls,
 | 
			
		||||
                new PoCoURL(
 | 
			
		||||
                    'homepage',
 | 
			
		||||
                    $group->homepage,
 | 
			
		||||
                    true
 | 
			
		||||
                )
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $poco;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function getPrimaryURL()
 | 
			
		||||
    {
 | 
			
		||||
        foreach ($this->urls as $url) {
 | 
			
		||||
@@ -621,6 +652,21 @@ class ActivityObject
 | 
			
		||||
        return $object;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static function fromGroup($group)
 | 
			
		||||
    {
 | 
			
		||||
        $object = new ActivityObject();
 | 
			
		||||
 | 
			
		||||
        $object->type   = ActivityObject::GROUP;
 | 
			
		||||
        $object->id     = $group->getUri();
 | 
			
		||||
        $object->title  = $group->getBestName();
 | 
			
		||||
        $object->link   = $group->getUri();
 | 
			
		||||
        $object->avatar = $group->getAvatar();
 | 
			
		||||
 | 
			
		||||
        $object->poco = PoCo::fromGroup($group);
 | 
			
		||||
 | 
			
		||||
        return $object;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function asString($tag='activity:object')
 | 
			
		||||
    {
 | 
			
		||||
        $xs = new XMLStringer(true);
 | 
			
		||||
@@ -656,8 +702,7 @@ class ActivityObject
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($this->type == ActivityObject::PERSON
 | 
			
		||||
            || $this->type == ActivityObject::GROUP) {
 | 
			
		||||
        if ($this->type == ActivityObject::PERSON) {
 | 
			
		||||
            $xs->element(
 | 
			
		||||
                'link', array(
 | 
			
		||||
                    'type' => empty($this->avatar) ? 'image/png' : $this->avatar->mediatype,
 | 
			
		||||
@@ -670,6 +715,18 @@ class ActivityObject
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // XXX: Gotta figure out mime-type! Gar.
 | 
			
		||||
 | 
			
		||||
        if ($this->type == ActivityObject::GROUP) {
 | 
			
		||||
            $xs->element(
 | 
			
		||||
                'link', array(
 | 
			
		||||
                    'rel'  => 'avatar',
 | 
			
		||||
                    'href' => $this->avatar
 | 
			
		||||
                ),
 | 
			
		||||
                null
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!empty($this->geopoint)) {
 | 
			
		||||
            $xs->element(
 | 
			
		||||
                'georss:point',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user