]> git.mxchange.org Git - friendica.git/commitdiff
Added post-update script
authorJeroen De Meerleer <me@jeroened.be>
Tue, 18 Dec 2018 13:42:02 +0000 (14:42 +0100)
committerHypolite Petovan <hypolite@mrpetovan.com>
Mon, 21 Jan 2019 14:12:37 +0000 (09:12 -0500)
Please review first. I don't want to test changes that are not going pass the review.

src/Database/PostUpdate.php

index 9329e31cac1bf53174ae69e5be64774853b852aa..59b6964084862ef452c33f661de6faf40b0b1221 100644 (file)
@@ -7,6 +7,7 @@ namespace Friendica\Database;
 use Friendica\Core\Config;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
+use Friendica\Core\L10n;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\ItemURI;
@@ -373,4 +374,49 @@ class PostUpdate
 
                return false;
        }
+
+       // Post-update script of PR 5596
+       function fixGenderStrings() {
+           $allGenders = DBA::select('contact', ['id', 'gender']);
+        $allLangs = L10n::getAvailableLanguages();
+        $success = 0;
+        $fail = 0;
+           foreach($allGenders as $key=>$gender) {
+            foreach($allLangs as $key=>$lang) {
+
+                $a = new \stdClass();
+                $a->strings = [];
+
+                // First we get the the localizations
+                if (file_exists("view/lang/$lang/strings.php")) {
+                    include "view/lang/$lang/strings.php";
+                }
+                if (file_exists("addon/morechoice/lang/$lang/strings.php")) {
+                    include "addon/morechoice/lang/$lang/strings.php";
+                }
+
+                $localizedStrings = $a->strings;
+                unset($a);
+
+                $key = array_search($gender['gender'], $localizedStrings);
+                if($key !== false) {
+                    break;
+                }
+
+                // defaulting to empty string
+                $key = '';
+            }
+            DBA::update('contact', ['gender' => $key], ['id' => $gender['id']]);
+            logger::log('Updated contact ' . $gender['id'] . ' to gender ' . $key . ' (was: ' . $gender['gender'] . ')');
+
+            if ($key == '') {
+                $fail++;
+            }
+            else {
+                $success++;
+            }
+        }
+
+           Logger::log("Gender fix completed. Success: $success. Fail: $fail");
+    }
 }