Changes to BC and behaviour in version 4.1.0
============================================

Requirement changes
-------------------

- New eZ Components being used:
  - SystemInformation
  - Archive

Deprecated features
-------------------

- eZArchiveHandler
  This class and related sub-classes, such as eZTARArchiveHandler has been
  deprecated, they will be removed in eZ Publish 4.2. Archive from eZ Components
  is the intended replacement of this functionality.

- eZFile::getContents()
  The method getContents() of eZFile is deprecated now, use file_get_contents()
  instead.

- eZModuleManager
  The whole eZModuleManager class is deprecated now, in favor of the setting
  [ModuleSettings] ModuleList in module.ini

- eZImportLookupTable
  This class is deprecated and will be removed from future versions of eZ Publish.
  Long ago it was used by the eZ Publish package system.

- eZExtension::findExtensionType
  This method is now deprecated and even though it is still in the code, we 
  highly recommend to use the new eZExtension::getHandlerClass which takes
  advantage of the autoload features. Porting the current kernel to use
  this new method is planned and will be done step by step.

- 'aliased_type' attribute on xml handlers (input and output)
  This attribute now always returns false after the changes in the handler loading code,
  and is not used in 'aliased_handler' anymore.

Removed features
----------------

- eZSelectionType loose functions

  The file in which eZSelectionType is defined contained two loose functions,
  namely serializeContentObjectAttribute and unserializeContentObjectAttribute,
  which at the time of introducing them were supposed to be inside the class
  definition. These two functions have been removed.

- eZFilePasstroughHandler

  The deprecated class eZFilePasstroughHandler was removed. Use
  ezFilePassthroughHandler instead.

- eZXMLInputType

  The class eZXMLInputType, which was not any longer used by any part of the eZ
  Publish kernel, has been removed.

- eZURLTranslator

  The class eZURLTranslator, which was not any longer used by any part of the eZ
  Publish kernel, has been removed.

- eZDebugErrorHandler()
  The eZDebugErrorHandler() function that was declared in lib/ezutils/classes/ezdebug.php,
  has been removed. The new function eZDebug::recursionProtectErrorHandler() is
  used now as custom error handler.

- OpenFTS search plugin
  There existed some code to use OpenFTS as a search engine. This code was never completed
  though, and in an unusable state. Therefore it has been removed.

- eZXML
  The deprecated eZXML library, a non-standard-compliant DOM implementation, has been removed.

- eZReference
  The refence module from the kernel has been removed.

- Embed template override rules inheritance
  In order to able to fix "#014328: Nested embedding override issue" inheritance of the
  embed template override rules are removed, this was a undocumented & unknown feature.   


New constants in config.php
---------------------------

EZP_INI_FILEMTIME_CHECK
  This new setting controls whether eZINI should check if the settings have
  been updated in the *.ini-files*. If this check is disabled eZ Publish
  will always used the cached values, lowering the amount of stat-calls to
  the file system, and thus increasing performance.

EZP_AUTOLOAD_ALLOW_KERNEL_OVERRIDE
  This setting controls if eZ Publish's autoload system should allow, and
  load classes, which override kernel classes from extensions.

EZP_USE_BUNDLED_COMPONENTS
  If you are using a distribution of eZ Publish with which the necessary
  eZ Components are bundled (in lib/ezc), then you can use this setting to
  control if the bundled eZ Components should be used (true) or not (false).
  By default, when this setting is not present, the bundled eZ Components are
  used. If you're using the bundled eZ Components it's recommended to define
  EZP_USE_BUNDLED_COMPONENTS as a boolean true anyway, for optimal speed.

EZC_BASE_PATH
  If you are not using the bundled eZ Components, then for optimal speed it is
  recommended to set EZC_BASE_PATH to either ezc/Base/base.php or Base/src/base.php,
  depending on how you installed the eZ Components. By default, if this setting
  is not present, eZ Publish first tries to include ezc/Base/base.php. If that fails
  Base/src/base.php is included.

EZP_AUTOLOAD_OUTPUT
  This setting sets the class name for a custom class to use to handle
  autoload generation output. The class has to be of the ezpAutoloadOutput
  type. Since autoloads are being used, this class needs to be loaded in
  config.php, or bootstrapped with some method before the script itself runs.

Changes to method signatures
----------------------------

- eZContentObject - fetchAttributesByIdentifier

  Parameter 3 is changed to be an array of locale codes, rather than a string
  with locale code.

- eZDBClusterFileHandler - getFileList

  The parameters have been completely changed. Earlier, getFileList() accepted
  2 booleans to define if files in the scopes 'binaryfile' and 'image' should
  be omitted. Now the method accepts an array of scopes of the files you want
  to be returned, and a boolean with which you can reverses the behavior so
  that all files in the scopes in the array are excluded.

- eZRSSExport::fetchRSS2_0() and fetchRSS1_0

  These methods do not any longer accept the ID of the RSSExport as a parameter.
  Use eZRSSExport::fetch() first to fetch the instance by its ID.
  
- eZURLAliasML - fetchByAction

  For this method the already existing parameter *$maskLanguages* have been
  reused. For boolean values the old logic will be triggered, for string
  values entries will be filtered with the locale's language mask.

  *$onlyprioritized* will not have any effect, when a locale is specified in
  *$maskLanguages*.

- eZURLAliasML - getPath

  New *$locale* parameter introduced. When *$locale* is used, it will override the
  default filtering in the *choosePriortizedRow()* method.

- eZURLAliasML - fetchPathByActionList

  *$locale* parameter added, with fallback to normal behaviour.


Change of behaviour
-------------------

- eZDBInterface - constructor

  An eZDBNoConnectionException exception will be thrown when a connection to the
  database cannot be established (typically called from $db = eZDB::instance())

- eZContentClass - __clone

  A clone of an instance of eZContentClass will have a new remote ID, while
  before it had the same remote ID as its original.

- eZCharTransform does not any longer have a member variable $Mapper, because
  it caused wrong transformation rules to be used when calling
  eZCharTransform::transformByGroup multiple times with another value for its
  $group parameter.

- eZMail - validate

  This method now returns the value of preg_match directly, instead of using
  ereg. This means that return values of this method now is 1 for a valid
  address, and 0 for an invalid address.

- eZDBFileHandler - $metaData

  This property now defaults to null. When metadata are fetched and not found
  (file does not exist), it is set to false. When requested again, and value is
  false, no DB check will be performed until $force is set to true

- eZDBFileHandler - $useStaleCache

  This private property is used to switch execution to stale cache mode for the
  current cache file. It defaults to false.

- eZDBFileHandler - $realFilePath

  This private property is used to backup the cache file real path when
  switching to stale cache mode, since $filePath will be set to the generating
  file path.

- eZDBFileHandler - isFileExpired

  This new static method replaces isExpired. It is either called manually with
  a filepath, or by the two new methods, isLocalFileExpired and isDBFileExpired.

- eZDBFileHandler - isLocalFileExpired

  This new method checks the local file ($this->filePath) expiry status against
  a given mtime / ttl

- eZDBFileHandler - isDBFileExpired

  This new method checks the DB file expiry status against a given mtime / ttl.

- eZDBFileHandler - startCacheGeneration

  New method used to start the cache generation process for the current file.

- eZDBFileHandler - endCacheGeneration

  New method used to start the end generation process for the current file.

- eZDBFileHandler - abortCacheGeneration

  New method used to abort the cache generation process for the current file.

- eZDBFileHandlerMysqlBackend - _exists

  Added a new optional parameter, $ignoreExpiredFiles, defaults to true. If set
  to false, files that exist in the database but are expired by mtime or
  expired fields will be considered as existing.

- eZDBFileHandlerMysqlBackend - _startCacheGeneration

  New method used by the equivalent eZDBFileHandler method.

- eZDBFileHandlerMysqlBackend - _endCacheGeneration

  New method used by the equivalent eZDBFileHandler method.

- eZDBFileHandlerMysqlBackend - _abortCacheGeneration

  New method used by the equivalent eZDBFileHandler method.

- eZContentOperationCollection::setVersionStatus()

  This method now uses the $status parameter as is, that means $status needs
  to be one of the eZContentObjectVersion::STATUS constants.

- eZContentOperationCollection::operationIsAvailable()

  This method returns true or false wether an operation is available
  in workflow.ini/[OperationSettings]/AvailableOperationList
  The new triggers are actually new operations on which we added pre and post triggers,
  except for content_read which only contains a "pre" trigger and no "post" trigger.

- eZLDAPUser::loginUser (as of 4.1.1 and 4.2.0Alpha1)

  ldap.ini setting LDAPFollowReferrals is introduced and set to 0 by default as
  ldap code did not work with most AD setups. LDAP_OPT_REFERRALS was earlier not
  set at all, thus enabled. 


INI setting changes
-------------------
    This section talks about the handler settings that have been deliberately broken
    in 4.1 to be able to reduce system calls by loading handlers using the autoload system.

image.ini
  [ImageConverterSettings]
  RepositoryList[], ExtensionList[] and ImageHandlerAlias[] are no longer in use

  [<ImageConverters, example: GD and ImageMagick>]
  Handler= this setting now expects class name instead of file name

file.ini
  [BinaryFileSettings]
  Handler= this setting now expects class name instead of file name
  Repositories[] and ExtensionRepositories[] are no longer in use

  [ClusteringSettings]
  FileHandler= this setting now expects class name instead of file name
  DBBackend= this setting now expects class name instead of file name
  ExtensionDirectories[] are no longer in use

ezxml.ini
  [InputSettings]
  Handler=  are no longer in use
  HandlerClass= new setting for Handler that expects class name as value
  Alias[]  are no longer in use
  AliasClasses[] new setting for Alias that expects class name as key and value

  [OutputSettings]
  Handler=  are no longer in use
  HandlerClass= new setting for Handler that expects class name as value
  Alias[]  are no longer in use
  AliasClasses[] new setting for Alias that expects class name as key and value

package.ini
  [PackageSettings]
  HandlerAlias[]= this setting now expects class name instead of file name

  CreationSettings]
  HandlerAlias[]= this setting now expects class name instead of file name

  [InstallerSettings]
  HandlerAlias[]= this setting now expects class name instead of file name


Renamed constants
-----------------

===================================================== =======================================
Old constant                                          New constant
===================================================== =======================================
eZURLWildcard::EZURLWILDCARD_REGEXP_ARRAY_CALLBACK    eZURLWildcard::REGEXP_ARRAY_CALLBACK
eZURLWildcard::EZURLWILDCARD_TRANSLATE_CALLBACK       eZURLWildcard::TRANSLATE_CALLBACK
eZURLWildcard::EZURLWILDCARD_CACHED_TRANSLATE         eZURLWildcard::CACHED_TRANSLATE
eZURLWildcard::EZURLWILDCARD_WILDCARDS_PER_CACHE_FILE eZURLWildcard::WILDCARDS_PER_CACHE_FILE
eZURLWildcard::EZ_URLWILDCARD_TYPE_NONE               eZURLWildcard::TYPE_NONE
eZURLWildcard::EZ_URLWILDCARD_TYPE_FORWARD            eZURLWildcard::TYPE_FORWARD
eZURLWildcard::EZ_URLWILDCARD_TYPE_DIRECT             eZURLWildcard::TYPE_DIRECT
eZURLWildcard::EZ_URLWILDCARD_CACHE_SIGNATURE         eZURLWildcard::CACHE_SIGNATURE
===================================================== =======================================
