getUri()->withHost('')->withPort(0)->withScheme(''); $urlPath = rtrim($request->getUri()->getPath(), '/'); $response = [ 'data' => [], 'links' => [ 'self' => (string)$apiUrl, ], ]; foreach (TasksCommand::getTasks() as $task) { $task = array_filter( self::formatTask($task), fn($k) => false === in_array($k, ['command', 'args']), ARRAY_FILTER_USE_KEY ); $task['links'] = [ 'self' => (string)$apiUrl->withPath($urlPath . '/' . ag($task, 'name')), ]; $response['data'][] = $task; } return api_response($response, HTTP_STATUS::HTTP_OK, []); } public static function formatTask(array $task): array { $isEnabled = (bool)ag($task, 'enabled', false); $item = [ 'name' => ag($task, 'name'), 'description' => ag($task, 'description'), 'enabled' => $isEnabled, 'timer' => ag($task, 'timer')->getexpression(), 'next_run' => null, 'prev_run' => null, 'command' => ag($task, 'command'), 'args' => ag($task, 'args'), ]; if (!is_string($item['command'])) { $item['command'] = get_debug_type($item['command']); } if ($isEnabled) { $item['next_run'] = makeDate(ag($task, 'timer')->getNextRunDate()); $item['prev_run'] = makeDate(ag($task, 'timer')->getPreviousRunDate()); } return $item; } }