0.8 Release Announcement
- CORE FEATURES
- NEW FEATURES
- New/changed internal plugins
- External/Additional plugins
- FIXED BUGS
- NEW LANGUAGES
- TEMPLATES / CSS
- THE FUTURE
- HOW TO UPDATE
- Introduce Smarty templating
- Restructure the filesystem
- Introduce new Rewrite Rules
- Remove obsolete Configuration variables
- Install new Plugin 'Browser Compatibility'
- Fix Database Indexes
- POSSIBLE PROBLEMS
The Serendipity team is happy to announce the immediate availability of the final release of Serendipity 0.8.
Serendipity is a PHP-powered weblog application which gives the user an easy way to maintain an online diary, weblog or personal homepage.
The development of Serendipity is intended to offer a flexible, expandible and easy-to-use framework. We use a sophisticated Plugin architecture, affecting both the appearance of your blog and its core features. It ships with a variety of useful plugins to enhance your blog, and several more are available in an additional CVS repository. Serendipity's Frontend is based on Smarty Templating and can thus be easily modified and enhanced.
Wordpress/Textpattern users might favor Serendipity because of its functional and flexible expandability without the hassle of editing the core application files. Moveable-Type users will appreciate the BSD-style licensing and the speed and functionality of dynamically generated pages.
Serendipity offers all of the following features and many more:
- Image and File-Asset-manager
- multiple users
- threaded comments, comment+trackback moderation
- nested categories, post to multiple categories
- XML-RPC interface to Blogger and MT-API
- powerful Plugin API to both affect custom sidebar items as well as 'event hooks' to trigger any kind of custom functionality nearly anywhere inside Serendipity
- dynamic page generation with 'pretty URLs'
- track- and pingback autodiscovery,
- multiple database support (MySQL, MySQLi, PostgreSQL, SQLite)
- can be used as shared library to host multiple blogs
- effective anti-spam-measurements (automoderation, captchas, ...)
- Skinable via structured CSS-elements
- Standards compliant: XHTML, CSS2, RSS 0.93/1.0/2.0, Atom 0.3, Conditional get support for XML-Feeds
- Flexible input: Choose between entering HTML, Textile, Wiki and/or BBCode markup, even for user-made comments
- Flexible output using Smarty templating
- Can import RSS-feeds to ease up migration
- Easy upgrading and updating without having to mangle with SQL-files
- Internationalization (German, English, Danish, Czech, partially: French, Dutch, Portuguese ...) - easy language addition/translation
- Open Source license: BSD-style
To wrap it up: Serendipity can do anything you want to get done with a blog, as easy as that. If you want more information, visit our Wiki on http://www.s9y.org/. 
The latest 0.8 release vastly improves the featurebase of Serendipity.
A complete list of changes for this release can be found in our NEWS file, located in our CVS Repository. Here are the most important changes since 0.7:
- Support for Smarty Templating
- Improved installer with new "Simple Installation" mode (reduced configuration options)
- Redesigned Administration Panel, Authoring Suite and Administration suite have been merged into one, new Item "Personal Configuration" has been created
- Amount of articles per page can now be changed in Configuration
- Syndication plugin offers to make RSS full content feeds (including extended entry)
- Added native import tool for Nucleus, WordPress, b2evo, bblog, bmachine, pmachine, geeklog, sunlog, Textpattern, phpBB and MoveableType installations, preserving entries, categories, users and comments. Improved import tool for handling charsets and HTML entities.
- New "View all entries by specific author" display
- New "View by Week" archives display
- Improved "Pretty URLs"
- Media Manager allows to upload files and insert the immediately in entry creation, support for hotlinking and searching for filenames. Also the media manager remembers the last selected options via Cookie.
- Support for Server-timezone offset
- Improved directory/file structure
- Serendipity can now be used with JustBlogIt Extension
- Allow trackbacking https files (if PHP's https support is enabled)
- Use iframe technique to save an entry. This will make sending trackbacks visually more appealing and faster create a visual feedback for the author. This may introduce problems with old generation browsers, in which case this technique can be disabled. If you face any issues, please report them to the Serendipity team.
- Added option to send gzip'ed pages
- Allow persistent db connections
- Results of a search are now paginated
- Support for realnames of authors instead of login-name only
- Allow optional visitor-browser content-language negotiation
- RSS feeds can now hide all email adresse by configuration
- Improved performance of Plugin API
- Added install() and uninstall() methods
- Event plugins which previously used the 'entry_display' hook to set an entries page to not render now need to use the new hook 'entries_header' for the output, and the 'clean_page' hook to set the entries page to not render (via $eventData['clean_page'] = true). Existing plugins have been adapted to this already.
- Allow $plugin->get_config() to return the default value specified in introspect_config_item(), if no value is found.
New/changed internal plugins
- serendipity_event_browsercompatibility: Allow to use transparent PNGs for Internet Explorer in both backend and frontend
- serendipity_event_entryproperties: Attach custom properties to entry: Sticky Entries, restricted access permissions, disabling nl2br plugin. It also allows to create a cache for a fully parsed entry, maximizing display performance
- serendipity_event_spartacus: A new EXPERIMENTAL plugin has been added to the distrubtion, which is a start for allowing easy downloading of external plugins from our CVS repository. It currently does not do very much apart from download plugins - it cannot yet update already installed plugins. The future for Spartacus is currently somewhat open, so "mileage may vary" for this plugin.
- serendipity_event_spamblock: Added SURBL functionality to check comments if they refer to spam links / IPs. Added option to hide email adresses on the frontend. Spamblock can now log to a database table. Fixed bug with wordfiltering.
- 'Track Exits' (serendipity_event_trackexits) plugin is no longer installed by default
Many external/additional plugins have been developed. They are constantly maintained here: CVS repository .
This is a list of added plugins since the 0.7 Serendipity release, which you can download and use with Serendipity 0.8:
- serendipity_event_amazonchooser: Download media information from Amazon to use in your entries
- serendipity_event_authorpic: Display the picture of each author inside the entry
- serendipity_event_aggregator: Allows to use Serendipity as a "Planet-like" Aggregating facility
- serendipity_event_babelfish: Translate entries
- serendipity_event_contactform: Embed a contactform as static page to receive a comment via E-Mail. Interfaces with the spamblock plugin.
- serendipity_event_custom_permalinks: Define custom Permalinks for each entry
- serendipity_event_deletelink: Offer a link to delete entries on the frontend entry display
- serendipity_event_emoticonchooser: Display available emoticons for click-and-use inside your entries
- serendipity_event_entrycheck: Perform checks on your entries before publishing (check for empty title, empty categories, ...)
- serendipity_event_entrylastmodified: Display the entries last modification date in the article listing
- serendipity_event_entrypaging: Display a "next entry" / "previous entry" link for frontend entry overview
- serendipity_event_entrysplit: Allows to split up long entries into several pages
- serendipity_event_externalauth: Experimental plugin for external authentication via LDAP
- serendipity_event_externalphp: Embed foreign PHP applications inside Serendipity pages
- serendipity_event_filter_entries: Allows visitors to change sort/filtering options of the entries to display (reverse order, entries per page, categories, authors, ...)
- serendipity_event_freetag: Apply freeform tags to your entries. Alternative to use instead of categories, see del.icio.us tagging system for example
- serendipity_event_geourl: Embed the geourl.org service metadata
- serendipity_event_geshi: GeSHI markup plugin
- serendipity_event_gravatar: Display gravatars for commenting users
- serendipity_event_guestbook: Guestbook application
- serendipity_event_layout_linkmarkup: Offer CSS markup for links by displaying identifying images
- serendipity_event_layout_quotemarkup: Offer CSS markup for quotes by displaying a surrounding image
- serendipity_event_linklist: A freeform linklist / link manager
- serendipity_event_linktoolbar: Support the link rel="up/start/next/prev" meta HTML attributes to ease up Blog frontend navigation
- serendipity_event_ljupdate: Update LiveJournal Blogs with Serendipity entries
- serendipity_event_loginform + serendipity_plugin_loginform: Offer a sidebar plugin to login with credentials to your blog
- serendipity_event_markdown: Allow markdown markup for entries
- serendipity_event_mimetex: Use the mimetex program to show TeX markup
- serendipity_event_motm: Music of the Moment plugin
- serendipity_event_multilingual: Maintain multilingual versions of your entries
- serendipity_event_outdate_entries: Make old entries only viewable by co-authors / admins
- serendipity_event_photoblog + serendipity_plugin_photoblog + serendipity_event_thumbnails : Offer photoblog sidebars and interface to maintain it
- serendipity_event_picasa: Use the google Picasa service to display photo albums
- serendipity_event_podcast: Embed RSS enclosures for media files
- serendipity_event_popfetcher: Fetch entries via E-Mail and user interface with configurable Mail accounts
- serendipity_event_relatedlinks: Allows to attach related links to each entry
- serendipity_event_smartymarkup: Allow Smarty Template Markup inside entries
- serendipity_event_staticpage: Maintain static subpages with content displayed in Serendipity surroundings (without entries)
- serendipity_event_trackback: Allow to turn off trackbacks for entries, allows to add manual trackback URLs to entries
- serendipity_event_typesetbuttons: Display shortcut buttons to entry creation panel for certain XHTML-compliant markup entities (quotes, dashes)
- serendipity_event_usergallery: Display the media gallery inside Serendipity for visitors
- serendipity_event_yq: Yahoo! "What's related" search
- serendipity_plugin_adduser: Display a form to let users register as authors to Serendipity (like in a forum)
- serendipity_plugin_amazon: Display a sidebar with Amazon information
- serendipity_plugin_authors: Display a list of authors for the blog with a link to view articles by author
- serendipity_category_dhtml_menu: Display category list as dynamic folded menu
- serendipity_plugin_delicious: Get del.icio.us feeds and display them within sidebar
- serendipity_plugin_flickr: Embed Flickr Pictures via XMLRPC API
- serendipity_plugin_google_last_query: Shows the last query string used to get to your blog
- serendipity_plugin_hitmaps: Show where your visitors are coming from
- serendipity_plugin_popularentries: Shows a list of most popular entries
- serendipity_plugin_topreferers: Alternate top referers display
- serendipity_plugin_weather: Shows Weather information
- serendipity_plugin_wikipedia_finder: Submit selected words to Wikipedia for visitors to look up
- Fix bug with exit.php tracking (possible SQL injection)
- Fix XSS injection attacks to BBCode plugin
- serendipity_config_local.inc.php can now contain user-defined PHP code for individual purposes
- fixed flaw in the function used to validate path-names for uploading media
- Do not allow uploading .php/.shtml files to the media manager
- Chief users are no longer allowed to hide plugins installed by other users
- The RSS feed <guid> element has been marked as 'isPermalink=no' to not use that element as a link.
- Trackbacks to a link will not be sent more than once
- Entries published in the future can now only be seen by visitors if the author chose to do so (configuration directive added)
- Fixed problem in imageMagick detection
- Upgraded htmlarea WYSIWYG component to latest version, fixes copy+paste errors with Mozilla
- Added missing SQL index keys
- Fixed bugs with media library on windows filesystems
- Fixed installer bugs caused by register_globals, correctly detect most 500 Internal Server Errors when installing and emit an error when magic_quotes_runtime is set to on.
- Fixed possible SQL-injection bug in pingbacks
- Hopefully fixed the MS IE problem which spontaneously did not load CSS stylesheets
- Fixed issues with referer tracking on MySQL
- Fixed XML-RPC Posting API problems
- Traditional Chinese
- Simplified Chinese
- Korean (only partial)
- Persian (plus RTL-template)
TEMPLATES / CSS
- Smarty Templating! (See Styles Documentation 
- New CSS classes for distinction of authors within entries/comments: .serendipity_entry_(author|comment)_USERNAME, applied to each entry container, where USERNAME is replaced with the name of the author.
.serendipity_entry_author_self, applied to the entry container if the currently logged in user is the author of an entry
.serendipity_comment_author_self, applied if the commenting username matches the owner of the entry.
- New CSS "div.container_X" CSS class for sidebar plugin items, where X is substituted with the plugin classname.
- New bundled template, "Kubrick port"
In the future, Serendipity will offer a centralized repository for Plugins, Themes and other Customications (codename SPARTACUS). It will be much like PEAR and allows to easily install and upgrade plugins and themes.
Other plans include to further improve the Translation System and modularize more parts of Serendipity. As well, take a look at our Todo list  for more of our plans.
HOW TO UPDATE
The upgrade to this release is the largest upgrade task from any previous version, because of the change in Smarty Templating and in the restructurization of the filesystem architecture.
However we have tried to make this again as easily as possible, so you should not face any problems during upgrading as long as you made sure that:
- the directories templates_c, archives and uploads are writable for the webserver user (chmod 777 if you're unsure)
- the files .htaccess and serendipity_config_local.inc.php are writable for the webserver user (chmod 777...)
- if you update a shared installation, make sure that all deployed installations contain the templates_c subdirectory and all the latest, updated htmlarea and templates (at least templates/default/ must be copied!) folders.
- if you developed a custom template via layout.php, you may need to update that to reflect changed locations of serendipity_sidebar_items.php and you may want to update your templating method to the new Smarty ways.
- Also make sure that if you are using the default template, that there shall be no 'layout.php' file in there anymore! The upgrade tries to automatically remove that file, but if the installer has no write privileges to the template directory it cannot remove the file. If you do not remove the file you will get errors like this: 'Fatal error: Cannot redeclare serendipity_db_query() (previously declared in /include/db/mysql.inc.php:24) in /serendipity_db_mysql.inc.php on line 10' or similar.
- If you had external files created on your own which require any of the Serendipity core files, make sure that you still include the right files after the upgrade. Like if you previously required the file 'serendipity_plugin_api.php' you will now need to include 'include/plugin_api.inc.php'
This is how you should update from a previous release of Serendipity: Download the latest distribution, unpack it to your existing folder, open the Admin panel of your blog, say hello to our update script and let it do its work. And then you're done! To be on the safe side, we suggest to make a backup of both your files and database before.
It is very important that you ensure the following when upgrading from/to any version:
- You need to have PHP > 4.2 installed; PHP 4.1 versions had a bug in version_compare() functions so that Serendipity may not be able to detect that a new version is installed.
- The files .htaccess and serendipity_config_local.inc.php need to be writable, as well as the directories 'templates_c' and 'archives'.
- Your database user account needs to have at least privileges for: CREATE TABLE, ALTER TABLE, CREATE INDEX, DROP INDEX, INSERT, UPDATE, DELETE. Serendipity needs all those privileges to ensure propper operation.
- You have properly extracted the distribution with all subdirectories intact.
If the upgrading process fails in any way for you, please write down any error messages you see and contact us?!
The upgrade in this version will do those tasks:
Introduce Smarty templating
This will add several *.tpl files to the default template, which affects the display of HTML code on the frontend. If you previously used a bundled template, you will not see any changes. But if you used a customized layout.php in your template, you will maybe need to adjust to the new templating engine. Please read the Style Documentation  for detailed instructions. The basic idea is to just remove your layout.php file and make modifications to a copy of 'index.tpl' instead. If you previously executed special PHP code in layout.php, you may now do that in a 'config.inc.php' file.
Restructure the filesystem
We have finally tidied up the filesystem and created more suitable subdirectories. This will greatly unclutter your core Serendipity directory root. The automatic Serendipty upgrade will try to remove any old files, but for this to succeed, it will need to have write access to most files.
If the Upgrader cannot remove files, it will emit a warning message - but you can still use Serendipity. You should just note down the files Serendipity could not remove, and remove them manually via FTP. You can also leave the files there, they will not interfere with normal operations - they are just no longer needed.
For a complete list of changed/removed files, see Changed Files .
The most critical file which got removed are serendipity_sidebar_items.php and serendipity_plugin_api.php. Those files are now called include/plugin_internal.inc.php and include/plugin_api.inc.php. So if you previously had any external PHP code accessing those two includes, you need to adapt your files to the new locations!
Note for Shared Installations: The changes in filestructure affected the subdirectories 'templates' and 'htmlarea'. Make sure that each shared installation has the latest version of those directories. As advised in the Serendipity Shared Installation Documentation, it is advised to make those directories a virtual link to the shared installation so that those can be maintained within a single directory as well.
Introduce new Rewrite Rules
Quite a few rewrite rules ("pretty URLs") have been added to Serendipity 0.8. They will not interfere with previous pretty URLs, but improve existing ones. That means, Serendipity will need to regenerate the .htaccess file.
Remove obsolete Configuration variables
As the configuration/installer process has been modified, a few configuration variables no longer need to be stored inside the Database. Those variables (mostly Database-relevant: dbName, dbUser, dbPass, ...) will be removed from the database and will only remain inside the master configuration file serendipity_config_local.inc.php.
Install new Plugin 'Browser Compatibility'
Because the new Administration theme makes use of transparent PNG items, we need to use a plugin to enforce PNG compatibility with the Internet Explorer. This plugin may in the future also offer other means to maximize Browser Compatibility.
Fix Database Indexes
In previous versions, a few database indexs were not created correctly. This has been fixed in the -alpha11 upgrade stepping, so that Serendipity will create the missing indexes to speed up performance. However if those indexes already existed, it may happen that Serendipity emits a warning message. You can ignore those about duplicate indexes, though!
PostgreSQL users should take care to not use a lengthy dbPrefix for their database - the automatically created sequences only allow names of about 30 characters. Thus any prefix longer than about 10 characters can cause trouble because index names may not match.
If you want to upgrade from a different blog application like Word Press or Moveable Type, you can use the RSS import facility to preserve your entries. Look at our Wiki on http://www.s9y.org/53.html  to see instructions.
New in this version is native import for many popular blog (and forum) applications. You will see this functionality in the 'Import Entries' section of the Serendipity Administration panel.
Now what are you waiting for? Download latest release !
On behalf of the s9y-Team,
URL of this document:
Driven by coWiki 0.3.4 web collaboration tool.