Items that need to be converted...
Remove AUTH_HANDLER - use Horde_Registry::appInit() 'authentication' option instead.
Remove $session_control - use Horde_Registry::appInit() 'session_control' option instead
Most static Horde_Auth:: functions moved to Horde_Registry::
Horde_Auth::getAuth() -> $registry->getAuth()
Horde_Auth::getBareAuth() -> $registry->getAuth('bare')
Horde_Auth::getAuthDomain() -> $registry->getAuth('domain')
Horde_Auth::getOriginalAuth() -> $registry->getAuth('original')
Convert files/libraries to be able to be autoloaded.
Remove require/include calls within the code.
Use Horde_Registry::appInit(), with the 'cli' option, to initialize CLI scripts.
Add $Id$ tag to all conf/*.php.dist and conf/*.xml files
No more lib/base.php, lib/api.php, lib/version.php. Converted to lib/Application.php and lib/Api.php
TODO
instanceof instead of is_a()
No need for $Horde$ in header comments.
Remove CVS directories.
Remove .cvsignore
Constants should be namespaced - preferably within the utility class (e.g. lib/App.php).
Update documentation.
Don't use Horde::fatal() directly - throw an Exception and if uncaught, a fatal exception handler will be triggered.
Remove all use of globals within the application (use injector instead).
OLD:
$registry->getImageDir() . '/image.png';
NEW:
Horde_Themes::img('image.png');
Horde_Themes::img('image.png'), array('nohorde' => true));
Also note this policy change from H3:
"Do note that doing something like grabbing an image dir and then manually appending various image names to it is NOT supported in H4."
Various Horde libraries now must be loaded via the injector.
ALL javascript should be in js/. NO javscript (if at all possible) should be contained in scripts/templates.
Log constants have changed: we no longer use the PEAR constants and instead use strings to indicate the severity.
Also note the function signature no longer requires the file name or line number.
OLD:
Horde::logMessage("Something broke", __FILE__, __LINE__, PEAR_LOG_ERR);
NEW:
Horde::logMessage("Something broke", 'ERR');
PEAR's Mail library has been replaced by Horde_Mail.
The MIME library has been rewritten - most calls to the library will probably need to be changed.
Most/all language and/or charset handling has been moved to Horde_Registry. See http://bugs.horde.org/ticket/9124#c8.
Convert from Util::bufferOutput() -> Horde::startBuffer()
Remove PEAR_Error usage - convert to Exceptions.
Each application should define a APP_Exception library that extends Horde_Exception.
No more lib/prefs.php - now uses Horde_Registry_Application calls.
Update config/prefs.php.dist to remove unneeded entries.
The sidebar menu is no longer in a separate frame. To integrate with all pages of your application, put the following code after your menu, e.g. at the bottom of templates/menu.inc, but before the notification output:
if (!Horde_Util::getFormData('ajaxui')) require HORDE_BASE . '/services/portal/sidebar.php';
No longer uses test.php - converted to lib/Test.php.
TODO
All translations and help files have to be encoded in UTF-8 now. Translation files have been renamed and moved to the locale/ directories. imp/po/de_DE.po is now in imp/locale/de/LC_MESSAGES/imp.po.
Use Horde_Url:: instead of Horde_Util::addParameter()/Horde_Util::removeParameter().