1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-27 01:02:42 +01:00
phorge-phorge/resources/sql/autopatches/20181031.board.01.queryreset.php

51 lines
1.3 KiB
PHP
Raw Normal View History

<?php
// See T13208. It was previously possible to replace a saved query with another
// saved query, causing loss of the first query. Find projects which have their
// default query set to an invalid query and throw the setting away.
$viewer = PhabricatorUser::getOmnipotentUser();
$table = new PhabricatorProject();
$conn = $table->establishConnection('w');
$iterator = new LiskMigrationIterator($table);
$search_engine = id(new ManiphestTaskSearchEngine())
->setViewer($viewer);
foreach ($iterator as $project) {
$default_filter = $project->getDefaultWorkboardFilter();
if (!strlen($default_filter)) {
continue;
}
if ($search_engine->isBuiltinQuery($default_filter)) {
continue;
}
$saved = id(new PhabricatorSavedQueryQuery())
->setViewer($viewer)
->withQueryKeys(array($default_filter))
->executeOne();
if ($saved) {
continue;
}
$properties = $project->getProperties();
unset($properties['workboard.filter.default']);
queryfx(
$conn,
'UPDATE %T SET properties = %s WHERE id = %d',
$table->getTableName(),
phutil_json_encode($properties),
$project->getID());
echo tsprintf(
"%s\n",
pht(
'Project ("%s") had an invalid query saved as a default workboard '.
'query. The query has been reset. See T13208.',
$project->getDisplayName()));
}