Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ sonar-project.properties
localsiteconfig.php*
*.xml
*.xml.gz
README.md
45 changes: 45 additions & 0 deletions .htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
RewriteEngine On

# Pages
RewriteRule ^popup\.php$ pages/popup.php [L,QSA]
RewriteRule ^gallery\.php$ pages/gallery.php [L,QSA]
RewriteRule ^ws\.php$ pages/ws.php [L,QSA]
RewriteRule ^rss\.php$ pages/rss.php [L,QSA]
RewriteRule ^smallshow\.php$ pages/smallshow.php [L,QSA]
RewriteRule ^BorrowADVD\.php$ pages/BorrowADVD.php [L,QSA]
RewriteRule ^Chooser\.php$ pages/Chooser.php [L,QSA]
RewriteRule ^Picker\.php$ pages/Picker.php [L,QSA]
RewriteRule ^userpref\.php$ pages/userpref.php [L,QSA]
RewriteRule ^summary\.php$ pages/summary.php [L,QSA]
RewriteRule ^handleloans\.php$ pages/handleloans.php [L,QSA]
RewriteRule ^MakeAnImage\.php$ pages/MakeAnImage.php [L,QSA]
RewriteRule ^getimages\.php$ pages/getimages.php [L,QSA]
RewriteRule ^no_coo\.php$ pages/no_coo.php [L,QSA]
RewriteRule ^wrong_srp\.php$ pages/wrong_srp.php [L,QSA]
RewriteRule ^showcolors\.php$ pages/showcolors.php [L,QSA]

# Admin tools
RewriteRule ^ForceDatabaseUpgrade\.php$ admin/ForceDatabaseUpgrade.php [L,QSA]
RewriteRule ^checkruntimes\.php$ admin/checkruntimes.php [L,QSA]
RewriteRule ^checktables\.php$ admin/checktables.php [L,QSA]
RewriteRule ^check_credits\.php$ admin/check_credits.php [L,QSA]
RewriteRule ^CleanCommon\.php$ admin/CleanCommon.php [L,QSA]
RewriteRule ^ConvertUTF8FilenamesToCP1252\.php$ admin/ConvertUTF8FilenamesToCP1252.php [L,QSA]

# Graphs
RewriteRule ^gr_by(.+)\.php$ graphs/gr_by$1.php [L,QSA]

# JS/CSS generators
RewriteRule ^format\.css\.php$ js/format.css.php [L,QSA]
RewriteRule ^momItems\.js\.php$ js/momItems.js.php [L,QSA]
RewriteRule ^SmartUpdater\.js\.php$ js/SmartUpdater.js.php [L,QSA]

# Static JS/CSS files
RewriteRule ^main\.js$ js/main.js [L]
RewriteRule ^mom\.js$ js/mom.js [L]
RewriteRule ^navframe\.js$ js/navframe.js [L]
RewriteRule ^top\.js$ js/top.js [L]
RewriteRule ^JavascriptOnerr\.js$ js/JavascriptOnerr.js [L]
RewriteRule ^wz_tooltip\.js$ js/wz_tooltip.js [L]
RewriteRule ^custom\.css$ js/custom.css [L]
RewriteRule ^smallshow\.css$ js/smallshow.css [L]
32 changes: 32 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
Version 20260211 (fork by jakub961241)
Changes since version 20260208:
- feature: web-based XML upload — new `import/` directory with upload form on the update page, allowing collection.xml upload from the browser instead of requiring FTP access
- feature: TMDB Cover Fetcher (`fetch_covers.php`) — browse collection, search TMDB for movie posters, download covers with thumbnails; includes auto-fetch for all missing covers
- feature: `config/localsiteconfig.php.example` — example configuration file with all important settings and comments, ready to copy and customize
- feature: TMDB API key now configurable in `install.php` (Step 1) and `localsiteconfig.php` instead of being hardcoded
- feature: installer (`install.php`) — web-based setup wizard that creates `localsiteconfig.php`, checks directory permissions, and initializes the database schema
- feature: Bootstrap 5.3.3 dark theme applied across the entire application (index, admin, statistics, graphs, includes)
- feature: complete translations for all 10 language files (en, cs, de, dk, fi, fr, nl, no, ru, sv) — 900+ new translated strings covering upload UI, cover fetcher, preferences, chooser, statistics, graphs, link categories, color formats, and crew roles
- feature: sidebar sort header with column labels
- feature: `Titles Per Page` pagination preference with translations in all languages
- refactor: folder reorganization — PHP files moved from root into `core/`, `pages/`, `includes/`, `admin/`, `graphs/` subdirectories with `bootstrap.php` autoloader and `.htaccess` rewrites for backward compatibility
- fix: `statistics.php` — `round(0, INF)` TypeError when `log10()` returns `-INF` in `MakeAPercentage()`
- fix: `ws.php` — DISTINCT + ORDER BY errors with unqualified `timestamp` column in 4 queries (Last/Best/Worst/Me Watched)
- fix: `ws.php` — null array access in `get_watchers()` and `me_watched` when no rows returned
- fix: `popup.php` — `only_full_group_by` SQL mode error in actor/credit filmography queries (ORDER BY without GROUP BY)
- fix: `functions.php` — `mb_convert_encoding()` deprecation with null input
- fix: `incupdate.php` — duplicate key handling on insert
- fix: DVD detail rendering issues with cover display
- fix: favicon path corrected
- removed: `db/consistancy.sql` — unused diagnostic SQL script

Version 20260208 (fork by jakub961241)
Changes since version 20250511:
- feature: added complete Czech translation (`lang_cs.php`) with 900+ translated strings including UI labels, genre names, country names, audio languages, crew roles and statistics
- feature: registered Czech locale in `locale.php` and added language selector in `index.php`
- fix: full PHP 8.3+ compatibility — changed default `$dbtype` from `mysql` to `mysqli` in `globalinits.php`
- fix: replaced direct `mysql_fetch_array()` in `getimages.php` and `mysql_error()` in `imagedata.php` with database abstraction layer methods
- fix: replaced deprecated `var` property declarations with `public` in `mysqli.php`, `mysql.php` and `incupdate.php`
- fix: replaced deprecated `@list()` with explicit array access using null coalescing (`??`) in `functions.php`
- fix: added deprecation notice to `mysql.php` recommending `mysqli`

Version 20250511 (phpdvdprofiler.20250511.zip)
Changes since version v_20230807 (phpdvdprofiler.20230807.zip)
- security: removed XSS using the search function (CVE-2025-46729)
Expand Down
43 changes: 37 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,50 @@
# phpDVDProfiler

The phpDVDProfiler project allows you to display on the web your DVD collection maintained with Invelos's DVDProfiler software.
The phpDVDProfiler project allows you to display on the web your DVD collection maintained with [Invelos's DVD Profiler](http://www.intl.dvdprofiler.com/) software.

Alas, the project seems to have been dead for some time and has stopped working with newer versions of PHP. So for my own needs, I've decided to make it work again with PHP 7.2, and publish it too so that others can benefit if they need it. I have no intention on making more work than basic maintenance to support newer versions of PHP.

## What's New in This Fork

This fork extends the original project with PHP 8.3+ compatibility and several new features:

- **Modern UI** — Bootstrap 5.3.3 dark theme applied across the entire application
- **Web-based installer** (`install.php`) — 3-step setup wizard that checks requirements, creates configuration, and initializes the database
- **TMDB Cover Fetcher** — search and download movie posters from The Movie Database; includes one-click auto-fetch for all missing covers
- **Web-based XML upload** — upload your `collection.xml` directly from the browser instead of requiring FTP access
- **Full internationalization** — complete translations for 10 languages (English, Czech, German, Danish, Finnish, French, Dutch, Norwegian, Russian, Swedish) with 900+ translated strings
- **Titles Per Page** — configurable pagination for large collections
- **Example configuration** — `config/localsiteconfig.php.example` with all settings documented and ready to customize
- **PHP 8.3+ fixes** — resolved deprecation warnings, SQL compatibility issues, null handling errors, and an XSS vulnerability (CVE-2025-46729)
- **Code reorganization** — PHP files moved into `core/`, `pages/`, `includes/`, `admin/`, `graphs/` subdirectories with backward-compatible URL rewrites

## Getting Started

See the file phpdvdprofiler-install.txt for instructions on installing the application.
### Quick Start

1. Extract the files to your web server directory
2. Open `install.php` in your browser and follow the wizard
3. Upload your `collection.xml` via the update page
4. Run the import from `index.php?action=update`

### Manual Installation

See the file `docs/phpdvdprofiler-install.txt` for detailed instructions. Copy `config/localsiteconfig.php.example` to `config/localsiteconfig.php` and edit your settings there.

## Requirements

- PHP 7.2+ (tested with PHP 8.3)
- MySQL 5.7+ or MariaDB 10.x+
- Apache with `mod_rewrite`
- PHP extensions: `mysqli`, `mbstring`, `xml`, `intl`, `gd` (optional, for thumbnails)

## Authors

* **FredLooks and contributors** - *Initial work* - [FredLooks](http://www.invelos.com/UserProfile.aspx?Alias=FredLooks)
* **Thomas Fintzel** - *Gallery code for the covers*
* **Julien Mudry** - *Compatibility with PHP 7.2*
* **Gavin-John Noonan** - *Suport of 4K UHD media types and numerous fixes* - [Gavin-John Noonan](https://github.com/gjnoonan)
- **FredLooks** and contributors — Initial work — [FredLooks](https://github.com/FredLooks)
- **Thomas Fintzel** — Gallery code for the covers
- **Julien Mudry** — Compatibility with PHP 7.2
- **Gavin-John Noonan** — Support of 4K UHD media types and numerous fixes — [Gavin-John Noonan](https://github.com/gavinjohn)
- **jakub961241** — PHP 8.3 compatibility, Bootstrap theme, installer, TMDB cover fetcher, Czech translation, full i18n

## License

Expand Down
11 changes: 0 additions & 11 deletions TODO

This file was deleted.

Loading