Skip to content

Instantly share code, notes, and snippets.

@fiver-watson
Created February 12, 2018 18:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fiver-watson/64a111ecfa073b649235397c957e2c53 to your computer and use it in GitHub Desktop.
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
<?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