Achievo 1.2.1 release and ATK news
May 30th, 2006 by Ivo
My decision to hand over project maintenance of the Achievo project has turned out to be a good one.
Since Sandy took over, we've had 3 new releases. A first release candidate for Achievo 1.2 was out when he was at the helm hardly one month, and yesterday, he released Achievo 1.2.1, which contains several important bugfixes for the 1.2 branch.
I've had several remarks from users who were 'glad the project was apparently still alive after months without a release'. I think the project would've died prematurely if Sandy hadn't taken over.
As a result of the takeover, I was able to finally take the time to do some other things I've been planning to do for a while now. I've written a Typo3 ATK bridge that makes it possible to develop Typo3 backend modules in ATK. This reduces Typo3 backend modules from hundreds of lines of code to the minimal amount of coding we're used to from using ATK. This extension is currently being tested internally and will be released with a howto soon.
Also, I'm finishing up ATK 5.6. It contains some interesting new features, among which is an atkCalculatorAttribute for arbitrary calculations on fields and an atkMlWrapper which can turn any attribute into an internationalised field (sponsored by our friends at Zicht). ATK 5.6 should be out within 2 weeks.
Finally I've been spending a lot of time on epointment.com. We're finally getting somewhere with the features we need. I will be writing a 'syncing Achievo with epointment.com' howto soon. Although at its current state, we have a lot of competition from the big guys, we're seeing quite an amount of interest from Dutch people (probably because Google Calendar only has an English interface at the moment), so we're coming along nicely. We're also talking to the guys from MarkThisDate for cooperation (open standards rule!).
The largest benefit for ATK will be that we're pushing the development of the Ajax functionality in the framework. In ATK 5.7 (which might become ATK 6) you can expect a lot of (optional, ofcourse) Ajax powered functionality such as autocompletion and Partial Page Rendering.
New ajax powered smart search functionality in ATK
April 16th, 2006 by Ivo
Together with comunication firm Effectiv we developed a marketing tool for Cirque du Soleil in ATK. For this application, we needed a better way to search through the myriad of data in their database. Peter solved this by adding a new nifty Ajax powered search functionality to ATK, that can be used to traverse all data, following relationships and exposing the entire database through a single interface.
An example of the type of searches that a user can do: 'show all employees that work in a department whose manager lives in a city that has at least 10.000 inhabitants'.
This functionality is available in the current nightly build. (This contains only the atk subdir, if you don't have an ATK app already, download the sample application first.)
Here is a screenshot:

In this screenshot, I am looking for all employees whose manager is 'ivo', and that work in a department which is currently hiring. (this is taken from lesson 3 of the demo application)
In ATK tradition, to enable the functionality you need only one line of code. Just add the following code to any node (constructor or action_admin override):
$this->setExtendedSearchAction('smartsearch');
(Note1: if you do not have AF_SEARCHABLE attribs, make sure you set NF_EXTENDED_SEARCH to force display of the search bar. Note 2: in a future nightly this will be even easier through the use of a new NF_SMART_SEARCH flag)
Now, click the 'extended' link in your application's search bar to get the new search.
Another neat feature is the possibility to save and load sets of search criteria. To enable this, you need to have the atk_smartsearchcriteria table:
CREATE TABLE atk_smartsearchcriteria ( nodetype VARCHAR(100) NOT NULL, name VARCHAR(100) NOT NULL, criteria TEXT NOT NULL, PRIMARY KEY (nodetype, name) );
Peter did a great job with this feature. I think this opens the road for advanced reporting functionality in ATK.
ATK 5.5 released
March 14th, 2006 by Ivo
We've just released ATK 5.5.0, the next stable version of the Achievo ATK framework. The new release can be downloaded here
Some highlights of the changes since ATK 5.4:
- Several enhancements to the unit-test functionality
- Improved error handling
- Tab-based access control
- Many API enhancements (new methods and new flags)
And many more fixes and improvements. The complete change log can be found on the release notes page.
Quick Zend Framework review
March 5th, 2006 by Ivo
This weekend I've taken a look at the initial release of the Zend Framework.
The first thing I've noticed is that authors of frameworks can sleep soundly again
, as the zend framework is not yet a framework (in the wikipedia sense of the word).
Currently, it's more a component library containing all kinds of useful components. This does not have to be a disadvantage though, because this makes it very easy to integrate with other applications and existing frameworks. In fact, there are some components such as the pdf and mail classes that are very useful for certain types of web applications, and it is fairly easy to use them in an application that was built using an existing framework.
People expecting a kind of 'ruby on rails' for php have to wait a little longer though, as the Zend Framework is not there yet.
When diving into some of the classes, there are some decisions that I don't quite understand. For example, have a look at Zend's implementation of isReadable. It is a wrapper for PHP's is_readable, with the addition of also taking the include path into account. Since this is a very useful feature in many occasions, why not enhance PHP's is_readable function with this functionality? Especially since it's just a small enhancement, so in my opinion, it would be better to put this directly in PHP, instead of in wrappers. (the same goes for some of the other framework methods that are wrappers for some existing functionality.) Putting stuff in wrappers is, in my opinion, a bad way of enhancing functionality. Suppose wrapper 1 adds functionality A, and wrapper 2 adds functionality B. If I'm in a situation where I need both A and B, I have to take one of the wrappers and implement the other feature myself. So in the case of 'low level' methods such as this, I'd rather have the functionality in the base function instead of in a thin wrapper.
Another functionality I have some doubts about is the registry. It is advertised as a method to handle singletons. In my opinion, the fact whether a class is a singleton should be handled by the class itself. The application author should normally not need to make the decision whether some class he is using should be a singleton or not. Also, the concept of a singleton's getInstance() method ('give me an instance or create one of there isn't an instance yet') seems to be lost in the zend framework registry, as there is no such method and the application author needs to define his own 'if it's not in the registry yet, add it' logic.
The RSS feed functionality is nice, and would be even nicer if it had methods for creating feeds instead of consuming them. This type of functionality however is typically something that would be useful to have available as a separately downloadable, dedicated library instead of as a standard part of the framework.
The other components all seem useful and nice too. There are definitely components that I'm going to use in applications I'm working on.
Overall, the Zend Framework looks promising. I think that at the current state, the zend framework falls in the category of libraries such as PEAR and ezComponents. All of them provide a wide choice of generic components. I think the stuff that would make it an actual framework are still missing, (but the model/view/controller classes are a step in that direction), but this has the major advantage that frameworks such as Blueshoes and ATK are not actually competition, but potential users of the zend components.
Article on ATK+Oracle on Oracle Technology Network
February 18th, 2006 by Ivo
I've written an article about writing web applications using ATK and an Oracle database. It's currently published on Oracle Technology Network. (direct link to the article).
I'm very happy with this publication and I welcome any new users that this may bring.
Next stop: php|a
ATK 5.3 released
December 2nd, 2005 by Ivo
We've just released ATK 5.3, the next stable version of the Achievo ATK framework. The new release can be downloaded here.
This release contains numerous changes and improvements.
Some highlights of the changes since ATK 5.2.2:
- Improved performance and reduced memory footprint
- New debug console for tracing debug statements and debugging queries
- Added Open Office document generation engine
- Added a preliminary MS SQL driver
- Improved atkMetaNode (see previous blog posts)
- Recordlist caching for dramatically increased performance in admin pages
- New attributes such as an atkLiveTextPreview
- Direct linking feature for example for linking directly to edit pages from inside e-mails
- New atkConfig class for easier per-module configuration settings
- Added Traditional Chinese translation
- Hierarchical group support in authorisation
- Support for multiple named database connections
And many, many more fixes and improvements (you can see the complete change log on the release notes page).