version: 2.3.2-exp
uses array of nominated admins, rather than special admin user
remove button changed to "remove me" to match "add me" button
added AdminRemove function
cleared out unused config vars
cleared out old table layout code
made colours more basic (eg. bg now white)
2.3.2-exp.1
uses SESSION rather than cookie (uses cookie if "remember me" clicked)
uses top-bar for user login (no password required)
top-bar shows bread-crumb of current action
hides other admin buttons and functions when editing
edit Notices now shows rendered version above edit box
javascript code for show/hide Admin Functions
javascript code for show/hide Closed Sessions
show/hide functions are currently available via an "Admin Toolbox"
however the javascript state is not yet retained - want to put this
state information into the SESSION to do that.
Oops. forgot to update $version
2.3.2-exp.2 begin bootstrap styling
reduce table chome. more compact date display. etc.
2.3.2-exp.3
removed style.css
added bootstrap styling links
starting building template
2.3.2-exp.3 Basically a nice checkpoint in the template design.
Version was not updated as only new templates have changed
Looks quite good. Template responds to values such as
$loggedIn and $admin
(Probably should be called $isLoggedIn and $isAdmin)
2.3.2-exp.4 mid-dev version. old-style works. template-style not complete
Reworked many things! including...
- put all the start crud into a global.inc
- eliminate globals by using a config class (though at times the
  config itself is accessed as a global - unless until I finish
  my proper ConfigurationManager
  (except for "admin_mode" which is still in the process of being
  replaced by calls to SessionMgr class)
- created SessionMgr to track user login, session and cookie info
  and encapsulate it. Must now come here to check username of logged
  in user, etc.
- since SessionMgr is now tracking the user, removed obsolete
  hidden Name field from all the forms
- eliminated redundant (and confusing) session->whenstr. All times a session date
  needs to be presented, it is cast at the time.
- yes, I did change the base indent-level of much of the code in enrol.php.
  Sorry about that.
- eliminated silly "save changes" return parameter when LOADING session file
version 2.3.2-exp.5 working template-based layout and showing class enrolments
added prepareSessionData() to prepare data for the template to display
added a bunch of functions to handle class operations..
and threatened to write a SessionsClass class but it's too
big a change to commit to at this point, thought it would
certainly help simplify many of the sessions operations!.

Also: added Testing dir and deploy.mm
version 2.3.2-exp.6 changed colours. shows notices. added debug CI
- trying different colour scheme
- added get_notices() (makes print_notices() obsolete
- added debug configuration value and hide some ugly debug prints behind it
- added file: deploy.830d
display version in footer
checkpoint
version 2.3.2-exp.7 major dev checkpoint. most functions implmented
- color adjustments
- moved some functions into central "functions.php" file
- fix buttons to open and close sessions
- implemented enrol and unenrol user in manageSessions Class
- implemented open and close session functions is manageSessions Class
- implemented edit session
- protected username display with htmlentities()
- cleaned/simplified functions in datetime.php
- fixed: class places weren't all displaying correctly
  (well, mostly fixed. I think it now adds an unnecessary row
  if the number of places is mod 6)
version 2.3.2-exp.8 major dev checkpoint. all functions implemented
debug code gets ugly.. there are some raw file_put_contents!
admin passwords are stored via hardcoded hash!
admin functions now require authentication
probably should force admin users to authenticate immediately so that
  their use really is reserved for admins
Otherwise, remaining functions completed. Create session. Delete
session.
version 2.3.2-exp.9 added Admin authentication. fine tuning codebase.
- admin username and password now comes from local config file
- fixed erroneous use of === when returning 0 rather than false!
- (and changed the return value to be false for good measure!)
- moved calls to SessionMgr to be outside main loop
- finally implemented Logger class. Starting rolling out it's use
- added configuration item: forceAdminAuth -- determines whether Admins are
  required to authenticate immediately on login.
- removed deprecated config item: admin_user
renamed:    includes/config.inc.php -> includes/config.inc.php-sample
modified:   css/main.css
> try different colour scheme
version 2.3.2-exp.10 Implementation (almost?) complete. Various bugfixes
- implemented editNotices
  removed old-style formatting of notices (don't get in the way of bootstrap!)
- implemented weekly sub-heading for sessions
- added new config option:
	forceAdminAuth: determines whether admin users need to authenticate immediately or not
- eliminated old code from enrol.php
- fix bug where superfluous row was shown when class size % 6 == 0
- added javascript check for createNewSession
- continued to replace old debug/log calls with calls to Logger class
  (I think remaining calls are in sections of redundant code anyway)
- log level now set from the config.inc.php
- log_event() now superceded by Logger::logInfo()
- logger::logTrace() now actually reports up to two levels of the stack backtrace
- shows by default!
- changed label: "Admin View" to "Show Admin Functions" and groups admin functions in a "well"
- removed superflous "Admin" tab-pane
Still to be fixed:
- tried (and so far failed) to add javascript "Are you sure?" confirmation to session delete
- stopped forcing Sessions-tab as default - but now neither Sessions nor Information tab
removed that troublesome <hr>
version 2.3.2-exp.11
- removed deprecated code, including log_event (now uses Logger::logInfo)
- replaced lousy function weeknumber2monday() with getPreviousMonday() (much better!, WWIT)
- protect display of username with htmlentities()
  (I had done this previously but that had been lost along the way)
- Coded display of active tab based on template variable $t->activetab
- Moved tabs back down from login/top bar back into main page
- Trial display of Announcements data at top of page as separate to the
  notices data displayed in the Notices tab.
version 2.3.2-exp.12 Implemented adminRemove function + a few minor bugfixes