Created
February 12, 2018 18:27
-
-
Save fiver-watson/64a111ecfa073b649235397c957e2c53 to your computer and use it in GitHub Desktop.
Script to update the i18n name of a term in AtoM 2.x - relates to issue #9541
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
print("Have you created a backup of the database? [y/N]: "); | |
flush(); | |
ob_flush(); | |
$confirmation = trim(fgets(STDIN)); | |
if ($confirmation !== 'y') | |
{ | |
exit(0); | |
} | |
print("Enter taxonomy name (case insensitive): "); | |
flush(); | |
ob_flush(); | |
$taxonomyName = trim(fgets(STDIN)); | |
print("Enter taxonomy name culture (default: en): "); | |
flush(); | |
ob_flush(); | |
$taxonomyNameCulture = trim(fgets(STDIN)); | |
if (strlen($taxonomyNameCulture) == 0) | |
{ | |
$taxonomyNameCulture = 'en'; | |
} | |
$criteria = new Criteria; | |
$criteria->addJoin(QubitTaxonomy::ID, QubitTaxonomyI18n::ID); | |
$criteria->add(QubitTaxonomyI18n::NAME, $taxonomyName); | |
$criteria->add(QubitTaxonomyI18n::CULTURE, $taxonomyNameCulture); | |
if (null === $taxonomy = QubitTaxonomy::getOne($criteria)) | |
{ | |
print("Taxonomy not found.\n"); | |
exit(0); | |
} | |
print("Enter current term name (case insensitive): "); | |
flush(); | |
ob_flush(); | |
$currentTermName = trim(fgets(STDIN)); | |
print("Enter current term name culture (default: en): "); | |
flush(); | |
ob_flush(); | |
$currentTermNameCulture = trim(fgets(STDIN)); | |
if (strlen($currentTermNameCulture) == 0) | |
{ | |
$currentTermNameCulture = 'en'; | |
} | |
$criteria = new Criteria; | |
$criteria->addJoin(QubitTerm::ID, QubitTermI18n::ID); | |
$criteria->add(QubitTermI18n::NAME, $currentTermName); | |
$criteria->add(QubitTermI18n::CULTURE, $currentTermNameCulture); | |
$criteria->addJoin(QubitTerm::TAXONOMY_ID, QubitTaxonomy::ID); | |
$criteria->add(QubitTaxonomy::ID, $taxonomy->id); | |
if (null === $term = QubitTerm::getOne($criteria)) | |
{ | |
print("Term not found.\n"); | |
exit(0); | |
} | |
print("Enter new term name (leave empty to remove): "); | |
flush(); | |
ob_flush(); | |
$newTermName = trim(fgets(STDIN)); | |
if (strlen($newTermName) == 0) | |
{ | |
$newTermName = null; | |
} | |
print("Enter new term name culture (default: en): "); | |
flush(); | |
ob_flush(); | |
$newTermNameCulture = trim(fgets(STDIN)); | |
if (strlen($newTermNameCulture) == 0) | |
{ | |
$newTermNameCulture = 'en'; | |
} | |
$term->setName($newTermName, array('culture' => $newTermNameCulture)); | |
$term->save(); | |
print("Term name updated.\n"); | |
// Hide cursor | |
print("\e[?25l"); | |
print("Updating related descriptions "); | |
$pointsCount = 0; | |
$iosUpdated = 0; | |
foreach ($term->objectTermRelations as $item) | |
{ | |
if (!($item->object instanceof QubitInformationObject)) | |
{ | |
continue; | |
} | |
QubitSearch::getInstance()->update($item->object); | |
if ($pointsCount == 5) | |
{ | |
print("\033[5D"); | |
print(" "); | |
print("\033[5D"); | |
$pointsCount = 0; | |
} | |
print("."); | |
$pointsCount++; | |
$iosUpdated++; | |
} | |
for ($i = $pointsCount; $i < 5; $i++) | |
{ | |
print("."); | |
} | |
print(" Done!\n"); | |
print(" - $iosUpdated descriptions updated.\n"); | |
// Show cursor | |
print("\e[?25h"); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment