<?php require_once __DIR__ . '/BasePage.php'; require_once __DIR__ . '/../render/HtmlTagRenderer.php'; class TagsPage extends BasePage { private $currentRepo; private $git; public function __construct( array $repositories, array $currentRepo, Git $git ) { parent::__construct( $repositories ); $this->currentRepo = $currentRepo; $this->git = $git; $this->title = $currentRepo['name'] . ' - Tags'; } public function render() { $this->renderLayout( function() { $this->renderBreadcrumbs( $this->currentRepo, ['Tags'] ); echo '<h2>Tags</h2>'; $tags = []; $this->git->eachTag( function( Tag $tag ) use ( &$tags ) { $tags[] = $tag; } ); usort( $tags, function( Tag $a, Tag $b ) { return $a->compare( $b ); } ); if( empty( $tags ) ) { echo '<p>No tags found.</p>'; } else { $renderer = new HtmlTagRenderer( $this->currentRepo['safe_name'] ); echo '<table class="tag-table">'; echo '<thead>'; echo '<tr>'; echo '<th>Name</th><th>Message</th><th>Author</th>'; echo '<th class="tag-age-header">Age</th>'; echo '<th class="tag-commit-header">Commit</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; $count = count( $tags ); for( $i = 0; $i < $count; $i++ ) { $tag = $tags[$i]; $prevTag = $tags[$i + 1] ?? null; $tag->render( $renderer, $prevTag ); } echo '</tbody>'; echo '</table>'; } }, $this->currentRepo ); } }