X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOStatus%2Fscripts%2Fupdate-profile-data.php;h=5b3e00e9fc45440aac838a55b1a811ac070e7f8f;hb=7bef2ad4ccb10a319dde1e62460d34f7ebf3242c;hp=d61d9470d1a2e74aa6183711c064c38492fab80f;hpb=f30744c7c565c50047b90515bcfd71baa382c96e;p=quix0rs-gnu-social.git diff --git a/plugins/OStatus/scripts/update-profile-data.php b/plugins/OStatus/scripts/update-profile-data.php old mode 100644 new mode 100755 index d61d9470d1..5b3e00e9fc --- a/plugins/OStatus/scripts/update-profile-data.php +++ b/plugins/OStatus/scripts/update-profile-data.php @@ -20,56 +20,58 @@ define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..')); +$longoptions = array('all', 'suspicious', 'quiet'); + $helptext = <<isGroup()) { echo "group\n"; } else { $profile = $oprofile->localProfile(); - foreach (array('nickname', 'bio', 'homepage', 'location') as $field) { + foreach (array('nickname', 'fullname', 'bio', 'homepage', 'location') as $field) { print " $field: {$profile->$field}\n"; } } echo "\n"; } -function fixProfile($uri) { - $oprofile = Ostatus_profile::staticGet('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 { @@ -86,10 +88,52 @@ function fixProfile($uri) { return true; } -if (empty($args[0]) || !Validate::uri($args[0])) { +$ok = true; +$validate = new Validate(); +if (have_option('all')) { + $oprofile = new Ostatus_profile(); + $oprofile->find(); + echo "Found $oprofile->N profiles:\n\n"; + while ($oprofile->fetch()) { + 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(); + $oprofile->joinAdd(array('profile_id', 'profile:id')); + $oprofile->whereAdd("nickname rlike '^[0-9]$'"); + $oprofile->find(); + echo "Found $oprofile->N matching profiles:\n\n"; + while ($oprofile->fetch()) { + 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]; + $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"; - exit(1); + $ok = false; } -$uri = $args[0]; -fixProfile($uri); +exit($ok ? 0 : 1);