Notices start saving selfLink from activities/objects
This commit is contained in:
parent
7889b21e7b
commit
8a4bec811b
|
@ -59,6 +59,7 @@ class Notice extends Managed_DataObject
|
||||||
public $content; // text
|
public $content; // text
|
||||||
public $rendered; // text
|
public $rendered; // text
|
||||||
public $url; // varchar(191) not 255 because utf8mb4 takes more space
|
public $url; // varchar(191) not 255 because utf8mb4 takes more space
|
||||||
|
public $self; // varchar(191) not 255 because utf8mb4 takes more space
|
||||||
public $created; // datetime multiple_key not_null default_0000-00-00%2000%3A00%3A00
|
public $created; // datetime multiple_key not_null default_0000-00-00%2000%3A00%3A00
|
||||||
public $modified; // timestamp not_null default_CURRENT_TIMESTAMP
|
public $modified; // timestamp not_null default_CURRENT_TIMESTAMP
|
||||||
public $reply_to; // int(4)
|
public $reply_to; // int(4)
|
||||||
|
@ -83,6 +84,7 @@ class Notice extends Managed_DataObject
|
||||||
'content' => array('type' => 'text', 'description' => 'update content', 'collate' => 'utf8mb4_general_ci'),
|
'content' => array('type' => 'text', 'description' => 'update content', 'collate' => 'utf8mb4_general_ci'),
|
||||||
'rendered' => array('type' => 'text', 'description' => 'HTML version of the content'),
|
'rendered' => array('type' => 'text', 'description' => 'HTML version of the content'),
|
||||||
'url' => array('type' => 'varchar', 'length' => 191, 'description' => 'URL of any attachment (image, video, bookmark, whatever)'),
|
'url' => array('type' => 'varchar', 'length' => 191, 'description' => 'URL of any attachment (image, video, bookmark, whatever)'),
|
||||||
|
'self' => array('type' => 'varchar', 'length' => 191, 'description' => 'Resolvable URL to the (remote) Atom entry representation'),
|
||||||
'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
|
'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
|
||||||
'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
|
'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
|
||||||
'reply_to' => array('type' => 'int', 'description' => 'notice replied to (usually a guess)'),
|
'reply_to' => array('type' => 'int', 'description' => 'notice replied to (usually a guess)'),
|
||||||
|
@ -442,6 +444,7 @@ class Notice extends Managed_DataObject
|
||||||
static function saveNew($profile_id, $content, $source, array $options=null) {
|
static function saveNew($profile_id, $content, $source, array $options=null) {
|
||||||
$defaults = array('uri' => null,
|
$defaults = array('uri' => null,
|
||||||
'url' => null,
|
'url' => null,
|
||||||
|
'self' => null,
|
||||||
'conversation' => null, // URI of conversation
|
'conversation' => null, // URI of conversation
|
||||||
'reply_to' => null, // This will override convo URI if the parent is known
|
'reply_to' => null, // This will override convo URI if the parent is known
|
||||||
'repeat_of' => null, // This will override convo URI if the repeated notice is known
|
'repeat_of' => null, // This will override convo URI if the repeated notice is known
|
||||||
|
@ -528,6 +531,9 @@ class Notice extends Managed_DataObject
|
||||||
$notice->source = $source;
|
$notice->source = $source;
|
||||||
$notice->uri = $uri;
|
$notice->uri = $uri;
|
||||||
$notice->url = $url;
|
$notice->url = $url;
|
||||||
|
if ($self && common_valid_http_url($self)) {
|
||||||
|
$notice->self = $self;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the groups here so we can figure out replies and such
|
// Get the groups here so we can figure out replies and such
|
||||||
if (!isset($groups)) {
|
if (!isset($groups)) {
|
||||||
|
@ -770,6 +776,9 @@ class Notice extends Managed_DataObject
|
||||||
// implied object
|
// implied object
|
||||||
$options['uri'] = $act->id;
|
$options['uri'] = $act->id;
|
||||||
$options['url'] = $act->link;
|
$options['url'] = $act->link;
|
||||||
|
if ($act->selfLink) {
|
||||||
|
$options['self'] = $act->selfLink;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$actobj = count($act->objects)===1 ? $act->objects[0] : null;
|
$actobj = count($act->objects)===1 ? $act->objects[0] : null;
|
||||||
if (!is_null($actobj) && !empty($actobj->id)) {
|
if (!is_null($actobj) && !empty($actobj->id)) {
|
||||||
|
@ -780,6 +789,9 @@ class Notice extends Managed_DataObject
|
||||||
$options['url'] = $actobj->id;
|
$options['url'] = $actobj->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($actobj->selfLink) {
|
||||||
|
$options['self'] = $actobj->selfLink;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$defaults = array(
|
$defaults = array(
|
||||||
|
@ -789,6 +801,7 @@ class Notice extends Managed_DataObject
|
||||||
'reply_to' => null,
|
'reply_to' => null,
|
||||||
'repeat_of' => null,
|
'repeat_of' => null,
|
||||||
'scope' => null,
|
'scope' => null,
|
||||||
|
'self' => null,
|
||||||
'source' => 'unknown',
|
'source' => 'unknown',
|
||||||
'tags' => array(),
|
'tags' => array(),
|
||||||
'uri' => null,
|
'uri' => null,
|
||||||
|
@ -841,6 +854,9 @@ class Notice extends Managed_DataObject
|
||||||
$stored->source = $source;
|
$stored->source = $source;
|
||||||
$stored->uri = $uri;
|
$stored->uri = $uri;
|
||||||
$stored->url = $url;
|
$stored->url = $url;
|
||||||
|
if (common_valid_http_url($stored->self)) {
|
||||||
|
$stored->self = $self;
|
||||||
|
}
|
||||||
$stored->verb = $act->verb;
|
$stored->verb = $act->verb;
|
||||||
|
|
||||||
// we use mb_strlen because it _might_ be that the content is just the string "0"...
|
// we use mb_strlen because it _might_ be that the content is just the string "0"...
|
||||||
|
|
|
@ -267,7 +267,7 @@ class Activity
|
||||||
|
|
||||||
// From APP. Might be useful.
|
// From APP. Might be useful.
|
||||||
|
|
||||||
$this->selfLink = ActivityUtils::getLink($entry, 'self', 'application/atom+xml');
|
$this->selfLink = ActivityUtils::getSelfLink($entry);
|
||||||
$this->editLink = ActivityUtils::getLink($entry, 'edit', 'application/atom+xml');
|
$this->editLink = ActivityUtils::getLink($entry, 'edit', 'application/atom+xml');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -344,6 +344,7 @@ abstract class ActivityHandlerPlugin extends Plugin
|
||||||
|
|
||||||
$options = array('uri' => $object->id,
|
$options = array('uri' => $object->id,
|
||||||
'url' => $object->link,
|
'url' => $object->link,
|
||||||
|
'self' => $object->selfLink,
|
||||||
'is_local' => Notice::REMOTE,
|
'is_local' => Notice::REMOTE,
|
||||||
'source' => 'ostatus');
|
'source' => 'ostatus');
|
||||||
|
|
||||||
|
@ -420,6 +421,7 @@ abstract class ActivityHandlerPlugin extends Plugin
|
||||||
|
|
||||||
$options = array('uri' => $object->id,
|
$options = array('uri' => $object->id,
|
||||||
'url' => $object->link,
|
'url' => $object->link,
|
||||||
|
'self' => $object->selfLink,
|
||||||
'is_local' => Notice::REMOTE,
|
'is_local' => Notice::REMOTE,
|
||||||
'source' => 'ostatus');
|
'source' => 'ostatus');
|
||||||
|
|
||||||
|
@ -471,6 +473,7 @@ abstract class ActivityHandlerPlugin extends Plugin
|
||||||
|
|
||||||
$options = array('uri' => $object->id,
|
$options = array('uri' => $object->id,
|
||||||
'url' => $object->link,
|
'url' => $object->link,
|
||||||
|
'self' => $object->selfLink,
|
||||||
'source' => 'restore');
|
'source' => 'restore');
|
||||||
|
|
||||||
// $user->getProfile() is a Profile
|
// $user->getProfile() is a Profile
|
||||||
|
|
|
@ -65,11 +65,16 @@ class ActivityUtils
|
||||||
*
|
*
|
||||||
* @return string related link, if any
|
* @return string related link, if any
|
||||||
*/
|
*/
|
||||||
static function getPermalink($element)
|
static function getPermalink(DOMNode $element)
|
||||||
{
|
{
|
||||||
return self::getLink($element, 'alternate', 'text/html');
|
return self::getLink($element, 'alternate', 'text/html');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function getSelfLink(DOMNode $element)
|
||||||
|
{
|
||||||
|
return self::getLink($element, 'self', 'application/atom+xml');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the permalink for an Activity object
|
* Get the permalink for an Activity object
|
||||||
*
|
*
|
||||||
|
@ -90,8 +95,9 @@ class ActivityUtils
|
||||||
$linkRel = $link->getAttribute(self::REL);
|
$linkRel = $link->getAttribute(self::REL);
|
||||||
$linkType = $link->getAttribute(self::TYPE);
|
$linkType = $link->getAttribute(self::TYPE);
|
||||||
|
|
||||||
|
// XXX: Am I allowed to do this according to specs? (matching using common_bare_mime)
|
||||||
if ($linkRel == $rel &&
|
if ($linkRel == $rel &&
|
||||||
(is_null($type) || $linkType == $type)) {
|
(is_null($type) || common_bare_mime($linkType) == common_bare_mime($type))) {
|
||||||
return $link->getAttribute(self::HREF);
|
return $link->getAttribute(self::HREF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user