===========================
 Upgrading Horde Groupware
===========================

:Contact: horde@lists.horde.org

.. contents:: Contents
.. section-numbering::


Introduction
============

These are instructions to upgrade from earlier Horde Groupware versions.
Please backup your existing data before running any of the steps described
below, you need the backups in case anything goes wrong with the upgrade
process, which cannot be reverted automatically. You can't use the updated data
with your old Horde Groupware version anymore.

Please see below for changes between certain Horde Groupware versions that are
not covered by the update script.


Upgrading any Horde Groupware 4 or later
========================================

Upgrading Horde Groupware is as easy as running::

   pear upgrade -a -B horde/groupware

If you want to upgrade from a Horde Groupware version prior to 4.0, please
follow the instructions in INSTALL_ to install the most recent Horde Groupware
version using the PEAR installer.

After updating to a newer Horde Groupware version, you **always** need to
update configurations and database schemes. Log in as an administrator, go to
Administration => Configuration and update anything that's highlighted as
outdated.


Upgrading Horde Groupware from 5.1.x to 5.2
===========================================


-----------
Base Module
-----------


Configuration Options (conf.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New logging options for ActiveSync logging have been added. It is now possible
to log all devices to a single log file or to device specific files.
Additionally, it is also possible to select between including the raw wbxml
stream in the output, or prune tag content greater than 50 bytes. The
ActiveSync configuration section should be revisited.

It is now possible to use X509 certificates either in addition to, or in place
of traditional HTTP Basic authentication for ActiveSync. Refer to the
ActiveSync configuration section for more details.

An additional option is now available for the SMTP Mailer driver: 'lmtp'.

A new NoSQL driver is now available for storing ActiveSync device state. Refer
to the ActiveSync configuration section for more details.

The History driver can now be explicitly defined in the configuration (and a
new NoSQL driver has been added).

Additional options are now available for the Predis HashTable driver:
'password', 'persistent', and 'protocol'. Additionally, the 'hostspec' and
'port' options now accept multiple values (separated by commas).

The following options were added::

    $conf['activesync']['logging']['level']
    $conf['activesync']['auth']['type']
    $conf['activesync']['auth']['params']
    $conf['activesync']['storage']
    $conf['activesync']['params']['driverconfig']
    $conf['cachecssparams']['filemtime']
    $conf['history']['driver']
    $conf['history']['params']['driverconfig']
    $conf['mailer']['params']['password_auth']
    $conf['mailer']['params']['username_auth']

The available options for the following options were changed::

    $conf['activesync']['logging']['type']
    $conf['mailer']['params']['password'] (for SMTP)
    $conf['mailer']['params']['username'] (for SMTP)

The default value for the following options were changed::

    $conf['prefs']['maxsize']

The following options were removed::

    $conf['mailformat']['brokenrfc2231']


Hooks (hooks.php)
~~~~~~~~~~~~~~~~~

New ActiveSync related hooks have been added::

    activesync_create_device
    activesync_device_check
    activesync_device_modify

Read the comments at the top of the hooks.php file for descriptions of each
hook.


Registry Options (registry.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The 'staticfs' and 'staticuri' configuration options were added to the 'horde'
configuration.


-------------------
Address Book Module
-------------------


Attribute Changes
~~~~~~~~~~~~~~~~~

  - Categories have been replaced by Tags. As such, you **must** update any
    local source definitions and remove the "Category" attribute.


Configuration Options (turba/config/conf.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following options have been added::

   $conf['tags']['enabled']


Upgrading Horde Groupware from 5.0.x to 5.1
===========================================


-----------
Base Module
-----------


Configuration Options (conf.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It is now possible to configure Horde-wide settings for a NoSQL database
backend. Addtionally, several Horde packages now allow a NoSQL backend driver
to be used.

The Memcache configuration options have been deprecated and have been replaced
by the generic Horde_HashTable package (which supports both Memcache and Redis
servers). Although the previous memcache configuration will continue to work
in Horde 5.x, it is recommended to upgrade to the new 'hashtable'
configuration setup.

The following options were added::

   $conf['auth']['resetpassword_from']

The following options were removed::

   $conf['cache']['compress']
   $conf['cachecssparams']['compress']


Hooks (hooks.php)
~~~~~~~~~~~~~~~~~

The 'ajaxaction' hook has been deprecated and replaced with the
'ajaxaction_handle' hook (new hook needed in order to allow, e.g., adding
tasks to the outgoing response).

The following hooks were added::

   ajaxaction_data


-------------------
Address Book Module
-------------------


Attribute Changes
~~~~~~~~~~~~~~~~~

  - The "instantMessenger" attribute has been replaced by the "imaddress",
    "imaddress2", and "imaddress3" attributes.

  - The default SQL schema has been updated, as well as the out of the box
    field definitions for the 'localsql' source. You must execute the database
    migrations for Turba to ensure you have the latest schema.


Upgrading Horde Groupware from 5.0 to 5.0.1
===========================================


-----------
Base Module
-----------


Weather portal block
~~~~~~~~~~~~~~~~~~~~

Google no longer provides a weather API. Support for this has therefore been
removed from Horde. If you were using Google as a source for weather, you will
need to pick a new provider and update the Horde configuration.


Upgrading Horde Groupware from 4.x to 5.x
=========================================


-----------
Base Module
-----------


Configuration Options (config/conf.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The $conf['session']['max_time'] option was added. The default is no maximum
session time, the same behavior as in Horde Groupware 4.

The $conf['cachecssparams']['url_version_param'] option was added. This option
is only used if no CSScaching is selected (a configuration that is NOT
recommended for production servers). The new default is to add version
information to CSS server URLs, which is altered behavior from Horde Groupware
4.

The $conf['cachejsparams']['url_version_param'] option was added. This option
is only used if no javascript caching is selected (a configuration that is NOT
recommended for production servers). The new default is to add version
information to javascript server URLs, which is altered behavior from Horde
Groupware 4.


Hooks (config/hooks.php)
~~~~~~~~~~~~~~~~~~~~~~~~

The 'appauthenticated' hook has been added.

The behavior of the 'pushapp' hook has changed - it is now called a maximum of
one time per page access for an application.

The 'appinitialized' hook was removed (replaced by the 'appauthenticated'
hook).

The 'pushapp_post' hook was removed.

See ``config/hooks.php.dist`` for further details.


Preferences (config/prefs.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The 'sending_charset' preference now defaults to 'UTF-8'.

The 'menu_view' and 'show_sidebar' preferences have been removed.


ActiveSync (EAS) Integration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Support for the EAS 12.0 and 12.1 protocol versions has been added. New
configuration options have been added to support this.  You MUST update Horde
Groupware's ActiveSync configuration.

The Custom logging option has been changed to ALWAYS be a path to a directory,
and not a specific filename.

The security policy settings have been moved out of the global configuration and
into the permissions system for greater per user control over policies.

New database migrations have been added, you MUST run these migrations for
ActiveSync to work.


-------------------
Address Book Module
-------------------


Attributes
~~~~~~~~~~

  - The "gender" attribute sets values of (literally) "male" or "female" now,
    and no longer 0 or 1.


Preferences (turba/config/prefs.php)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  - The "addressbooks" preference has been removed.


API Changes
~~~~~~~~~~~

  - search

    The $sources, $fields, $matchBegin, $forceSource and $returnFields
    parameters have been removed and replaced by the $opts parameter.

    Added a 'rfc822Return' option to return a Horde_Mail_Rfc822_List object
    instead of the search results array (which remains the default).


Upgrading Horde Groupware from 4.0.x to 4.0.4
=============================================


-----------
Base Module
-----------


Weather portal block
~~~~~~~~~~~~~~~~~~~~

The weather.com website has dropped their API to retrieve weather forecasts
with a very short notice. The weather.com portal block has been removed and
will be automatically removed from the users' portal configurations too.

A new portal block for weather forecasts is available, powered by the new
Horde_Service_Weather library that supports a number of free weather
services. To provide this block to the end users, install the
Horde_Service_Weather library from Horde's PEAR server, and configure a weather
service in Horde Groupware's configuration::

   pear install horde/horde_service_weather-alpha


Configuration changes
~~~~~~~~~~~~~~~~~~~~~

The 'nobase64_img' option was added.


Upgrading a Horde Groupware 1.x
===============================

For upgrading from a Horde Groupware version 1.x to 4.0 or later, see the
section `Upgrading any Horde Groupware 4 or later`_.

The update script will automatically migrate database backends and
update configuration files. It will add new and changed configurations
at the end of existing configuration files, any changes done to old
configuration files won't get lost, but might get overridden by new
settings. You might want to check the updated configuration files
after the update script has finished to make sure that any
customizations that you did to the old version still work as expected.

The ``.dist`` versions of the configuration files alway contain the most
recent reference settings and the settings documentation. If you experience
any problems with the configuration files after an update, or if you want
cleaner configuration files without all the updating code, you can create
fresh versions from the ``.dist`` files.

These instructions are supposed to be used with a complete tarball of the new
Horde Groupware version. They don't work if you use a patch file to upgrade
your installation, because the patch already contains all configuration file
changes that the update script is going to add.

1. Extract the tarball of the new version **in parallel** to the old
   version. See the INSTALL_ file details how to unpack a tarball.

   If you want to replace the old version with the new version eventually, you
   should move the old version to a different place now and put the new
   version in the place of the old one. You can still do this later, if you
   want to, but you have to edit the configuration file then.

2. Start the setup script::

     ./scripts/setup.php

3. Choose the update option in the setup menu and answer the questions from
   the setup script.

4. Pray.

5. If everything went fine and without any error messages, point your browser
   to the URL of the new version and log in as an administrator. Go to the
   ``Administration -> Setup`` screen and update all configurations that are
   marked as being outdated.

6. If you want to replace the old version with the new one, and if you didn't
   do this already in step 1, you can do it now. But you have to edit the
   configuration file ``config/conf.php`` manually and change the setting
   ``$conf['cookie']['path']`` to match the new URL path. Otherwise you won't
   be able to login after you moved Horde Groupware to a different directory.


.. _INSTALL: INSTALL
