Ampoliros 4000 4.0 major refactoring released

Today I released a major refactoring of the Ampoliros platform for building multi tenant web applications in PHP with a new desktop theme.

Change log for this release:

4000 4.0 - 2004/07/15 - "Major refactoring"
---------------------
NEW FEATURES:
- Added new "amp4000" theme.
- Added new "big" hui icons category.
- Added 494 new icons in "big" category.
- Added new Ampoliros class.
- Added unit tests.
- Added huixml_cdata() (HuiXml) in place of urlencode() method.

CHANGES:
- Changed Ampoliros generation to 4000.
- Now Ampoliros is based on the Carthag platform.
- Updated Crystal icons to SVG release. Added 584 more new icons.
- Moved Semaphore class (semaphores.library) to process.Semaphore.
- Moved Clipboard class (clipboard.library) to datatransfer.Clipboard.
- Moved CachedItem class (cache.library) to datatransfer.cache.CachedItem.
- Moved CacheGarbageCollector (cache.library) to
datatransfer.cache.CacheGarbageCollector.
- Moved hui.library classes to hui.*.
- Moved huithemes.library classes to hui.theme.*.
- All code is now under a declare() statement.
- Added pcntl and posix as suggested extensions.
- Changed "Ampoliros Web Applications Platform" title to "Ampoliros
Application Server".
- Moved maintenance.library classes to maintenance.*.
- Moved Hook class (hooks.library) to util.Hooks.
- Renamed AmpolirosSecurityHandler() class to SecurityLayer() and moved it
to security.SecurityLayer.
- Moved archives.library classes to Carthag platform.
- Moved debug.library classes to debug.* and renamed
AmpDebugger() class to Debugger().
- Moved xmlrpc.library classes to webservices.xmlrpc.*.
- Removed unused system.library.
- Moved sites.library classes to site.*.
- Moved users.library classes to site.user.*.
- Moved logger.library classes to io.log.*.
- Moved dblayer libraries classes to db.*.
- Moved locale.library classes to locale.*.
- Moved old unused stuff to ampcompatibility package.
- Now at least PHP 5 is required.
- Updated copyright notes date.
- Moved XMLParser class (xml.library) to xml.XMLParser.
- Applied minor changes for PHP 5 compatibility.
- Moved modules.library and modulesbase.library classes to
module.*.
- Strongly refactored maintaining compatibility.
- Changed handling of /ampcgi/ alias during setup.
- Renamed ModuleElementTypes class to
module.ModuleElementFactory.
- Moved soap.library to ampcompatibility.
- Updated some stuff in extras directory.
- Changed "module" term in "application".
- Renamed root/modules.php to root/applications.php.
- Moved HelpNode class to help.HelpNode.
- Moved AmpConfig class to core.AmpConfig.
- Lot of optimizations in Hui and Hui widgets.
- Hui validators are now called once even if there are more dispatchers.
- Moved root initialization code to Ampoliros::startRoot().
- Moved site initialization code to Ampoliros::startSite().
- Moved maintenance run script code to Ampoliros::startMaintenance().
- Moved ampconfig.php code to ampoliros.php.
- Removed amp3000 Hui theme.
- Removed CACHE_PATH define.

FIXES:
- Fixed "frame" attribute in toolbar widget when set to false.
- Fixed wrong size limit in username length in users table.
- Unlock script (/ampcgi/unlock.php) is no more recorded as last root
page opened.
- Fixed wrong parameters to Permissions class in adminpage.handler and
admingroup.handler.

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"
---------------------
NEW FEATURES:
- Added multiple rows feature in tab widget.
- Added support for "big" icons category.
- Now Ampoliros 3000 is PHP 5 compliant.

FIXES:
- 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"
---------------------
NEW FEATURES:
- 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
  strings.
- Added memory usage feature in AmpDebugger class (debug.library).
- Implemented some strategies for reducing database queries.
- Added VertBar Hui widget.

CHANGES:
- "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.

FIXES:
- 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
  true.
- Added missing "forceinstall" parameter to semaphores and clipboard tempdir
  elements.
- 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.

Ampoliros 3.5.0 released

Change log:

3000 3.5 - 2003/09/01 - "Misc features"
---------------------
NEW 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
  styles.
- 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
  administration.
- 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).

CHANGES:
- 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
  feature.
- 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
  site.
- 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.

FIXES:
- 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.

SECURITY:
- Added AmpolirosSecurityHandler::GetLoggedSessions() (security.library)
  method.
- Added logged root and users sessions list in security administration
  (security.php).
- 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"
---------------------
NEW FEATURES:
- 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
  (locale.library).
- 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.

CHANGES:
- Now Ampoliros 3000 3.3.0 is required as a bare minimum for Ampoliros
  update.
- Removed the 256 max lines length limit in ConfigFile class
  (configman.library).
- Now Hui tab widgets have an arrow inside each tab like the treemenu
  widget.
- Now major number version updates no more shows the minor version
  number.
- 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.

FIXES:
- 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()
  (dblayer_mysql.layer).
- 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.

SECURITY:
- 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 3000 3.4 released

I’ve released a new version of Ampoliros PHP web applications platform.

Change log follows here:

 

3000 3.4 – 2003/05/15 – “Maintenance state”
———————
NEW FEATURES:
– 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
(locale.library).
– 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.

CHANGES:
– Now Ampoliros 3000 3.3.0 is required as a bare minimum for Ampoliros
update.
– Removed the 256 max lines length limit in ConfigFile class
(configman.library).
– Now Hui tab widgets have an arrow inside each tab like the treemenu
widget.
– Now major number version updates no more shows the minor version
number.
– 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.

FIXES:
– 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()
(dblayer_mysql.layer).
– 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.

SECURITY:
– 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"
-----------------------
NEW FEATURES:
- 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
  type. 
- 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.

CHANGES:
- In Enterprise edition the "@siteid" part in site usernames is no more
  added.
- Added the nowrap as a style in all the HTML tags with the nowrap property
  set.
- 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.

FIXES:
- 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.

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