resp = $this->call(Endpoints::WORK->value)->params([ WorkModel::IS_LISTED->value => true ])->get(); // Fetch metadata for work items if we got an ok from work endpoint if ($this->resp->ok) { $this->tags = $this->call(Endpoints::WORK_TAGS->value)->get(); $this->actions = $this->call(Endpoints::WORK_ACTIONS->value)->get(); } } /* Order response from endpoint into a multi-dimensional array. For example, a single item created at 14th of February 2024 would be ordered like this [2024 => [[02 => [14 => []]]]] */ public function get_timeline(): array { if (!$this->resp->ok) { return []; } $timeline = []; // Create array of arrays ordered by decending year, month, day, items foreach ($this->resp->json() as $row) { // Create array for current year if it doesn't exist if (!array_key_exists($row[WorkModel::DATE_YEAR->value], $timeline)) { $timeline[$row[WorkModel::DATE_YEAR->value]] = []; } // Create array for current month if it doesn't exist if (!array_key_exists($row[WorkModel::DATE_MONTH->value], $timeline[$row[WorkModel::DATE_YEAR->value]])) { $timeline[$row[WorkModel::DATE_YEAR->value]][$row[WorkModel::DATE_MONTH->value]] = []; } // Create array for current day if it doesn't exist if (!array_key_exists($row[WorkModel::DATE_DAY->value], $timeline[$row[WorkModel::DATE_YEAR->value]][$row[WorkModel::DATE_MONTH->value]])) { $timeline[$row[WorkModel::DATE_YEAR->value]][$row[WorkModel::DATE_MONTH->value]][$row[WorkModel::DATE_DAY->value]] = []; } // Append item to ordered array $timeline[$row[WorkModel::DATE_YEAR->value]][$row[WorkModel::DATE_MONTH->value]][$row[WorkModel::DATE_DAY->value]][] = $row; } return $timeline; } public function get_tags(string $key): array { if (!$this->resp->ok) { return []; } return in_array($key, $this->tags->json()) ? $this->tags->json()[$key] : []; } public function get_actions(string $key): array { if (!$this->resp->ok) { return []; } return in_array($key, $this->actions->json()) ? $this->actions->json()[$key] : []; } } ?>
get_timeline() as $year => $months): ?>

$days): ?>

$items): ?>

get_tags($item[WorkModel::ID->value])): ?>
get_tags($item[WorkModel::ID->value]) as $tag): ?>

value] ?>

value])): ?>

value] ?>

value] ?>

get_actions($item[WorkModel::ID->value])): ?> get_actions($item[WorkModel::ID->value]) as $action): ?>

This is not really the end of the list. I will add some of my notable older work at some point.