August Competition: write a SitePoint Private Message Utility Application

OK, here it is. Do you think you can write a
SitePoint Private Message Utility Application

I can put my Private Messages into custom folders. And I can select Private Messages and move or delete them.
But I wanted to be able to search them, save some, and clean things up now that I’m starting to get quite a few and my limit is approaching. And I didn’t want to spend a lot of time doing so.

I can export my Private Messages to Text, CSV, and XML files. So, I can archive my Private Messages and clean up the older ones saved on the forum if I want to. But do I want to save them all? And once I have them, what do I do with them so they’re useful?

My first impulse was to write my own utility application to run on a localhost server. But then I thought “Hey, SitePoint has a lot of members that write code! Maybe someone else could write a better application than I could?” quickly followed by “Why not have a contest?”

The idea was passed along to those at SitePoint Headquarters, and they approved! So who can enter? Any and every SitePoint forum member!

But be warned, the task is probably a bit much for a newbie developer. The time constraints and high standards may make meeting the requirements too daunting for even more advanced developers.

That said, to make things as easy as possible, competitors can choose what format(s) the utility application works with and what language is used to write it in - with the stipulation that the judges can read and test it. The judges have experience with many languages and various versions and variants of those languages. For example:
Awk, Bash, Basic variants, C/C++, Java, Lisp variants, Lua, Pascal variants, Perl, PHP, Python, Ruby, XSLT

  • So the chances are better than good that the language of your choice will be OK. Just let us know first to be sure.

Those interested are encouraged to look at their own exported files. For easy reference they are as follows:

TEXT FILE FORMAT: (whitespace includes newlines and tabs)

SitePoint Forums;http://www.sitepoint.com/forums
Private Message Dump for User SampleMember; Jul 11, 2010 13:57 -->

################################################################################
Folder :	Sent Items
################################################################################

================================================================================
From :	SampleMember
To :	FormAlly
Date :	2006-11-14 01:24
Summary :	added iframe
--------------------------------------------------------------------------------
If you can give me a link to the site I'll take a look at what's being added and look at what kind of user input stuff it has that should be checked. Not that I'm an expert, but it's worth a try.
SampleMember

CSV FILE FORMAT: (whitespace includes newlines)

Date,Folder,Summary,From,To,Message
"2006-11-14 01:24","Sent Items","added iframe",SampleMember,FormAlly,"If you can give me a link to the site I'll take a look at what's being added and look at what kind of user input stuff it has that should be checked. Not that I'm an expert, but it's worth a try.
SampleMember"

XML FILE FORMAT: (whitespace includes newlines and tabs)

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- SitePoint Forums;http://www.sitepoint.com/forums -->
<!-- Private Message Dump for User SampleMember; Jul 11, 2010 13:54 -->

<privatemessages>
<folder name="Sent Items">
<privatemessage>
			<datestamp>2006-11-14 01:24</datestamp>
			<title>added iframe</title>
			<fromuser>SampleMember</fromuser>
			<fromuserid>83449</fromuserid>
			<touser>FormAlly</touser>
			<message><![CDATA[If you can give me a link to the site I'll take a look at what's being added and look at what kind of user input stuff it has that should be checked. Not that I'm an expert, but it's worth a try.
SampleMember]]></message>
		</privatemessage>

Don’t have any Private Messages to export and work with or prefer to not use your own? The attached SampleMember files are available for your convenience. Every effort has been made to make them as “real” as possible.
privatemessages-SampleMember-Jul 11, 2010.txt
privatemessages-SampleMember-Jul 11, 2010.csv
privatemessages-SampleMember-Jul 11, 2010.xml

Now the details, the utility application:

Must:

[LIST][]state platform requirements
[
]follow a standard coding style convention - i.e. human readable with good naming - in English.
[]have enough comments to make it easier for someone unfamilliar with the code.
[
]be able to be run on a typical localhost server
[]be 100% error free (suppressing errors doesn’t count!)
[
]interfaced via a web page that has valid accessible mark-up,
… any javascript and CSS in external files only
[]SELECT file(s)
[
]READ data from the exported Text and/or CSV and/or XML files and those created by the application,
[]SEARCH Private Messages by:
… folder, date(s), from, to
… summary, message - by using both single words or phrases
[
]DISPLAY results in a table or table-like rendering
[]SORT results in both ascending and descending date and time order
[
]SAVE any selected results to a new separate file (Text and/or CSV and/or XML).
[]be fully functional without javascript being enabled
[
]still be easily readable without CSS being enabled
[*]be such that others are freely able to use your code for personal use for free[/LIST]

Optional:

[LIST][]code can be written in any language the judges can read and test
Post here to let us know and find out if it’s OK first
[
]testing can be done using either developer’s own exported Private Message files or the attached SampleMember files
[]mark-up can be
… HTML
… XHTML
[
]javascript, if used, can include freely available open-source libraries
[]images, if used, must be your own or in the public domain
[
]any reasonable directory structure is acceptable[/LIST]

Time Span:

[LIST][*]Participants will have 14 days to submit their Beta version. That is, until August 14 midnight GMT

  • Only one submission per member will be accepted.
    [*]Approximately 5 days later the winner and any deserving honourable mention will be announced.[/LIST]

Additional Criteria:

[LIST][]in the event of any “ties” Bonus Points will be taken into consideration
[*]Submissions should NOT be attached to posts. Please send me a Private Message with a URL where I can download them. Or send me a Private Message and I will give you an email address where you can send them.[/LIST]

Incentives:

[LIST][]Code to be made available to other members for their personal use.
[
]Winner will be featured in an Interview thread
[*]Winner will receive a SitePoint book and admittance to a Live Course of their choice Free
[
]Those receiving Honourable Mention will receive admittance to a *Live Course of their choice Free[/LIST]

*Bonus Points for:[LIST]
[]Secure access
[
]Pagination of results
[]Most efficient run time
[
]Most efficient memory use
[]Having the utility application also work with (but not dependent on) database(s)
[
]Rendering smilies as images[/LIST]

Sign up now, the clock is ticking!