Seagull 0.4.7 and 0.5.3 Released

November 12, 2005 12:08, contributed by: demian

We're following the usual even-stable/odd-development release cycle, so here are the latest 0.4.7 and 0.5.3 releases respectively. The 0.5.x stream is where all the effort is being focused, new features include:

  • a rewritten task-based installer, easily extensible (thanks to Helgi on #pear for some quickform validation hacks)
  • cleaner URLs thanks to improvements by Julien Casanova. Work is in progress on an UrlAlias strategy, the Url object takes an array of strategies for easily extensible url handling
  • improved security for reinstalling live sites
  • blocks, when enabled, can now be filtered by user roles (Daniel Korsak)
  • a php4/5 compatible delegator class was added for simple object aggregation

This release is currently only implemented for MySQL so please wait until the DB maintainers catch up if you're using another database. And PHP < 4.4.x, that will change shortly as new ZDE is finally out. And please be patient with the rough look & feel, html whizzes where are you?

The stable 0.4.7 release is just PEAR updates in response to recent security issues and a fix for the annoying Thunderbird RSS reader bug that duplicates any story that has an & in the permalink. Thanks to this fix I would like to invite folks interested in keeping up with the Seagull project to subscribe to our RSS feed, so I don't have to burden Planet-php with project posts :-).


[Continue reading "Seagull 0.4.7 and 0.5.3 Released"]

Seagull Reviewed in PHP | Architect

October 26, 2005 09:01, contributed by: demian

Ok, I think we've got them all covered now ;-)  Be sure to check out the latest Seagull article, this time in PHP|Architect.  I guess we can't get much more PHP press than that, will be interesting to see if all these articles increase the downloads, stay posted.  Here's the resume from PHP|Architect:

Flocking to Seagull

Most developers aspire to create sites quickly, by concentrating on application-specific code and leaving the repetitive tasks to a code library or framework. In this piece (the first of a two-part series), authors Werner M. Krauss and William Zeller give an introduction Seagull, with a step-by-step guide for setting up an example website. Two to three years of PHP experience and familiarity with Object Oriented programming is recommended.

"Two to three years"?  That's going to rule out a lot of PHPers, I think I recommended one or two, however recently have seen cases where chaps have <1 year  of programming experience of any sort and still manage very well.


[Continue reading "Seagull Reviewed in PHP | Architect"]

We've Moved to Trac

October 25, 2005 15:07, contributed by: demian

All project management and source code tracking is now handled by Trac, so please use this site for requesting features, reporting bugs and tracking development progress. Editing content requires a login which you can get by registering with the Seagull site. Users who registered before 24/10/05 please login and update your password, this will propagate your details to the Trac install.

The great news is if Sourceforge was starting to drive you crazy, and you noticed as did I that every day it was getting progressively slower - well worry no more!  All 'trackers' have been moved faithfully to Trac thanks to the diligent efforts of Riccardo, AJ and myself.  From now on we will only use SF for file releases.


[Continue reading "We've Moved to Trac"]

Seagull IRC Logs Available

October 25, 2005 14:23, contributed by: demian

Thanks to AJ who sorted out Gully the bot to log #seagull chats. You can view the transcripts here. For details on how to use IRC see here.


[Continue reading "Seagull IRC Logs Available"]

Seagull Reviewed in Direction | PHP

October 24, 2005 16:53, contributed by: demian

Thanks to Damien Seguy who publishes Direction | PHP and William Zeller and Werner Krauss who wrote the article - download a copy now [French].


[Continue reading "Seagull Reviewed in Direction | PHP"]

Seagull 0.5.2 Released

October 20, 2005 12:54, contributed by: demian

There were some rather serious bugs in the 0.5.1 installer that made a successful installation impossible unless you used the default values, ie: username:root, password:, database:seagull

This problem is resolved with a few small changes in 0.5.2, released today.

You can also check out our new Trac installation that fully integrated with with our updated svn repo, thanks to Mike Wattier for making this possible.


[Continue reading "Seagull 0.5.2 Released"]

Seagull 0.5.1 Released

October 16, 2005 09:44, contributed by: demian

Like many projects, we're running two streams of releases, stable and devel. The development release includes the test runner and all unit and web tests, as well as developer docs which include Poseidon UML diagrams, etc. It's recommended for folks who are interested in how the code works, though for browser based users there is little visible difference to the last stable release - download here.

The release focuses on improving code internals and has been about 1 month's worth of refactoring geared towards improving the loose coupling and high cohesion of framework components.

Improvements include:

  • a new SGL_Config class for easy loading of config files, file type discovery and data format handled silently; ini, php array and xml types currently implemented
  • an improved SGL_Request object that internally resolves HTTP and CLI request types
  • a new SGL_URL object derived from PEAR's Net_Url that abstracts and organises various url formats, classic querystring and Seagull's Search Engine Friendly format are currently supported
  • a new flexible SGL_View object that integrates with the template engine of your choice and supports customised workflow for HTML and XML output (read: easy support for PDA output). Flexy is still the default but hooks now exist for Smarty or any other OO engine.
  • customisable pre and post process pipelines discussed earlier here.
  • use of global vars almost completely eliminated


[Continue reading "Seagull 0.5.1 Released"]

Modularising Workflow with an Intercepting Filter

October 02, 2005 13:49, contributed by: demian

While we're on the subject of useful refactorings, I'd like to describe how using an Intercepting Filter helped round up and modularise software setup and initialisation tasks. Before the code could get down to business with the framework's main task, the SGL_MainProcess, (eg booking a hotel room or editing an FAQ, whatever), a certain amount of setup was necessary.

In the previous version, a number of initialisation tasks were assigned to a single init() method in the AppController, then executed procedurally. The disadvantage of this approach was that the tasks were not testable, they were difficult to reorder, and it was prohibitive to insert custom routines into the pipeline.

Enter the Intercepting Filter, which is basically a chain of decorators. The idea is that you have your main process, then you decorate it with n filters or tasks required to get your system correctly initialised beforehand. The code makes the example clearer:

class SGL_AppController
function run()
$input = &SGL_RequestRegistry::singleton();
$input->setRequest($req = SGL_Request::singleton());

$process = new SGL_Init(
new SGL_DiscoverClientOs(
new SGL_ManagerResolver(
new SGL_InitSession(
new SGL_InitLangSupport(
new SGL_InitPerms(
new SGL_AuthenticateRequest(
new SGL_BuildHeaders(
new SGL_SetLocale(
new SGL_DetectDebug(
new SGL_DetectBlackListing(
new SGL_MainProcess()


From Matt Zandstra's book:

The model is very extensible. We can add new decorators and components very easily. With lots of decorators we can build very flexible structures at runtime. The component class [in our case SGL_MainProcess] can be significantly modified in very many ways without the need to build the totality of the modifications into the class hierarchy.

Here's the UML:



[Continue reading "Modularising Workflow with an Intercepting Filter"]

Implementing an Output Renderer Strategy

October 02, 2005 13:47, contributed by: demian

An interesting design problem became apparent when a number of folks from the seagull ML recently complained about the lack of support for web clients other than standard browsers. Because the code enforces reasonable segregation between the domain modelling and the html views, I always presumed it would be trivial to implement, ie, an xml renderer instead of the current Flexy to handle WML output. Two problems needed to be solved:

  1. the Flexy renderer was hard-coded in the final stage of a validate/process/display workflow
  2. worse, a number of post-processing tasks, mainly assembling of blocks and building of main navigation were also hard-coded

In short, the process was quite tied to producing HTML-only output, clearly n blocks and involved navigation were unsuitable for PDA output.

I identified two main refactorings necessary to decouple the view production from the output type and specific renderer used, thereby opening the door to running customised post-process tasks based on the current rendering strategy.

To allow an arbitrary renderer to be specified at runtime I chose to compose the View object with a OutputRendererStrategy. This means if you're happy with Flexy you can use the standard renderer supplied with the package, and if you can't bear the thought of working without Smarty, it'd be a piece of cake to write a SmartyOutputRenderStrategy following the Flexy example. The code would look something like this:

    //  build view
$view = new SGL_HtmlView($output, new SGL_HtmlFlexyRendererStrategy());
echo $view->render();

where the $output object is just a php data structure free of any presentation information. The next problem was more interesting, how does producing output for portable devices change the appliation requirements. The basic data structure sent to the view is similar, but the following main differences are evident:


[Continue reading "Implementing an Output Renderer Strategy"]

Seagull SF Project Site Rearranged

September 20, 2005 16:34, contributed by: demian

The Seagull Sourceforge project site has been rearranged to simplify releases.  From now on there will be two tracks of releases, simply:

  • stable
  • development

and for good measure an 'old releases' section where all the previous releases have been filed.  Stable will include a PEAR-installable version of the code, whereas development will just be the source and API docs.  The PEAR version of 0.4.6 was added today as was the 0.5.0 devel release.

Because the sections have changed anyone previously subscribing to release alerts will now need to re-subscribe, or better yet, when the current RSS implementation is fixed, just subscribe to the Seagull feed.


[Continue reading "Seagull SF Project Site Rearranged"]

Seagull Reviewed in PHP Solutions Magazine

September 16, 2005 14:20, contributed by: demian

The Seagull project has been fortunate enough to have a detailed tutorial on its usage published in PHP Solutions magazine in 5 languages.

Congratulations to Werner M. Krauss for putting the article together and liaising with the publisher, and many thanks to PHP Solutions for allowing us to distribute the free PDF versions of the article from this site. PHP Solutions magazine is available all over Europe (except the UK) from your favourite magazine store or from their website. One can also buy the magazine, the current issue is titled Framework vs. CMS and also includes great articles about other frameworks like PRADO and CMSs like eZ publish and includes some free books on their CD, eg, PHP5 Power Programming.

The Seagull article, which covers all the basics of the framework, is available in English, French, German, Italian and Polish.


[Continue reading "Seagull Reviewed in PHP Solutions Magazine"]

Seagull 0.4.6 Released

September 15, 2005 14:54, contributed by: demian

156 commits and almost a month later, version 0.4.6 of Seagull is now available for download. It's been a productive month, partly because I quit my job to work on this project fulltime, but also because an even greater volume of patches and new features is being sent in than usual. That could be partly due to the recently improved search ranking.

This release includes a generous helping of bugfixes :

  • Fixed missing bug icon in msie
  • Disabled FK constraints from MySQL as there appears to be a bug in the implementation. Same SQL works fine in PgSQL ;-)
  • Fixed a bug where non-indexed arrays could be overwritten in Front Controller (Lorenzo Alberton)
  • Some SMTP servers had problems with Mail_smtp's localhost default value, this is now catered for (Chris McKay)
  • Server vars now interpreted correctly on IIS 6.0, note: frontScriptName in config file MUST end with "?" (Miha Vrhovnik)
  • Fixed bug where FCK editor would not display correctly in msie
  • Some magic_quotes_gpc scenarios weren't dealt with correctly, now fixed (Eric Persson)


[Continue reading "Seagull 0.4.6 Released"]

Framework Features

September 10, 2005 11:23, contributed by: demian
Minimal Requirements
Recently Seagull has increased its minimum requirement to PHP 4.3.0, although you're recommended to use 4.3.11 or later to take advantage of important security fixes within PHP. The framework itself does not depend on any non-standard extensions and will run on a base install of PHP.
Currently Seagull works fine with PHP 4.3.0 and above, PHP 5, MySQL 3.23+, with register_globals set to on or off, under Linux, Windows and Mac. Running the code in a shared hosting environment is no problem.


[Continue reading "Framework Features"]

Seagull Gets Top Results in Google

September 06, 2005 15:46, contributed by: demian

For the search term "php framework" - or see the screenshot here.


[Continue reading "Seagull Gets Top Results in Google"]


September 01, 2005 14:59, contributed by: demian

I'd like to thank the following people for helping bring this site together:

  • Colin Viebrock for his work on the logo
  • Ed Lea for the contact/download buttons
  • Robert Foxx for his CSS guru advice, and help getting the buttons fully MSIE/FF compatible
  • Mick Heuberger for his many CSS tips
  • stock.xchng for royalty free images
  • hemo for his photograph "├śresundsbron*", used for the homepage image


[Continue reading "Credits"]

Seagull Reviewed in PHP Magazine

September 01, 2005 11:30, contributed by: demian

One of the leading PHP publications, International PHP Magazine, has a roundup of PHP frameworks by Elizabeth Naramore in its latest issue. I'm happy to say that Seagull got a glowing review, and out of the 5 projects examined, including PRADO, Cake, Mojavi and php.MVC, Seagull got the highest rating - something like 4 3/4 stars out of 5 - way to go!

Unfortunately it appears PHP Magazine does not provide PDF downloads of individual issues like all the other mags, so you'll have to physically walk over to the newsagent if you want the full story.

Looking forward to the next Seagull release which was made fully PHP 5.1 compliant yesterday in svn, a move that unfortunately required modifying 4 or 5 PEAR libs which are not moving anytime quickly toward being 5.1 compliant themselves.


[Continue reading "Seagull Reviewed in PHP Magazine"]

Seagull Eats its own Birdfood

August 22, 2005 17:36, contributed by: demian

After many delays it has finally been possible to redo the Seagull site using Seagull, so the "eat your own *food" naysayers can find something else to complain about ;-). Things are not totally finished yet, but the idea is to move towards a more structured layout and consolidate backends (SF, wiki, homepage), and to appeal to developers and non-technical users alike.

At the same time I'd like to announce version 0.4.5 has been released and is ready for consumption. It's been just over a month since the last release and a lot has happened. As well as some important bugfixes:

  • upgraded to latest PEAR libs including the update to problematic XML_RPC package
  • the longstanding bug associated with db-based sessions has finally been fixed, thanks to Louay Gammo
  • article categorisation and workflow are a bit more intuitive

and some new improvements:

  • FCK updated to latest version


[Continue reading "Seagull Eats its own Birdfood"]


August 22, 2005 13:53, contributed by: demian
article browser
category manager

role manager

inbox read message
article list


[Continue reading "Screenshots"]


August 19, 2005 13:28, contributed by: demian

The project wiki is the best source of documentation for Seagull. There are currently 414 pages of tutorials, tips and user-contributed notes available. We are in the process of improving things and

  • moving static content from the wiki to this site
  • creating a wiki module for Seagull to better facilitate dynamic content


[Continue reading "Docs"]


August 19, 2005 12:59, contributed by: demian

Seagull was put together with the developer in mind, but to a certain extent it can also be used "out of the box" by non-technical users.

The wiki is the best source for developer information, but for starters you can take a look at


The following diagrams give an overview of Seagull design:


[Continue reading "Developers"]


August 19, 2005 12:47, contributed by: demian

There are a number of versions of Seagull available for download, pick the one that best suits your needs. Following the links will take you to a SourceForge mirrors page, simply choose the geographically nearest location to where you are to be taken to the appropriate mirror. Detailed install instructions are available at the wiki.


You'll want a release from the stable branch if you're using the framework for customer sites or are in a similar situation where reliability and stability are important.


[Continue reading "Download"]

Seagull 0.4.4 Released

July 11, 2005 17:04, contributed by: demian

This is primarily a bugfix release, some important flaws were fixed, including two updates from the PEAR community for problems discovered in the XML-RPC library - all users are recommended to upgrade.

There are no schema/SQL data modifications from the previous release, however there were some changes to the CSS so you'll want to use the latest style.php file.

Get the latest version here.


[Continue reading "Seagull 0.4.4 Released"]

Seagull 0.4.3 Released

June 28, 2005 17:06, contributed by: demian

Seagull 0.4.3, just out, is mainly a bugfix release with a few important new features:

  • I've added a bug reporter to help encourage user feedback (the insect icon can be disabled in Config)
  • improved FCK editor integration
  • more user-friendly error messages during install for db probs
  • SGL_Emailer now suports multiple backends (Ferdinand Hoffmann)
  • session security improved (tip from Ilia Alshanetsky)
  • DB_DataObject schema prefix bug fixed for postgres users (Pierpaolo Toniolo)
  • DB schema/data synchoronised for MySQL, Postgres and Oracle
  • CSS/XHTML continues to be improved (Riccardo Magliocchetti)


[Continue reading "Seagull 0.4.3 Released"]

Seagull 0.4.1 Released

June 01, 2005 17:14, contributed by: demian

After more than a month in development, a new Seagull release is out. It is recommended you upgrade, a lot of annoying bugs have been fixed, not to mention a few new features added:

  • FCK editor now replaces the discontinued htmlArea: it's better, faster and smaller, with good image upload functionality
  • blocks are working better
  • navigation is easier to create
  • the instant messaging module had an overhaul (Louay Gammo)
  • the newsletter module is greatly improved (Rares Benea, AJ Tarachanowicz)
  • an SGL_Locale object has been added, this integrates the extensive functionality provided by PEAR's I18Nv2 (Jacob Singh)
  • functionality to import users from CSV file added
  • lots of html/css cleanup (Riccardo Magliocchetti)


[Continue reading "Seagull 0.4.1 Released"]

Seagull Docs Available in Chinese

May 25, 2005 17:14, contributed by: demian

Thanks to Henry Juan and his team, the Seagull docs are now available in Chinese!


[Continue reading "Seagull Docs Available in Chinese"]

Seagull 0.4.0 Released

April 19, 2005 17:16, contributed by: demian

Finally a stable 0.4 release! Highlights in this iteration:

  • the last of the FC bugs squashed
  • config ini files now unreadable even if your var directory is web-viewable (Georg Gell)
  • Seagull now works for CGI installations of PHP
  • configurable auto-login (Rares Benea)
  • module generator improvements
  • German and French translations completely up to date

This basically marks the end of all the front controller work which has been extensive, and now makes way for some of the other higher priority stuff: separating out a core Seagull, making modules installable the PEAR package mgr's 1.4 release, improving i18n support and hopefully moving translations to the DB to allow for truly multilingual support.


[Continue reading "Seagull 0.4.0 Released"]

Seagull 0.4.0dev2 Released

March 19, 2005 17:17, contributed by: demian

At last there is a new release of the Seagull framework project out. Despite the fact the previous release was 2 months ago, a mountain of work has gone into the codebase and there are many new features to try out.

Be forewarned, this release is not for your live servers, hence the 'dev' suffix, however the sooner people can test it out, report bugs and hopefully send in patches - the better :-) There is a list of known issues, some of which have been fixed in CVS, the idea is that a subsequent release will follow shortly with the major bugs fixed.

The main new feature of this release is the implementation of a front controller (many thanks to AJ Tarachanowicz who helped extensively here) which permits the use of search engine friendly urls. As a results, all the previous 'start files' in the webroot have been removed. As well, some considerable refactoring of the core classes has been undertaken, judge for yourself, or browse the files in our new Chora cvs viewer.

Other features of note:

  • categories converted to nested set (AJ Tarachanowicz, Radek Maciaszek)
  • install wizard improved (Andy Crain)
  • significant CSS refinement (Riccardo Magliocchetti)


[Continue reading "Seagull 0.4.0dev2 Released"]

Filtering and Modifying Directory Listings with File::Util

February 11, 2005 17:17, contributed by: demian

If you need to run directory listings through various filters and transforms, File_Util::listDir is your friend, especially with the recently added callback final arg.

Check out recent Seagull code updates to see the flexibility of the current approach, we need to consolidate all Seagull directory methods in order for next step of front controller to be implemented.

getAllNavDrivers() is the first converted method, it makes use of callbacks, lambda fns and pass-by-ref to update filtered dir listings.


[Continue reading "Filtering and Modifying Directory Listings with File::Util"]

HTML_Template_Flexy plugins tutorial

January 23, 2005 17:25, contributed by: demian

Thanks to Rares for this new Flexy plugins tutorial, check it out here and take advantage of this powerful aspect of the Flexy templating system.


[Continue reading "HTML_Template_Flexy plugins tutorial"]


January 03, 2004 18:21, contributed by: demian

Seagull is a mature OOP framework for building web, command line and GUI applications. Licensed under BSD, the project allows PHP developers to easily integrate and manage code resources, and build complex applications quickly.


[Continue reading "Overview"]

At a Glance


  • Get programming homework help from professionals at anytime!
  • - homework help with biology, physics, math assignments.
  • Having problems with your assignment? Our homework help site can give you a hand with math, physics, programming and much more!
  • Free Usenet Trial
  • ecommerce website new zealand


Username Password

Not Registered?
Forgot Your Password

*denotes required field


Seagull PHP Framework

Sponsored by

The Seagull project is sponsored by Seagull Systems, see the range of products offered.