chg: [CLI] Show errors for updateTaxonomies

pull/8372/head
Jakub Onderka 2022-05-14 10:39:29 +02:00
parent 2f7c671adb
commit 8ee38925ff
3 changed files with 26 additions and 16 deletions

View File

@ -9,6 +9,7 @@ App::uses('JsonTool', 'Tools');
* @property Feed $Feed
* @property Warninglist $warninglist
* @property AdminSetting $AdminSetting
* @property Taxonomy $Taxonomy
*/
class AdminShell extends AppShell
{
@ -23,6 +24,9 @@ class AdminShell extends AppShell
$parser->addSubcommand('updateWarningLists', array(
'help' => __('Update the JSON definition of warninglists.'),
));
$parser->addSubcommand('updateTaxonomies', array(
'help' => __('Update the JSON definition of taxonomies.'),
));
$parser->addSubcommand('setSetting', [
'help' => __('Set setting in PHP config file.'),
'parser' => [
@ -282,22 +286,27 @@ class AdminShell extends AppShell
public function updateTaxonomies()
{
$this->ConfigLoad->execute();
$result = $this->Taxonomy->update();
$successes = count(!empty($result['success']) ? $result['success'] : []);
$fails = count(!empty($result['fails']) ? $result['fails'] : []);
$message = '';
if ($successes == 0 && $fails == 0) {
$message = __('All taxonomies are up to date already.');
} elseif ($successes == 0 && $fails > 0) {
$successes = empty($result['success']) ? 0 : count($result['success']);
$fails = empty($result['fails']) ? 0 : count($result['fails']);
if ($successes === 0 && $fails === 0) {
$message = __('All taxonomies are up to date already.');
} elseif ($successes === 0 && $fails > 0) {
$message = __('Could not update any of the taxonomies.');
} elseif ($successes > 0 ) {
} else {
$message = __('Successfully updated %s taxonomies.', $successes);
if ($fails != 0) {
if ($fails !== 0) {
$message .= __(' However, could not update %s taxonomies.', $fails);
}
}
echo $message . PHP_EOL;
$this->out($message);
if ($fails) {
$this->out(__('Fails:'));
foreach ($result['fails'] as $fail) {
$this->out("{$fail['namespace']}: {$fail['fail']}");
}
}
}
public function enableTaxonomyTags()

View File

@ -270,9 +270,9 @@ class TaxonomiesController extends AppController
$message = __('Could not update any of the taxonomy libraries');
} else {
$flashType = 'success';
$message = __('Successfully updated ') . $successes . __(' taxonomy libraries.');
$message = __('Successfully updated %s taxonomy libraries.', $successes);
if ($fails != 0) {
$message .= __(' However, could not update ') . $fails . __(' taxonomy libraries.');
$message .= __(' However, could not update %s taxonomy libraries.', $fails);
}
}
if ($this->_isRest()) {

View File

@ -49,14 +49,15 @@ class Taxonomy extends AppModel
continue;
}
$file = new File(APP . 'files' . DS . 'taxonomies' . DS . $dir . DS . 'machinetag.json');
if (!$file->exists()) {
$machineTagPath = APP . 'files' . DS . 'taxonomies' . DS . $dir . DS . 'machinetag.json';
if (!file_exists($machineTagPath)) {
continue;
}
try {
$vocab = $this->jsonDecode($file->read());
$vocab = FileAccessTool::readJsonFromFile($machineTagPath);
} catch (Exception $e) {
$updated['fails'][] = array('namespace' => $dir, 'fail' => "File machinetag.json is not valid JSON.");
$updated['fails'][] = ['namespace' => $dir, 'fail' => $e->getMessage()];
continue;
}