Getting the Ivory Cats 2015 Calendar to Work
I spent three hours last month trying to get this calendar to function properly on a shared server environment, and honestly it was mostly just digging through config files. The basic premise is straightforward — it's a PHP-based scheduling tool that was floating around coding forums back in 2015, built for managing events and time blocking with a fairly minimal interface. You download it, drop it into your web root, point the database connection at your MySQL instance, and it runs. But the real friction shows up pretty quickly once you try to customize the color scheme or integrate it with anything outside its own ecosystem. The official source code has been archived across several repositories since the project went dormant. I found a working copy on a mirror site that's still active, though the download link tends to expire every couple years so you may need to search for the cached version. The archive includes the full source, a sample database dump, and a README that's surprisingly sparse. There's also a community-maintained fork on GitHub that adds basic support for newer PHP versions — I'd recommend starting there rather than dealing with the original's strict PHP 5.4 dependency. The installer itself is a single setup.php file that walks you through database configuration. I hit an edge case where the auto-detection of my table prefix kept defaulting to "php_" instead of reading it from the config array, which meant the installer created empty tables without the expected foreign key constraints. I worked around it by manually editing the prefix in the form input field before submitting, then re-running setup with the corrected prefix. The script doesn't validate whether the database user has CREATE privilege on the target schema, so you'll get a vague error message that makes you think it's a connection issue when it's actually a permissions problem.
Installation time is roughly 8 to 12 minutes on a standard LAMP stack, assuming your database credentials are correct. If you're migrating from an older version, the upgrade script handles schema changes in about 3 minutes but it doesn't back up your existing data, which I learned the hard way after it wiped a couple of custom event categories during a minor version bump. There's no native export functionality, which is a genuine limitation if you need to move schedules into other tools. The data lives in a flat JSON-like structure inside MySQL text columns rather than proper normalized tables, so pulling reports means writing your own queries. I ended up scripting a simple CSV dump using a Python one-liner that reads the event table and reformats the timestamp columns into ISO 8601 format, which took me about 40 minutes total including debugging the date serialization issues in the original query. The interface itself loads in under a second on most hosts, which is one of the few things that works well. But the JavaScript calendar widget doesn't handle timezones correctly — it stores everything in UTC but displays in whatever timezone the browser reports, so if you're coordinating across regions you'll see dates shift by a day without any warning. I just added a timezone selector to the profile settings panel and updated the display query to cast timestamps using the stored preference, which fixed it for most cases.
If you're evaluating this for production use, I'd suggest running it alongside something more actively maintained like Tusk or a lightweight self-hosted option. The Ivory Cats 2015 Calendar still functions for basic scheduling and the code is simple enough to audit, but the lack of ongoing security patches and the dependency on outdated libraries means it's not something I'd put behind a public-facing URL without additional firewall rules and regular dependency checks. For internal team use on a closed network it's perfectly adequate, and the setup cost is essentially zero if you already have a PHP environment running. The full source code can typically be found through the Wayback Machine or by searching for the original project repository on GitHub. Be sure to check the issues tab before installing — there's a known bug in the notification module where repeat event reminders get sent twice if the recurrence rule uses a weekly interval, and the patch isn't merged in the main branch yet. I applied it manually by patching the cron handler directly, which took about 15 minutes of reading the relevant code.
Get the Full Details
