Things to do as part of the WebCalendar 2.X development cycle

Com
ple     Description
te?
--- -------------------------------------

[ ] Allow support for multiple containers running WebCalendar:
  [ ] Move category icons off the file system and into the database
  [ ] Add command line installer
  [ ] Add support for Redis instead of local file caching
[ ] Automate creation in AWS
  [ ] Add terraform for running in ECS/Fargate
  [ ] Add ALB
  [ ] Add CloudFront
[ ] JavaScript code scanning on Github.
    CodeQL support javascript:
    https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning
[ ] PHP code scanning on Github.
    Psalm supports PHP code scanning: https://github.com/vimeo/psalm
[ ] Better handling of large numbers of users (1000+).
    We have one user who claims the JS chokes the browser with 1000+
    users when you press the "Select..." button
[ ] Added cal_fullname (or cal_display_name) column to webcal_user
    and webcal_nonuser_cals so nonuser cals do not need to specify
    first and last name (since it does not usually make sense).
[X] Add support for category colors
[ ] Add email notification for submission of new public events
    (ideally, multiple email recipients will be possible)
[ ] Allowing nonuser public calendar to have anonymous users submit
    events like the public calendar does.  Allow for a a list of users
    to receive email notifications... perhaps all users who have
    approve permissions on the nonuser calendar.
[ ] Add all features of public calendar to nonuser public calendarr.
    Remove the public calendar and transition users to a public
    nonuser calendar as part of the upgrade process.
[ ] Always have "User Access Control" enabled.  We might need to work
    on help docs or the UI so newbiews can understand this.
[ ] Update upcoming.php to support linking to an event on a nonuser
    public calendar.  URLs need to go through nulogin.php first and
    use return_path to specify the event URL.
[ ] Either (A) don't use any global variables or (B) rename all the
    global variables with a "webcalendar_" prefix.
    (This includes $login, $user and other variables.)

Here are some other ideas for the next or perhaps later releases:
[ ] Switch all the html over to a template system.  Smarty seems to be
    the often mentioned.  This will be a _lot_ of work.
[ ] Admin diagnostics page that could:
  + tell user where php.ini is :-)
  + send a test mail message
  + help debug login problems
  + help debug send reminder problem
[ ] Ability to support a reservation system (for either a single resource
    or multiple resources) as the primary use.  Most likely, this would
    involve reserving an entire day rather than a time period.
[ ] Admin tool for importing a large number of users (CSV, tab-delimeted, etc.)
    (Someone has contributed a patch for this.)
[ ] Create AJAX-based interface.  The existing web service functions could
    be re-used for this.
[ ] Don't allow the last admin user to be deleted
[ ] Create an ActiveSync Service Provider that will enable MS Outlook
    and PocketPC users to sync with WebCalendar.
    Details on how to developer ActiveSync Service Providers:
      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceactsy/html/ceconunderstandingserviceproviders.asp
      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceactsy/html/cecondesignguidelinesforactivesyncsynchronizationserviceproviders.asp

