Hi Michael,
I think each module that supports a due date/submitby (whatever each module calls it) should be left as it is; it's working well now and for the most part can be left as it is (as inconsistant as the field naming is) - unless there is a specific need to resolve those issues.
I have asked Tim for suggestions on the best way to implement this in the Core, and he's given me some good suggestions. It's also raised another question in my mind as well; as what's in Quiz now aparently allows for extra time on a quiz timelimit, whereas what we're proposing (and already using in our Moodle 1.9 installation in Production in Quiz) will simply extend the close date a student has to attempt the quiz in. Modifying the timelimit on a student by student (or even group/grouping) basis clearly adds another level of complexity, and while I do see this as being vitally important in the future, we won't be able to include this functionality in the short term in our module. Thankfully the Quiz module does implement it already, so for now that will need to be a work around. Once the code for this is released we're happy for someone in the Community to implement this.
Excusing Quiz module specifics (which will need to be considered at some level from day 1) I think it's best to proceed as I mentioned above. As a simplistic overview each module would then check with Core for 'extensions' and if there is an extension to the due date found for a specific CMID & User that module would then adjust it's due date to suit for that users session only.
The way I see it being implemented is something like:
In core would be an Extensions class (lib/extensionslib.php ?), comprising all the logic which modules will call to check for extensions. After a module has queried it's own tables for the details of the activity, it would call $asmnt = extensions::update_duedate($cm->id, $user->id, $asmnt, 'timedue'); passing in the cm->id, user->id, $asmnt (represents the details of the activity itself) and the field which contains the due date that extensions needs to update. Of course that could also be managed inside the method with a switch, but I can see that being a bit of a mess (though maybe somewhat more reliable?). This is based on looking at the function quiz_update_effective_access() with some changes on how it may be implemented in a way that can suit all modules.
Gradebook will also need to be able to call this method to determine if there was an extension for a specific activity but I don't see that being a major issue.
The method described above would determine wheather a user has an individual extension for the activity, or if they have been granted a global extension (course wide, group or grouping based?). I really like your suggestion of automatically granting extensions for specific students as requested, even though that might have to come in a future version it's absolutely possible, and I think we would also get some value from it at our Uni also.
Most of my thoughts of implementation above are simply on the fly thoughts, so I'm open to suggestions and improvements.
The module we are developing above does already have it's own tables to store requests for extensions, with the status of these present also.
You do raise a valid point regarding the history of each extension; we're also logging to core Moodle logs, so they can certainly be viewed through existing logging systems, but I think an easy to view table of extension history adds some useful information for staff who are approving/reviewing the extension.
The breadcrumb saying 'Site Administration' is purely an artefact of where the menu is located at the moment - I simply needed a quick and easy place to access the menu while I'm developing it. It's actually being designed so that a staff member can have a 'global' view of all their pending requests in all courses so this menu item may remain in the future, but of course it is most valuable at Course level and is being developed to work that way primarily.
Blind marking has not been considered at this point; but thanks for raising it - we will certainly need to give it some consideration. Depending on how it works there may be a requirement to disallow extensions for blind marked assessments perhaps, but again it's up in the air and we're open to suggestions.