X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOStatus%2Fscripts%2Fupdate-profile-data.php;h=5b3e00e9fc45440aac838a55b1a811ac070e7f8f;hb=7bef2ad4ccb10a319dde1e62460d34f7ebf3242c;hp=ca48dc34a7db1b7a57308da618f015c7b0a97cac;hpb=95d415257a43d5d4338ce22089463c1820b6bf8b;p=quix0rs-gnu-social.git diff --git a/plugins/OStatus/scripts/update-profile-data.php b/plugins/OStatus/scripts/update-profile-data.php index ca48dc34a7..5b3e00e9fc 100755 --- a/plugins/OStatus/scripts/update-profile-data.php +++ b/plugins/OStatus/scripts/update-profile-data.php @@ -44,44 +44,34 @@ function showProfileInfo(Ostatus_profile $oprofile) { echo "group\n"; } else { $profile = $oprofile->localProfile(); - try { - foreach (array('nickname', 'fullname', 'bio', 'homepage', 'location') as $field) { - print " $field: {$profile->$field}\n"; - } - } catch (NoProfileException $e) { - print "local profile not found"; + foreach (array('nickname', 'fullname', 'bio', 'homepage', 'location') as $field) { + print " $field: {$profile->$field}\n"; } } echo "\n"; } -function fixProfile($uri) { - $oprofile = Ostatus_profile::getKV('uri', $uri); - - if (!$oprofile) { - print "No OStatus remote profile known for URI $uri\n"; - return false; - } - +function fixProfile(Ostatus_profile $oprofile) { echo "Before:\n"; showProfileInfo($oprofile); $feedurl = $oprofile->feeduri; - $client = new HttpClient(); + $client = new HTTPClient(); $response = $client->get($feedurl); if ($response->isOk()) { 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 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 { @@ -105,7 +95,12 @@ if (have_option('all')) { $oprofile->find(); echo "Found $oprofile->N profiles:\n\n"; while ($oprofile->fetch()) { - $ok = fixProfile($oprofile->uri) && $ok; + try { + $ok = fixProfile($oprofile) && $ok; + } catch (Exception $e) { + $ok = false; + echo "Failed on URI=="._ve($oprofile->uri).": {$e->getMessage()}\n"; + } } } else if (have_option('suspicious')) { $oprofile = new Ostatus_profile(); @@ -114,11 +109,28 @@ if (have_option('all')) { $oprofile->find(); echo "Found $oprofile->N matching profiles:\n\n"; while ($oprofile->fetch()) { - $ok = fixProfile($oprofile->uri) && $ok; + try { + $ok = fixProfile($oprofile) && $ok; + } catch (Exception $e) { + $ok = false; + echo "Failed on URI=="._ve($oprofile->uri).": {$e->getMessage()}\n"; + } } } else if (!empty($args[0]) && $validate->uri($args[0])) { $uri = $args[0]; - $ok = fixProfile($uri); + $oprofile = Ostatus_profile::getKV('uri', $uri); + + if (!$oprofile instanceof Ostatus_profile) { + print "No OStatus remote profile known for URI $uri\n"; + return false; + } + + try { + $ok = fixProfile($oprofile) && $ok; + } catch (Exception $e) { + $ok = false; + echo "Failed on URI=="._ve($oprofile->uri).": {$e->getMessage()}\n"; + } } else { print "$helptext"; $ok = false;