Added post-update script

Please review first. I don't want to test changes that are not going pass the review.
This commit is contained in:
Jeroen De Meerleer 2018-12-18 14:42:02 +01:00 committed by Hypolite Petovan
parent ecb28f6e94
commit 0906c3532c

View 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");
}
}