Still working on TightURL, except most of the last couple of weeks has been spent looking at other people’s code, examining frameworks, and finally doing some serious reading about object-oriented PHP (something I’ve been meaning to do for at least 10 years!).
I am still forward-porting the code from the running copy at tighturl.com into the development version, which will be the first of two or three re-writes. The goal of the first rewrite is to adjust the coding style that was used to how I write things today, incorporate changes from the production code into the development version, and begin breaking down the bloated save_URL function into smaller functions with the anti-abuse code separated out. The template system will be enhanced in anticipation of plugins. Work on a REST API will begin.
The anticipated goal of the second re-write will be to fully incorporate the plugin and cron systems. I may include internationalization in this re-write. (if not it will come in the third re-write, or be added after the wholesale re-writing of the application)
Finally, if there’s a third re-write, it will be to correct earlier design errors.
Because I have already begun to add support for them, these features will emerge by the time the code is released:
- Localization (translations)
Unfortunately it seems to be a real hassle dealing with internationalized URLs. I’ll do my best here. Translations seem to be difficult as well, but I’ll make a best effort here too.
- Internal cron jobs
TightURL will be able to run scheduled tasks via standard (Vixie) cron syntax. The TightURL internal cron system can run either at the end of HTTP requests to the application, or you can have your system task scheduler run these in the background. Cron jobs can be created and managed via plugins.
- Additional Squisher Engine support
TightURL will come standard with two Squisher Engines: Default, and Default+. The default squisher will create traditional case-insensitive TightURL IDs, and default plus creates case-sensitive IDs.
Additional policy, template variables, Squisher Engines, and other functionality can be added to TightURL via plugins.
This is actually less ambitious than it probably sounds, a lot of this work was started over the last couple of years, and I just need to tie it all together now.