I just finished putting the final touches on the scheduling functionality that exists in the nessquik maintenance plugin framework.

Part of the work included the need to create a class to parse and correctly interpret a crontab string. I understand how crontab entries work, but it wasn't clear how to go about determining when an actual string applied to the current time.

I started by considering some existing classes that apparently do it. There are two PHP classes that I found, but they were quite old (2005) and they looked poorly written; more like proof-of-concept.

So I wrote my own. It uses the existing Zend_Date classes that I use in nessquik, supports the standard crontab fields, and also the crontab shorthad @ entries.

It supports the range, comma and slash syntax as well. At this point in time it does not support named months or days of weeks (ie, Aug, Wed, etc) but for the 2.6 release, it doesn't need to; it already does enough.

As I was debugging it, I was only running 1 plugin (using the "every minute" syntax) and while watching the logging output, I noticed that another one of the plugins was run. At first I said "oh great, a bug" but then I noticed the time on the clock and realized that the Cron code had actually worked...and worked correctly :p

While at R/P this weekend, I walked through the target inclusion/exclusion code and frontend stuff for targets and cleaned it all up and tested the rest of it to make sure it works. I also added the report viewing and deletion code. I've been able to generate proper XML to created reports using XSL stylesheets too, so I was going to plug that in to the code very soon to complete the whole audit cycle.

I was sitting at the conference thinking about how I save the data that is used to generate the reports and I'm kinda scratching my head. I jotted down some pros and cons of each, but I'm going to pick Marc's brain on Monday to get some more feedback.