webCOMAND Releases

Learn about the latest webCOMAND updates and releases.

webCOMAND 3.0.10 Released

COMAND Systems released webCOMAND 3.0.10 today, which introduces image processing API.

Image Processing API

The new image processing API makes it possible to programmatically process and manipulate images using the same underlying functionality from cTemplate, cScript and PHP code.  The functionality was already available in cTemplate and cScript, but is now a PHP API that can be used from PHP code as well.

For more information, see the Image Processing API webCOMAND Docs.

Improved Image Memory Management

Images referenced from Image Data fields of a cObject utilize a new "image holder", which encapsulates the image as a simple binary string that can be efficiently read and written without further processing.  An image holder will automatically convert the image to and from ImageData objects when referenced like one.  For example, $object->Image->resize() will automatically convert the Image field data to an ImageData object in order to resize it.  Once the additional memory consumed by the ImageData object is needed for other purposes, it will automatically be converted back to a simple binary string to release the additional memory overhead of the ImageData object.  Subsequent operations will automatically convert it back again if necessary.

For more information, see the Image Processing API webCOMAND Docs.

Miscellaneous Updates

The following performance improvements, internal updates and bug fixes are also included in this update.

  • Simplified Repository Query Object Management - A repository connection no longer holds multiple query objects that are merged when ->get() or ->get_first() are called.  The ->query() function now just returns a query object, and it isn't held internally; queries must be made against that query object itself (i.e. $query->get()), or the query object must be passed back to $repo->get($query) in order to be used.
  • New cPath Syntax for DOIDs - A DOID integer followed by a 'D' will be interpreted as 'DOID=<DOID>', thus differentiating it from OIDs. This is now used to shorten and simplify webCOMAND framework image cache URLs.
  • Object Cache Improvements - Invalidate folders are no longer written every time an object changes; now, outdated cache information are removed from the file system.  Cache information is now stored by DOID in the file system to support multi-dimensional content.  User Role caches now use the object cache mechanism instead of writing role information to a separate file.
  • Syntax Checks of all PHP Files -  All auto-loaded PHP code is now first checked for syntax errors and the result is cached to improve performance.  Class loading was dramatically simplified because the library/ folder was deprecated; now there are no class types to 'prime' the loader, and all classes (core code, package code, and content type classes) are loaded in the same way through the package folders.
  • Package Routing Updates - $_COMAND pseudo-superglobal has been deprecated.  Routing information is now found in static array \io_comand_package\router::$ROUTE.  The concepts of base_url and package_url have been formalized; base_url refers to the base url of the installation, and package_url is the url to the particular package within the installation.  The route settings file, written from the route objects in the repository, is now in the system/ folder, because the config/ folder is now deprecated (see below).
  • Publication Package Cleaned Up - Removed old Publication Dependency content types (this is not stored as content in the repository as originally planned).  The Publish Settings content type was renamed to Publication Settings to be more consistent.  The Publication Record content type was added, which links a published filename to every Publication, Procedure, and cObject in the procedure's Publication List.
  • Orderable Dimensions - A new DIndex cObject field has been added, along with a _DimensionOrder meta field. This allows dimensions to be reordered through the API and webCOMAND.
  • library/ Code Refactored - All code in the base library folder now resides under the packages folder.  There is no more library/ folder, and there is now an io_comand package that contains the comand, loader, and exception classes.  Core content type classes like cObject are now in the io_comand_repo package.
  • Script Code Refactored - The library/ code refactor included the cTemplate and cScript implementations, which are now primarily in the new package io_comand_script.  Other packages that introduce their own directives implement their own script code that registers new functions.  Directives available to a cScript runtime are driven by the modules made available to that script, which are now configured by the packages as defaults and can be overridden.
  • Simplified Package Configuration - There is no longer a config/ folder for each package.  Now, packages hold their default configs in a config/ folder inside of the package (as opposed to .example.php sample files).  A single config.php file in the webcomand root folder now contains all overrides for all packages, instead of sprinkling these in a folder hierarchy inside the config/ folder.