]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/scripts/update-profile-data.php
Merged
[quix0rs-gnu-social.git] / plugins / OStatus / scripts / update-profile-data.php
old mode 100644 (file)
new mode 100755 (executable)
index d61d947..c56bedd
 
 define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
 
+$longoptions = array('all', 'suspicious', 'quiet');
+
 $helptext = <<<END_OF_HELP
-update-profile-data.php [options] http://example.com/profile/url
+update-profile-data.php [options] [http://example.com/profile/url]
 
 Rerun profile discovery for the given OStatus remote profile, and save the
-updated profile data (nickname, avatar, bio, etc). Doesn't touch feed state.
+updated profile data (nickname, fullname, avatar, bio, etc).
+Doesn't touch feed state.
 Can be used to clean up after breakages.
 
+Options:
+  --all        Run for all known OStatus profiles
+  --suspicious Run for OStatus profiles with all-numeric nicknames
+               (fixes 0.9.7 prerelease back-compatibility bug)
+
 END_OF_HELP;
 
-require_once INSTALLDIR.'/scripts/commandline.inc';
+require_once INSTALLDIR.'/scripts/commandline.inc.php';
 
-function showProfileInfo($oprofile) {
+function showProfileInfo(Ostatus_profile $oprofile) {
     if ($oprofile->isGroup()) {
         echo "group\n";
     } else {
         $profile = $oprofile->localProfile();
-        foreach (array('nickname', 'bio', 'homepage', 'location') as $field) {
-            print "  $field: {$profile->$field}\n";
+        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::staticGet('uri', $uri);
+    $oprofile = Ostatus_profile::getKV('uri', $uri);
 
     if (!$oprofile) {
         print "No OStatus remote profile known for URI $uri\n";
@@ -86,10 +98,30 @@ 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()) {
+        $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";
-    exit(1);
+    $ok = false;
 }
 
-$uri = $args[0];
-fixProfile($uri);
+exit($ok ? 0 : 1);