[1.13.1.310] February 27, 2026
CHORE: MERGE PULL REQUEST #8 FROM FERNANDOCBHORTA/ANTIGRA
Add Quick Video Add admin page and findAll
[1.13.1.309] February 27, 2026
CHORE: ADD QUICK VIDEO ADD ADMIN PAGE AND FINDALL
Introduce a new admin page (admin/games_video_quick.php) to fetch videos from a configured YouTube channel, filter titles that match date-based patterns, display embeds for selection, and bulk-add selected videos to a chosen game (with CSRF checks and DB transactions). Add a dashboard link to the new page (admin/index.php). Expose GameRepositoryInterface::findAll and implement it in PdoGameRepository to return Game entities (used to populate th
[1.13.1.308] February 26, 2026
CHORE: ADD DOCBLOCKS; TIGHTEN RACING POINTS EDIT FLOW
Add PHPDoc blocks and small refactors to Component methods for clarity and maintainability (highlightArticles, relatedArticles, feature, seeAlso, listArticlesNoImages). Improve admin/racing_points_edit.php by adding a file header, CSRF handling comment, safer POST extraction with defaults, explicit validation for the 'system' field, clearer create/update control flow, consistent redirect formatting, and a delete redirect fix. These ch
[1.13.1.307] January 19, 2026
CHORE: IMAGES FOR 1993 GP2 F1 ROUND 8
[1.13.1.306] January 10, 2026
CHORE: GP2 1993 F1 - ROUND 07 IMAGES
[1.13.1.305] January 03, 2026
CHORE: 1993 GP2 MONACO CARS
[1.13.1.304] December 27, 2025
CHORE: ADD SPAIN 1993 IMAGES TO GP2 DIRECTORY
Added six new PNG images for 1993 Spanish GP to the images/gp2 directory.
[1.13.1.303] December 27, 2025
CHORE: ENABLE AUTOPLAY AND MUTE ON EMBEDDED YOUTUBE IFRAMES
Appends '?autoplay=1&mute=1' to the YouTube embed URL in the iframe, ensuring videos start automatically and are muted by default.
[1.13.1.302] December 23, 2025
CHORE: ADD CAR AND TRACK IMAGES TO DIRT RESULTS DISPLAY
Updated SQL query to fetch car and track images and modified the DirtRender output to display these images alongside the result details.
[1.13.1.301] December 21, 2025
CHORE: UPDATE GAME NAME IN SESSION DESCRIPTION
Changed the game name in the session description from 'DiRT Rally 2.0' to 'DiRT Rally 2.0 Game of the Year Edition' for more accurate information.
[1.13.1.300] December 20, 2025
CHORE: ENHANCE RACE DESCRIPTIONS WITH GAME DETAILS
Updated race result descriptions to include the game name for better context. Improved the description text in both RacingRepo and GP2 results edit to clarify the use of Grand Prix II and related modifications.
[1.13.1.299] December 20, 2025
CHORE: ADD MORE IMAGE FILES TO GP2 DIRECTORY
Added liveries for F1 1993 San Marino GP (GP2)
[1.13.1.298] December 19, 2025
CHORE: SHOW SEASON COMPLETION STATUS IN SEASON LIST
Updated the listSeasons method to include the number of completed rounds per season and display the season's status as 'Completed' or 'Ongoing' with the current round in the UI.
[1.13.1.297] December 19, 2025
CHORE: ADD GP2 1993 ROUND IMAGES AND UPDATE RESULT HANDLING
Added new images for GP2 1993 round 03. Updated gp2_results_edit.php to strip .png from image names before saving, retrieve season data, and use round-specific images if available. Minor HTML cleanup in Racing.php.
[1.13.1.296] December 18, 2025
CHORE: UPDATE FLAG IMAGE STYLING IN RESULTS TABLES
Replaces fixed width on flag images with a relative height (1.0em) in GP2 and Racing results tables for improved responsiveness and consistency.
[1.13.1.295] December 18, 2025
CHORE: ADD DISPLAY OF ALL CARS FROM SEASON LINEUP
Introduces GP2Repo::getAllCarsFromSeasonLineup and GP2Render::renderAllCars to fetch and display all unique car liveries, drivers, and teams for a given season. Updates the season template to show all cars used in the season, enhancing lineup visibility.
[1.13.1.294] December 18, 2025
CHORE: ENHANCE RESULT EDITING WITH MORE FIELDS AND POSITION LOGIC
Expanded the RacingRepo::updateResult method to accept and update additional fields (raceid, driver, team, classposition, grid) and refactored position adjustment logic into a new adjustPosition method. Updated the result edit form to allow selection of driver and team, and to input class position, grid, and extra points. Added logic to handle both creation and update of results, ensuring positions are adjusted accordingly. Also added a
[1.13.1.293] December 18, 2025
CHORE: REFACTOR CHANGELOG TO FETCH COMMITS FROM DATABASE
Replaces the GitHub API-based commit fetching logic with a database query using the Database class. This simplifies the changelog retrieval process and removes API pagination and HTTP request handling.
[1.13.1.292] December 18, 2025
CHORE: FILTER CHAMPIONSHIP QUERIES BY RACE TYPE
Added conditions to SQL queries to include only entries where race.type or racing_race.type is 'Race'. This ensures that only actual race events are considered in championship standings and related calculations.
[1.13.1.291] December 17, 2025
CHORE: ADD FILTERS TO RACING RESULTS IN SITEMAP GENERATION
Updated the sitemap generation to include only races that have results and are not aborted by passing specific filters to the RacingRepo::listRaces method.
[1.13.1.290] December 17, 2025
CHORE: ADD LAST UPDATED TIMESTAMP TO LIST PAGES
Introduced getLastUpdated() methods to repository classes to fetch the latest update timestamp from relevant tables. Updated list templates to include the last updated timestamp in the $article array, allowing display of this information in rendered pages.
[1.13.1.289] December 17, 2025
CHORE: UPDATE TEAMS AND DRIVERS SECTION WORDING
Rephrased the introductory sentence in the Teams and Drivers section for improved clarity and conciseness.
[1.13.1.288] December 17, 2025
CHORE: ADD SEASON LAST UPDATE TIMESTAMP TO GP2 SEASON PAGE
Introduced GP2Repo::getSeasonDate to fetch the latest result timestamp for a season. Updated gp2_season.php to set the article's updated_at field based on the most recent result, improving accuracy of update information.
[1.13.1.287] December 17, 2025
FIX SEASON-ROUND JOIN CONDITION IN RESULTS QUERY
Updated the SQL join between gp2_result and gp2_season_rounds to include both season and round, ensuring correct association of rounds within each season.
[1.13.0.286] December 17, 2025
CHORE: ADD FLAG ICONS TO RACE RESULTS TABLE HEADERS
Updated RacingRender to display country flag images in the race results table headers instead of just country names. Also added new images for GP2 round 02 of 1993.
[1.13.0.285] December 16, 2025
CHORE: RENAMED IMAGES
[1.13.0.284] December 16, 2025
CHORE: ADD FLAG ICONS TO RESULTS AND UPDATE SEASON EDIT FORM
Display flag icons in the results table by adding flag images next to race links. Update the season edit form to include input fields for rounds and drivers. Also, fix the SQL insert statement in GP2Repo to include the 'text' field and enable error reporting in the edit script.
[1.13.0.283] December 16, 2025
CHORE: UPDATED GITIGNORE AND IMAGES
[1.13.0.282] December 15, 2025
CHORE: ADD TINYMCE EDITOR TO SEASON DESCRIPTION FIELD
Replaced the description input with a textarea and integrated TinyMCE for rich text editing. Added TinyMCE initialization script with image upload support and custom toolbar for improved content management.
[1.13.0.281] December 14, 2025
CHORE: UPDATE COLLECTIBLE.PHP
[1.13.0.280] December 14, 2025
CHORE: ADD GET FILTER SUPPORT AND POINTS TABLE TO STANDINGS
Enhanced filtering in RacingRender to support both POST and GET parameters for all filters, improving usability for direct links and navigation. Added a new method getDriversStandingsWithPointsTable in RacingRepo and updated renderFullDriversStandings to display a points distribution table for each driver per race, providing more detailed championship insights. Updated racing_list.php to support GET-based championship filtering.
[1.13.0.279] December 14, 2025
CHORE: REFACTOR POINTS CALCULATION AND UPDATE STANDINGS DISPLAY
Simplified the SQL points calculation in RacingRepo by using SUM with IFNULL for extra points. Also updated RacingRender to include an additional call to displayDriversStandings when rendering standings.
[1.13.0.278] December 13, 2025
CHORE: UPDATE RACING.PHP
[1.13.0.277] December 13, 2025
CHORE: UPDATE RACING STANDINGS AND VIDEO EDIT FORMS
Improves driver standings calculation by including extra points and handling DNF logic in RacingRepo. Adjusts points position logic in RacingRender for per-race accuracy. Updates video edit forms to improve date handling and video description template in game_edit.php.
[1.13.0.276] December 13, 2025
CHORE: ADD DRIVERS STANDINGS TABLE AND UPDATE RENDERING
Introduced getDriversStandingsTable in RacingRepo to generate a table of driver results and points for each race in a season. Updated RacingRender to use this new method for rendering full drivers championship standings, and refactored the table rendering logic to display results per race and total points.
[1.13.0.275] December 12, 2025
CHORE: IMPROVE DATE HANDLING AND RACE DATA VALIDATION
Updated game_edit.php to use full datetime format for the date input. Enhanced racing_detail.php to handle missing or empty race data and avoid errors when country information is absent. Improved racing_list.php to robustly handle unset championship filter values.
[1.13.0.274] December 12, 2025
CHORE: REFACTOR RENDERFULLDRIVERSSTANDINGS TO USE RACINGREPO
Updated renderFullDriversStandings to use RacingRepo instead of GP2Repo and adjusted its parameters to accept championshipId only. Updated race data handling and table header generation to use new race fields. Commented out the old rows rendering logic for future refactoring. Also fixed SQL subquery in standings methods to remove unnecessary type casting.
[1.13.0.273] December 12, 2025
CHORE: REMOVE ERROR_REPORTING FROM RACING_RESULT_EDIT.PHP
Deleted the error_reporting(E_ALL) line to prevent all PHP errors from being displayed, likely for production readiness or cleaner output.
[1.13.0.272] December 12, 2025
CHORE: REFACTOR RACING CHAMPIONSHIP RENDERING AND CLEANUP
Removed obsolete championship and index templates, consolidating their logic into the main racing_list.php. Refactored RacingRender to add renderChampionship(), which displays driver and team standings for a selected championship. Updated RacingRepo methods to handle optional raceId filtering more robustly. Minor fixes to variable initialization and template structure.
[1.13.0.271] December 12, 2025
CHORE: PLACEHOLDERS: ADD SEASON SUMMARY AND STANDINGS RENDERING FOR RACING
Introduces new stud methods in RacingRender for rendering season calendar, lineup, points system, and full drivers standings. Adds new templates for championship detail, championship list, and index pages. Updates racing_list.php to use parent title and slug for improved navigation context.
[1.13.0.270] December 11, 2025
CHORE: ADD METHOD TO DISPLAY FULL SEASON STANDINGS
Introduced a placeholder displayFullSeasonStandings to RacingRender. The final version will contain a table with all drivers and races, similar to the one on GP2 Standings
[1.13.0.269] December 10, 2025
CHORE: ADD CREATE FUNCTIONALITY TO DIRT RESULTS EDITOR
Enhanced dirt_results_edit.php to support creating new DIRT results, including form fields for track, date, and time. Updated UI to allow adding new results from dirt_results.php and improved handling of form data for both creation and editing.
[1.13.0.268] December 09, 2025
CHORE: IMPROVE RACE LOG PROCESSING AND ABORTED RACE DETECTION
Enhances the filename field to include SessionGuid for better identification and refines logic to detect aborted races, including a precautionary check for specific filenames. Also clarifies when results are created to ensure only new races trigger result creation.
[1.13.0.267] December 09, 2025
CHORE: ADD FILENAME TO SESSION DATA AND IMPROVE TRACK CREATION
Adds the 'filename' field to session data for better traceability and changes temp_filename assignment to use the actual filename instead of SessionGuid.
[1.13.0.266] December 09, 2025
CHORE: HANDLE NON-RACE SESSIONS AND IMPROVE ABORTED RACE DISPLAY
Commented out file filtering in AMS2 to process all files, set aborted to 0 for non-race sessions, and only create results if raceId is valid. Updated racing_sessions.php to gray out aborted races in the session list for better visual distinction.
[1.13.0.265] December 09, 2025
CHORE: DELETE RACE RESULTS WHEN REMOVING A RACE
Added logic to also delete associated entries from the racing_result table when a race is deleted, ensuring data consistency and preventing orphaned results.
[1.13.0.264] December 09, 2025
CHORE: UPDATE RACE RESULTS ORDERING AND GAP CALCULATION
Changed race results ordering to prioritize position, then laps, then racetime. Updated session results to use calculateGap instead of getResultsByRace, and improved display logic for race results and gap calculation, including handling of special cases and formatting. Updated racing_sessions_edit.php to use the new gap calculation method.
[1.13.0.263] December 08, 2025
FEAT: AMS2 RACE RESULTS AND LOG IMPORT
[1.12.2.262] December 08, 2025
CHORE: ADD AMS2 RACE LOG IMPORT AND UPDATE RACINGREPO
Introduces AMS2.php to handle Automobilista 2 race log import, normalization, and persistence. Updates RacingRepo with new methods for track retrieval, modifies track creation to remove country validation, and extends result creation to support class position and grid. Also adds inc/ams2.php for triggering AMS2 import.
[1.12.2.261] December 06, 2025
CHORE: ADD POINTS COLUMN TO RACE RESULTS TABLE
Introduces a new 'Points' column to the race results table in both the header and each row, providing additional information about each racer's points.
[1.12.2.260] December 06, 2025
CHORE: ADD SUPPORT FOR EXTRA POINTS IN RACING RESULTS
Introduces handling of extra points per driver per race, including database updates, UI fields for editing, and updates to championship standings and result displays. Also adds extra points to the teams and drivers standings calculations and displays extra points in session results.
[1.12.2.259] December 05, 2025
FIX RACE DATE SUBQUERY TO USE EXACT RACE ID
Updated SQL queries to compare race dates using an exact match on race ID instead of less than or equal. This ensures the correct race date is selected for championship standings calculations.
[1.12.1.258] December 05, 2025
CHORE: ADD LAPS COLUMN TO RACES LISTING IN CHAMPIONSHIP EDIT
Updated the getRacesByChampionship query to include the maximum laps per race and modified the championship edit page to display the laps column in the races table.
[1.12.1.257] December 05, 2025
CHORE: REFACTOR RACING STANDINGS DISPLAY AND QUERIES
Split driver and team standings into separate methods and update SQL queries to include team information for driver standings. Updated usages in championship and race edit pages to use new methods. Minor fix to default points system ID handling and added link to points system in index.
[1.12.1.256] December 05, 2025
CHORE: SHOW CHAMPIONSHIP STANDINGS IN SESSION DETAILS
Added display of driver and team standings for sessions associated with a championship. Standings are shown between race results and session images if a championship ID is present.
[1.12.1.255] December 05, 2025
CHORE: ADD TEAMS CHAMPIONSHIP STANDINGS DISPLAY
Introduces getTeamsChampionshipStandings to RacingRepo and refactors standings rendering to support both driver and team standings. Updates the championship edit page to show both driver and team standings.
[1.12.1.254] December 05, 2025
CHORE: REMOVE REQUIRED ATTRIBUTE FROM POINTS SELECT
The 'required' attribute was removed from the points system select field in the racing session edit form, allowing the field to be optional.
[1.12.1.253] December 05, 2025
CHORE: ADD MINIMUM POINTS FILTER TO DRIVER STANDINGS
Introduces a $minimum parameter to filter drivers by minimum points in championship standings. Updates both the RacingRepo and RacingRender methods to support this new filter.
[1.12.1.252] December 05, 2025
CHORE: ADD DRIVERS CHAMPIONSHIP STANDINGS DISPLAY
Introduces methods to calculate and render drivers championship standings in RacingRepo and RacingRender. Updates the championship edit page to show current driver standings for the selected championship.
[1.12.1.251] December 05, 2025
CHORE: REFACTOR RACING POINTS EDIT FORM UI AND LOGIC
Updated the racing points edit form to use improved input labeling, removed hidden position inputs, and widened the points input fields for better usability. Replaced the manual save/delete buttons with a reusable component and switched to the main CSS stylesheet for consistent styling. Also added the Component class for button rendering.
[1.12.1.250] December 05, 2025
CHORE: ADD POINTS SYSTEM MANAGEMENT TO RACING CHAMPIONSHIPS
Introduces CRUD operations for points systems and positions in RacingRepo. Updates championship and race creation/editing to support assigning a points system, and displays points system info in the championship edit view. Also improves navigation order in the index page.
[1.12.1.249] December 05, 2025
CHORE: REMOVE FILTER_FLAG_STRIP_HIGH FROM SLUG SANITIZATION
The FILTER_FLAG_STRIP_HIGH flag was removed from the filter_var call in generateSlug. This change may allow high ASCII characters in slugs, potentially improving support for non-Latin scripts.
[1.12.1.248] December 04, 2025
CHORE: IMPROVE VIDEO DESCRIPTION AND IMAGE RETRIEVAL METHODS
Enhanced the videoDescription method with clearer documentation, improved variable extraction, and more detailed race video descriptions. Refactored getImage to support image type selection, added documentation, and improved logic for retrieving session images, including fallback to default image.
[1.12.1.247] December 04, 2025
CHORE: IMPROVE SLUG GENERATION AND UPDATE NAVIGATION LINKS
Refactored the generateSlug function for better clarity and sanitization, including improved comments and input handling. Updated DiRT 2.0 navigation links in admin/index.php for consistency. Removed unnecessary ASC from SQL ORDER BY in DirtRepo::getTags.
[1.12.1.246] December 04, 2025
CHORE: UPDATE DIRT.PHP
[1.12.1.245] December 04, 2025
CHORE: REFACTOR SITEMAP GENERATION INTO HELPER FUNCTIONS
Split the sitemap generation logic into smaller helper functions for each section (articles, categories, cards, collectibles, games, videos, GP2, DiRT, racing). This reduces cognitive complexity and improves maintainability by delegating data appending to dedicated functions.
[1.12.1.244] December 04, 2025
CHORE: REMOVE DEPRECATED GAME.PHP AND UPDATE SITEMAP INCLUDES
Deleted the backward compatibility wrapper Game.php and removed its inclusion from inc/sitemap.php. The sitemap now directly uses the new GameServiceFactory and related use cases, streamlining the codebase and reducing legacy dependencies.
[1.12.1.243] December 03, 2025
CHORE: MERGE PULL REQUEST #7 FROM FERNANDOCBHORTA/IMPLEMENT-HEXAGONAL-GAME
Feat: Refactor game admin to use hexagonal architecture
[1.12.1.242] December 03, 2025
CHORE: REFACTOR GAME ADMIN TO USE HEXAGONAL ARCHITECTURE
Migrated admin game and video management (CRUD) to use the new Hexagonal Architecture with GameServiceFactory and use case classes for all read and write operations. Updated GameRepo and GameRender to act as backward compatibility wrappers delegating to the new implementation. Refactored admin pages (game_edit.php, games.php, games_video_edit.php, games_videos.php) to use DTOs and use cases, improving maintainability and separation of concerns.
[1.12.1.241] December 03, 2025
CHORE: UPDATE LOCAL_IMPORT.PHP
[1.12.1.240] December 02, 2025
BUGFIX: ORDER TO VIDEO NAVIGATION QUERIES
The renderPreviousNext method now specifies 'ASC' order when fetching next and previous videos. This ensures consistent navigation regardless of default ordering in GameRepo.
[1.12.0.239] December 02, 2025
CHORE: UPDATE FALLBACK IMAGE PATH FOR MISSING COVER FILES
Changed the default placeholder image to use a car-specific image when the cover file is missing, improving contextual relevance for each car.
[1.12.0.238] December 02, 2025
CHORE: IMPROVE IMAGE UPLOAD UX AND TRACK DISPLAY
Redirect users to the listing page after successful image uploads in dirt_cars_edit.php and dirt_tracks_edit.php, replacing the previous upload confirmation message. Also, update dirt_tracks.php to display track country alongside track name for better clarity.
[1.12.0.237] December 02, 2025
FEAT: ADD ADMIN PAGES FOR DIRT CARS AND TRACKS IMAGES
Introduces new admin pages for managing DiRT cars and tracks, including image upload and editing functionality. Adds methods to DirtRepo for updating car and track images, and updates the index page to link to the new admin sections. Also improves changelog versioning logic and displays race time in the results details.
[1.11.2.236] December 01, 2025
CHORE: ADD VIEWPORT META TAG FOR RESPONSIVE DESIGN
Added <meta name="viewport" content="width=device-width, initial-scale=1"> to all admin and content pages to improve mobile responsiveness. Also made minor improvements to the Racing stats display for clarity and consistency.
[1.11.2.235] December 01, 2025
CHORE: ADD TEMPLATE TAGS TO RESULT DESCRIPTIONS
Appends template tags (e.g., {{dirt_$id}}, {{racing_$sessionId}}, {{gp2_$seasonId-$round}}) to the end of result descriptions in Dirt, Racing, and GP2 modules. Also removes ID from the beginning of result titles for consistency.
[1.11.2.234] December 01, 2025
CHORE: IMPROVE UI AND LOGIC FOR RESULTS AND PAGE EDITING
Updated RacingRender to display 'Quick Stats' instead of 'Quick Facts' and removed 'Map' from track title. In gp2_results_edit.php, added row highlighting for missing images and filtered championship standings to exclude zero totals on YouTube video description. In page_edit.php, improved slug generation to check for existing slugs before insertion, only adding RNG when needed.
[1.11.2.233] November 30, 2025
CHORE: IMPROVE MOBILE TABLE DISPLAY IN RACINGRENDER
Added 'hidemobile' class to certain table columns to enhance mobile responsiveness. Updated date formatting for session links and adjusted placement of track map title. Removed 'Track File' list item from session details.
[1.11.2.232] November 30, 2025
CHORE: REFACTOR TRACK MAP IMAGE PLACEMENT IN RACINGRENDER
Moved the track map image block to appear after the drivers' images in the 'Related Images' section. Simplified the image markup and removed the lightbox and data-index attributes from the track map image.
[1.11.2.231] November 30, 2025
CHORE: REVERT "REFACTOR SESSION IMAGE AND TRACK DISPLAY LOGIC"
This reverts commit 0d7398ddcbcca3eb9ddb3ed02c42f1cfb3ad99cc.
[1.11.1.230] November 30, 2025
CHORE: REFACTOR SESSION IMAGE AND TRACK DISPLAY LOGIC
Moved track map and name display from displaySessionImages to displaySessionStats, removing trackId parameter from displaySessionImages and related code. Updated sessionStats query to include track name and map. Simplified image section in displaySessionImages to only show car images.
[1.11.1.229] November 30, 2025
CHORE: IMPROVE RACE DESCRIPTION FORMATTING
Refactored the race description to include track and country details earlier and adjusted section headers for clarity. Removed redundant code and improved overall readability of the generated description.
[1.11.1.228] November 30, 2025
BUGFIX: DIRT TRACK REFERENCE
Fixed a bug in dirt2.php where the switch statement incorrectly used $track instead of $logtrack when creating a new result.
[1.11.0.227] November 30, 2025
CHORE: ADD DEFAULT VIDEO DESCRIPTION TO HIDDENCOPY OUTPUT
Introduced a VIDEO_DESCRIPTION constant and updated Component::hiddenCopy to optionally append it. Updated DirtRepo, RacingRepo, and gp2_results_edit.php to use this feature for video/session descriptions, ensuring a consistent default description is included. Minor improvements to RacingRepo::videoDescription formatting .
[1.11.0.226] November 30, 2025
CHORE: DISPLAY CHAMPIONSHIP AND RACE NAMES IN SESSION STATS
Adds 'champname' and 'race_name' to the sessionStats query and updates the rendering logic to show championship and race names in the Quick Facts section if available.
[1.11.0.225] November 30, 2025
CHORE: INCLUDE CHAMPIONSHIP NAME IN RACE SLUG GENERATION
Updated slug generation in RacingRepo and racing_detail.php to include the championship name, improving uniqueness and clarity. Also refactored conditional logic for race type and aborted status checks, and removed the unused sceneExists method.
[1.11.0.224] November 30, 2025
CHORE: ADD SESSION STATS AND IMAGES TO RACING DETAIL
Introduced methods to display session statistics and related images in RacingRender. Updated RacingRepo with sessionStats and getImage methods. Modified racing_detail.php to use new image logic and improved track display formatting. Added .whitebg CSS class for image backgrounds.
[1.11.0.223] November 29, 2025
CHORE: REFACTOR FILE PROCESSING AND CLEANUP LOGIC IN DIRT2.PHP
Simplifies the file modification time handling by parsing timestamps from filenames instead of using filemtime. Removes redundant sorting and error checking, and ensures files containing 'DirtFish' are deleted. Streamlines the code for better maintainability.
[1.11.0.222] November 29, 2025
CHORE: REFACTOR VIDEO DISPLAY AND RACE RESULT RENDERING
Improves the rendering of race results and video information by restructuring HTML output and separating video title/description from the video list. Also fixes race time assignment for first position and cleans up display logic in RacingRender and racing_sessions_edit.php.
[1.11.0.221] November 29, 2025
CHORE: ADD CANONICAL SLUGS TO ARTICLE METADATA
Introduces a 'slug' field modifier to the $article array in all template files, ensuring consistent canonical URLs for SEO and social sharing. Updates Component.php to use the new slug for Open Graph and canonical meta tags.
[1.11.0.220] November 28, 2025
CHORE: UPDATE RACE RESULT DISPLAY AND FILE SORTING LOGIC
Added car information to race result tables and improved championship queries to include simulation type. Updated dirt2.php to sort CSV files by modification time and prevent automatic deletion. Enhanced racing_detail.php to show more descriptive session info and enable lightbox functionality.
[1.11.0.219] November 28, 2025
CHORE: ADD SIMULATOR FIELD TO CHAMPIONSHIP MANAGEMENT
Introduces a 'sim' field to championship creation and editing in both the RacingRepo class and the championship edit form. Updates validation and ensures races are updated with the new simulator when a championship is modified.
[1.11.0.218] November 28, 2025
CHORE: UPDATE RACE FILTERS AND SESSION DISPLAY LABELS
Added filter to exclude aborted races in RacingRender, changed session table column label to 'SP/MP', and updated session icons to clarify single player and multiplayer. Also fixed position formatting in gp2_results_edit.php output.
[1.11.0.217] November 28, 2025
CHORE: ENHANCE VIDEO INFO GENERATION WITH STANDINGS
Added drivers and teams championship standings to the video description output in gp2_results_edit.php. Also improved the video title formatting
[1.11.0.216] November 28, 2025
CHORE: ADD FILTER FOR RACES WITH RESULTS IN GETFILTERSFROMPOST
Updated getFiltersFromPost to include only races that have results by adding a SQL filter for race IDs present in racing_result. This ensures filtered queries return races with associated results, disregarding sessions with no laptimes registered.
[1.11.0.215] November 28, 2025
CHORE: ADD RACING RESULTS TO SITEMAP GENERATION
Included Racing Games and their results in the sitemap. Racing game results are now added to the sitemap XML, improving coverage for racing-related content.
[1.11.0.214] November 28, 2025
FEAT: RACING GAMES RESULTS
Introduces new templates for racing list and detail pages, including filter forms and pagination. Updates .htaccess to support new racing URLs and redirects. Refactors RacingRepo to support advanced filtering, result counting, and gap calculation, and adds RacingRender for HTML output. Makes sanitize method in Component static for broader use.
First features of Racing Games Results made public. A lot more to come
[1.10.3.213] November 27, 2025
CHORE: IMPROVE VIDEO MANAGEMENT IN SESSION EDIT PAGE
Moved and enhanced the display of existing videos in the session edit form, adding video descriptions to the table. Also updated RacingRepo to format race and driver names consistently and improved session results description formatting.
[1.10.3.212] November 27, 2025
CHORE: ADD VIDEO TITLE AND DESCRIPTION GENERATION METHODS
Introduces videoTitle and videoDescription methods to RacingRepo for generating formatted video titles and descriptions based on session data. Updates racing_sessions_edit.php to use these methods for displaying video information, and improves getSim to support lookup by name or ID.
[1.10.3.211] November 27, 2025
CHORE: ADD VIDEO TITLE AND DESCRIPTION HELPERS TO DIRTREPO
Introduced videoTitle and videoDescription methods in DirtRepo to generate formatted video metadata. Updated dirt_results_edit.php to use these methods for displaying video information, improving code reuse and maintainability. Also renamed $tags to $listTags for clarity.
[1.10.3.210] November 26, 2025
CHORE: ADD DATE FIELD TO DIRT RESULTS AND UPDATE UI
The createResult method now accepts a date parameter and stores it in the database. The import logic in dirt2.php passes the date, and the results edit UI displays the formatted date and adds a video edit link.
[1.10.3.209] November 26, 2025
FIX TAG HANDLING AND ADD HIDDEN COPY TABLE
Corrects the logic for processing tags when editing results and introduces a table displaying hidden copy components for title and description. Also ensures the hidden copy script is included when a video is present.
[1.10.2.208] November 26, 2025
CHORE: ADD REUSABLE HIDDEN COPY FEATURE TO COMPONENT CLASS
Introduced reusable methods in Component for rendering hidden copy-to-clipboard cells and their associated script. Updated gp2_results_edit.php and racing_sessions_edit.php to use these methods, improving code reuse and maintainability. Added a constants.php file for site-wide constants and included it in Database.php.
[1.10.2.207] November 26, 2025
CHORE: IMPROVE VIDEO HANDLING AND NAVIGATION IN RACING ADMIN
Added support for deleting videos in RacingRepo and racing_sessions_edit.php, including UI and backend logic. Improved YouTube video URL normalization to handle 'youtube.com/live' links across multiple edit pages. Updated navigation redirects to use $_SERVER['PHP_SELF'] instead of $_SERVER['REQUEST_URI'] for consistency and reliability. Enhanced dirt_results.php to support filtering via DirtRender.
[1.10.2.206] November 25, 2025
CHORE: UPDATE RESULT DELETION TO ADJUST POSITIONS AND CLEAN TEAM/DRIVER DATA
Deleting a result now also updates the positions of remaining results in the same race. Team and driver names are normalized by removing quotes and converting to uppercase before creation and lookup, ensuring consistency in the database.
[1.10.2.205] November 24, 2025
FIX RACE CREATION LOGIC FOR EMPTY SLOTS
Moved race creation and retrieval inside the slots check to prevent creating races when no driver slots are present. This ensures races are only created when valid slot data exists.
[1.10.1.204] November 24, 2025
CHORE: SIMPLIFY RACING RESULT UPDATE AND EDIT FORM
Removed race, driver, and team fields from RacingRepo::updateResult and related validation. Updated racing_result_edit.php to only handle position, laps, racetime, and bestlap fields, streamlining the form and update logic.
[1.10.1.203] November 24, 2025
CHORE: MOVE DIRT2.PHP AND GTR2.PHP TO INC DIRECTORY
Renamed and relocated dirt2.php and gtr2.php to the inc directory for better organization.
[1.10.1.202] November 24, 2025
CHORE: UPDATE RACE CREATION LOGIC AND ADD GETSIM METHOD
Replaces INSERT IGNORE with INSERT ... ON DUPLICATE KEY UPDATE in race creation to allow updating existing records. Adds getSim method to fetch simulator details by name and updates race import logic to use simulator ID from database. Also improves result creation to handle missing best lap values.
[1.10.1.201] November 24, 2025
CHORE: REFACTOR GTR2 RESULT IMPORT AND ENHANCE RACING MANAGEMENT
Moved GTR2 result import logic from a standalone script to the RacingRepo class for better encapsulation and maintainability. Added new methods for team and race retrieval, improved result sorting, and updated SQL statements to use INSERT IGNORE for idempotency. Introduced a new result editing page, improved session editing and listing, and fixed links and result display logic in the UI.
[1.10.1.200] November 23, 2025
CHORE: ADD RACING SESSION MANAGEMENT AND VIDEO SUPPORT
Enhanced RacingRepo with session listing, filtering, video management, and simulator queries. Added new pages for listing and editing racing sessions, including video association and improved form handling.
[1.10.1.199] November 23, 2025
CHORE: ADD SUPPORT FOR DATETIME-LOCAL INPUT AND IMPROVE OPTION RENDERING
Extended CSS styles to include input[type="datetime-local"] for consistent appearance and validation. Updated Component::renderOptions to allow custom key/value fields for more flexible option rendering. Added link to racing_sessions.php in index.php navigation. Fixed indentation in racing_championships.php table row.
[1.10.1.198] November 23, 2025
CHORE: ADD EDIT PAGES FOR CHAMPIONSHIPS AND DRIVERS
Introduces admin/racing_championships_edit.php and admin/racing_drivers_edit.php for creating and editing championship and driver records. Updates RacingRepo to support primary driver listing and uses INSERT IGNORE for driver and team creation. Also fixes a label in racing_tracks_edit.php.
[1.10.1.197] November 23, 2025
CHORE: ADD TEAM EDIT PAGE AND UPDATE TRACK EDIT NAVIGATION
Introduces racing_teams_edit.php for creating and editing racing teams. Updates racing_tracks_edit.php to use dynamic navigation and redirects based on the current URL, improving consistency and maintainability.
[1.10.1.196] November 22, 2025
CHORE: ADD TRACK EDIT PAGE AND IMPROVE TRACK MANAGEMENT
Introduces racing_tracks_edit.php for creating and editing tracks. Updates RacingRepo to use INSERT IGNORE for track creation, adds sceneExists method, and improves country listing format. Adjusts racing_tracks.php table columns for better clarity.
[1.10.1.195] November 22, 2025
CHORE: ADD RACING GAMES SECTION AND UTILITY METHODS
Introduces a 'Racing Games' management section and displays racing results count in the admin dashboard. Adds saveDelete and renderOptions utility methods to Component.php, and updates CSS to support input[type='number'] styling.
[1.10.1.194] November 22, 2025
CHORE: WRAP ARTICLE IMAGE IN FIT-RATIO LANDSCAPE SPAN
The article image link on category page is now wrapped in a <span> with classes 'fit-ratio landscape' to improve layout and styling consistency for article thumbnails.
[1.10.1.193] November 22, 2025
CHORE: ADD RACING MANAGEMENT PAGES FOR CHAMPIONSHIPS, DRIVERS, TEAMS, AND TRACKS
Introduces new admin pages for managing racing championships, drivers, teams, and tracks. Each page lists relevant entities from the RacingRepo and provides links to create or edit entries, improving the admin interface for racing game data.
[1.10.1.192] November 22, 2025
CHORE: ADD ORDER FILTER TO RESULTS AND UI
Introduces an 'Order' dropdown to the filter form, allowing users to sort results by date or fastest time. The backend now processes the selected order and applies the appropriate ORDER BY clause to the query.
[1.10.1.191] November 21, 2025
CHORE: ADD RACINGREPO WITH FULL CRUD FOR RACING ENTITIES
Implemented the RacingRepo class with PDO-based CRUD operations for countries, championships, drivers, teams, tracks, races, and results. Includes existence checks, retrieval by ID and other keys, and validation for foreign key relationships. This refactor replaces the previous stub and provides a comprehensive repository for racing data management.
[1.10.1.190] November 21, 2025
CHORE: ADD RACINGREPO CLASS FOR RACING GAMES CRUD
Introduces the RacingRepo class as a repository for managing CRUD operations related to Racing Games. Includes required dependencies and documentation, with write operations planned to use prepared statements and foreign key validation.
[1.10.1.189] November 21, 2025
CHORE: UPDATE FILE FILTERING AND CLEAN UP RESULT TEMPLATE
Changed the logic for filtering filenames in dirt2.php to use a more concise negation. Removed commented-out code and unnecessary lightbox call from dirt_result.php for improved clarity and maintainability.
[1.10.1.188] November 21, 2025
CHORE: ADD DIRT2 IMPORT SCRIPT AND IMPROVE GAME EDITING
Added a script for importing DiRT 2.0 results from CSV logs automatically. Enhanced game_edit.php with delete functionality and improved form links. Fixed video embedding in Component.php to check for empty YouTube IDs. Updated dirt_result.php to show last update date and adjust description rendering.
[1.10.1.187] November 19, 2025
CHORE: ADD ACCESSIBILITY IMPROVEMENTS TO MARKUP
Added 'role' attributes to header and main elements in category.php for better accessibility. Also included 'alt' text for car images in GP2.php to improve screen reader support.
[1.10.1.186] November 19, 2025
CHORE: IMPROVE SEMANTIC HTML AND REMOVE UNUSED LIGHTBOX CALLS
Updated several templates and components to use more semantic HTML elements and ARIA roles, such as <main>, <footer>, and role attributes. Removed unnecessary calls to $component->lightbox() and scriptResizeCol() from game_details.php and game_video.php for cleaner output.
[1.10.1.185] November 19, 2025
CHORE: UPDATE VIDEO SITEMAP CHANGEFREQ TO MONTHLY
Changed the changefreq value for video entries in the sitemap from 'weekly' to 'monthly' to better reflect update frequency.
[1.10.1.184] November 19, 2025
CHORE: REMOVE PUBLICATION DATE FROM GAME RENDER OUTPUT
The publication date display was removed from the game render output, leaving only the game title. This simplifies the UI and focuses attention on the game title.
[1.10.1.183] November 19, 2025
BUGFIX: UPDATE VIDEO DISPLAY AND DETAILS HANDLING
Modified GameRender::displayVideos to accept offset and total parameters for improved pagination logic. Updated template calls to pass new arguments and added 'updated_at' field to game_video.php for enhanced video metadata.
[1.10.0.182] November 19, 2025
FEAT: ADD VIDEO DETAIL PAGE AND UPDATE VIDEO ROUTING
Introduces a new game video detail template and updates .htaccess to support clean URLs for individual game videos. Enhances GameRepo and GameRender to support video pagination, previous/next navigation, and improved video link generation. Updates sitemap generation to include video URLs and refines video queries in game details.
[1.9.3.181] November 18, 2025
CHORE: ADD VIDEO PAGINATION TO GAME DETAILS PAGE
Updated GameRepo::getVideos to support limit and offset parameters for pagination. Modified game_details.php to paginate videos and render pagination controls. Improved video edit page titles to include simulator name.
[1.9.3.180] November 18, 2025
FIX: REMOVE VIDEO ASSIGNMENT FROM GAME EDIT
Eliminated logic and UI for assigning videos to games in game_edit.php. The form no longer handles video selection, and related database updates have been removed.
[1.9.2.179] November 18, 2025
CHORE: UPDATE RESULTS QUERY AND REVERSE RESULTS ORDER
Changed getRandomCarFromSeasonLineup to select DISTINCT images from gp2_result instead of gp2_season_lineup. Also, reversed the order of results in gp2_results.php for display purposes.
[1.9.2.178] November 18, 2025
CHORE: REFACTOR YOUTUBE EMBED LOGIC AND IMPROVE VIDEO EDIT
Moved YouTube embed logic to Component::embedVideo and updated games_video_edit.php to use it. Added handling for '?t=' to '?start=' in video links and improved input sanitization.
[1.9.2.177] November 17, 2025
CHORE: REDIRECT AFTER VIDEO INSERT IN GAME_EDIT.PHP
Adds a redirect to the game edit page after successfully inserting a gaming video, improving user experience by preventing form resubmission on refresh.
[1.9.2.176] November 17, 2025
CHORE: UPDATE VIDEO ORDERING IN GETVIDEOS QUERY
Changed the SQL ORDER BY clause in getVideos to sort by pubdate, then title, then timestamp in descending order. This provides more consistent ordering when multiple videos share the same publication date.
[1.9.2.175] November 17, 2025
FIX: UPDATE GAME_EDIT.PHP LOGIC AND .GITIGNORE ENTRIES
Improved game creation and update logic in game_edit.php, including better handling of IGDB data, video associations, and SQL queries. This requires a local script to run, since Hostgator blocks outgoing cURL https requests. Added local_scripts/ to .gitignore to exclude local scripts from version control.
[1.9.1.174] November 16, 2025
CHORE: ENHANCE GAME ITEM DISPLAY WITH DATE AND TITLE FORMATTING
Game item display now includes the publication date and formats the title in title case for improved readability.
[1.9.1.173] November 16, 2025
FIX: GAME EDIT FORM AND VIDEO TABLE UI
Changed 'date' field to 'release_date' in game_edit.php to fix a bug where the video publish date was overriding game publish date. Improved IGDB input label with a link, adjusted video table to add a second edit column, and updated video edit icons. Also changed grid column sizes in Dirt.php and Game.php from col-4 to col-6 for better layout on mobile
[1.9.0.172] November 15, 2025
CHORE: ADD CHANGEFREQ 'YEARLY' TO SITEMAP ENTRIES
Updated calls to addUrlEntry in sitemap.php to include the 'yearly' changefreq parameter for collectibles and results URLs, improving sitemap metadata for search engines.
[1.9.0.171] November 15, 2025
CHORE: ADD DIRT 2.0 RESULTS TO SITEMAP GENERATION
Integrates DiRT 2.0 results into the sitemap by requiring the Dirt class, fetching results, and appending them to the sitemap XML. This ensures DiRT 2.0 result pages are indexed alongside other site content.
[1.9.0.170] November 15, 2025
CHORE: ADD DIRT 2.0 RESULT VIEW AND UPDATE ROUTING
Adds .htaccess rules for /dirt2 and /dirt2/results URLs, adds first pass templates/dirt_result.php for displaying DiRT 2.0 results, and refactors DirtRender methods for improved result display. Also enhances YouTube embed security in Component.php and updates grid layout and details rendering for results.
[1.9.0.169] November 15, 2025
CHORE: UPDATE DIRT RESULTS LIST LAYOUT AND FILTERING
Refactored DirtRender to improve results list display, including new data fields, SEO-friendly slugs, and better image handling. Changed filter reset URL, updated image aspect ratio to 'letterbox' in multiple classes, reduced results per page to 12, and renamed displayDirtsList to displayList in dirt_list.php.
[1.9.0.168] November 15, 2025
CHORE: ADD DIRTRENDER CLASS AND DIRT LIST TEMPLATE
First pass of the DirtRender class for HTML output and filtering logic in classes/Dirt.php. Adds supporting list methods to DirtRepo and creates templates/dirt_list.php for rendering the dirt list with filters and pagination.
[1.9.0.167] November 13, 2025
CHORE: ADD CATEGORY BREADCRUMBS TO HEADER
Introduces a breadcrumbs method in CategoryRepository to display parent category links in the header of category.php. This improves navigation by showing the parent category in the page header whenever applicable.
[1.9.0.166] November 13, 2025
CHORE: ADD PAGINATION TO DIRT RESULTS PAGE
Introduces getResultsCount() in DirtRepo to fetch total result count and updates dirt_results.php to use pagination via Component. The video column now displays '-' for missing values, and pagination controls are rendered at the bottom of the results table.
[1.9.0.165] November 12, 2025
CHORE: ENHANCE RESULT FETCHING AND DEBUGGING IN DIRT AND GP2 MODULES
Extended DirtRepo::getResults to support filters, limit, and offset for more flexible result queries. Updated gp2_results_edit.php to display season details in the results table.
[1.9.0.164] November 12, 2025
CHORE: ADD TAG MANAGEMENT AND VIDEO DISPLAY TO DIRT RESULTS
Introduces tag assignment and editing for Dirt results, including UI for selecting tags and backend logic for updating result-tag relationships. Also adds video field display to the results table and improves error handling and documentation in DirtRepo methods.
[1.9.0.163] November 11, 2025
CHORE: ADD DIRT RESULTS MANAGEMENT AND UPDATE DIRTREPO METHODS
Introduces dirt_results.php and dirt_results_edit.php for viewing and editing DiRT results. Updates DirtRepo to support fetching results by ID, modifies updateResult to remove unused parameters, and removes addResultTag method. Also standardizes page titles and improves YouTube video handling in results editing.
[1.9.0.162] November 11, 2025
CHORE: ADD DIRT EVENT MANAGEMENT UI AND UPDATE EVENT LOGIC
Introduces new pages for listing and editing DIRT events (dirt_events.php, dirt_events_edit.php). Updates DirtRepo to order events by name and return the new event ID on creation. Fixes doctype typo in dirt_tags.php.
[1.9.0.161] November 11, 2025
CHORE: ADD DIRT TAG MANAGEMENT PAGES
Introduces dirt_tags.php for listing tags and dirt_tags_edit.php for creating, editing, and deleting tags. Includes authentication, CSRF protection, and basic validation for tag management.
[1.9.0.160] November 11, 2025
CHORE: ADD GP2 AND DIRT STATS TO DASHBOARD, FIX LOGIN INPUT TYPE
Dashboard now displays counts for GP2 rounds and DiRT results, and includes management links for DiRT 2.0. Also, the login form's username input is explicitly set to type="text" for improved accessibility.
[1.9.0.159] November 11, 2025
CHORE: UPDATE DIRT CLASS TO DIRTREPO AND ENHANCE QUERIES
Renamed the Dirt class to DirtRepo for clarity. Improved SQL queries in getCars, getTracks, and getResults to include related class and country information via JOINs, providing richer data for consumers.
[1.9.0.158] November 11, 2025
FEAT: DIRT RALLY 2.0 INITIAL PASS
Introduces the Dirt class with methods for managing cars, classes, tracks, events, tags, results, and result-tag relations in the database. Provides full CRUD functionality and read-only access for relevant tables.
[1.8.0.157] November 10, 2025
CHORE: UPDATE RACE RESULTS OUTPUT FORMATTING
Removed dash before gap in race results output and added extra line breaks before race results in the hidden cell. Improves readability and consistency of the generated output.
[1.8.0.156] November 10, 2025
CHORE: ADD RACE RESULTS COPY-TO-CLIPBOARD FEATURE
Introduces a hidden table cell containing formatted race results and project info, along with a copy icon. Clicking the icon copies the results to the clipboard for easier sharing.
[1.8.0.155] November 10, 2025
CHORE: ADD TINYMCE SCRIPT TO RESULTS EDIT PAGE
Included TinyMCE JavaScript library in gp2_results_edit.php to enable rich text editing functionality on the results edit page.
[1.8.0.154] November 10, 2025
CHORE: ADD RACE SUMMARY TEXT TO RESULTS EDIT PAGE
The race summary query now includes the 'text' field, which is used to populate the long description textarea in the results edit page. This allows editing and displaying the race summary text for each round.
[1.8.0.153] November 10, 2025
CHORE: ADD LONG DESCRIPTION AND MAIN CONTENT RENDERING
Introduces the 'longdescription' field to the article and calls renderMainContent to display it. Enhances the GP2 round template with more detailed race information.
[1.8.0.152] November 10, 2025
CHORE: ADD 'TEXT' FIELD TO SEASON ROUND QUERIES AND CREATION
The 'getSeasonRound' method now retrieves the 'text' field, and 'createSeasonRound' accepts a 'text' parameter for inserting additional round information. This enables storing and accessing descriptive text for each season round.
[1.8.0.151] November 10, 2025
FEAT: ADD EDITABLE ROUND DESCRIPTION TO GP2 RESULTS
Introduces a new 'longdescription' field for GP2 season rounds, allowing admins to edit and save HTML-formatted round descriptions. Updates the backend to support storing this text and integrates a TinyMCE editor in the results edit form for rich text editing.
[1.7.3.150] November 08, 2025
CHORE: UPDATE TABLE PREFIX IN EXPORT SCRIPT
Changed the first table prefix from 'new_horta' to 'new_' in export.php to broaden the table selection criteria during export.
[1.7.3.149] November 08, 2025
CHORE: REFACTOR CHANGELOG MESSAGE PREFIX LOGIC
[1.7.3.148] November 08, 2025
CHORE: REFACTOR GP2 RESULTS EDITING AND DELETION LOGIC
Updated results editing to use season and round instead of id, refactored deletion to remove all results for a season/round, and improved result display to include engine info. Also fixed navigation links and streamlined form handling for create/update operations.
[1.7.3.147] November 07, 2025
CHORE: LINEUP INSERT TO HANDLE IMAGE UPDATES
Replaces INSERT IGNORE with INSERT ... ON DUPLICATE KEY UPDATE for gp2_season_lineup, effectively updating the season lineup with the latest car livery a driver/team combination has used
[1.7.3.146] November 07, 2025
CHORE: IMPROVE LOGIN PAGE FORMATTING AND STRUCTURE
Refactored the login page HTML for better readability and structure, including proper indentation and use of wrapper and inner divs. Also updated PHP conditional formatting for consistency.
[1.7.3.145] November 07, 2025
CHORE: UPDATED INDEX.PHP
Removed "see also" block from home
[1.7.3.144] November 07, 2025
FIX: CHECKBOX ON ADMIN-SIDE
Fixed checkbox behavior on admin-side page, category and block edit
[1.7.2.143] November 07, 2025
CHORE: INDEX BLOCKS REORDERED
Swapped positions between featured projects and highlights on index
[1.7.2.142] November 06, 2025
CHORE: ORDER SEASONS BY DESCENDING ID IN LISTSEASONS
Changed the SQL query in listSeasons() to order results by id in descending order, showing the most recent seasons first.
[1.7.2.141] November 06, 2025
CHORE: ADD RANDOM CAR IMAGE TO GP2 SEASON DESCRIPTION
Introduced GP2Repo::getRandomCarFromSeasonLineup and GP2Render::renderRandomCar to fetch and display a random car image from the season lineup. Updated the season template to prepend a random car image to the long description if available.
[1.7.2.140] November 06, 2025
CHORE: REFACTOR VIDEO DISPLAY TO USE EMBEDVIDEO COMPONENT
Replaces inline YouTube video markup in GP2Render::displayVideo with a call to Component::embedVideo for improved modularity and code reuse.
[1.7.2.139] November 06, 2025
CHORE: ADD VIDEO EMBEDDING AND RACE RESULTS PREVIEW
Introduced Component::embedVideo for embedding YouTube videos. Updated GP2Repo and GP2Render to support a preview mode for race results, showing only the top 3 when preview is enabled. Modified publishRound to embed the video in the article's long description and improved the article creation flow.
[1.7.2.138] November 06, 2025
CHORE: ADD AUTOMATIC NEWS ARTICLE ON GP2 RACE RESULT ENTRY
Introduced a publishRound method in GP2Render to generate and publish a news article when a race result is entered. Updated gp2_results_edit.php to call this method after saving results. Also added a call to lightbox() in the default template for enhanced media display.
[1.7.2.137] November 05, 2025
CHORE: ADD SEASON PUBLISHING TO GP2 AND UPDATE ARTICLE MODEL
Removed the unused 'link' property from the Article class and its database interactions. Added a publishSeason method to GP2Render to create and categorize an Article when a new season lineup is posted. Updated gp2_seasons_edit.php to call this new method after saving a season lineup. Minor HTML fix in page_edit.php.
[1.7.2.136] November 05, 2025
CHORE: UPDATE RACE DATA HANDLING AND SITEMAP GENERATION
Added timestamp to GP2 race queries and adjusted default values. Modified Collectible image skipping logic to also skip the first image. Updated sitemap generation to use race timestamp for lastmod and changed slug order for race URLs.
[1.7.2.135] November 05, 2025
CHORE: REFACTOR ADMIN EDIT FORMS TO USE NEW LAYOUT AND STYLES
Updated block, category, and page edit forms to use the new main.css stylesheet and improved HTML structure for better layout and consistency. Enhanced form fields with labels, wrappers, and more semantic markup. Added template selection to page edit, and improved checkbox labeling for accessibility.
[1.7.2.134] November 05, 2025
CHORE: REORDER COLUMNS IN GP2 RESULTS TABLE
Moved the 'Car' column before 'Driver' and 'Team' in the GP2 results table for improved clarity.
[1.7.2.133] November 05, 2025
CHORE: IMPROVE GP2 ROUND DATA AND NAVIGATION LOGIC
Enhanced getSeasonRound to include track name and country code, updated slug generation for SEO, and refactored previous/next navigation to use consistent data sources and markup. Also adjusted empty result handling to return cleaner output.
[1.7.2.132] November 04, 2025
CHORE: ADD RACE TIMESTAMP TO SEASON ROUND DATA
Updated GP2Repo::getSeasonRound to join gp2_result and retrieve the race timestamp. The template now sets article created_at and updated_at fields using this timestamp.
[1.7.2.131] November 04, 2025
CHORE: FILTER OUT EMPTY AND NULL VIDEOS IN SEASON QUERY
Added conditions to exclude empty and null 'video' fields when selecting a random video for a season. This ensures only valid video entries are returned.
[1.7.2.130] November 04, 2025
CHORE: ADD CARSET DOWNLOAD FEATURE FOR GP2 SEASONS
Introduces a download button for carsets in GP2 seasons, including backend support and template integration. Also adds a .htaccess file to restrict directory listing and a new carset file for 1994. Minor update to results edit script to handle video input.
[1.7.2.129] November 04, 2025
CHORE: UPDATE GP2_RESULTS_EDIT.PHP
[1.7.2.128] November 04, 2025
CHORE: ADD GP2 RESULTS LISTING AND EDITING PAGES
Introduces gp2_results.php for listing GP2 results and gp2_results_edit.php for creating and editing results. Updates index.php to include a link to the new Results page.
[1.7.2.127] November 04, 2025
CHORE: UPDATE LINEUP DELETION AND TRACK SELECT DISPLAY
Renamed method call to deleteSeasonLineupDriver for clarity and updated track selection dropdown to show country and track name for better usability.
[1.7.2.126] November 04, 2025
CHORE: ADD LOOKUP METHODS AND EXTEND RESULT HANDLING IN GP2REPO
Introduced get*ByName methods for driver, team, engine, and status entities. Enhanced season lineup and result creation to use INSERT IGNORE and support number/image fields. Updated result queries and rendering logic to include number and image, and added data-index attributes for lightbox functionality in image tables.
[1.7.2.125] November 04, 2025
CHORE: ADD LIGHTBOX GALLERY NAVIGATION FOR IMAGES
Introduces keyboard and mobile swipe navigation for image lightboxes by assigning data-index attributes and updating event handlers. Enhances user experience by allowing users to browse images in galleries using arrow keys or swipe gestures.
[1.7.2.124] November 04, 2025
BUGFIX: UPDATE IMAGE CELL CLASS IN GP2
Added 'hidemobile' class to the car image table cell in GP2Render
[1.7.1.123] November 03, 2025
CHORE: ADD TEAM SUPPORT TO GP2 RESULT METHODS AND QUERIES
Updated the GP2Repo class to include 'team' in result creation, updating, and retrieval methods. Modified SQL queries and JOINs to use the team field directly from gp2_result, ensuring accurate associations between results, teams, and season lineups. This allows complex season creation where a driver may be racing for more than one team depending on the round.
[1.7.1.122] November 03, 2025
CHORE: REFACTOR SEASON ROUND UPDATE METHODS IN GP2REPO
Split updateSeasonRound into two methods: updateSeasonRound now updates only the track, and a new updateRoundVideo method handles updating the video. This improves separation of concerns and clarifies method responsibilities.
[1.7.1.121] November 03, 2025
CHORE: ADD DOWNLOAD AND DESCRIPTION FIELDS TO SEASONS
Extended the GP2 season model and CRUD operations to include 'download' and 'description' fields. Updated the season edit form and related templates to support these fields. Also improved handling of missing video data in templates and fixed lineup update logic.
[1.7.1.120] November 02, 2025
CHORE: IMPROVE STANDINGS TABLE STYLING AND ALIGNMENT
Added new CSS rules for the .standings table to enhance padding and font size. Updated GP2.php to apply the 'standings' class to the table and improved column alignment and styling for better readability.
[1.7.1.119] November 02, 2025
BUGFIX: POINTS CALCULATION TO MATCH SEASON POINTS TYPE
Updated the SQL query to join gp2_season and filter gp2_points by the season's points type. This fixes a bug where points calculation on full season standings table was miscalculated when more than one point system exists in the system
[1.7.0.118] November 01, 2025
CHORE: ADD GP2 SEASONS AND RACES TO SITEMAP GENERATION
Updated sitemap.php to include GP2 seasons and their races in the generated sitemap. This ensures that URLs for GP2 season and race results are now discoverable by search engines.
[1.7.0.117] November 01, 2025
CHORE: SLIGHT UPDATED REFERENCES ON GP2 BREADCRUMBS AND LINKS
Updated the previous/next round navigation in GP2Render to use slugs based on season, round, track, and isocode for more descriptive URLs. Also updated the season parent slug in the gp2_round template to use a generated slug for consistency.
[1.7.0.116] November 01, 2025
CHORE: UPDATE GP2 SEASON URLS TO USE /GP2/SEASON/ PATTERN
Changed URL structure for GP2 season pages from /gp2/{season} to /gp2/season/{season} in .htaccess, GP2.php, and gp2_round.php. This improves URL clarity and consistency across redirects, rewrites, and internal links.
[1.7.0.115] November 01, 2025
CHORE: ADD TEAM IMAGE TO RESULTS TABLE AND FIX HTML ATTRIBUTE
Added a team image column to the results table by updating the table header and row output. Also fixed a missing quote in the onclick attribute for driver images.
[1.7.0.114] November 01, 2025
CHORE: ADD PRETTY URLS AND NAVIGATION FOR GP2 RESULTS
Updated .htaccess to support pretty URLs for GP2 results pages and their redirects. Added a renderPreviousNext method to GP2Render for previous/next round navigation, and integrated it into the gp2_round template.
[1.7.0.113] October 31, 2025
CHORE: MOVE VIDEO DISPLAY ABOVE RACE RESULTS IN ROUND TEMPLATE
Reordered the display of the video in gp2_round.php so that it appears before the race results and standings. Also removed the 'Video' heading and horizontal rule from the video section in GP2Render for a cleaner layout.
[1.7.0.112] October 31, 2025
FEAT: GP2 BLOCK DONE!
Wrapped up GP2Render with new methods for displaying points, standings, and race results, and updated templates to use these features. Added new GP2 season and round rendering logic, including points system, standings, and race results. Moved BasicLightbox integration from Collectible and Magic renderers into a reusable Component::lightbox() method.
[1.6.5.111] October 31, 2025
CHORE: ADD PAGINATED GITHUB CHANGELOG FETCH WITH ERROR HANDLING
Refactored getChangelog() to support paginated fetching of commits from the GitHub API, handling up to 100 commits per page and following 'Link' headers for pagination. Added parseLinkHeader() to extract next page URLs, improved error handling for API responses, and included rate limiting to avoid hitting the API too quickly.
[1.6.5.110] October 31, 2025
CHORE: ADD GP2 SEASON PAGE AND UPDATE ROUTING, STYLES, AND RENDERING
Introduces a new template for displaying individual GP2 seasons (gp2_season.php), including season calendar and lineup rendering. Updates .htaccess to support clean URLs for GP2 seasons and lists. Adds responsive CSS for hiding elements on mobile. Enhances GP2Repo and GP2Render with methods for season teams count and improved calendar/lineup rendering. Adjusts gp2_list.php to use a fixed limit and improved pagination.
[1.6.5.109] October 30, 2025
CHORE: ADD GP2 SEASON LISTING AND DETAIL TEMPLATES
Introduces new templates for listing GP2 seasons. Adds GP2Render class for rendering season lists and details, and updates Component to handle image URLs more robustly. Also extends GP2Repo with a method to fetch season randomly a thumbnail from videos associated with that season.
[1.6.5.108] October 30, 2025
CHORE: 100TH COMMIT! UPDATES GP2 CLASS AND ADMIN-SIDE SEASON CAPABILITIES
Introduces admin/gp2_seasons_edit.php for creating and editing GP2 seasons, including rounds and lineups. Expands GP2Repo with methods for retrieving season statistics, standings, race results, and summaries. Updates magic_card_edit.php to use the main CSS and improve form layout for consistency with the rest of the application.
[1.6.5.107] October 29, 2025
CHORE: ADD 'GP2' TO TABLE PREFIX LIST IN EXPORT.PHP
The 'gp2' prefix was added to the list of table prefixes used for exporting tables. This allows the script to include tables starting with 'gp2' in its operations.
[1.6.5.106] October 29, 2025
CHORE: ADD ADMIN GP2 SEASONS LISTING PAGE
Introduces gp2_seasons.php to display a table of GP2 seasons with options to add or edit entries. Requires user authentication and uses GP2Repo to fetch season data.
[1.6.5.105] October 29, 2025
CHORE: ADD GP2 POINTS AND TRACKS MANAGEMENT PAGES
Introduces new admin pages for managing GP2 points systems and tracks, including listing, creating, editing, and deleting points types and tracks. Implements CSRF protection and basic validation for forms.
[1.6.5.104] October 29, 2025
CHORE: ADD GP2 CLASS AND ADMIN UI
Introduces GP2Repo class for managing CRUD operations on GP2 domain tables, including drivers, teams, engines, statuses, tracks, points, seasons, lineups, rounds, and results. Adds admin UI pages (gp2.php, gp2_edit.php) for listing, creating, editing, and deleting drivers, teams, engines, and statuses with CSRF protection and authentication.
[1.6.5.103] October 29, 2025
FIX VIDEO EDIT DELETE LINK AND ADD GP2 LINKS TO INDEX
Corrects the delete link in games_video_edit.php to point to the correct URL with proper query parameters. Adds a new section of GP2-related navigation links to the index.php page for easier access to GP2 resources.
[1.6.4.102] October 28, 2025
CHORE: ADD DELETE FUNCTIONALITY TO GAME VIDEO EDIT PAGE
Introduces the ability to delete a gaming video from the edit page in games_video_edit.php, including a delete button and backend logic. Also updates the games_videos.php listing to order by game and changes the page title to 'Game Videos'.
[1.6.4.101] October 28, 2025
CHORE: ADD ADMIN PAGES FOR MANAGING GAME VIDEOS
Introduces on admin games_videos.php for listing and editing game videos, and games_video_edit.php for editing individual video entries. These pages provide CRUD functionality for gaming videos, including form handling, CSRF protection, and integration with the existing database and authentication system.
[1.6.4.100] October 28, 2025
CHORE: REFACTOR LOGIN TO USE USER MODEL
Replaces direct database queries in the login process with the User model's findByUsername method for improved code organization and maintainability.
[1.6.4.99] October 28, 2025
CHORE: ADD GAMING VIDEOS COUNT TO ADMIN DASHBOARD
Updated the admin dashboard to display the total number of gaming videos by querying the 'gaming_video' table. Also made minor README updates to reflect new features and clarify module descriptions.
[1.6.4.98] October 28, 2025
CHORE: ADD FREE TEXT SEARCH TO MAGIC CARD FILTER
Introduces a free text search input to the Magic card filter form and updates the backend to filter results by name, set name, oracle text, or type line. Also updates form labels and button text for clarity.
[1.6.4.97] October 28, 2025
FIX CASE-INSENSITIVE SEARCH ON OBS FIELD
Updated the SQL filter to use UPPER() on the mini_miniatura.obs field, ensuring case-insensitive search matches the processed search term.
[1.6.3.96] October 28, 2025
CHORE: ADD FREE TEXT SEARCH TO COLLECTIBLES FILTER
Introduces a free text search input to the collectibles filter form, allowing users to search by partial matches of team, driver, or additional notes. Updates the backend to process the search and filter results accordingly.
[1.6.3.95] October 27, 2025
CHORE: REFACTOR SLUG GENERATION TO USE GENERATESLUG HELPER
Replaced inline slug creation logic in Collectible, Game, and Magic classes with the generateSlug() helper function for consistency and maintainability. Added require_once for inc/slug.php in each affected file.
[1.6.3.94] October 27, 2025
BUGFIX: REMOVING GENERATESLUG FROM CLASSES FOR NOW
Refactored sitemap.php to use a helper function for adding URL entries and to utilize the updated generateSlug function with an option to disable randomization. Updated generateSlug in slug.php to accept a randomize parameter, allowing deterministic slugs when needed. Also removed the CSS version query string from 404.php stylesheet link.
[1.6.2.93] October 27, 2025
CHORE: REVERT "REFACTOR SLUG GENERATION TO USE GENERATESLUG UTILITY"
This reverts commit c9a31369ccd9067c88e69c5cde76e18482eda392.
[1.6.1.92] October 27, 2025
CHORE: REFACTOR SLUG GENERATION TO USE GENERATESLUG UTILITY
Replaces inline slug creation logic with the generateSlug function across multiple files for consistency. Adds an optional randomization parameter to generateSlug, and updates all usages to disable randomization where deterministic slugs are needed.
[1.6.1.91] October 27, 2025
CHORE: REMOVE USER-SCALABLE=NO FROM VIEWPORT META TAGS
Updated the viewport meta tag in 404.php, category.php, classes/Component.php, and index.php to remove 'user-scalable=no'. This change improves accessibility by allowing users to zoom the page.
[1.6.1.90] October 27, 2025
CHORE: ENHANCE ADMIN GAME EDIT PAGE WITH VIDEO TABLE AND COPY FEATURE
Replaces the video checkbox list with a detailed table displaying existing videos, including title, date, and edit links on admin side. Adds a copy-to-clipboard feature for video descriptions and additional metadata, improving usability for managing game-related videos.
[1.6.1.89] October 27, 2025
CHORE: IMPROVE CODE STYLE AND ADD ANNOTATION IN COMPONENT.PHP
Added a SuppressWarnings annotation for renderPage in Component.php and updated several if statements to use braces for better readability. Removed extra blank lines in game_edit.php.
[1.6.1.88] October 27, 2025
CHORE: ADD VIDEO MANAGEMENT TO GAME EDIT PAGE
This update allows assigning and adding gaming videos to a game from the edit page. It loads available videos, displays them as checkboxes, and provides a form to add new videos with title, description, date, and link. Existing video assignments are updated on save.
[1.6.1.87] October 27, 2025
BUGFIX: ADMIN GAME EDIT FORM AND UPDATE ARTICLES QUERY ORDER
Corrects usage of gameId instead of id in game_edit.php and adds a hidden id input to the form. Updates the articles query in pages.php to order by enabled status before id.
[1.6.0.86] October 27, 2025
CHORE: REPLACE ADMIN_FOLDER IN CHANGELOG MESSAGES
Changelog messages now replace occurrences of ADMIN_FOLDER with 'admin' for consistency and improved readability in the rendered output.
[1.6.0.85] October 27, 2025
CHORE: UPDATE URLS AND IMAGE PATHS FOR CLEAN ROUTING
Refactored internal links and image paths across Collectible, Game, and Magic classes, as well as related templates and sitemap generation, to use cleaner, more semantic URLs (e.g., /collectibles/slug, /games/slug, /magic/slug) instead of query parameters. Updated Magic card image storage and references to /images/magic/ instead of /magic/assets/images/. Adjusted parent slugs in detail templates for consistency with new routes.
[1.6.0.84] October 27, 2025
CHORE: ADD CLEAN URL REWRITES FOR GAMES, MAGIC, AND COLLECTIBLES
Introduces new rewrite and redirect rules in .htaccess to map legacy and query-based URLs for games, Magic: The Gathering, and collectibles to cleaner, more user-friendly paths. This improves SEO and user experience by providing consistent, readable URLs and internally routing them to the appropriate PHP handlers.
[1.6.0.83] October 27, 2025
CHORE: REFACTOR LAYOUT FOR 'SEE ALSO' SECTION
Removed 'special' class from the 'See also' section in Component.php and updated index.php to wrap the section with 'wrapper' and 'inner' divs for improved layout structure.
[1.6.0.82] October 27, 2025
CHORE: ADD GAMES TO SITEMAP GENERATION
Included games to the sitemap output. Also updated slug generation for cards and collectibles to allow numbers in URLs.
[1.6.0.81] October 27, 2025
FEAT: GAMING VIDEOS
Introduces GameRepo for database access and GameRender for HTML rendering of games and videos. Adds game_list.php and game_details.php templates to display lists of games and detailed game views with associated videos.
[1.5.2.80] October 27, 2025
CHORE: USE CSS_VERSION FOR STYLESHEET CACHE BUSTING
Replaced hardcoded CSS version query parameters with the CSS_VERSION constant across all relevant PHP files to ensure proper cache invalidation when styles are updated. Also simplified image URL logic for game covers.
[1.5.2.79] October 26, 2025
CHORE: ADD GAME MANAGEMENT PAGES AND UPDATE EXPORT PREFIXES
Added admin/game_edit.php for creating and editing games, including IGDB integration and cover image handling. Added admin/games.php to list and link to game editing. Updated export.php to include the 'gam' prefix when exporting tables, in preparation to gaming block introduction.
[1.5.2.78] October 26, 2025
CHORE: ADD DATABASE CLASS AND IMPROVE CREDENTIALS HANDLING
Added secure credentials to a creds.php. Updated .gitignore to exclude creds.php and removed Database.php and changelog.php from ignore list. Secured creds.php via .htaccess. Refactored changelog.php to use credentials from creds.php.
[1.5.2.77] October 26, 2025
BUGFIX: REMOVE DEBUG VAR_DUMP FROM CHANGELOG FUNCTION
Danny "kinda forgot about the Iron Fleet", and I forgot one var_dump on the changelog template.
[1.5.1.76] October 26, 2025
CHORE: SHOW ADDED AND UPDATED DATES FOR CARDS, IMPROVE PRICE FALLBACK
Updated MtgRepository::getCard to select all columns, enabling access to created_at and updated_at fields. MtgRenderer now displays the card's added and last updated dates, and price fallback logic now uses usd_foil if usd is unavailable.
[1.5.1.75] October 26, 2025
CHORE: ADD SCRIPT TO UPDATE MTG CARD PRICES FROM SCRYFALL
Introduces mtg_update.php, a script that fetches all Magic: The Gathering cards from the local database and updates their price data using the Scryfall API. Designed to be run as a monthly cron job, it performs batch updates with rate limiting and uses separate read and admin database connections.
[1.5.1.74] October 25, 2025
CHORE: USE INSERT IGNORE FOR COLLECTIBLE ENTITY CREATION
Updated all collectible entity edit scripts to use 'INSERT IGNORE' instead of 'INSERT' when creating new records. This prevents duplicate entries from causing errors during insertion.
[1.5.1.73] October 25, 2025
CHORE: REFACTOR IMAGE ASPECT RATIO CLASSES AND UPDATE CSS VERSIONING
Replaces specific image aspect ratio classes (fit-portrait, fit-squared, fit-16x9) with a unified .image.fit-ratio class and new aspect ratio modifiers (landscape, square, letterbox, portrait) in main.css. Updates all HTML and PHP files to reference the new CSS version (v1.5) for cache busting. Adjusts CollectibleRender to use the new landscape aspect ratio class.
[1.5.1.72] October 25, 2025
CHORE: ADD IMAGE UPLOAD FUNCTIONALITY TO COLLECTIBLES EDIT
Implemented support for uploading multiple image files in the collectibles_main_edit.php page. Uploaded images are saved to the server and recorded in the database. Also updated the form to include a file input for image uploads.
[1.5.1.71] October 25, 2025
CHORE: ADD IMAGE PREVIEWS TO COLLECTIBLES IMAGE SELECTION
On admin-side existing images checkbox now displays a 100px-wide preview of the image, improving usability when editing collectible images.
[1.5.1.70] October 25, 2025
CHORE: REFACTOR IMAGE TABLE USAGE TO MINI_MINIATURA_IMAGEM
Replaces all references to the mini_imagem table with mini_miniatura_imagem across API endpoints, CollectibleRepo class, and admin edit page. Updates SQL queries, variable names, and form handling to ensure consistency with the new table structure. Adds support to editing current images
[1.5.1.69] October 25, 2025
CHORE: ADD COLLECTIBLES MAIN EDIT PAGE
Introduces collectibles_main_edit for creating and editing collectibles. Handles form submission, validation, and updates to main and related tables, including images and bridge tables. Provides UI for editing all collectible attributes and relations.
[1.5.1.68] October 25, 2025
CHORE: UPDATE SECTION HEADING TO 'FEATURED PROJECTS'
Changed the heading from 'Highlighted Projects' to 'Featured Projects' in the home page section to improve clarity and consistency.
[1.5.1.67] October 25, 2025
CHORE: ORDER ARTICLES BY UPDATED_AT INSTEAD OF CREATED_AT
Changed the SQL query in ArticleRepository to order articles by their updated_at timestamp rather than created_at. This ensures the most recently updated articles appear first.
[1.5.1.66] October 25, 2025
CHORE: ADD LISTARTICLESNOIMAGES COMPONENT AND LIMIT CATEGORY QUERY
Introduces a new Component::listArticlesNoImages method to display articles from a category without images, limited to 4 results. Updates ArticleRepository::getArticlesFromCategory to accept a limit parameter (default 8) and applies it in the SQL query. Integrates the new component into index.php to show the latest content.
[1.5.1.65] October 24, 2025
CHORE: ADD EDIT PAGES FOR COLLECTIBLES ENTITIES
Introduced new files for editing collectibles categories, characteristics, content, drivers, makers, models, scales, and teams. Each file provides create and update functionality with CSRF protection and basic validation. Also fixed a comment in magic_deck_edit.php to correctly refer to 'deck' instead of 'category'.
[1.5.1.64] October 24, 2025
CHORE: ADD COLLECTIBLES MANAGEMENT PAGES AND UPDATE INDEX
Introduces new admin pages for managing collectibles, their categories, characteristics, contents, teams, scales, models, drivers, and makers.
[1.5.1.63] October 24, 2025
CHORE: REFACTOR CHANGELOG VERSIONING AND DISPLAY
Updated changelog logic to assign a version to each commit hash and improved the rendering to show version numbers and formatted dates for each entry. Also added commit hash to changelog data and adjusted the version calculation to increment build numbers per commit.
[1.5.1.62] October 24, 2025
CHORE: REFACTOR ITEM LIMIT TO USE PAGE_LIMIT CONSTANT
Introduced a PAGE_LIMIT constant set to 48 and updated getLimit() to return this value. This ensures consistent pagination and better compatibility with various column layouts.
[1.5.1.61] October 24, 2025
CHORE: IMPROVE PAGINATION WITH FIRST AND LAST PAGE LINKS
Added buttons for the first and last pages in the pagination component, including ellipses when appropriate. This enhances navigation for users when there are many pages.
[1.5.1.60] October 24, 2025
CHORE: MERGE BRANCH 'MAIN' OF HTTPS://GITHUB.COM/FERNANDOCBHORTA/HORTA-SITE
[1.5.1.59] October 24, 2025
CHORE: ADD PHPDOC AND IMPROVE DOCS FOR COLLECTIBLE CLASSES
Added comprehensive PHPDoc comments and inline documentation to CollectibleRepo and CollectibleRender classes for better maintainability and clarity. Also added package, author, and version tags to Magic.php classes. Fixed a label in admin/index.php to correctly display 'Collectibles' instead of 'Decks'.
[1.5.1.58] October 24, 2025
CHORE: REVISE README FOR MAGIC AND COLLECTIBLES MODULES
Updated the README to reflect changes in the Magic module and added a new Collectibles module. Adjusted roadmap items for clarity.
[1.5.1.57] October 24, 2025
CHORE: MERGE PULL REQUEST #6 FROM FERNANDOCBHORTA/IMPROVED-PAGINATION
Improve pagination and filtering for collectibles and cards
[1.5.1.56] October 24, 2025
CHORE: IMPROVE PAGINATION AND FILTERING FOR COLLECTIBLES AND CARDS
TL,DR: Pagination also on filtered results
Enhanced pagination UI and logic to support POST-based filtering, including summary display and better page navigation. Updated count queries to use DISTINCT for accurate totals with filters. Adjusted templates to pass filters to count methods, ensuring correct pagination when filters are applied.
[1.5.1.55] October 24, 2025
CHORE: REMOVE 'FIRST' AND 'LAST' BUTTONS FROM PAGINATION
Pagination controls no longer display 'First' and 'Last' navigation buttons, simplifying the UI to only show 'Prev' and 'Next'.
[1.5.1.54] October 24, 2025
CHORE: REMOVE REDUNDANT PAGE INITIALIZATION LOGIC
Eliminated unnecessary else block that set $page to 1 when $_GET['page'] was not set. The default value assignment is now handled more cleanly.
[1.5.1.53] October 24, 2025
BUGFIX: UPDATE PAGINATION AND LIMIT LOGIC IN COMPONENT
Simplified the getLimit method to only check for empty POST data when setting the limit. Updated pagination to display 'Last' link with the max page number for better clarity.
[1.5.0.52] October 24, 2025
FEAT: PAGINATION
Introduces pagination logic and UI using new methods in Component.php. Updates data fetching to use limit and offset, and simplifies count queries in CollectibleRepo. This improves performance and user experience for large datasets. Pagination is already available on MTG and Collectibles list pages when results are NOT filtered
[1.4.1.51] October 24, 2025
CHORE: RENAME 'COLLECTABLES' TO 'COLLECTIBLES' AND UPDATE URLS
Renamed all 'collectables' directories and files to 'collectibles' for consistency. Updated hardcoded URLs in .htaccess and PHP files to use the new domain (horta.dev.br) and the corrected 'collectibles' path. Also fixed redirect in api/index.php to point to the new 'collectibles' directory.
[1.4.1.50] October 24, 2025
CHORE: ADD IMAGE ASPECT RATIO CLASSES AND UPDATE OG IMAGE
Introduces new CSS classes for 16x9, square, and portrait image aspect ratios. Updates Collectible.php to use the portrait aspect ratio for images. Changes the Open Graph image in index.php to a new image (my photo!). Enhances collectible detail titles to include the maker in uppercase for non-diecast models.
[1.4.1.49] October 24, 2025
BUGFIX: COLLECTIBLE IMAGE HANDLING AND FALLBACKS
Added checks to use a default image if the collectible image is missing or does not exist on the server. Ensures that missing images do not break the layout and provides a fallback image for better user experience.
[1.4.0.48] October 23, 2025
CHORE: IMPROVE CHANGELOG MESSAGE FORMATTING
Changelog entries now use <h3> for 'feat' messages and <h4> for others, enhancing visual distinction. Also fixed HTML structure for message rendering.
[1.4.0.47] October 23, 2025
CHORE: ADD COLLECTIBLES TO SITEMAP GENERATION
Updated sitemap.php to include collectibles in the generated sitemap by fetching them from CollectibleRepo and adding their URLs. This ensures that collectible detail pages are indexed alongside articles, categories, and cards.
[1.4.0.46] October 23, 2025
FEAT: COLLECTIBLES LIST AND DETAILS ARE DONE!
Updated CollectibleRepo and CollectibleRender to improve image handling, simplify data mapping, and enhance output sanitization. Added rendering logic with collectible-specific details and added a new template for collectible details. These changes support more accurate and flexible rendering of collectible information and images.
[1.3.1.45] October 23, 2025
CHORE: ADD COLLECTIBLES MANAGEMENT PAGE AND DASHBOARD LINK
Introduces collectibles_main.php to list and manage collectibles, including a table view and edit links. Updates the admin dashboard to show the count of collectibles and adds navigation to the new collectibles management page.
[1.3.1.44] October 23, 2025
CHORE: ADD COLLECTIBLEREPO AND COLLECTIBLERENDER CLASSES
Introduces CollectibleRepo for database access and CollectibleRender for HTML rendering of collectible filters and lists. Also adds a template for displaying the collectibles list using these new classes.
[1.3.1.43] October 23, 2025
CHORE: REMOVE DESCRIPTION SANITIZATION AND ORDER ARTICLES BY ID
The Magic.php renderer now outputs the raw long description instead of a sanitized version. In pages.php, articles are now listed in descending order by id for improved visibility of recent entries.
[1.3.1.42] October 23, 2025
CHORE: ADD EXPORT AND IMPORT SCRIPTS FOR DATABASE BACKUP
Introduces export.php to dump MySQL tables with specific prefixes to a backup file using mysqldump, and local_import.php to download the backup via FTP and restore it to the database. These scripts automate backup and restore operations for selected tables., syncing local development environment with production every 24 hours
[1.3.1.41] October 23, 2025
CHORE: REFACTOR MAGIC CARD REPOSITORY AND RENDERER
Improves error handling, SQL query structure, and output sanitization in MtgRepository and MtgRenderer. Public method signatures and returned array shapes are preserved for compatibility, with comments added for safe changes. Renderer now properly selects filter options, escapes output, and replaces card symbols with inline SVG. Minor formatting fix in mtg_list.php.
[1.3.1.40] October 22, 2025
CHORE: REFACTOR RESIZE SCRIPT INTO COMPONENT CLASS
Moved the responsive column adjustment script from Magic.php to a new static method in Component.php for better reusability and separation of concerns. Updated mtg_list.php to use the new method.
[1.3.1.39] October 22, 2025
CHORE: IMPROVE CHANGELOG MESSAGE FORMATTING
Changelog messages now display the first line as a heading and the rest as a paragraph, with proper HTML escaping for additional content. Date formatting was simplified to show only the date.
[1.3.1.38] October 22, 2025
CHORE: ADD RESPONSIVE COLUMN ADJUSTMENT AND CHANGELOG MARKUP FIX
Introduces a script to dynamically adjust col-N and off-N classes based on viewport width for improved responsiveness in Magic.php. Updates changelog rendering to use <h4> tags instead of <strong> for message formatting, and removes the updated_at field override from the changelog template.
[1.3.1.37] October 22, 2025
BUGFIX: WRONG TABLE NAME ON DECK EDIT PAGE
Fixed wrong table name on deck edit page.
Cosmetic: moved the deck filter above type and edition filters in MtgRenderer form for improved UI logic.
[1.3.0.36] October 22, 2025
CHORE: MERGE PULL REQUEST #5 FROM FERNANDOCBHORTA/MAGIC-DECK-MANAGEMENT
feat: Add Magic deck management and card-deck linking
[1.3.0.35] October 22, 2025
FEAT: ADD MAGIC DECK MANAGEMENT AND CARD-DECK LINKING
Introduces Magic: the Gathering deck management with new deck CRUD pages and deck listing in the admin dashboard. Card editing now supports assigning cards to decks with quantities. Card and deck listing pages are renamed and updated. Updates Magic.php to support deck filtering and associations. Also refactors changelog versioning logic and removes inline delete actions from several edit pages for improved security / logic.
[1.2.1.34] October 22, 2025
MINOR: UPDATE CARD EDITING SQL TO INCLUDE TIMESTAMP ON QUANTITY CHANGES
[1.2.0.33] October 22, 2025
CHORE: MERGE PULL REQUEST #4 FROM FERNANDOCBHORTA/MAGIC-CARD-MANAGEMENT
feat: Refactor Magic.php SQL query and update dashboard layout; card editing created
[1.2.0.32] October 22, 2025
CHORE: REFACTOR MAGIC.PHP SQL QUERY AND UPDATE DASHBOARD LAYOUT
Updated the SQL query in Magic.php to filter out cards with zero quantity. Simplified the edit and delete links in blocks.php, categories.php, and pages.php by removing the delete option. Enhanced the index.php dashboard layout to include a count of cards and improved the overall structure for better readability.
[1.2.0.31] October 21, 2025
CHORE: ADD LANG="EN" TO HTML TAGS AND UPDATE TINYMCE PLUGINS
Set lang="en" on <html> tags for improved accessibility and standards compliance. Updated README roadmap and .gitignore for changelog and folder handling.
[1.2.0.30] October 21, 2025
CHORE: REPLACE STATIC CHANGELOG.MD WITH DYNAMIC CHANGELOG
Removed the static CHANGELOG.md file and introduced logic to dynamically fetch and render the changelog from GitHub commits. Updated templates/changelog.php to use the new dynamic changelog rendering instead of reading the static file.
[1.2.0.29] October 21, 2025
FEAT: ADD CHANGELOG TEMPLATE AND UPDATE ARTICLE ORDERING
Introduces templates/changelog.php to display the changelog file. Updates seeAlso component in index.php to order by 'art.updated_at DESC'. Formats oracle_text with line breaks in Magic.php. Updates .gitignore to exclude temp files and adds a new entry to CHANGELOG.md.
[1.1.0.28] October 21, 2025
CHORE: PATCH: ADD ARTICLE ORDERING TO SEEALSO COMPONENT
Extended ArticleRepository and Component::seeAlso to support custom ordering of articles for blocks. Updated index.php to use 'updated_at DESC' for ordering. Also updated .gitignore to exclude temp directory.
[1.1.0.27] October 21, 2025
CHORE: UPDATE CHANGELOG AND ROADMAP IN README
Added recent commit history to CHANGELOG.md and updated the roadmap in README.md to specify inclusion of major/minor versions for the CHANGELOG via pre-commit hook.
[1.1.0.26] October 21, 2025
CHORE: UPDATE ROADMAP TO SPECIFY CHANGELOG VIA PRE-COMMIT HOOK
Clarifies that the CHANGELOG is added to the project using a pre-commit hook in the roadmap section of the README.
[1.1.0.25] October 21, 2025
CHORE: REMOVE CHANGELOG AND UPDATE ROADMAP IN README
Deleted the CHANGELOG.md file and updated the README roadmap to mark the CHANGELOG as added.
[1.1.0.24] October 21, 2025
CHORE: UPDATE CHANGELOG.MD
[1.1.0.23] October 21, 2025
FEAT: ADD ROBOTS.TXT AND CHANGELOG, UPDATE .GITIGNORE
Added a robots.txt file to manage crawler access and improve SEO, and created an empty CHANGELOG.md for tracking changes. Updated .gitignore to exclude shell script files (*.sh).
[1.0.0.22] October 20, 2025
CHORE: MERGE PULL REQUEST #3 FROM FERNANDOCBHORTA/COSMETIC-IMPROVEMENTS
Refactor template includes and menu rendering
[1.0.0.21] October 20, 2025
CHORE: REFACTOR TEMPLATE INCLUDES AND MENU RENDERING
Replaced 'include' with 'include_once' for template files and 404 handling to prevent multiple inclusions. Updated Component::renderMenu to remove unused parameter and adjusted calls accordingly. Improved code consistency and formatting in several files.
[1.0.0.20] October 20, 2025
CHORE: ADD SITEMAP LINK TO FOOTER IN BOTTOM.PHP
Included a new link to the sitemap in the footer section of bottom.php, enhancing site navigation and accessibility for users.
[1.0.0.19] October 20, 2025
CHORE: ADD MAGIC: THE GATHERING CARDS TO SITEMAP GENERATION
Enhanced the sitemap generation functionality to include entries for Magic: The Gathering cards. This update retrieves card data and formats it into the sitemap, improving the visibility of card details on the site. The addition supports better SEO and user navigation for card-related content.
[1.0.0.18] October 20, 2025
CHORE: IMPLEMENT 404 ERROR HANDLING FOR MISSING CARD RESULTS IN MAGIC.PHP
Updated the card retrieval logic to check for the existence of a card ID in the result set. If no card is found, a 404 response is triggered, and a 404 error page is displayed. This change enhances user experience by providing appropriate feedback for missing cards.
[1.0.0.17] October 20, 2025
CHORE: ADD DESCRIPTION FIELD TO MTG_CARD TEMPLATE
Enhanced the mtg_card.php template by adding a description field that provides details about the Magic: the Gathering card, including its title and set name. This addition improves the context and information available for each card displayed.
[1.0.0.16] October 20, 2025
CHORE: REFACTOR COMPONENT USAGE IN TEMPLATES AND PAGE RENDERING
Updated the rendering logic in page.php and various template files to utilize an instance of the Component class instead of static method calls. This change enhances code readability and promotes better object-oriented practices. Adjusted HTML structure in mtg_card.php and mtg_list.php for improved layout consistency.
[1.0.0.15] October 20, 2025
CHORE: REFACTOR COMPONENT LAYOUT AND IMPROVE TITLE FORMATTING
Updated the HTML structure in Component.php for suggested pages and main content sections, enhancing readability and organization. Adjusted the site title format for better consistency. Minor formatting changes in Magic.php and mtg_card.php for improved clarity and presentation.
[1.0.0.14] October 20, 2025
CHORE: WRAP ORACLETEXT IN PARAGRAPH TAG
Replaces the direct output of $oracleText with a <p> tag for improved HTML structure and readability.
[1.0.0.13] October 20, 2025
CHORE: MOVE ORACLE TEXT DISPLAY ABOVE CARD DETAILS
Relocates the rendering of $oracleText to appear before the card details section, improving the layout and visibility of the oracle text.
[1.0.0.12] October 20, 2025
CHORE: UPDATE CARD RETRIEVAL AND RENDERING LOGIC
Changed card query to return only one result in Magic.php. Added 404 handling for missing cards and improved title formatting in mtg_card.php. Added render comment in mtg_list.php for clarity.
[1.0.0.11] October 20, 2025
CHORE: MERGE PULL REQUEST #2 FROM FERNANDOCBHORTA/DEFINE-COMPONENT-DEFAULT-PAGE-TEMPLATE
Refactor page rendering and add default template
[1.0.0.10] October 20, 2025
CHORE: REFACTOR PAGE RENDERING AND ADD DEFAULT TEMPLATE
Moved page rendering logic from page.php into reusable Component methods and introduced templates/default.php for standard page layout. Added ArticleRepository::validate for input validation and improved template structure for Magic: The Gathering pages. Removed deploy workflow file.
[1.0.0.9] October 20, 2025
CHORE: ADD COLLECTABLES API AND RELATED BACKEND SCRIPTS
Introduces a new API under api/collectables with endpoints for models, drivers, teams, makers, years, and images, each with corresponding .htaccess and index.php files for data retrieval. Adds backend PHP scripts for database import, game insertion, and GTR2 data processing. Updates deploy workflow to include temp directory. Also adds a database connection file and a Google site verification file.
[1.0.0.8] October 19, 2025
CHORE: UPDATE DEPLOY.YML TO IGNORE MORE DIRECTORIES
Add additional directories to the deployment ignore list.
[1.0.0.7] October 19, 2025
CHORE: OPTIMIZED FLOW
prevent unfortunate deletions like it just did...
[1.0.0.6] October 19, 2025
CHORE: CREATE DEPLOY.YML
[1.0.0.5] October 19, 2025
CHORE: MERGE PULL REQUEST #1 FROM FERNANDOCBHORTA/CATEGORY-ISSUE-1
Update ignore rules and improve page/category display
[1.0.0.4] October 19, 2025
CHORE: UPDATE IGNORE RULES AND IMPROVE PAGE/CATEGORY DISPLAY
Added new folder patterns to .gitignore for images and magic assets. Improved meta description handling in category.php to avoid undefined values. Modified ArticleRepository to order categories by ID descending. Adjusted Magic card renderer formatting. Added .htaccess to magic directory to prevent directory listing and handle 403 errors. Updated page.php to show last updated timestamp in header and removed redundant blockquote.
[1.0.0.3] October 19, 2025
CHORE: UPDATE SETUP INSTRUCTIONS AND ROADMAP IN README
[1.0.0.2] October 19, 2025
CHORE: INITIALIZE README WITH PROJECT DETAILS AND SETUP
Added detailed project overview, architecture, technologies, key features, setup instructions, and author information.
[1.0.0.1] October 19, 2025
CHORE: UPDATE .GITIGNORE
[1.0.0.0] October 19, 2025
CHORE: INITIAL COMMIT