#!/usr/bin/env php . */ define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..')); $longoptions = array('all', 'suspicious', 'quiet'); $helptext = <<isGroup()) { 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"; } } 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; } echo "Before:\n"; showProfileInfo($oprofile); $feedurl = $oprofile->feeduri; $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); echo " (ok)\n"; } else { echo " (no entry; skipping)\n"; return false; } } else { echo " (bad feed; skipping)\n"; return false; } } else { echo "Failed feed fetch: {$response->getStatus()} for $feedurl\n"; return false; } echo "After:\n"; showProfileInfo($oprofile); return true; } $ok = true; if (have_option('all')) { $oprofile = new Ostatus_profile(); $oprofile->find(); echo "Found $oprofile->N profiles:\n\n"; while ($oprofile->fetch()) { $ok = fixProfile($oprofile->uri) && $ok; } } 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()) { $ok = fixProfile($oprofile->uri) && $ok; } } else if (!empty($args[0]) && Validate::uri($args[0])) { $uri = $args[0]; $ok = fixProfile($uri); } else { print "$helptext"; $ok = false; } exit($ok ? 0 : 1);