Launched the iConnect Portal Server

Today I launched iConnect Portal Server, a data presentation and delivery system for building enteprise portals over the iConnect Web Application Server. Users of the platform have a customized single point of access to the company’s information system and resources.

iConnect Portal Server is covered by the Mozilla Public License.

You can download iConnect Portal Server from the Carthag Projects download page.




In order to run iConnect Portal Server the following requirements must be met:

– PHP 5 (
– Carthag 1.2 (
– iConnect Web Application Server 1.0
– Apache (

Installation (UNIX)

Installing iConnect Portal Server can be done in few easy steps.

1. Unpack your distribution file.

You will have downloaded a file named something like portalserver-x.y.tar.gz.
Unzip this file with a command like: gunzip portalserver-x.y.tar.gz

Next you have to untar it with: tar -xvf portalserver-x.y.tar

This will create a portalserver-x.y directory.

2. Install the files.

Simply copy the extracted directory in the target directory, like
/usr/local/iconnect/. You may want to rename portalserver-x-y to portalserver.

3. Setting up Carthag.

The procedure in step 2 should have done most of your
work for you. Now, you need to add iConnect Portal Server classes directory to Carthag’s
classpath in the classpath directive in Carthag’s carthag.ini file.

eg.: classpath = “/usr/local/iconnect/portalserver/classes/”

Once you have made these changes you should be ready to run
iConnect Portal Server based applications.

Installation (Windows)

Installing iConnect Portal Server under Windows can be done in few easy steps.

1. Run the installer.

Choose a target directory like C:\Program Files\iConnect\Portal Server and let
the installer place iConnect Portal Server there.

2. Setting up Carthag.

The installer in step 1 should have done most of your
work for you. Now, you need to add iConnect Portal Server classes directory to Carthag’s
classpath in the classpath directive in Carthag’s carthag.ini file.

eg.: classpath = “C:\Program Files\iConnect\Portal Server\classes\”

Once you have made these changes you should be ready to run
iConnect Portal Server based applications.

Launched Carthag Classes Consolidator

Today I’ve released the first public version of CCC – Carthag Classes Consolidator – an open source classes consolidator for Carthag applications. Being distributed with the Mozilla Public License, CCC is free to use and distribute. CCC is a component of the Solarix iConnect Tools.

CCC’s main purpose is to optimize Carthag classpaths and classes. It collects all the classes contained in the classpaths (excepted Carthag and CCC ones) and, if required, process them with specific consolidators. For now no consolidator other than the collector is available, but in the future there can be consolidators for classes code optimization, caching, etc.

Collected (and processed) classes, once collected, are kept in a storage. Following INSTALL file, storage classes classpath is the first one (after Carthag default classpaths) to be explored for classes by Carthag when importing them. In this manner, Carthag doesn’t have to search among all the classpaths. With a long classpath list, this may result in faster applications serving.

The consolidation process must be manually restarted each time a Carthag based application is installed, updated or removed, otherwise the storage is very likely to contain old classes (or no classes at all) incompatible with the new application.

Please note that applications whose classes rely on a certain position in the filesytem are likely to be subject to malfunctions. In that case, you should exclude classpaths for these applications from being consolidated using the “excluded_classpaths” directive in ccc.ini file.

To run the consolidation process, you must run the bin/consolidate batch file.

Supported options:

-h: display a short CCC usage help.

Supported commands:

refresh: starts the consolidation process. This is automatically called when no argument is given to consolidate batch file.

flush: entirely flushes the classes in storage.

You can download CCC from the Carthag Projects download page.

Ampoliros 3.7.0 released

This is a bridge release to allow seamless upgrade from the 3.x generation to the new 4.x one in pipeline.

Change log:

3000 3.7 - 2004/06/15 - "PHP 5 / Ampoliros 4000 bridge"
- Added multiple rows feature in tab widget.
- Added support for "big" icons category.
- Now Ampoliros 3000 is PHP 5 compliant.

- Fixed bad hint functionality in some Hui widgets.
- Fixed handling of AM/PM in DbLayer::GetDateArrayFromTimestamp().
- Fixed LocaleCountry() logged errors during setup phase.
- Fixed minor issues with PHP5 changes.

Ampoliros 3.6.0 released

Change log:

3000 3.6 - 2003/12/15 - "Locale reorganization"
- Added "About Ampoliros" menu.
- Added "TreeVMenu" Hui widget.
- Added RPM spec file and build system.
- Added copyright note in login panels.
- Added charset support in country descriptors.
- Added support in Page widget for country charset.
- Added a year normalization routine in LocaleCountry class (locale.library)
  when using date arrays, in order to resolve issues with short length year
- Added memory usage feature in AmpDebugger class (debug.library).
- Implemented some strategies for reducing database queries.
- Added VertBar Hui widget.

- "Site access" button renamed to "Desktop".
- "Ampoliros administration" button renamed to "Control Panel".
- Updated favicon.ico.
- Added direct link in Ampoliros menus to favicon.ico.
- Moved PHP Layers Menu code from menu.hui to new phplayersmenu.library.
- Now "Tools" and "Preferences" site administration groups are always in the
  last two positions.
- Now Form Hui widget children are organized as a table like a vertgroup.
- New javascript based Hui treemenu look.
- Changed handling of years when using date arrays: years must be always 4
  chars long. Typical 2 chars long years will be changed to 20xx.
- Changed handling of trees of Hui widgets when navigating them by reference,
  resulting in less memory usage.
- Removed HuiWidgetElement->mLog member and related Logger instance, resulting
  in less Hui overhead and minor memory usage.
- Applied CSS "normal" style to all form widgets.

- Now the button argument "target" works also with the "formsubmit" argument.
- PopUp icon in Hui date widget is not shown when readonly is set to
- Added missing "forceinstall" parameter to semaphores and clipboard tempdir
- Removed wrong code for nonexistent align and width properties.
- Better check about $check_script existance in string Hui widget.
- Fixed handling of "compact" attribute in AmpToolbar Hui widget buttons.
- If "rowsperpage" argument is given in table widget but "pagesactionfunction"
  is not specified, it is ignored and the table displays all the rows.

Launched the new Carthag open source PHP framework

Carthag is an enteprise level applications platform written in PHP 5, making full use of the new language features. Being distributed with the Mozilla Public License, Carthag is free to use and distribute and can be used in commercial products.

Carthag’s main purpose is to bring PHP at the Enterprise level. This is achieved by using new PHP 5 OOP features, adopting Design Patterns and bringing some other platforms ideas (in particular Java) to Carthag.

Differently from other PHP based platforms, Carthag is designed to be used in all types of applications, even client ones, and not only as a web scripting system.

Main features

  • Entirely OOP
  • Rigorous code organization (like Java)

Language and base packages

  • Bootstrap system
  • IO and files
  • Classes serialization
  • Data types
  • Exceptions
  • Class loader and class autoload interceptor
  • Support of threading/concurrent processes
  • Server sockets
  • Manipulators
  • Archives
  • Security manager
  • Dom/Sax XML manipulation
  • Utility packages


  • Implementation of design patterns like Observer, Factory, DAO, etc.
  • Singleton pattern implementation
  • Command pattern interface
  • Observer pattern implementation

Integration features

  • Database abstraction through Data Access
  • DAO base
  • Web services support (SOAP, UDDI, WSDL, XML-RPC)

Common application frameworks provided

  • Validation
  • Sessions
  • Logging system based on log4j
  • Templating
  • Localization
  • Authentication and authorization
  • Unit testing

Carthag structure


Ampoliros 3.5.0 released

Change log:

3000 3.5 - 2003/09/01 - "Misc features"
- Added IFrame Hui widget.
- Added "refresh" option to page Hui widget.
- Added semaphores feature (semaphores.library).
- Added clipboard feature (clipboard.library).
- Added the possibility to check string and text widget values before
  sending a form.
- Added arrowup, arrowupshadow, arrowleft and arrowleftshadow theme
- Added arrowup, arrowupshadow, arrowleft and arrowleftshadow icons for
  Amp3000 theme.
- Added columns sorting to Hui table widget.
- Added name attribute to Hui IFrame widget output, so now it is
  targettable by links.
- Added 261 new mini icons in Crystal icons set.
- Added clean clipboard maintenance task.
- Added Ampoliros and modules requirements check maintenance task.
- Added a popup calendar in HuiDate widget.
- Added semaphores administration in root advanced options. It is shown
  only when platform state is set to development or debug.
- Added hints to Hui button, checkbox, combobox, date, file, image, label,
  listbox, radio, string and text widgets. Hint messages are shown in the
  browser status bar.
- Added 280 new more icons in Crystal HUI icons set.
- Added "compact" attribute to button Hui widget.
- Added module hooks list in modules root page.
- Added Site::EnableAllModules() (sites.library).
- Added "Enable all modules" and "Disable all modules" in site modules
- Added "color" argument to Hui label widget.
- Added set_root_password() (ampoliros.library).
- Added users private directory feature. Users directory will be created
  inside site private directory in the "users" subdirectory. When updating
  Ampoliros, the private directory for the already existing users will be
  automatically created.
- Added UserSettings class (users.library) for user settings feature.
- Added \Innomatic\Logging\Logger::Rotate() method (logger.library), for rotating logs.
- Added log rotation in Ampoliros log clean maintenance task.
- Added table of all sites with the list of the enabled modules in sites
  root administration page under the "Situation" button (root/sites.php).
- Added support for zip archives (archives.library).
- Now Ampoliros accepts modules compressed by zip (file type recognition is
  suffix based).

- Set "iso-8859-1" as Hui page charset.
- Now Hui table widget pages navigator supports word wrapping when it is
  longer than the table width.
- DBLayer::GetTimestampFromDateArray() (dblayer.library) is now more
  tolerant with date arrays with missing keys.
- Updated the sites.php root page using the new form elements check
- Updated logo in amp3000 theme.
- Now if a button has no action, it is disabled by default.
- New javascript based Hui buttons look.
- New javascript based Hui tabs look.
- CachedItem class (cache.library) now uses semaphores.
- Now the unlock.php cgi erases all semaphores too.
- Now the debugger page uses the same tab position for all processes.
- Updated Crystal HUI icons set to Crystal Icons 0.90.
- Now build_events_call_string() (hui.library) outputs "&" in place of
- Now Site::DisableAllModules() class (sites.library) accepts an optional
  argument: if set to false, Ampoliros itself is not disabled from the
- Changed fallback procedure for HelpNode::GetContent() (helpnode.library).
- Now Hui table widget column headers are aligned at top.
- Removed Ampoliros class (ampoliros.library), to be readded and
  reengineered for Ampoliros 4000 generation.
- Now Ampoliros should handle https admin urls with no problems.

- Added missing xml widget load in root/modules.php (thanks to Damien
  Fressard and Benoit Boirel).
- Fixed DBLayer::GetTimestampFromDateArray() handling of seconds.
- Added encoding of confirmmessage label for buttons in AmpToolbar
  hui widget.
- Fixed wrong call to Locale::GetStr() in maintenance.library.
- Fixed Canada country locale descriptor.
- Fixed Ampoliros default maintenance tasks installation during setup.
- Fixed wrong handling of "siteid" and "userid" optional members in Cache
  class (cache.library).
- Fixed radio Hui Widget label, it doesn't wrap no more.
- Fixed modules dependencies handling.

- Added AmpolirosSecurityHandler::GetLoggedSessions() (security.library)
- Added logged root and users sessions list in security administration
- Added logging of wrong accesses in access.log.
- Added forced logout of sessions from security root administration.
- Added only https access flag for root and sites access.

Ampoliros 3.4.0 released

Change log:

3000 3.4 - 2003/05/15 - "Maintenance state"
- Added maintenance state.
- Added the maintenance library.
- Added the ampmaintenance.php bootstrap script, to be invoked in a script
  or in a cron job/planned task without arguments. This script launches
  Ampoliros in maintenance state.
- Added the instance.maintenance hook, called in ampmaintenance.php before
  starting the maintenance system.
- Added garbage collecting for modules (cache.library).
- Now modules cached items are removed when uninstalling their modules.
- Now the XML Hui widget (xml.hui) accepts "definitionfile" as argument;
  if given, the XML definition is read from the file.
- Added proxy support in XmlRpc protocol (xmlrpc.library).
- Now sites can be assigned to remote users. If a remote user with an
  assigned site logs in, that site is initialized.
- Added the "compact" attribute to Hui link, label and grid widgets.
- Added "target" attribute to Hui link widget.
- Added "bold" attribute to Hui link widget.
- Now children of Hui table container can set their width in the table.
- Implemented the designed but never programmed "sitepreinstall" and
  "sitepreinstall" installation phases scripts.
- Added the "maintenancetask" element. It adds scheduled tasks to be execute
  during the maintenance.
- Added LocaleCountry::GetDateArrayFromUnixTimestamp() method
- Added the $gEnv['user']['locale'] section in amproot.php.
- Added the Maintenance root page.
- Now $gEnv['runtime']['site']['init'] is set to true when a site has been
  initialized by init_amp_site() (ampsite.php), and a check to avoid multiple
  init_amp_site() calls is done.
- Now $gEnv['runtime']['root']['init'] is set to true when a site has been
  initialized by init_amp_root() (amproot.php), and a check to avoid multiple
  init_amp_root() calls is done.
- Added the "MAINTENANCE_REPORTS_ENABLED" Ampoliros configuration key. If
  set to "1" a report is sent when the maintenance is started.
- Added the "MAINTENANCE_REPORTS_EMAIL" Ampoliros configuration key. This is
  the destination email for maintenance reports.
- Added "title" attribute to Hui link widget, that opens a popup with the
  attribute content when the mouse pointer is over the link.

- Now Ampoliros 3000 3.3.0 is required as a bare minimum for Ampoliros
- Removed the 256 max lines length limit in ConfigFile class
- Now Hui tab widgets have an arrow inside each tab like the treemenu
- Now major number version updates no more shows the minor version
- Added some missing apices in array indexes in dblayer_pgsql.dblayer.
- Changed main menu icons in Amp3000 default theme.
- Removed all the uniqid() commands. This may boost performance in various
  cases, especially with XML based Hui definitions.
- The processes list in ampadvanced.php no more shows itself.
- Changed all the Hui::LoadAllWidgets() calls to Hui::LoadWidget() ones.
- The listbox Hui widget now accepts multiple default elements, giving
  an array as "default" argument.
- Now Hui SessionKey widget accepts empty values.
- Updated PHP Layers Menu code to 2.3.5. See AUTHORS file for credits.
- LocaleCountry class (locale.library) is more tolerant with date arrays
  when some keys are missing.
- Now Hui root menus open only when they get clicked.

- Now the AmpCentral and Edition setup temporary files get removed.
- Added missing AMP_INTERFACE_REMOTE interface setting in ampremote.php.
- Fixed wrong handling of mysql_insert_id() in dblayer_mysql->NextSeqValue()
- Fixed a SQL query in root/sum.php that under Postgres layer caused a
  warning in the database log.
- Fixed bug in dblayer.library that prevented RecordSet::Fields() from
  retrieving field 0 when using indexes.
- Fixed AmpolirosSecurityHandler::GetUnsecureWebServicesProfiles()
  (security.library) to let it work under Postgres layer.
- Fixed handling of submodules management in sites.php when modules depending
  on the module with submodules have been enabled.
- Fixed disappearing layers bug when opening menus under Konqueror 3.1.
- Fixed old bug with quotes in SQL queries.
- Fixed some HTML code created by Hui widgets.

- Now the access log contains also the remote address when logging in or
  logging out.
- Fixed expoitable issue in ampremote.php that may lead to arbitrary
  persistent connections to Ampoliros root database.
- Now the "|" and ":" characters are stripped from the username when
  creating a new user (users.library), in order to avoid possible session
  keys injections when doing web authentication.

Ampoliros 3.3.0 released

Change log:

3000 3.3.0 - 2003/02/17 - "ASP / Enterprise edition"
- Now the $gEnv environment variable is always available as $GLOBALS['gEnv'].
- Added the "edition" platform flag and the AMP_EDITION key in ampconfig
  configuration file.
- Added the "ASP" and "Enterprise" editions.
- Added different style images for big dot in main page for the ASP and the
  Enterprise edition.
- Now in Enterprise edition only a site can be created.
- Now AmpCentral can be automatically downloaded and installed during web
  setup phase if required.
- Added init_amp_site_by_md5id() site initialization function.
- Added the AMP_INTERFACE_EXTERNAL interface type, for interfaces defined by
  other modules.
- If interface is set to AMP_INTERFACE_EXTERNAL and AmpDie() is called,
  a function named as $gEnv['runtime']['external_interface_error_handler']
  is called if exists.
- Now AmpDie accepts a second optional parameter for forcing the interface
- Added the "mini" category in Hui themes icons set.
- Added icons in the "mini" category in the standard crystal icons set.
- Added the $gEnv['user']['data'] section.
- Added the module auto reupdate feature, useful for modules that need to be
  updated twice. If a file called TMP_PATH.'modinst/reupdate' is found during
  bootstrap, it gets installed as a module.
- Now a "SECURITY" section applies in this change log for security related
  new features, changes and fixes.

- In Enterprise edition the "@siteid" part in site usernames is no more
- Added the nowrap as a style in all the HTML tags with the nowrap property
- Updated Crystal icons set. Now there are 805 icons (they were 485 before),
  plus the new 409 ones in the "mini" icons set category.
- When installing a module in Enterprise edition it is automatically
  enabled to the site.
- Updated PHP Menu Layers code.
- New logo.
- This release autoupdates itself twice with the new reupdate feature.
- Now Ampoliros archive is bigger than the standard max upload size
  limit (2M) in php.ini configuration file. You may need to increase the
  upload_max_filesize php.ini directive value. INSTALL and TROUBLESHOOTING
  files have been updated according.
- The main auth.php nomore relies on cgi/cfgpath.php script and is now
  compliant to Ampoliros 3000 bootstrap system.

- Fixed wrong logging of Ampoliros root user logout.
- Fixed bug of disappearing window buttons under Internet Explorer.
- Fixed wrong hook call for instance.startup (it was called bootstrap).
- Added a missing OpenLibrary( 'modules.library' ) in ampsite.php.

- Added remote address for root and site unsuccessfull login alerts.

Ampoliros 3.2.0 released

Change log:

3000 3.2.0 - 2003/01/08 - "Security"
- Added site max users limit.
- Added submodule feature.
- Added a profiler for SQL queries.
- Added a new time marking method for LoadTime class (debug.library) with
  start and stop methods.
- Added the "Security" root page.
- Added the "progressbar" Hui widget.
- Added the Xml_Db->mTableStructure member (dblayer_parser.library).
- Added the $gEnv['core']['config'] member.
- Added the "tools" menu in the root shared menu.
- Added the access log feature.
- Added interface for setting the session lifetime.
- Added interface for setting max wrong logins and wrong login delay.
- Added block unsecure web services feature.
- Added the security alert feature.
- Added a lot of security checks in SQL queries.
- Added the "string" database datatype, should be used in place of text when
  settings a max length.
- Added various security checks.
- Added a security email reports system.
- Added mkdirs() function (misc.library).
- Added dircopy() function (misc.library).
- Added "basedir" member to Module() class (modulesbase.library).
- Added "siteid" and "userid" optional members to Cache() class (cache.library)
  so that items can be related to sites and/or users.
- Added the CacheGarbageCollector() class (cache.library) for cache garbage
  collecting purposes.
- Added automatic cache garbage collecting when removing a site or an user.

- Reorganized the root shared menu.
- Updated the default icons set to Crystal icons 0.85, with a lot of new icons
  and many changed ones.
- Changed some old references to $env to $gEnv.
- Updated copyright date to 2003.

- Added missing OpenLibrary( 'locale.library' ) in huidate.hui.
- Fixed missing 'themesized' attribute in the summaries that prevented PNG
  icons to be viewed under Win32 platforms.
- Fixed wrong handling of target attribute in menu.hui.

Ampoliros 3.1.0 released

Change log:

3000 3.1.0 - 2002/10/16
- Added the instance.startup hook, that is called at the instance startup.
- Added the instance.shutdown hook, that is called at the instance shutdown.
- Added the "tabindex" parameter to Hui form widgets.
- Added a check in setup phase for PHP XML-RPC extension. If loaded, the
  requirements check phase complains about it and ask to remove the extension
  from the php.ini configuration file.
- Added web services description localization mechanism.
- Added web services description column in web services administration page.
- Added country descriptor for Brazil and language descriptor for Brazilian.
- Added $gEnv['runtime']['libraries'] with the list of the opened libraries.
- Added the new "tab" Hui widget.
- Added the COLORSET.TITLEBARS.TEXTCOLOR color in Hui colors sets.
- Added various profiler markers.
- Added more new icons in crystal icons set.
- Added the $gEnv['runtime']['sessionid'] key.

- Removed old code needed for pre-3.0.0 Ampoliros update.
- Now the profiler is checked before executing it at the shutdown, to avoid
  an error message if the database is down.
- Various forms now use tabbing.
- Started changing references to the environment variable from $env to $gEnv.
- Now the amppage Hui widget encodes the status and title arguments.
- Now when in debug state the pid file is not removed and contains a dump of
  the $gEnv environment variable.
- Various optimizations in libraries opening.
- Many optimizations in code.
- Updated the AUTHORS file.
- Changed default SESSION_LIFETIME value in Makefile to 525600 minutes
  (a year).
- Suppressed a lot of innocuous PHP NOTICE type log events when state is set
- New look for default theme.
- Optimized ampinterface.php root page by using a tab widget.
- The Hui dispatcher now always passes an array to the event function even if
  there isn't any even data.
- Changed session cookie management, now it should last one year by default.
- Updated the Win32 installation script.

- Fixed profiler log string type to DEBUG.
- Fixed handling of Ampoliros state when changing it in the ampadvanced.php
  root administration page.
- Fixed wrong use of locale support in some administration pages.
- Fixed old $env['sitelocale'].
- Fixed pages listing cell colspan in table Hui widget.