The process behind the icons download section of planscalendar.com.
The icons page is powered by an XML file and two PHP scripts. It has two main goals:
The simplest icon seletion interface is a list, where clicking on an icon transfers it into a "download list." Likewise, clicking on a icon in the "download list" removes it.
The list of icons can be very long, and can have hierarchy (groupings). This should not complicate the user's selection process.
When the user is satisfied with the selected icons, the download link should send the user a .zip file with the selected images. It should also generate a snippet of XML for the user to copy-paste into their calendar config file.
The download script must validate each request before assembling the .zip file, to check for malicious attempts. This is done by starting with the files defined in the XML data structure, and removing all but those specified in the http request. In this way, user data is never used (even partially) as part of a system call.