CHANGELOG, last updated 2004-04-26 This document contains the changelog for "monaural jerk", an open-source weblog/journal/ diary/news/commentary system built on PHP4/Zend/MySQL. --------------------------------------------------- Changes in v. 0.5a5 (not released yet) Fixes - hit-count updater no longer rewrites item's mod-time in items table Changes in v. 0.5a4 (2004-04-21) Features - MonauralJerk can now generate TrackBack pings, to notify Movable Type (and compatible) blogs of related entries within a Monaural Jerk blog. - New standalone aggregator-PING form - added preliminary support for new aggregator, rootblog.com - external HTTP_REFERERs are now recorded for every item or channel page. A future release will allow these to be rendered on article pages (e.g. "sites linking here:") - external search-engine query terms are recorded as well. A future release will allow these to be rendered on article pages (e.g. "terms used to find this page") - hits to channels and items are counted in the database - Interception of search-engine REFERER data now expanded to accomodate a9.com's URLs, enabling automatic term highlighting and supplemental search for a9.com clickthroughs. Fixes - in admin system, 'current item' link in menu now works after 1st (rather than 2nd) submit. - channel names handled more intelligently: HTML characters (like '&') converted to entities - channel URL name updating is smarter: illegal characters are stripped; duplicate names generate a warning. - blank META tags are no longer output; if no META tag contents are available, the entire tag is skipped. - Interrupting the chain of aggregator pings won't cause item numbers to skip. Other Changes - Default template includes "alternate" , pointing to RDF script. Enables RSS autodiscovery. - channels table is optimized after every change, ensuring best performance. - new configuration setting, 'published_domain', allows slightly more flexibility in pinging architecture as the system no longer relies on $_SERVER['HTTP_HOST']. - obsolete table 'referers' dropped Changes in v. 0.5a3 Features - added preference to easily flag draft-status content on public website - distribution now includes an RSS 2.0 syndication script - in item content, bare '&' now encoded to '&' automatically - admin function: list items not in any channel - ping-upon-publish now uses 4-stage chained GET request, to avoid timeouts due to slow responses from aggregators. - callback system added to facilitate the insertion of channel-specific content into templates. (Intended use: Google AdSense ads.) Fixes - "ping upon publish" checkbox no longer disabled - rdf10 script works now - highlighting of external seach terms has been restored. - "posting rate" template now provided - the section of config.inc that deals with $_SERVER values is wrapped in a test, to avoid PHP warnings when the file is used by command-line scripts Other changes - includes SmartyPants-PHP 1.41php-r2 - UPGRADING doc updated - restored javascript to put cursor into 1st field of login form - added phpinfo() script to admin menu, plus links to public site and RDF script - renamed script files from .html to .php, on the assumption that most sites don't parse .html files - renamed some config-file elements (iscript, jscript, mscript, pscript...). This will make upgrading somewhat more painful but has the advantage of making the code much less obscure. - changed VERSION and APPNAME define()s to avoid namespace collisions - in find_item script, show '*' in place of blank title (to make editing of untitled items easier) - restored lastmod function (now query_for_lastmod()); needed by RDF script - documentation for 'posting rates' provided Changes in v. 0.5a2 - rewritten admin interface -- much-improved navigation, new stylesheet, better presentation - several changes to the core schemas, to store data more sensibly - simpler data-retrieval queries (fewer joins) - media review items now appear on the homepage, and/or in any non-genre channels. This reverses a design decision made back in the v0.1 days. - Any content item can be changed from 'journal item' to 'media review' or back easily; the media template is used for rendering whenever appropriate. - the non-optimal "quote educator" from 0.5a1 has been replaced with a PHP port of the industrial-strength SmartyPants code from daringfireball.net. Changes in v. 0.5a1 - major rewrite! new features: - ping weblogs.com, blogrolling.com upon item publication - RSS 1.0 (RDF 1.0) feed - no more tedious channels.inc regenation; channels table is now queried live for every page request. Although slower, for most sites the performance hit is trivial, and this makes installation much easier -- no more permissions errors to confound new users. - template-based formatting: no more markup in the source code - assumes / requires CSS - search term highlighting for both internal and external searches - nested channels - context-specific page titles - generates XML-clean whitespace markup. This is not perfect. - automatic smartquotes. - new channels editor (admin tool) - uses long tags throughout - does not require register_globals (!) Changes in v. 0.4.3 - bugfix: media items now inserted to channelitems table Special thanks to Daniel Lashua for the patches. Both editor.html and nueditor.inc were modified. - improvements to editor.html/nueditor.inc: instructions now appear in a popup window, saving screen space - made handling of $defaultgenre and $defaultchannel prefs more robust (in editor.html); script now fails gracefully if those prefs are not defined. - bugfix: 'default' channel shouldn't appear in channels pulldown within admin form (fix to nueditor.inc) - bugfix: genres with 1 item triggered a bug in return_content() in journal.inc Changes in v. 0.4.2 - bugfix: rss091 now uses $dyn_channels - mailit script includes dynamic channels hash - formatting media items as journal now works (journal.inc modified) Changes in v. 0.4.1 - mailing list subscription address in FAQ has been corrected. Changes in v. 0.4 - new tables: channels, channelitems, to store channel definitions (previously defined in $channels and $genres hashes) and one-to-many item-to-channel, item-to-genre associations (previously limited to one-to-one associations, stored in items.channel and media.genre fields). v0.4 ships with a utility script that creates and populates these tables; see the upgrade section of the README document. - to save runtime queries, channels data is written to a globally-available array ($dyn_channels). Many functions in journal.inc rewritten to use $dyn_channels instead of $channels, $genres, $attributes. - schema changes to items table to simplify primary key (removed channel field from primary key) - schema changes to media table to simplify primary key (removed type, genre fields from primary key) - bugfix: addition of WHERE term to single-item database queries to improve performance. I'd inadvertently left out the WHERE site='${sitename}' term, preventing MySQL from using the primary key to retrieve based on items.id and media.id. - many changes to editor.html and nuedit.inc to support new tables - navigation improvements to editor.html - editor.html allows channels table to be edited (add/edit channels, genres, attributes) - bugfix: run item link names through stripslashes() - login form now sets focus on top form field, via javascript - show_channel_itemcounts and show_media_itemcounts are now per-channel (and per-genre) preferences. - dump_channels() rewritten to use $dyn_channels; should now be faster if you had itemcounts enabled, but might be slower if you didn't. - get_items() modified; processing of $queryspec changed somewhat to accomodate new channelitems table. Additional changes to allow editors (but no one else) to see unavailable and future-dated items. - notes on spider control included in README - added new include to journal.html file: include $prefs['channelsfile']; - new mailing list for Monaural Jerk users: see FAQ Changes in v. 0.3 - DTD address of RSS091 changed from netscape.com to scripting.com; for info, search for 'DTD' here: http://scriptingnews.userland.com/backissues/2001/04/27 - added instructions to editing form (also visible on demo site, http://monauraljerk.org/demo/ ) - modified schema for editors table, to assign an ID to each site editor. - modified items, media, and sessions tables, to store editorIDs. - modified login/session management system to store editorIDs. Session-checking function now joins with editors table; login.html was modified to accomodate the new sessions schema. - Bugfix: admin script no longer allows content to be added to non-content channels (e.g. menu items that simply point to other sites). - fixed minor bug in calendar() function that would highlight future days when future (not-yet-published) content was present. - Relocated distro to monauraljerk.org; changed URLs in documentation to use new site. - Bugfix: hardcoded paths in editor.html and login.html replaced with variable values from config file (Thanks to John Puster, http://guar.org) - Media items now show publication date in search results - Random-email-address generator now bundled with dist. - Bugfix: printit script no longer complains about missing synopsis field for media items - Item retrieval and formatting architecture radically rewritten to be more modular - journal.html script updated to use this new, more- modular function set - New genre-attribute item (['show_as_journal']) controls how media lists are displayed -- either as journal items (one title per item) or as a list of artists/authors with titles under each name, linking to individual pages for the reviews. - New preference item, $prefs['show_media_scores'], controls whether a score value is output for media items. This only has effect if show_media_as_journal is set to 0. - journal.inc now uses global J_DEBUG flag, to assist in problem-solving. (Set the flag to 1 to have most queries and other helpful values output to the browser.) Changes in v. 0.2 - added function to journal.inc: lastmod_date() - added new type of field to blobs table: type=6, to store synposis of item, for use in RSS files as well as META tags - mods to nueditor.inc to support new synopsis field: update_item_table(), get_item_data(), show_item_form() - initialized new synopsis field ('') in nueditor.html - mods to journal.inc functions to support new synopsis field: get_items() - added rss091.php script (standalone) - modified searchresults() function to search new field (type=6) in blobs table - printit script rewrites relative URLs as full - dump_content() function now returns an array; the first argument is the synopsis of the first item on the current page - journal script now uses a dynamic META description value -- if the page contains only 1 item it uses the synopsis of that item, rather than default copy - minor bugfix in channel_list() function; now no longer shows ADD link for non-journal channels (that is, "channels" that have an override URL set) - in jconfig.inc, $attributes hash expanded in two ways: an 'rss091' element was added, to hold the name of an RSS091-compatible XML file (optional); also a new item was added to the hash to store attributes of the home page (which has no channel subscript, so I created a "magic" value of '__') - dump_content() function no longer uses SPACER tags - added month-to-month navigation to calendar() function, controllable by preference settings; also added nav_prev and nav_next elements to $calendarprefs hash - bugfix: lastmod functions and calendar functions now query against items.site (so as not to return data from items in other people's journals, for any installation where the database is shared across sites) - bugfix: DEBUG flag not obeyed in admin script NOTE: as written, the new nueditor.inc functions will not read old item data. The fix is to insert blank records into blobs for each item field, e.g. insert into blobs values (N,6,''); where N is each of the IDs in the items table. The easiest way to do this is to run the included script, add_synopsis_fields.php which you'll find in the utilities directory of this distribution. Be sure to edit the two include lines at the top of the script to reflect the locations to your config and function files. --------------------------------------------------- The most recent version of this document can probably be found at http://monauraljerk.org/CHANGELOG