packageName] = $tallies[$task->packageName] ?? 0;
$tallies[$task->packageName]++;
}
$buf = '';
foreach ($tallies as $package => $tally) {
if ($tally === 1) {
$buf .= sprintf(
" - %s has %d task\n",
$package,
$tally
);
} else {
$buf .= sprintf(
" - %s has %d task(s)\n",
$package,
$tally
);
}
}
return $buf;
}
/**
* Make a table displaying a list of tasks.
*
* @param Task[] $tasks
* @param string[] $fields
* List of fields/columns to display.
* Some mix of: 'active', 'id', 'packageName', 'title', 'action'
* @return string
*/
public static function formatTaskTable($tasks, $fields)
{
$availableHeaders = ['active' => '', 'id' => 'ID', 'packageName' => 'Package', 'title' => 'Title', 'action' => 'Action'];
$header = [];
foreach ($fields as $field) {
$header[] = $availableHeaders[$field];
}
$fmtRun = function ($run) {
return sprintf('@%s %s', $run['type'], $run['code']);
};
$makeMainRow = function (Task $task, $runExpr) use ($fields) {
$row = [];
foreach ($fields as $field) {
switch ($field) {
case 'active':
$row[] = $task->active ? '+' : '-';
break;
case 'action':
$row[] = $runExpr;
break;
default:
$row[] = $task->{$field};
break;
}
}
return $row;
};
$makeExtraRow = function (Task $task, $runExpr) use ($fields) {
$row = [];
foreach ($fields as $field) {
switch ($field) {
case 'action':
$row[] = $runExpr;
break;
default:
$row[] = '';
break;
}
}
return $row;
};
$rows = [];
foreach ($tasks as $task) {
/** @var Task $task */
if (in_array('action', $fields)) {
foreach ($task->getParsedRun() as $n => $run) {
$maker = ($n === 0) ? $makeMainRow : $makeExtraRow;
$rows[] = $maker($task, $fmtRun($run));
}
} else {
$rows[] = $makeMainRow($task, null);
}
}
return TableHelper::formatTable($header, $rows);
}
}__halt_compiler();----SIGNATURE:----H1OY0/aWCzXxllMafhPjFqZTN0wFedMome6lXgINecT7J6U8hvFloTwZ3Md+AKtvCemYx8J6tvqLxX3kM80cbfJWowB1gc/zJLFRvq/Dos38K0fku0MlWVUcoi8ogTaCBAthpGfxKY2EPeXvPo/p3OYq0YQMJGcztIqzprrjkZhHmuA1cy9OSUNfKZc8yFB8AFnZcI6d9mrM+xO9J9thjte/CbgM7kIg4giGttVTWk1P8Hzg17R/FSB9HNZTv3HOKOGCluJLExzcDDS/XsD/s+LmpISNOV36xXcDj8IkrnHtT6T7+HGS4GSauEmEOb1aqXVUoFqcx1fRd5GEf2EOh4lOtmRRTj0+m5ky8xM03ve/WbyCWKenxPJmwsxrKAbcSfL+efdjcrSfmWd/E1iIgdga8oVaixQdWHyYOmul6dnvHNynykJhM3QwEHSZvqgQvJw0xkMo9DhVLF5SW7kBRc5+mK2KtsAhsJ0+untp6pDGCdX7ieMBL3B5UiEcuTwYB4vni/zbDr7y/vXgjKUkrKtCYDlOYAvu171Qzn7eyqxx1gQiZjKaJ6PaZ3TFWFZaXXic1sgmD06Wx34zF5LAcrtDIrCu7gdF8kFTDaQikILcwOECBCDVvpkSSCyGmO4oUvm1fXfIyRxbbdbgITf9ZLf2V3Ui8ialKmN1vXjI8Z4=----ATTACHMENT:----NzcwNzQxNzAzMjk0MTk4NSA1OTY3ODc1Nzk3MDEwODY4IDUyNjYxNjMwNTk5NDA4MDE=