# Version History

Back to manual

- Nucleus v3.1+ (?, 2004)
  - ADDED: In the admin area, a list of all comments for a blog is now available (karma)
  - ADDED: Support for `<%blogsettings(short)%>`, as suggested by caw (karma)
  - ADDED: `ITEM::getitem` returns blogid, as suggested by leonbloy (karma)
  - FIXED: Default skin used `application/xml+rss` instead of `application/rss+xml`, causing RSS autodiscovery to fail. (karma)
  - FIXED: Validate data that is sent as HTTP headers (redirects etc) (karma)
  - FIXED: Moved more hardcoded text into language files
  - FIXED: bug 1029057, parsed include doesn't accept empty files (karma)
  - FIXED: bug 1036849, 'relevance' listed in list of available skinvars, while it's a templatevar (karma)
  - FIXED: It was possible to spoof the username on comments, even when "protect member names" was turned on. Reported by bigmouth. (karma)
  - FIXED: Made it so malicious users cannot trick a logged in site member/admin into visiting a specifically crafted URL that performs some admin area task. (karma).
  - CHANGED: replaced `numerical=true` (optionmeta) with `datatype=numerical` for easier extensibility in the future (TeRanEX)
  - FIXED: bug 1025675, if(hasplugin) causes warnings in action log when plugin does not exist (karma)
  - FIXED: bug 976777, weblogs.com was not ping when posting draft (admun)
  - ADDED: bug 1008171, cookie-prefix (karma)
  - CHANGED: bug 1008175, move `getTemplate` into `MANAGER` class + some other performance tweaks (karma)
  - FIXED: bug 1008700, taking away admin attribute from a member was disallowed when that member did not have logon rights (karma)
  - FIXED: bug 968925, member edit leak out repeat password box while it should be hidden (admun)
  - ADDED: add plugin dependency check (admun)
  - FIXED: bug 933580, URLs in comments followed with a comma should not have the comma in the generated hyperlink (karma)
  - FIXED: bug 1019584, separating search terms with a '+' character caused SQL errors (karma)
  - FIXED: bug 1016217, superadmin should be allowed to edit all items/comments (karma)
  - FIXED: bug 1019191, `<%if(blogsetting,..)%>` / `<%if(category,...)%>` broken on error pages (karma)
  - ADDED: Admin members can click the version number in the admin area to check for a newer version (karma)
  - CHANGED: Sending out activation links rather than new passwords on new accounts, forgotten passwords, etc. (karma)
  - FIXED: Quickmenu didn't show up after login from `index.php?action=showlogin` (karma)
  - ADDED: Plugins can now make text- and textarea-optiontypes readonly (TeRanEX)
  - ADDED: `<%if(admin)%>` and `<%if(admin,blogname)%>` in skins (karma)
  - CHANGED: new plugin events `FormExtra` and `ValidateForm` (karma)
  - CHANGED: better error handling when commenting. Errors now displayed together with comment form. (karma)
  - CHANGED: actions (commenting, membermail, ...) can be done using any entry point, not just through `action.php` (karma)
  - FIXED: Made sure no code relies on the PHP5 setting `register_long_arrays` to be `On` (karma)
  - CHANGED: Added `$``Id$` info in sourcefiles (karma)
  - CHANGED: Extra whitespace to make skin exports easier to read in text editors (karma)
  - CHANGED: e-mail notifications are now sent as `utf-8` rather than `iso-8859-1` (karma)
  - CHANGED: PrePluginOptionsEdit-event now has an extra-field which can be used to add option-specific code to the page (TeRanEX)
  - ADDED: new event, PrePluginOptionsUpdate, can be used by plugins to verify/modify the new value for an option (TeRanEX)
  - ADDED: Plugins can now provide a documentation page, which is shown inside the admin area (TeRanEX)
  - ADDED: Plugins can now limit values for an option to be only numeric (TeRanEX)
  - ADDED: OptionTop-methods, to let a plugin retreive an array of the x-highest (of lowest) values of an option (TeRanEX)
  - ADDED: Plugins can now make specific options for items. These options can be edited directly from the item add or edit page (TeRanEX)
  - FIXED: `Call to undefined function` when user specified a language in its profile (jef pober)
- Nucleus v3.1 (July 28, 2004)
  - FIXED: Nucleus v3.01 was missing a fix in `backup.php`, which could cause fulltext key info not to be backed up correctly
  - ADDED: support for patch levels, so plugin API enhancements can be distributed to power users earlier (suggested by TeRanEX)
  - FIXED: bug 974090, multiple identical SQL queries were executed when checking if a plugin is available (karma)
  - FIXED: Default language wasn't always respected (fushimi)
  - CHANGED: new bookmarklet style (TeRanEX / moraes)
  - FIXED: After a karma vote, redirection to referer URL failed if `register_globals` is turned off (karma)
  - FIXED: SQL Injection Vulnerability, reported by aCiDBiTS
  - FIXED: bug 689468, moved PostAddComment from action.php to COMMENTS.php(admun)
  - FIXED: bug 967580, Class variables were not explicitly defined in PHP classes (karma)
  - FIXED: IE6 unreadable Admin menu textarea (admun)
  - FIXED: Skin exports for skins containing CDATA sections (like the RSS feeds) caused the `skinbackup.xml` to contain invalid XML. (Import still worked, however) (karma)
  - FIXED: German language file wrong translation (admun)
  - CHANGED: replaced `split` by `preg_split` in the parser class. Should be faster according to PHP docs (karma)
  - FIXED: documentation typo (admun)
  - FIXED: PHP5: Install script failed to discover install path automatically (karma)
  - FIXED: Skin parser no longer parses skinvars when they are inside a non-displayed `if`-section (karma)
  - FIXED: bug 817361, prefix http:// to member's URL if missing (admun)
- Nucleus v3.01 (July 13, 2004)
  - FIXED: PHP5: Links to plugin admin area broken (radekradek)
  - FIXED: bug 966011, skins created with v2.0 could not be imported (karma)
  - FIXED: Security issue spotted by rADo2
- Nucleus v3.0 (May 30, 2004)
  - FIXED: When adding a weblog, select globally defined default skin by default (TeRanEX)
  - FIXED: CSS conflict in default skin (moraes)
  - FIXED: ADMIN.php no-cache after doctype added to support dynamic content for plugins in admin area (rADo2)
  - FIXED: vars4.1.0.php fixed a strange bug for some PHP installs having empty $_REQUEST[] (rADo2)
  - FIXED: globalfunctions.php - added a flag preventing include of vars...php twice for custom install (rADo2)
  - FIXED: install.php - added a flag preventing include of vars...php twice for custom install (rADo2)
  - FIXED: install.php - installCustomSkins skinbackup.xml renamed (rADo2)
  - FIXED: install.php - installCustomPlugs now correctly syncs plugin events (rADo2)
  - FIXED: Forcing focus on add/edit window after closing media library (nakahara21)
  - ADDED: `class` attributes on textareas that allow skins/templates to be edited (karma)
  - FIXED: Documentation and errors now tell to chmod config.php to 444 instead of 644 (hcgtv)
  - CHANGED: Admin area style power-up (Radek)
  - FIXED: Install script used $PHP_SELF, which is not available when register_globals is off (nakahara21)
  - FIXED; Skin import failed if there were CDATA sections (Nucleus Japan)
  - FIXED: `undoMagic` choked on array variables (Nucleus Japan)
  - FIXED: htmlspecialchars causes broken url like "&amp;amp;" (Nucleus Japan)
  - FIXED: PostAddCategory event was never called (Nucleus Japan)
  - FIXED: PostAddCategory event was not called when creating a new weblog (Nucleus Japan)
  - FIXED: <%blogurl%> problem on category lists (nakahara21)
  - CHANGED: Took out the HTTP Authentication part for now (it has no real use yet, and caused problems when Nucleus is installed in a protected directory)
  - FIXED: When the 'Allow login edit' option was disabled, the e-mail address was not checked for validity when a user edited his/her settings. This would cause an e-mail with new password to be sent out to an invalid address. (Frankenstein)
  - FIXED: Some PHP files were missing the closing `?>` tag (ikeizer)
  - FIXED: Plugins were inable to delete options (leonbloy)
  - FIXED: XML-RPC: `metaWeblog.newPost` fails when an empty array is passed as list of categories (caused problems with Ecto)
  - FIXED: Eliminated 2 SQL queries on most requests.
- Nucleus v3.0 RC (April 27, 2004)
  - CHANGED: Labeled it v3.0, since users started believing "2.5 beta == 25 final"
  - FIXED: XML-RPC: `metaWeblog.editPost` assigned the default category again when no categories were passed along (karma).
  - FIXED: XML-RPC: `mt.getPostCategories` returned an invalid result (karma)
  - CHANGED: On clean install, RSS and Atom feeds contain full items rather than excerpts only (karma)
  - REMOVED: Clean installation does not include RSS 0.91 feed anymore. Only the RSS 2.0 and Atom 0.3 feeds are included (karma)
  - ADDED: When a skin provides a preview thumbnail, it is displayed in the skin overview (include prefix required, 100x75 preview.png, preview-large.png). Also, when a readme.html file is present in the skin include dir, a link to that file is added (karma)
  - CHANGED: Allowed skin names to have slashes (`/`) in them (karma)
  - FIXED: When adding media in non-IE browsers, all text was removed
  - FIXED: Wrong times displayed / 'no such item' errors when MySQL server and PHP server are in different timezones (karma)
  - ADDED: Made sure language files for v2.5beta can be used with v2.5final without strange strings (e.g. _SETTINGS_EXTAUTH) showing up in the admin area (karma)
  - FIXED: No CSS styles were applied on 'insert media' popup (karma)
  - FIXED: Some more possible problems with URL linking in comments (karma)
  - FIXED: In Opera, buttons on the extended area added text to the main body text instead (karma)
  - CHANGED: Admin pages are being sent as `text/html` instead of `application/xhtml+xml` again, since it caused too much javascript problems. When `$CONF['debug']` is `1` however, the pages are still sent as `application/xhtml+xml` (karma)
  - FIXED: `itemlink` in templatevars didn't include itemid when used on item skins (mas)
  - FIXED: Errors when deleting plugins with options (Curtis)
  - FIXED: & not encoded in category names/descriptions in admin area (karma)
  - ADDED: `hasplugin` option on `if` skinvars (Kazuhiko)
  - ADDED: External Authentication (plugin contains authentication code) (Frankenstein) (not in 3.0 final)
  - ADDED: HTTP Authentication (Frankenstein) (not in 3.0 final)
  - FIXED: When using the JavaScript buttons to add images/bold text/... to the extended text area, the text was added to the main text body instead if JavaScript toolbar style was set to 'simple' (karma)
  - FIXED: XML-RPC: Added `postid` in structs returned by `metaWeblog.getPost` and `metaWeblog.getRecentPosts` (karma)
  - FIXED: XML-RPC: `metaWeblog.getRecentPosts` expected a `string` instead of an `int` for the `amountOfPosts` parameter. (karma)
  - FIXED: convert linebreaks broke `\r\n` linebreaks (jmuto)
  - FIXED: On `index` and `search` skinparts, `nextlink`/`prevlink` could not be used before a `blog` or `searchresults` skinvar was called (karma)
  - FIXED: SQL errors when search query contained single quotes (`'`) (karma)
  - FIXED: Backup did not store information about FULLTEXT keys. (karma)
  - ADDED: Extended the `date` templatevariables with pre-defined formats `utc` and `iso8601` (needed for Atom syndication; karma)
  - FIXED: super-admins that were not on a blog team did not see the categories when trying to add an item to that blog (karma)
  - FIXED: `nextresults` and `prevresults` were listed as available skunvars, while they don't exist (karma)
  - FIXED: XML-RPC library wrote `<?phpxml version="1.0"?>` as XML header (jmuto)
  - FIXED: not longer showing comment form when comments disabled for blog (jmuto)
  - CHANGED: Plugin options are no longer limited to 128 characters (karma)
  - CHANGED: Exported skins are now saved as `skinbackup.xml` instead of `skindata.xml` to avoid confusion. (karma)
  - ADDED: New plugin events `AdminPrePageHead`, `AdminPrePageFoot`, `PreSendContentType`, `QuickMenu`, `BookmarkletExtraHead` (karma)
  - FIXED: Fix for bookmarklet, which failed in Opera (jmuto)
  - FIXED: `nextitemtitle` and `previtemtitle` skinvars did not htmlencode their output (karma)
  - CHANGED/ADDED: make all skinvars that insert links consistent. They can now all take a linktext parameter to insert a full link instead of a raw link. The `nextlink`/`prevlink` on search/index pages (introduced 2.5 beta) had to change for this. Skinvars that can take a linktext: `todaylink`, `archivelink`, `prevlink`, `nextlink` and `itemlink` (karma)
  - FIXED: XML-RPC: `mt.setPostCategories` asumed that `isPrimary` was always present (karma)
  - FIXED: Plugins that generate output when they are loaded can not longer break backups. (Xiffy)
  - FIXED: The test that auto-disabled fancy URLs was incorrect, and also applied to top-level domains that use 3 characters (like .com) (karma)
- Nucleus v2.5 beta (October 11, 2003)
  - ADDED: `if(previtem)`, `if(nextitem)` and `if(skintype,typename)` skinvars.
  - FIXED: RSS conditional GET wasn't working correctly (Visa Kopu)
  - ADDED: Templatevar `relevance` available when displaying search results (Xiffy)
  - CHANGED: `nextlink` and `prevlink` skinvar now also available on `search` and `index` skins. (Xiffy)
  - ADDED: Skinvars `nextitemtitle` and `previtemtitle` on `item` skins (Xiffy)
  - FIXED: Upload did not notice duplicates correctly
  - ADDED: XML-RPC: Support for `metaWeblog.newMediaObject` and `metaWeblog.getRecentPosts` methods
  - ADDED: XML-RPC: Support for the Movable Type API (except for `mt.getTrackbackPings`)
  - CHANGED: Fulltext search, prev/next links on search pages, ... (Xiffy)
  - FIXED/CHANGED: Action log size drops back to 250 when more than 500 entries.
  - FIXED: No more restrictions on category names
  - ADDED: possibility to create custom installs
  - FIXED: XHTML admin documents now have a proper `xmlns` attribute set; admin pages are now sent as `application/xhtml+xml` if the client browser accepts it. Removed again in 3.5final
  - ADDED: Plugins can now make specific options for blogs, categories and members. These options can be edited directly from the blogsettings or member settings page.
  - FIXED: It's no longer possible to select an item from an other weblog through `?itemid=` when there is a different `blogid=` parameter set in the request (or set using `selectBlog`)
  - FIXED: Disallowed while trying to create a new category on item edit
  - FIXED: Date/Time variables in date footer were not parsed
  - FIXED: Adding an item while creating a new category prevented ping to be sent to weblogs.com
  - FIXED: Right-click bookmarklet for IE (re-install to get it working with IE6)
  - FIXED/CHANGED: hyperlink conversion in comments: ftp/http/mailto supported
  - FIXED: spaces in between multiple notify e-mail addresses caused ar error message saying the e-mail address is invalid.
  - FIXED: `archivedate` skinvar ignored the 'locale' parameter that was passed to it
  - FIXED: `selectBlog` did not protect for changes in `?archivelist`
  - FIXED: `selectCategory` now takes a category id instead of a name (multiple categories can have the same name)
  - CHANGED: Fancy URLs are only generated when `$CONF['Self']` does not end in `.php` (this avoids URLs like `index.php/item/95/item/94/member/1` when turning fancy URLs on without further configuration)
  - CHANGED: Install script updates config.php automatically when it is writable
  - CHANGED: When the content type of a skin is `application/xhtml+xml`, only send this to browsers that specify this type in their `HTTP_ACCEPT` header (otherwise, send `text/html` instead)
  - CHANGED: More intelligent search keywords highlighting (multiple separate keywords etc), also available inside comment bodies now
  - ADDED: Possibility to filter on filename in media library
  - FIXED: `include('config.php')` caused problems when another `config.php` was in the PHP include path (nils bernhard)
  - ADDED: LiveJournal conversion (moraes)
  - FIXED: Karma Vote URLs used relative links to `action.php`
  - CHANGED: Support for PHP versions having `short_open_tag = Off` (Andrew Brampton/Terry Chay)
  - ADDED: Plugin options can now also use a `textarea` type. (max. size for data is still 128 bytes though)
  - FIXED: When unable to load a plugin, an error message is added to the actionlog
  - FIXED: Not all messages sent to the actionlog actually appeared there
  - ADDED: Made it possible to install more than one Nucleus installation in the same database (using a prefix to the tablenames)
  - ADDED: Nucleus does not longer allow access to the Admin Area when files like `install.php`, `install.sql` or the `nucleus/upgrades` directory are still on the server.
  - ADDED: `<%member%>` skinvar now also accepts `id` and `yourid` as parameter
  - FIXED: JavaScript toolbar works better in Gecko-based browsers (Mozilla Firebird/Netscape 7)
  - ADDED: `supportsFeature` method to plugin interface
  - FIXED: Destination URL parameter on `membermailform` skinvar didn't work
  - FIXED: Encoding of the window title of popup images (Osamu Higuchi)
  - FIXED: Link at end of install sequence was pointing to install.php
- Nucleus v2.0 Final (April 3, 2003)
  - FIXED: renamed the `xmlrpc_encode` and `xmlrpc_decode` methods in `xmlrpc.inc.php`, avoiding naming conflicts on some PHP configurations that are compiled with XMLRPC support
  - FIXED: restore did not work on some PHP configurations, and did not correctly recognize `application/x-gzip` encoding type
  - ADDED: `if(onteam[,blogname])` skinvar
  - ADDED: automatic warning when headers have already been sent, with filename and linenumber included
  - ADDED: About 40 extra plugin events
  - ADDED: Made `<%member%>` available on all skin parts, and added yourname, yoururl, ... parameters
  - FIXED: plugin loading is now a little more robust (non-fatal errors in the plugin PHP file used to cause a fatal error afterwards)
  - ADDED: extra variables inside popup code/image code/media code template-parts: `width`, `height`, `link` and `text`
  - ADDED: Extra optional parameter for `image` skinvar, indicating which information to insert on the page
  - CHANGED: Marked the `imagetext` skinvar as deprecated (use `image(caption)` instead)
  - CHANGED: Marked the `ifcat` skinvar as deprecated (use `if(category)` instead)
  - CHANGED: Marked the `vars` skinvar as deprecated (if anyone needs a hidden 'itemid' formfield [are there?], the itemid skinvar can be used instead)
  - ADDED: `doTemplateCommentsVar(&$item, &$comment)` method in plugin interface
  - CHANGED: comments are now also parsed using the same method as skins and items, allowing plugins, includes and more to be used there as well
  - FIXED: guests cannot longer place 'fake' comments (making it look as if a regsitered memeber made the comment)
  - FIXED: item contents is no longer trimmed
  - FIXED: Made install script look less messy
  - ADDED: `selectItem($id)` method
  - FIXED: Unable to disable comments through 'edit item'
  - ADDED: Plugins: EditItemFormExtras event gets itemid as separate parameter
  - FIXED: missing ; in presented new blog code
  - FIXED: PHP 4.0.6 didn't show item/member/... lists on admin area (PHP bug)
  - ADDED: Plugin Hook: BlogSettingsFormExtras
  - FIXED: <%if(blogsetting,bcomments,1)%> skinvars were not working
  - ADDED: <%if(loggedin)%> skinvars were not working
- Nucleus v2.0 beta (January 18, 2003)
  - FIXED: Highlighted text no longer has <!--h--> in it
  - ADDED; Plugin hook: PostAuthentication
  - ADDED: Plugin hooks PreAddItemForm, AddItemFormExtras and EditItemFormExtras
  - CHANGED: Notifications emails (new comment, etc) are not sent to the person causing the notification (comment author)
  - ADDED: plugins can access global variables `$currentTemplateName` and `$currentSkinName`
  - CHANGED: Spaces after commas in <%image%>, <%popup%>, <%media%>
  - FIXED: HTML to Text conversion didn't always work
  - ADDED: <%date%> templatevars extras (rfc822 & rfc822GMT) (Xiffy)
  - ADDED: ranges for <%blog(...)%> and <%otherblog(...)%> skinvars
  - ADDED: templatevars <%author(email)%>, <%author(url)%> and <%author(id)%<
  - CHANGED: Added info on new weblog creation (split up creation process into two steps)
  - FIXED: Login screen after email address change did not work correctly
  - ADDED: Plugin Hook: PrePluginOptionsEdit
  - ADDED: Added a getMinNucleusVersion method to the plugin interface
  - ADDED: PostPluginOptionsUpdate plugin event
  - ADDED: Javascript toolbar: align left/center/right buttons (Irmo)
  - ADDED: RSD skin/template
  - ADDED: 'Fancy' URLs option & support files. Allows for URLs like http://hostname/archive/1/2003-01-05 instead of http://hostname/index.php?blogid=1&archive=2003-01-05
  - ADDED: RSS 2.0 skin/template (Xiffy)
  - ADDED: skinvar <%skinname%>
  - ADDED: if/else in skins. parameters for 'if' are currently 'category' (=ifcat) or 'blogsetting/settingname' (settingname = columnname from database...)
  - ADDED: Etag/If-None-Match support for xml-rss.php (needs some more work)
  - FIXED: more friendly bookmarklet for Opera 6 users (all tabs are visible, editing through bookmarklet works)
  - ADDED: on edit item, the post time can be changed (only if 'allow post to past' is enabled)
  - ADDED: 'Allow Post to Past' option on weblog basis
  - ADDED: IncludeMode and IncludePrefix settings in nucleus_skin_desc + interface to change these settings + user IncludePrefix while parsing includes.
  - CHANGED: nucleusbutton skinvar now takes into account IncludeMode
  - CHANGED: btimeoffset column is now DECIMAL instead of INT
  - CHANGED: took away actionurl parameters from commentform and membermailform skinvars (it's a global setting now)
  - ADDED: <%set(property,value)%< skin/template-var to set global parser properties. Only one option defined so far: 'IncludeMode'. Can be 'skindir' or 'normal' and affects the include/parseinclude/phpinclude skin/templatevars
  - ADDED: <%skinfile(filename)%> skinvar (to be used on imported skins)
  - ADDED: $CONF['SkinsURL'] and $DIR_SKINS (config.php)
  - CHANGED: friendly names used on skin edit (instead of 'index', 'item' etc)
  - ADDED: action url to global settings (action.php location)
  - ADDED: $desturl and $actionurl parameters on membermailform skinvar
  - ADDED: skin import/export class
  - CHANGED: media library now works with multiple collections, of which one is private to the site member, and the rest is globally shared.
  - CHANGED: base skin can now be changed (it's now a config setting). This skin is ONLY used in two cased: when all else fails, and when the selected skin does not have contents for the needed skinpart
  - CHANGED: positive and negative karma votes are now kept separately, since that works better and is more flexible. The <%karma%> templatevar received an extra parameter to select which information to show
  - ADDED: skinvars archivenext/archiveprev/archivetype
  - CHANGED: skinvars nextlink/prevlink now also work on archive skins
  - CHANGED: move item now also allows to choose a category
  - CHANGED: new items can be added to other blogs also now
  - FIXED: archivedate skinvar displaying wrong date
  - FIXED: serverVar function was not working when using vars4.0.6.php
  - ADDED: now also listing category in itemlist
  - CHANGED: Admin Area now uses the Site Name instead of Nucleus
  - CHANGED: admin.css and admin area: corrected h1, h2, h3 depth levels
  - ADDED: batch operations
  - FIXED: when language settings are changed, the new language is used immediately (only for global settings, not for member settings)
  - CHANGED: archivelist query now uses the SUBSTRING MySQL function instead of the YEAR/DAYOFMONTH/MONTH functions (caused trouble for some people)
  - ADDED: maxlength attributes on forms
  - CHANGED: commentlists: placed time/author in same table cell
  - ADDED: extra convertor for Blogger blogs that use YACCS comments (exportable in CAIF format)
  - FIXED: some possible security issues (thanks to Morgan Tocker)
  - FIXED: shortening of strings does not corrupt HTML entities anymore (e.g. in RSS-feeds)
  - CHANGED: links in comments are now handled differently. Part of the URL is now displayed instead of just http://.../
  - ADDED: Opera version of bookmarklet
  - ADDED: selectLanguage() function to force the use of a certain language file
  - REMOVED: there was a plugin event AddItem which was actually not needed at all (wasn't included in the documentation too)
  - ADDED: archivelist skinvars now takes an extra limit-parameter
  - CHANGED: moved all forms which can be included through skinvar out of SKIN.php and into .template files in the nucleus/forms directory.
  - FIXED: 'clone skin' did not copy contenttype
  - FIXED: Errors in XML-RSS template (upgrading users might need to change this manually or by importing an updated skin)
- Nucleus v1.55 (August 26, 2002)
  - ADDED: <%archivedaylist%> and <%otherarchivedaylist%> skinvars (to show archives by day instead of by month)
  - FIXED: PHP error on createAccount through action.php
  - ADDED: new parseFile-method available in index.php. Allows to parse non-blog pages with skinvars
  - FIXED: editing comments with hyperreffed links
  - ADDED: 'delete item' option on edit item, plus 'delete item' confirmation screens (also on bookmarklet)
  - CHANGED: on multi-blog systems, the admin now only gets to see the blogs for which (s)he is on the team. All other blogs are available through an 'show all blogs...' link
  - FIXED: link to recent items after weblogs.com ping was broken
  - CHANGED: plugin event call 'PreAddComment' moved to immediately before the item is added to the database
  - FIXED: tab-orders were not correct on multiple admin pages
  - ADDED: <%itemid%> and <%itemlink%> available on item pages
  - FIXED: install.php now works when the PHP option magic_quotes_runtime is enabled
  - CHANGED: install.php gives an error when PHP is compiled without MySQL installed
  - CHANGED: install.php automatically fills the 'mysql hostname' field when PHP option mysql.default_host is set.
  - FIXED: greymatter convert was not putting a reference to the weblog in the comments table.
  - CHANGED: added some linebreaks in the login screen of the admin area
  - ADDED: new plugin events: PreAddItem, PreUpdateItem, PrepareItemForEdit, PreUpdateComment, PrepareCommentForEdit
  - ADDED: JavaScript to hide empty fields when editing templates
  - CHANGED: Admin area CSS now uses relative fontsizes and fontsize-keywords (also added trick to make IE5 get it right)
  - FIXED: backup was broken :(
  - CHANGED: replaced an SQL query that caused problems (NATURAL JOIN replaced by implicit inner join)
  - ADDED: <%self%> available in categorylist templates
  - ADDED: <%itemtitle%> skinvar available on item-skins
  - FIXED: editing a comment you made in a blog that's not your own resulted in a 'disallowed action' error
  - FIXED: plugin was listed twice in the list of available skinvars
  - ADDED: <%archivedate%> skinvar on archive skins
  - FIXED: admininstrators could not edit details of other members
- Nucleus v1.5 (August 13, 2002)
  - ADDED: Introducing plugins (define your own skinvars and templatevars, add event listeners, ...)
  - CHANGED: simpler and more accessible default templates/skins
  - FIXED: GreyMatter convert now works when the `asp_tags` option in PHP is enabled
  - ADDED: title and authorName fields in Blogger API getRecentItems call
  - ADDED: HTML label tags for radio buttons and checkboxes (this way you can click anywhere on the text instead of only on the radio button/checkbox itself)
  - FIXED: deleting a comment you made in a blog that's not your own resulted in a 'disallowed action' error (thanks moraes)
  - CHANGED: the place where comments are inserted can now be chosen from within the template. Just include <%comments%> in the ITEM templatepart whereever you want the comment count (or comments) to appear. In upgrading, the old ordening is imitated by adding '<%comments%>' to the end of the ITEM template part.
  - CHANGED: now trimming parameters that were passed to skinvars/templatevars
  - ADDED: <%referer%> skinvar, which inserts HTTP_REFERER
  - ADDED: '- New Category -' can now be chosen on add/edit item (only for blog admins). A new category is then created, and the chance is given to edit the category details.
  - ADDED: optional attributes for templatevars <%time(format)%>, <%date(format)%>, <%syndicate_title(maxLength)%>, <%syndicate_description(maxLength)%>
  - ADDED: new user registrations show up in action log
  - ADDED: new option to allow non-members to send messages (the membermailform)
  - FIXED: when an admin edits an item written by someone else, and uploads an image, the image is now saved under the original authors media directory
  - CHANGED: <%author(realname)%> in item templates now inserts the real name of the author
  - FIXED: install.php now works when magic_quotes_gpc is disabled
  - ADDED: New settings: PluginURL, MaxUploadSize, ProtectMemNames
  - ADDED: hotlinks to the defined skinparts from the skin overview (also gives a good view on which skinparts have been defined and which have not been defined)
  - ADDED: <%smartbody%> for item templates, which chooses between showing the body and extended part, based on the extended part being empty or not. Using this, the body text can be your full text, and the extended part could be seen as an 'introduction', which you want to show on the front page. (request from smarko)
  - ADDED: <%edit%>, <%editlink%> and <%editpopupcode%> can be used in item templates (and in items themselves) to insert a link to where the item can be edited/deleted. (default setting uses bookmarklet to do this). The edit links only get shown when the user is allowed to edit a certain item (blog admin or item author).
  - FIXED: bookmarklet now works correctly when magic_quotes_gpc and register_globals are turned off
  - ADDED: PHP and MySQL versions are listed during the installation proces, with warnings when those version numbers are lower than what Nucleus requires
  - CHANGED: item parsing method changed, so it's more easily extensible. plugin, parsedinclude, include and phpinclude are now also allowed in some templates. Inside items, there are also 3 allowed variables: 'image', 'media' and 'popup'
  - FIXED: image popups didn't work with register_globals disabled
  - CHANGED: renamed method: getBlogidFromName -> getBlogIDFromName (consistency)
  - ADDED: method selectCategory($name)
  - FIXED: Nucleus now handles data correctly when magic_quotes_gpc is disabled (solves some problems with template editing)
  - CHANGED: categories in selection box are now sorted by name (tip from katatonik)
  - FIXED: Not all tables got exported on backup :( (thanks Xiffy!)
  - FIXED: add item form didn't handle keyboard shortcuts correctly (thanks Hop!)
  - CHANGED: 'remember me' checkbox is now checked when the information was remembered from before (this way, the cookie gets set again and does not expire)
  - FIXED: after a category got selected through skinvar parameters, skinvars applying to all categories also got applied only to the last category that was selected (thanks Xiffy!)
  - ADDED: table nucleus_comment got an extra cblog column (redundant) to allow to find the blog that goes with a comment more easily.
  - FIXED: email address checking routine (false email addresses like foo@@bar.com were allowed)
  - CHANGED: New installations now get a robots.txt file (disallows karma voting/commenting/... by bots)
  - CHANGED: JavaScript preview now shows image outlines and popup image links
  - CHANGED: searchform now available on ALL skintypes
  - FIXED: headers in globalfunctions/SKIN.php now sent _only_ when no other headers have been sent before. Should make including easier.
  - CHANGED: RSS-auto-discovery tag in default skin
  - CHANGED: formfields got labels (accessibility issue). Also access keys have been defined: L for login, 4 for Search (on windows, actions keys are used together with the ALT key)
  - ADDED: left and right box buttons on JS toolbar
  - FIXED: truncated entry when login is requested after adding (data didn't get passed on correctly)
  - ADDED: <%authorlink%> to template vars for item templates (this one can take catid into account)
  - ADDED: $CONF['Self'] => $CONF['ItemURL'], $CONF['IndexURL'], ... to optionally allow people to use different files for items/archives/...
  - CHANGED: Now using mysql_fetch_assoc instead of mysql_fetch_array (efficiency)
  - CHANGED: The <%searchresults%> and <%othersearchresults%> skintags got an extra parameter to limit the number of results (defaults to 50)
  - FIXED: doError did not take into account chosen skin
  - FIXED: Commentform not shown anymore for closed items (a message is shown instead)
  - CHANGED: Removed all unneccessary javascript: links (deprecated)
  - CHANGED: Media: Procentual width and height values are now allowed in image and inline constructs (e.g. <%image(bla.gif|50%|50%|lala)%>)
  - FIXED: Blogger API: getPost wasn't returning category name
  - FIXED: Blogger API: getRecentPosts wasn't converting linebreaks
  - FIXED: surpressed warning on mysql_close
  - FIXED: install-script now also accepts email addresses that contain uppercase characters
  - FIXED: imported items did not show up in the weblog
  - FIXED: blogger api <title> thingie didn't work
  - CHANGED: Made all uploaded files be chmodded to 644
  - FIXED: template cloning didn't clone all parts
  - FIXED: After new user registration, there was a redirect to the members url (use 'desturl' now to indicate destination url)
  - ...and a lot of small changes
- Nucleus v1.1 (April 30, 2002)
  - Started assuming that at least PHP 4.0.5 is available. (for older PHP versions, some small code-changes should do the trick)
  - Added bookmarklets for Mac/IE5 users and Mozilla. Also, made the title of the page also show up in the title field of the new item. Makes more sense. (thanks to Ricardo Lamego)
  - Made the predefined PHP variables available in scripts called through <%phpinclude(..)%> (thanks to Polskaya for noticing the problem)
  - Fixed: <%additemform%> and <%nucleusbutton%> didn't work when admin area was not in a dir named 'nucleus'
  - Added: <%sitevar(adminurl)%> and shortcut <%adminurl%> to include the URL of the admin area
  - Changed all references to nucleus.demuynck.org into references to nucleuscms.org
  - Extra settings: cookie domain, cookie path, secure cookie (for https)
  - Instead of stripping tags in comments, < and > are now replaced by their entities (&lt; and &gt;). This way, greater than and lower than signs can be used in comments (inspiration by Steven Verbruggen)
  - Added charset to language files, so international character sets can be used when needed (forum)
  - Added an extra content-type attribute to skins, so the output type can be set correctly by Nucleus
  - Removed the 'headlines' skin and templates. Don't want new users to get too confused.
  - Notification emails now also get the senders display name
  - All errors now handled by doError method in globalfunctions.php (makes it easier when you want to use your own error handler instead of the error skin)
  - Site-members can now override the default site-language setting for the pages they visit
  - Added skinvars <%otherarchive%> and <%othersearchresults%> for use on archive/search pages.
  - Skinvar <%searchform%> now takes an optional parameter: blogname (for which you want a search form)
  - Introducing categories! (new settings; new skinvars category, categorylist and ifcat; new template vars <%category%>, <%catid%> and <%categorylink%>; new optional category params for skinvars blog, otherblog, archive, otherarchive, archivelist, otherarchivelist)
  - Fixed: error skin didn't get copied on skin cloning
  - Even more new skinvars to make skinning easier: <%todaylink%>, <%archivelink%>, <%prevlink%> and <%nextlink%> (forum)
  - Fixed: The install script was giving warnings about uninitialized variables on some PHP configurations
  - Moved version history to separate file
  - Made upgrade scripts a little more robust and more verbose
  - XML-RPC: metaWeblog API support
  - XML-RPC: <title> and <category> tags can now be used with the Blogger API (similar to b2)
  - Fixed problem with create account (forum)
  - Made it so Nucleus still works when using PHP >4.1.0 with register_globals turned off, which is the default setting for new installations (forum)
  - Media library: popup now requests login when needed
  - Media library: option to auto-prefix uploaded files with date (turned on by default)
  - Backup/Restore: backup file name now has date + nucleus.sql renamed to install.sql + extra "I'm sure"-checkbox on restore to avoid errors (forum)
  - Javascript toolbar: simpler version available that works in Mozilla
  - Fixed: Closed items don't show 'no comments' link anymore (forum)
  - Fixed: Drafts items don't result in 'January 1970' entries in archivelist
  - Fixed: Added <image> tag to xmlrss skin for new installs. It's required. (defaults to a nucleus logo, up to you to change it)
  - Fixed: Error with restore (content with semicolons in it would not get restored)
  - Added: Extra notification options
  - Archives can now also be accessed by day, and an extra daylink template var is available in date headers
  - Fixes in default skin
  - As always, lots of small fixes & code rewrites
  - Changes (additions to and deletions from) language file:
    - _SETTINGS_COOKIES_TITLE
    - _SETTINGS_COOKIEDOMAIN
    - _SETTINGS_COOKIEPATH
    - _SETTINGS_COOKIESECURE
    - _SKIN_UPDATED
    - _TEMPLATE_UPDATED
    - _CHARSET
    - _MEMBERS_DEFLANG
    - _MEMBERS_USESITELANG
    - _ADD_CATEGORY
    - _ADD_DRAFTNFUTURE
    - _ERROR_NOSUCHLANGUAGE
    - _ERROR_NOSUCHCATEGORY
    - _ERROR_DELETEDEFCATEGORY
    - _ERROR_DELETELASTCATEGORY
    - _ERROR_BADCATEGORYNAME
    - _ERROR_DUPCATEGORYNAME
    - _CONFIRMTXT_CATEGORY
    - _DELETED_CATEGORY
    - _LISTS_TYPE
    - _SKIN_TYPE
    - _YOURSITE
    - _LIST_COMMENT_HOST
    - _SETTINGS_MEDIA
    - _SETTINGS_MEDIAPREFIX
    - _SETTINGS_MEMBERS
    - _LOGIN_FORGOT
    - _TEMPLATE_CATEGORYLIST
    - _TEMPLATE_CATHEADER
    - _TEMPLATE_CATITEM
    - _TEMPLATE_CATFOOTER
    - _EBLOG_DEFCAT
    - _EBLOG_CAT_TITLE
    - _EBLOG_CAT_NAME
    - _EBLOG_CAT_DESC
    - _EBLOG_CAT_CREATE
    - _EBLOG_CAT_UPDATE
    - _EBLOG_CAT_UPDATE_BTN
    - _EBLOG_NOTIFY_ON
    - _EBLOG_NOTIFY_COMMENT
    - _EBLOG_NOTIFY_KARMA
    - _EBLOG_NOTIFY_ITEM
- Nucleus v1.0 (March 6, 2002)
  - Fixed: width & height of <%image()%> construct
  - Changed: windows in popup windows don't have a white border anymore (see forum)
  - Fixed: bug with single quotes in image/popup constructs (see message)
  - Fixed: fatal error in 'send password' method (thanks to HANK!)
  - Fixed: removed some illegal characters from code documentation since they caused parse errors on some systems (thanks to Martin Belle-Isle and Rodrigo Moraes; see forum for extra details)
  - Refined: added a note about spaces to the install-script (see forum)
  - Added: donate-link on admin page (hey! it's free, I have the right to bug you with this sort of things ;-)
  - Changed: it's not possible anymore to create a draft future item. That didn't make sense. You can now choose whether you want to publish a draft item either immediately or in the future when editing the item
  - Changed: made it so that the 'disable comments' choice is not offered anymore on add/edit item form when commenting is disabled in the blogsettings
  - Fixed: where possible, redirection after commenting is now done to the correct file (instead of index.php)
  - Fixed: bug where only superadmins could change usernames/passwords, even if the corresponding option in the settings was set (thx slekke)
  - Added: allowed variables for a skinpart now shown when editing skin
  - Wrote new re-usable parser that does skin parsing in a way that is more flexible and less prone to errors.
  - Changed: passwords now stored in encrypted form
  - Optimizing: optimized some queries
  - Added: <%otherarchivelist(blogname,templatename)%> in skins
  - Added: Blogger Convert
  - Added: "shared computer" checkbox on login. Checking this box will make your cookie expire at the end of the session (instead of taking the global site setting) (see forum)
  - Added: "remember me" checkbox on comment forms for non-members
  - Most language related things are now moved to language files. Now you can roll your own :)
  - Added: optional parameters rows/cols in membermailform skinvar
  - Added: skinvars: <%phpinclude(file)%> and <%parsedinclude(file)%>. <%plugin%> is now deprecated (in favor of phpinclude). The plugins directory should also not be used anymore (it'll get another function in a later version)
  - Added: skinvar <%self%> which includes the filename of the currently executing script (index.php or whatever is sen in $CONF['Self'])
  - Automatich hyperlink detection in comments now also recognizes comma's
  - Added: selectSkin('name') and selectBlog('name') functions available for use in index.php
  - Added: Small restore-guide for the worst case scenario
  - Added: A toolbar with markup buttons on add/edit item, plus option to disable it in the settings. When Mozilla is used, Nucleus tries to disable it automatically (since it doesn't work there anyway)
  - Fixed: media were not expanded in extended text (thx raoul)
  - Changed javascript code of popup help so it works better in Mozilla (thanks to Paul Sowden)
  - UI improvements
  - New default skin (the old one was just plain ugly :-)
  - Small bug-fixes
- Nucleus v0.96 (December 13, 2001)
  - Added: add-item-preview now also in admin area
  - Added: action log
  - Added: media library and file-upload
  - Added: karma votes
  - Added: Option to disable loginname/password changing by members
  - Added: simple popup windows for image viewing
  - Fixed: E-mail address validation check does not longer require addresses to be all lowercase
  - Fixed: magic_quotes are now explicitly disabled, solving escaping problems (thanks to Dennis Slagers)
  - Fixed: error handling when pinging weblogs.com
  - Added: now also storing IP with comments (next to hostname)
  - Added: IP banlist (to prevent nasty people from commenting/voting)
  - Changed: Notification mails now include the item's title
  - Changed: Weblogs can only be deleted by super-admins
  - Changed: XML-RPC for PHP v1.02
  - Added: Small guide to changing/setting filepermission in docs
  - Changed: Upgrade and conversion scripts now get packed separately
  - Fixed: For error skins, the default skin is used now instead of 'default' (thanks to Slekke)
  - Fixed: The code to insert the Nucleus button was not XHTML (strict) compliant, oh my!
  - GM Conversion: The conversion of {{popup}} now works correctly (and copies image files to the media dir)
  - Fixed: a minor bug in XML-RPC call blogger.getUsersBlogs
  - Fixed: a major bug in XML-RPC call blogger.getRecentPosts
  - Fixed: problem concerning template editing and the XML-RPC call blogger.setTemplate
- Nucleus v0.95 (October 10, 2001)
  - Added: per-blog setting to enable/disable line break conversion
  - Added: per-blog setting to send a ping to Userland (weblogs.com) when you update your blog. This way, you'll be able to end up in the weblogs.com update-list
  - Switched to v1.01 of the XML-RPC for PHP libs (was v1.0)
  - Upgrade scripts are available (for upgrade from versions < 0.95 to v0.95)
  - Added: <%previtem%> and <%nextitem%> can be used in item-skins
  - Some changes in the default database dump
- Nucleus v0.94 (September 27, 2001)
  - Changed: 'Add Item' in admin-area now redirects to blog url (if available)
  - Changed: headlines.php and xml-rss.php adapted to behave better in disabled-site situations
  - Changed: <%userlink%> got smarter in recognizing e-mail addresses
  - Added: tabindices in forms to make traversal with the TAB-button more natural
  - Fixed: bookmarklet login did not pass data correctly
  - Added: JavaScript to open links in new window (javascrip/opennew.js)
  - Added: <%year%> and <%month%> in templates for archivelist-items
  - CSS lightly changed because IE6 is a little bit more picky (which is actually a good thing)
  - Fixed: popup code (JavaScript) for help-windows (didn't work ok in IE6)
  - Added: Description or summary of what you are going to delete on the confirmation screens
  - Added: Workaround (for advanced users) to get your archives into search engines (on tips & suggestions page)
  - Fixed: A bug in the XML-RPC server
- Nucleus v0.93 (September 19, 2001)
  - Added: friendly error message on error with nucleusdir definition in config.php
  - Changed: call_user_func instead of eval
  - Added: forms included by skin variables now have class="formfield" and class="formbutton" arguments, to allow more control on the layout
  - Created a 'Tips & Suggestions' page next to this manual
  - XML-RPC API: added nucleus.addDatedItem method
  - XML-RPC API: added nucleus.editItem method
  - XML-RPC API: added nucleus.getRecentItems method
  - XML-RPC API: added nucleus.getItem method
  - Added documentation for XML-RPC nucleus.* methods
  - Fix: Search results didn't show the amount of comments. Now they do.
- Nucleus v0.92 (September 18, 2001)
  - GM conversion: {{linkmo and {{emailmo conversion now also works with PHP versions < 4.0.4
  - GM conversion: Fixed occasional JavaScript errors with {{linkmo and {{emailmo
  - GM conversion: Fixed [read more] bug
  - GM conversion: Extra intelligence in choosing URL or e-mail to save as userid for comments
  - Added: ?archivelist can now be used without arguments to show the list of archives for the default weblog
  - Fixed: Editing comments now does not allow the use of HTML anymore. The same checks as when adding new comments are performed on update attempts.
  - Added: check to find out if update file is writable (on changing blogsettings and creating new weblog)
  - Changed: hard returns in add item now get converted to line breaks (<br />), Also, modified javascript code that handles preview to behave in the same way.
  - Changed: <%commentform%> does not show user and userid fields for logged in users. Instead, it shows the name of the user.
  - GM Conversion: {{popup command now also translated (will be converted into a link to the image, not into a popup window!)
  - Updated: default templates (?archivelist)
  - Changed: E-mail Address Validation Check
- Nucleus v0.91 (September 15, 2001)
  - Improved conversion for GreyMatter blogs. Special markup commands are now recognized. (thanks to Raoul for pointing this out)
- Nucleus v0.90 [beta 2 release] (September 14, 2001)
  - an install-script is now available, no more messing around in shells
  - created default skins/templates for a release version
  - option to store 'last visit' cookie and to use 'new' indication on items
  - ?archivelist=.. request can now also be used with a blogid instead of a blog shortname
  - forgotten password reminder
  - Bookmarklet can be used without being logged in. A login prompt is shown in that case.
  - When not being logged in to the admin area, requested actions are now completed after passing login information. Before, you would always end up at the action overview after passing login information, and your requested action would have gone lost.
  - Super-admins now have access to all blogs, even if they are not on the team
  - Logtext passed to bookmarklet now gets <br /> added before each newline
  - Added little JavaScript to prevent submitting form data twice
  - Sample plugin: google referer check
  - Conversion script to import GreyMatter blogs included
  - Removed 'assign comment to member' feature
  - Added toolbar to popup help windows (because of the back/forward buttons)
  - Added <%blogurl%> variable for item templates
  - bug-fixes
  - small esthetic changes
  - ...
- Nucleus v0.80 [beta 1 release] (September 2, 2001)
  - XML-RPC Interface implementing the blogger methods
  - fixes and code-reorganisation
  - popup-help on item pages
  - bookmarklets/right click blogging
  - the start of something that looks like documentation
- Nucleus v0.70 [not released] (August 20, 2001)
  - mySQL instead of XML
  - extensive admin area
  - 'member' concept, including blog teams/admins/...
  - rewrote most of the code
  - skin format slightly changed
  - almost ready for public release :)
  - adding items with instant preview (when viewing the weblog)
  - LOCALE used for time/date notations.
- Nucleus v0.60 and earlier (since February 2001)
  no history (XML versions with limited functions)