Update Profile Data script fixes, might work for groups too now

This commit is contained in:
Mikael Nordfeldth 2016-03-28 16:19:47 +02:00
parent a93c69d150
commit 7bef2ad4cc
3 changed files with 15 additions and 8 deletions

View File

@ -301,7 +301,7 @@ class ActivityUtils
return false;
}
static function getFeedAuthor($feedEl)
static function getFeedAuthor(DOMDocument $feedEl)
{
// Try old and deprecated activity:subject

View File

@ -1281,6 +1281,12 @@ class Ostatus_profile extends Managed_DataObject
*/
public function updateFromActivityObject(ActivityObject $object, array $hints=array())
{
if (self::getActivityObjectProfileURI($actorObj) !== $this->getUri()) {
common_log(LOG_ERR, 'Trying to update profile with URI '._ve($this->getUri()).' from ActivityObject with URI: '._ve(self::getActivityObjectProfileURI($actorObj)));
// FIXME: Maybe not AuthorizationException?
throw new AuthorizationException('Trying to update profile from ActivityObject with different URI.');
}
if ($this->isGroup()) {
$group = $this->localGroup();
self::updateGroup($group, $object, $hints);

View File

@ -62,15 +62,16 @@ function fixProfile(Ostatus_profile $oprofile) {
echo "Updating profile from feed: $feedurl\n";
$dom = new DOMDocument();
if ($dom->loadXML($response->getBody())) {
$feed = $dom->documentElement;
$entries = $dom->getElementsByTagNameNS(Activity::ATOM, 'entry');
if ($entries->length) {
$entry = $entries->item(0);
$activity = new Activity($entry, $feed);
$oprofile->checkAuthorship($activity);
if ($dom->documentElement->tagName !== 'feed') {
echo " (no <feed> element in feed URL response; skipping)\n";
return false;
}
$actorObj = ActivityUtils::getFeedAuthor($dom->documentElement);
if ($actorObj) {
$oprofile->updateFromActivityObject($actorObj);
echo " (ok)\n";
} else {
echo " (no entry; skipping)\n";
echo " (no author on feed; skipping)\n";
return false;
}
} else {