AjaXplorer 4.1.0 (dev channel) released

Summary

Glad to announce the release of AjaXplorer 4.1.0 in the « dev » channel, fixing problems introduced by php5.4.0, adding a couple of low level features to improve performance and prepare forthcoming features, and fixing a lot of known issues (see detail changes below). Please test, report bugs, and let’s move on to the stable.

As a reminder, the minor version number 4.1.0 is odd, which means this AjaXplorer release is considered a « development » release, and once tested and bugfixed, it will come back to the « stable » channel under the 4.2.0 name. Actually, changes are not that huge, so it should not be too dangerous to upgrade, particularly if you want php 5.4 support. But if you have a conservative upgrade policy, you should definitely wait for the next stable release.

Upgrade from 4.0.4

Even if not a « stable » release, upgrade is possible via the automatic upgrade mechanism :

  • Go to Settings > Global Options > Plugins > Update Engine and edit the plugin configuration
  • Switch the « update channel » from « Stable » to « Development » and save the configuration
  • Check for new update, the package 4.0.4-4.1.0 should appear
  • Apply the update
  • There is a little trick for this update : during upgrading, by default the new config file conf/boostrap_context.php does not override your current version installed. Now either remove the old version and override it with the new one (that was dropped inside conf/ folder with a « .php.new.date » extension), or at least manually include the following change in your old version :
    Add the following at line 46:
    define(« AJXP_PLUGINS_MESSAGES_FILE », AJXP_CACHE_DIR. »/plugins_messages.ser »); 

Changelog

[CORE & ACCESS DRIVERS]

  • PHP 5.4 Support : Call-time pass by reference are deprecated, replace static calls to DOMDocument::loadXML
  • Cross-Repository copy : two successive node expand changed the current repository to the destination repository (switch back replaced twice).
  • Core : Fix mkdir() call for the cmd_outputs folder
  • Metadata loading : Set a « hidden » metadata to a passed node
  • Access.fs : handle symlinks more properly
  • Access.fs : Filter files and folders when creating Zips, using PCLZIP_CB_PRE_ADD callback
  • Access.smb : Clean URL everywhere, pass the Locale as environnement variable when defined
  • Access.fs : Big typo error making the « nodeName » resetting useless
  • Access.smb : override makeZip and allow its usage (by plugin configuration), as it can be an option when on a very fast network connection.
  • Access.smb : fix « + » in folder name, use rawurldecode() instead of urldecode()
  • Open_basedir : Multiple files downloads broken, do not « patch path » in readFile function when on the realFileSystem.
  • Core.conf : Add a $context parameter to the user save() method, to avoid « over saving » data : if context is « superuser », save preferences and rights, where as in context « user » save only preferences.
  • Core.uploader : should solve the problems of setting the upload limit.
  • WebDAV Server : detect MiniRedir user agent
  • Synchro : Recursive listing implementation & hooks applyCondition for better performances. Testing synchro tool
  • Synchro : Various tricks to trigger the metadata updates from outside, and webdav optims

[AJAX GUI]

  • Client Session timer: hook to « ajaxplorer:longtask_xxx » events to avoid disconnecting during very long task (namely uploads for the moment)
  • Remember me : reported from 4.0.3 branch
  • Tpl Logo image : Wrong content type header
  • Massive deletion : POST instead of GET
  • Error Message : Restyle message box (max height), fixed broken carriage return
  • JSPacker : rtrim windows line feed

[OTHER PLUGINS]

  • Conf.sql : Auto detect « objects » preferences and serialize them in the DB, adding the $phpserial$ prefix. Fixes AJXP_WEBDAV_DATA of users, as well as PLUGINS_DATA used by notify.phpmail
  • Editor.diaporama : fix the « navigator » when the is a marginTop on the thumbnail, encodeURIComponent before triggering download action, otherwise breaks (e.g. & in file name)
  • Editor.zoho : as reported by zoho support team, the Secret Key is in fact deprecated and no more necessary, apply node.before_change hook before saving
  • Editor.pixlr : apply node.before_change hook before saving
  • Editor.imagick : do not inverse slashes if not necessary!
  • Editor.video : Pass alternate videos versions in the metadata, and set them as HTML5 video source (require an external pre-encoding)
  • Index.lucene : ignore case for determining content-indexed extensions
  • Uploader.* : trigger events ajaxplorer:longtask_starting / ajaxplorer:longtask_finished
  • Auth.ftp : Force call to getServerFeatures() when coming from the login operation.
  • Auth.ldap : Jon Peck ldap contrib : ability to configure DN as an array and iterate through them
  • Meta.svn : manually set a library path to access the SVN commands.
  • Meta.filehasher : new utility for accelerating synchronization, compute and store file md5 in metadata (if metastore active) and delete on file change.
  • Action.powerfs : Fix zip delegation : do not sleep for one second, change the download mechanism, and place the zip inside the temporary folder, otherwise it makes problems for read-only folders. Allow compression when using powerfs in read mode, Todo : exclude hidden files from zip operation using an exclude list,
  • Action.share : AjxpSharedDriver avoid error on empty glob(), fix typo error

[PERFORMANCES]

  • Performance hunting : cache slow processing data when possible (registered extensions, messages, etc), either in memory (static var) or in cache files.
  • New cache file : Define plugins_message.ser file cache, contains all i18n messages (collecting them was very long).

[TESTS AND INSTALL]

  • New config file : New optional config file to set the configs that must be set before anything else : LOCALE, TMP_DIR, INI_SET
  • Test.gpc : Totally commenting magic_quote_gpc breaks JSON if magic_quote is active!
  • Test.writeability : Call is_dir silently to avoid error triggering and let the diagnostic tool run
  • Tests failed : Suggest changes (in the new bootstrap_conf.php file)
  • Documentation : Plugin Info XML, ability to browse many plugins folders (experimental)
  • Security : Reported from 4.0.4 branch