Zenphoto 1.4.5


    • Zenphoto is now release under the license GPL v2 or later (before: GPL v2 onlyto be compatible with GPL v3 which a lot 3rd party tools use nowadays.
    • All themes and the backend are now defined as HTML5 doctype to assure compatibility with newer and future 3rd party tools we adapt. Although the new semantic HTML5 elements may not be used yet and we still use the compatible XHTML syntax in many places. Slow work in progress so to speak. [sbillard, acrylian]
    • Zenphoto uses jQuery 1.9.1 and jQuery UI 1.9.1 which is as ususal loaded on themes. Since jQuery 1.9 removed some functions older jQuery based tools may break. You find info about those changes and a jQuery migrate plugin to workaround here: http://jquery.com/upgrade-guide/1.9.
    • Themes may now have slideshows from their favorites [sbillard]
    • Use of Flash has been removed from themes and plugins (except fallback in jPlayer for older browsers naturally).
    • The GD library now supports freetype fonts. (sbillard, kagutsuchi)
    • The number of comments shown on the admin/comments tab is now an option. [sbillard]
    • Simplified mod_rewrite rules [sbillard]
    • Redefine URL keywords [sbillard]
    • Portable RSS feed links option that allows a users to see their feeds even when not logged-in [sbillard]
    • Lots of small fixes [rlerdorf]


    • Refinements to what security-logger can be configured to log
    • Setup files are automatically protected once setup is done. They are automatically restored if setup needs to be re-run.

    New plugins

    • elFinder: Filemanager plugins have been created so that you may choose the handler for the upload/files tab and for tinyMCE filemanager integration. We have created a filemanager based on elFinder. elFinder allows access (with appropriate permissions) to the themes folder, the plugins folder, the zp-data folder and the albums folders in addition to the uploaded folder. We still have security concerns about the ajaxfilemanager so that code no longer is part of Zenphoto. [sbillard]
    • macroList: Plugin to view the available content macros. See developer notes below [sbillard]
    • RSS: Please see developer's notes about feed plugins below [sbillard, acrylian]

    Updated/changed plugins

    • site_upgrade: The workings of the site_upgrade plugin have been radically changed. It will now work even without mod_rewrite set. In addition it will re-direct RSS feed requests to a feed saying RSS is temporarily suspended. However, these changes do require effort on the part of users of the feature. You will have to either remove or manually update the closed.php file in your plugins/site_upgrade folder. The new form requires a script file (closed.php) and a HTML file (closed.htm) with the page you wish to show. The new closed.php script will load the HTML file, so if your HTML is constant you can just extract it from your current closed.php script. [sbillard]
    • cacheManager plugin has been updated to allow you to cache image links that are stored in your database. [sbillard]
    • googleMaps [sbillard, vincent3569]
      • Allows the "clustering" : grouping many pictures to improve navigation on the map (with an option ti setup max zoom for clustering)
      • Allows viewing very close images (similar function to Panoramio in Google Earth)
      • Provides a stylized pop-up: displays the title and description of the image and a thumbnail with fixed size
      • Improves the management of pop-up (automatic closing when switching from one image to another, or when there is a click on the map)
    • security-logger provides more refinement of what gets logged [sbillard]
    • user_groups now supports user custom data filters [sbillard]
    • quota_manager now supports groups and templates [sbillard]
    • zenpage:
      • RSS feeds for pages [acrylian] - See developer note below as well
      • Object methods for Zenpage items now support more sortorders [acrylian, sbillard]
      • Content Macros are now available. See the description in the developers notes below [sbillard]
    • slideshow:
      • The flowplayer3 flash mode has been removed (see below). The plugin therefore does not suppprt multimedia content anymore. [acrylian]
      • Support for the new content macros (see below) [acrylian, sbillard]. Resulting following changes:
        • The printSlideShowJS() function has been deprecated [sbillard]
        • The plugin has now a default CSS loaded by the plugin. You can still have a theme or /plugin based one. A theme's slideshow.php of the theme should NOT load the theme based css file anymore! Instead treat it like any other theme page and load the theme's css. See the default themes for examples. [acrylian]
    • jPlayer: 
      • Support for new content macros (see below) [acrylian, sbillard]
      • The special Zenphoto made skins are now more or less responsive regarding the width [acrylian]
    • comment_form/contact_form/register_user: The default forms of these plugins have been changed to be tableless. You might need to update the CSS rules if you are using a custom theme (the official themes have already). If you need the old forms with the table you find them, except the register_user one, in our "unsupported" GitHub repository [acrylian, sbillard, vinvent3569].

    Removed plugins

    • flowplayer3: The time of pure flash players is over. Therefore this has been removed and will not be updated to the new Flowplayer5 as it does support video only so it does not match our all-in-one-media-player requirement. [acrylian]
    • uploader_flash is removed along with the image_upload_limiter plugin which was implemented only for the Flash uploader. [sbillard]

    Now unsupported plugins are still available via the unsupported repository on GitHub.


    • Effervescence Plus: The Simpleviewer personality has been removed. This personality no longer works with the current Zenphoto code. The Image gallery personality provides similar functionality without requiring Flash on the browser.


    • Danish [jesdnissen]
    • Dutch [fretzl]
    • French [Michel Gagnon, vincent3569]
    • Galician [abotana]
    • German [acrylian]
    • Japanese [momo]
    • Russian [DoctorKru]
    • Slovak [tangorn]

    Developers' Notes

    Content macros

    Users and developers now have a new option for page and news content­­­ – macros can be inserted into the content text and replaced at view time by a Zenphoto function, constant, or expression (you may know a similar concept under the name "shortcode" in Wordpress).

    For instance, you can now insert a codeblock defined in the codeblock 3 tab anywhere in your content by using the macro [ CODEBLOCK 3 ]. Plugins and themes can supply macros as well by registering the content_macro filter.

    Full documentation of the format of these macro definitions and a listing of the default macros can be found in the document block header for the applyMacro function. We also prepared a short tutorial about the macros.

    Deprecated Functions

    Code cleanup and normalization have resulted in several functions and function uses to become deprecated. Existing theme use of these functions will still operate, but may throw deprecated functions errors. Users can supress these messages by resetting the message option for the functions. You should review your themes and plugins by running the Check Deprecated Use utility function.

    Extra note: printAdminToolbox() deprecated

    This has been deprecated as well. Since it is a standard Zenphoto functionality if you are logged in we moved it to be included always via the theme_body_close filter. This is a standard hook every theme should have. Theme authors now have to think about one function less. This follows for example how Wordpress does it with its toolbar.

    As always a theme defines the look of the admin toolbox. The function features a default CSS styling [Note: currently missing but will be in the official release) for its postioning you can override via your theme. Formerly all this would have to be done via the theme's css. You can still use that to override the defaults.

    Re-organization of the functions in template-functions.php

    Functions related to comments have been moved to the comment_form plugin so will not be available if that plugin is disabled. Theme developers should insure the plugin is enabled before using any of these functions. getHitcounter has been moved to the hitcounter plugin and printCaptcha has been deprecated.

    RSS functions move to plugin

    We are in the process of restructuring the RSS class in order to support additional feed types. We have made RSS into a plugin, so RSS feed support (and the associated theme functions) is not available unless the plugin is enabled. Your theme should test for the existence of the RSS class before calling these functions.

    The former Zenpage plugin RSS functions get/printZenpageRSSlink() and printZenpageRSSHeader() are deprecated. The main functions get/printRSSLink() and printRSSHeaderLink() incorporate their functionality. 

    Codeblock number zero deprecated

    Zenphoto themes have never used this codeblock, starting instead at codeblock one. But the tab for codeblock zero had been selected by default confusing our users. Starting with this release, the tab for codeblock zero will not show unless there is data in that block or the option codeblock_first_tab has been set to zero. This option defaults to one, but will be set to zero if a theme requests codeblock zero. To revert this setting your theme should issue a purgeOption('codeblock_first_tab'); once it no longer uses this codeblock.

    New function newAlbum() for instantiating albums

    You should use the newAlbum(name) function in place of instantiating the album object directly. There are now multiple classes of album objects. For the most part you need not worry about this. However, other albums than dynamic albums may return a list of arrays for the getImages() method. Instead of checking for a dynamic album you should check if the values in the array returned are themselves arrays.

    Change in rewrite rule handling

    The change has opened up some new capabilities. But their use does rely on theme and plugin writers understanding the new workings. There is now an array in the zenphoto.cfg file that defines URL keyword substitutions. Each element in the array is a substation rule. The key to the element is the URL term.

    Some are for terms used in the Zenphoto standard rewrite rules (designated by a define value which may be used in your code.) The others are for handling theme script pages. All standard Zenphoto URL routines will make use of these substitutions. The customPageURL() functions will check if the page passed is rewritten by the rules and use that text. If not you will get the standard page/script URL.

    If you generate links by any other means they will not conform to these substitutions. If you wish to have your own custom rewrite text for script pages you can add them to the $special_pages array in the configuration file and use the customPageURL() functions to generate the links.

    There is now a new class of plugin--FEATURE_PLUGIN--which is loaded on the front end just after the basic Zenphoto environment is setup. This will allow a plugin to dynamically add rewrite tokens to the rewrite rules. The favoritesHandler, contact_form, and register_user plugins are examples of this technique.

    Some understanding of how rewriting works is required when adding new items. These will be evaluated after the rules for Search, News, and Pages but before those for images and albums. This places some restrictions on the terms you can use. The words for Search, News, and Pages are usurped. Likewise, any term you define will prevent you from having an album of the same name. The rewritten texts must be unique, otherwise the first instance will override all others.

    user_groups support of admin custom data

    The edit_admin_custom_data and save_admin_custom_data are now applied by the user_groups plugin. This means that plugins registering these filters may need to be aware of the context of the $userobj passed the filter. $userobj->getValid() will be zero for groups and user templates.

    Thanks to

    All that use Zenphoto and contributed, be it patches, ideas, feedback and bug reports on the forum and bugtracker.

    For questions and comments please use the forum or discuss on the social networks.

    Related items