Open Source Content Management System

MidCOM 2.4.0 released

Posted on 2005-06-08 14:01:10 CEST.

GÜNZBURG -- The Midgard Project has released version 2.4.0 of MidCOM - the Midgard Components Framework. MidCOM is a PHP-based component framework for the Midgard Content Management System.

MidCOM is the default Content Management interface in Midgard CMS, and provides developers a production-proven architecture for building new web applications. With the MidCOM framework PHP applications have powerful localization, configuration, templating and data abstraction features.

Noteworthy changes since the latest 2.2 release:

  • Core
    • Created a more standardized configuration mechanism. See the file midcom/config/midcom_config.php for details. This will break any site not using MidCOM-Template, which has been adapted to the new config system.
    • Added support for site-wide configuration options in /etc/midgard/midcom.conf.
    • Aded a script for automatic generation of /etc/midgard/midcom.conf and a script to test the actual configuration of a MidCOM host.
    • Moved code to use the PEAR Package PHP_Compat instead of my own reimplementations.
    • Added a whole set of base classes to aid component authoring, making it significantly easier. See the documentation package midcom.baseclasses for further details.
    • Adapted the component loader and all derived places to support the new component baseclasses. A compatibility-layer for old-style components is in place, but it will be deprecated in 2.6. Components not using the new interface base class will then cease to work.
    • Added a Metadata interface that is independant of the actual object. It uses GUIDs to link to the conent objects, which can be retrieved using NAP. This is finally a single way to set and retrieve metadata for content objects. See the class midcom_helper_metadata.
    • The sessioning service now force-opens the session with disabled error reporting, as running session detection from NemeinAuth encoded sessions does not really work.
  • AIS
    • Integrated the new Metadata handler into the UI.
    • Updated navigation classes that supports dynamic navigation
    • Added configuraton interface.
    • Removed the "Go to page not available" links.
  • Caching Engine
    • Added a uncached operation mode, where the cache is running normally but doesn't write out cache files. This is better then disabling the cache as the regular output control (including the headers added by the engine) are still in place. Use the MidCOM configuration option 'cache_uncached' to enable this mode.
    • When running under PHP 4.3+, the configuration process now tries to autodetect the best available cache handler, currently only supporting the db2, db3 and db4 handlers, as others haven't been tested with MidCOM yet.
    • Added a "live mode" that allows for the continuing uncached output to the client, mainly geared for status logs (in use during reindexing and n.s.photos bulk uploads).
    • Added support for 304 Not Modified recognition, which should work even in no_cache mode. Both Etag (If-None-Match) and Last-Modified (If-Modified-Since) Headers are supported, if both are present, of course both must match.
    • Completly rebuilt the caching infrastructure into an extensible backend/module based solution. This is the basic building stone for the NAP/Metadata cache. Be aware of the new configuration option naming in midcom_config.php (you should be fine with most defaults though). The old caching code is now deprecated, check the various midcom_services_cache classes for further information. Quick hints: Invalidation is now done on a per-object level (invalidate($guid)), all content-cache related options like no-cache are now in $midcom->cache->content. Most components have been adapted to utilize these fetaures.
    • Added the NAP cache module, which should greatly speed up navigation building and metadata processing. Whenever possible, use the objects contained in MIDCOM_NAV_OBJECT when doing queries to the database, as this automatically takes the visibility settings into account. Checkthe documentation of NAP (resolve_guid) and the NAP cache classes in the midcom.services API documentation package. Most components have been adapted to utilize these features.
    • The midcom-cache-stats helper has not yet been reimplemented.
  • Datamanager
    • The Datamaanger does now allow you to specify a schema upon initialization. This was required for the Metadata interface to allow editing the same MidgardObject with different schemas.
    • The longtext inputstyle has been moved to wrap text using nl2br when displaying using the view mode of the widget.
    • Added support to change the lables of the save and cancel buttons. They are automatically translated as usual.
    • Optimized the schema translation, it now only translates the schema you actually need. The schema is not translated before calling init, so when patching schemas during runtime, do it before initializing and you will benefit from the automatic translation as well.
    • Added support for leaf invalidation with creation mode awareness: Under normal circumstances, only the leaf is invalidated, but if a new object is created, NAP invalidates the current content topic from the component context, assuming that this is the topic that should be invalidated. There is no configurability in this behavoir yet.
    • Added a beta-grade widget using the TinyMCE editor. This has not yet been tested, so use it at your own risk.
    • Added an explicit destructor call ($datamanager->destroy()). Call it whenever you do no longer need a datamanager instance, especially in long request. PHP will not garbage collect a datamanager otherwise, due to its cyclic references. This call has been added throughout the framework to prevent memory leaks during reindexing and bulk uploads.
  • I18n
    • The main i18n class midcom_service_i18n does now include two small helper functions to convert any string between UTF-8 and the current local charset. This should encaspulate all iconv calls in the future, components should adapt to this until 2.6.0.
    • Centralized the iconv handling into the I18n service. You should no longer call iconv directly, but use $i18n->iconv instead.
  • Indexer
    • Added a new Indexer service. See the documentations on the various midcom_services_indexer* classes and the corresponding MidCOM technical notes.
    • Added an option to configure the memory limit active during the reindexing run. This way you can easily increase the memory limit during reindexing without changing it for your entire site.
  • NAP
    • Rewrote NAP to use the Metadata facilities for Visibility settings. Invisible objects are now no longer passed into the on-site NAP data and ViewerGroups hidden Items are also skipped within AIS. The key MIDCOM_NAV_VISIBLE is now deprecated, the component's value is no longer honored. The Metadata facilities are to be used instead. This fixes these Bugs on components showing ViewerGroups hidden items: #116 (Sitemap) and #113 (AIS).
    • The midcom_helper_nav constructor does now use the current context as a default, not the root context. This is more intuitive then the original solution, as you usually want to access the navigatonal data from the context you are running in.
    • Integrated with the NAP cache backend, which stores all available NAP objects in a BDB database for quick accesses. The Metadata code does use the MIDCOM_NAV_OBJECT members by default and is therefore operating cached as well.
    • Optimized the GUID resolver code. First, the GUIDs of the various NAP objects are now tracked by the NAP core, speeding up GUID lookups for known objects greatly. During this, a interface function made available for us in the external NAP API in midcom_helper_nav utilizes this information so that resolve_guid works on the cached information implicitly, as long as the corresponding leaves/nodes have already been loaded.
    • Rewrote the NAP parameter access code to utilize the $object->$domain_$key syntax instead of $object->parameter to save repeated database queries.
    • The Metadata framework now has a cache limit to conserve memory during long requests. It is configurable in the MidCOM configuration in case you want to fine-tune it.
    • NAP leaves are now loaded on-demand, which should be working transparently.
  • Noteworthy changes to the components, apart from the dozens of minor changes documented in the individual component changelogs
    • n.n.bookmarks is a new component providing bookmark management. It has support for synchronizing bookmarks with del.ico.us.
    • n.n.orders has been extended by payment tracking features and electronic payment support using n.n.payment.
    • n.n.payment is a new library which can be used for electronic payment processing. A plugin interface makes extension easy. Currently a first backend supporting the ePayment interface of the Finnish Bank Nordea has been implemented.
    • n.s.photos now utilitzes the NAP cache for faster index construction taking the metadata driven permissions into account. The old-style visibility code has been deprecated.
MidCOM 2.4.0 can be downloaded from: http://www.midgard-project.org/projects/midcom/download/2.4.html

More information from the Midgard Components Framework: http://www.midgard-project.org/projects/midcom/

MidCOM is part of Midgard CMS. Midgard CMS is a reliable Open Source Content Management system built on the Midgard Framework for Unix operating systems. It provides users with lots of benefits including scalability, internationalization and rapid deployment. Features include web-based authoring WYSIWYG interfaces and powerful replication system.

More information about Midgard: http://www.midgard-project.org/

Torben Nehmer, MidCOM lead developer

Back

Designed by Nemein, hosted by Anykey