Properly parse incoming bookmarks
This commit is contained in:
parent
a4051945fd
commit
39e8c13afb
@ -28,9 +28,7 @@
|
|||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('STATUSNET')) {
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once(INSTALLDIR.'/lib/activitystreamjsondocument.php');
|
require_once(INSTALLDIR.'/lib/activitystreamjsondocument.php');
|
||||||
|
|
||||||
@ -269,6 +267,22 @@ class ActivityObject
|
|||||||
if (empty($this->id) && !empty($this->link)) { // fallback if there's no ID
|
if (empty($this->id) && !empty($this->link)) { // fallback if there's no ID
|
||||||
$this->id = $this->link;
|
$this->id = $this->link;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$els = $element->childNodes;
|
||||||
|
$out = array();
|
||||||
|
|
||||||
|
for ($i = 0; $i < $els->length; $i++) {
|
||||||
|
$link = $els->item($i);
|
||||||
|
if ($link->localName == ActivityUtils::LINK && $link->namespaceURI == ActivityUtils::ATOM) {
|
||||||
|
$attrs = array();
|
||||||
|
foreach ($link->attributes as $attrName=>$attrNode) {
|
||||||
|
$attrs[$attrName] = $attrNode->nodeValue;
|
||||||
|
}
|
||||||
|
$this->extra[] = [$link->localName,
|
||||||
|
$attrs,
|
||||||
|
$link->nodeValue];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo FIXME: rationalize with Activity::_fromRssItem()
|
// @todo FIXME: rationalize with Activity::_fromRssItem()
|
||||||
|
@ -162,19 +162,19 @@ class Bookmark extends Managed_DataObject
|
|||||||
$url = null;
|
$url = null;
|
||||||
// each extra element is array('tagname', array('attr'=>'val', ...), 'content')
|
// each extra element is array('tagname', array('attr'=>'val', ...), 'content')
|
||||||
foreach ($actobj->extra as $extra) {
|
foreach ($actobj->extra as $extra) {
|
||||||
if ($extra[1]['rel'] !== 'related') {
|
if ($extra[0] !== ActivityUtils::LINK || $extra[1][ActivityUtils::REL] !== 'related') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($url===null && strlen($extra[1]['href'])>0) {
|
if ($url===null && strlen($extra[1][ActivityUtils::HREF])>0) {
|
||||||
$url = $extra[1]['href'];
|
$url = $extra[1][ActivityUtils::HREF];
|
||||||
} elseif ($url !== null) {
|
} elseif ($url !== null) {
|
||||||
// TRANS: Client exception thrown when a bookmark is formatted incorrectly.
|
// TRANS: Client exception thrown when a bookmark is formatted incorrectly.
|
||||||
throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got %1$d.'), count($relLinkEls)));
|
throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got more than that.')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_null($url)) {
|
if (is_null($url)) {
|
||||||
// TRANS: Client exception thrown when a bookmark is formatted incorrectly.
|
// TRANS: Client exception thrown when a bookmark is formatted incorrectly.
|
||||||
throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got %1$d.'), count($relLinkEls)));
|
throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got 0.')));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strlen($actobj->title)) {
|
if (!strlen($actobj->title)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user