Although there were plenty of checks, we can not ensure complete correctness of the information below. If you find some mistake please contact us. Thank you!
The following ressources of the core were marked as deprecated and removed in the final version of CONTENIDO 4.9. Partially, this methods will not work as expected in previously test versions of CONTENIDO 4.9.
- All old classes which were affected by unifying the API classes
- RequestPassword was renamed to cPasswordRequest
- Version was renamed to cVersion
- VersionFile was renamed to cVersionFile
- VersionLayout was renamed to cVersionLayout
- VersionModule was renamed to cVersionModule
- Contenido_Security was renamed to cSecurity
- Contenido_Autoload was renamed to cAutoload
- Contenido_Effective_Setting was renamed to cEffectiveSetting
- Contenido_ItemException was renamed to cItemException
- Contenido_ItemCache was renamed to cItemCache
- Contenido_ItemBaseAbstract was renamed to cItemBaseAbstract
- Contenido_Notification was renamed to cGuiNotification
- Contenido_Navigation was renamed to cGuiNavigation
- UI_Menu was renamed to cGuiMenu
- UI_Table_Form was renamed to cGuiTableForm
- cFoldingRow was renamed to cGuiFoldingRow
- cObjectPager was renamed to cGuiObjectPager
- cScrollList was renamed to cGuiScrollList
- cWidgetTreeView was renamed to cGuiTree
- UI_List was renamed to cGuiList
- Contenido_Backend was renamed to cBackend
- Contenido_Perm was renamed to cPermission
- Contenido_UpdateNotifier was renamed to cUpdateNotifier
- Search* was renamed to cSearch*
- Ajax was renamed to cAjaxRequest
- IDebug was renamed to cDebugInterface
- Debug* was renamed to cDebug*
- CEC_Hook was renamed to cApiCecHook
- pApiCECChainItem was renamed to cApiCecChainItem
- Purge was renamed to cSystemPurge
- Template was renamed to cTemplate
- gdbdriver was renamed to cGenericDbDriver
- gdbmysql was renamed to cGenericDbDriverMysql
- Contenido_Url was renamed to cUri
- Contenido_UrlBuilder was renamed to cUriBuilder
- Contenido_UrlBuilderMR was renamed to cUriBuilderMR
- Contenido_UrlBuilderConfig was renamed to cUriBuilderConfig
- Contenido_UrlBuilder_Custom was renamed to cUriBuilderCustom
- Contenido_UrlBuilder_CustomPath was renamed to cUriBuilderCustomPath
- Contenido_UrlBuilderFactory was renamed to cUriBuilderFactory
- Contenido_UrlBuilder_Frontcontent was renamed to cUriBuilderFrontcontent
- Index was renamed to cSearchIndex
- Auth (rewritten to cAuth)
- Contenido_Auth (rewritten to cAuth)
- Contenido_Challenge_Crypt_Auth (rewritten to cAuthHandlerBackend)
- Contenido_Frontend_Challenge_Crypt_Auth (rewritten to cAuthHandlerFrontend)
- ArticleCollection (rewritten to cArticleCollector)
- DB_Sql_Abstract (rewritten to cDbDriverAbstract)
- DB_Sql (rewritten to cDbDriverMysql and cDbDriverMysqli)
- DB_Contenido (rewritten to cDb and cDbDriverHandler)
- Session was renamed to cSession and slightly changed
- Contenido_Frontend_Session was renamed to cFrontendSession and slightly changed
- Request was renamed to cRequestValidator and slightly changed
- InputValidator was renamed to cRequestValidator and slightly changed
- Contenido_NavMain_Util (Use cCategoryHelper instead)
- Contenido_Sitemap_Util (Use cCategoryHelper instead)
- Contenido_FrontendNavigation (Use cCategoryHelper instead)
- Contenido_FrontendNavigation_Base (Use cCategoryHelper instead)
- Contenido_FrontendNavigation_Breadcrumb (Use cCategoryHelper instead)
- Contenido_Category_Articles (Use cArticleCollector instead)
- Contenido_Category (Use cApiCategory instead)
- Contenido_Category_Language (Use cApiCategoryLanguage instead)
- Contenido_Categories (Use cCategoryHelper instead)
- Article_Property (Use cApiArticleSpecificationCollection instead)
- TemplateConfig (Use cApiTemplateConfiguration or cApiTemplateConfigurationCollection instead)
- XmlParser (Use cXmlReader instead)
- cWidgetButton (Use cHTMLButton instead)
- XML_doc (Use cXmlReader instead)
- XmlTree (Use cXmlReader instead)
- XmlNode (Use cXmlReader instead)
- cPage (Use cGuiPage instead)
- UI_Page (Use cGuiPage instead)
- UI_Form (Use cHTMLForm instead)
- UI_Left_Top (Use templates instead)
- DebuggerFactory (Use cDebug instead)
- Table (Use cHTMLTable instead)
- Contenido_CT_Sql (not supported any longer)
- Contenido_CT_File (not supported any longer)
- Contenido_CT_Session (not supported any longer)
- Contenido_Category_Base (not supported any longer)
- php4DOMAttr (not supported any longer)
- php4DOMDocument (not supported any longer)
- php4DOMElement (not supported any longer)
- php4DOMNode (not supported any longer)
- php4DOMText (not supported any longer)
- php4DOMNodelist (not supported any longer)
- php4DOMXPath (not supported any longer)
- XsltProcessor (not supported any longer)
- cMetaObject (not supported any longer)
- ExcelWorksheet (not supported any longer)
- Form (not supported any longer)
- FormField (not supported any longer)
- FormCheck (not supported any longer)
- cViewAdvancedMenu (not supported any longer)
- cViewItems (not supported any longer)
- cTableView (not supported any longer)
- cWidgetTableEdit (not supported any longer)
- cWidgetMenuActionList (not supported any longer)
- cDataTextWidget (not supported any longer)
- cDataTextareaWidget (not supported any longer)
- cDataCodeTextareaWidget (not supported any longer)
- cDataDropdownWidget (not supported any longer)
- cDataForeignTableDropdownWidget (not supported any longer)
- cDataCheckboxWidget (not supported any longer)
- cDataMultiTextboxWidget (not supported any longer)
- cNominalNumberField (not supported any longer)
- cNominalCurrencyField (not supported any longer)
- cCalendarControl (not supported any longer)
- cDateChooser (not supported any longer)
- cSwitchableDateChooser (not supported any longer)
- cDatefield (not supported any longer)
- cPageLeftTop (not supported any longer)
- cPageLeftTopMultiPane (not supported any longer)
- cNewPageLeftTopMultiPane (not supported any longer)
- pApiCECChainItem (not supported any longer)
- iConUser (not supported any longer)
- ConUserException (not supported any longer)
- ConUser_Abstract (not supported any longer)
Deprecated class methods
- All PHP 4 style class constructor methods
- cPage::setMessageBoxScript (not supported any longer)
- UI_Page::setMessageBox (not supported any longer)
- Auth/Contenido_Auth::login_if (not supported any longer)
- Auth/Contenido_Auth::purl (not supported any longer)
- DB_Contenido::np (not supported any longer)
- DB_Contenido::p (not supported any longer)
- cTreeItem::exportTree (not supported any longer)
- cApiArea::createAction (not supported any longer)
- cApiTemplateCollection::setDefaultTemplate (not supported any longer)
- cApiModuleTranslationCollection::import (not supported any longer)
- cApiModuleTranslationCollection::export (not supported any longer)
- cApiModule::exportPackage (not supported any longer)
- cApiModule::importPackage (not supported any longer)
- cApiModule::getPackageOverview (not supported any longer)
- Contenido_CodeGenerator_Abstract::setDebug (not supported any longer)
- Contenido_Category_Base::setDebug (not supported any longer)
- Contenido_FrontendNavigation_Base::setDebug (not supported any longer)
- SearchBaseAbstract::setDebug (not supported any longer)
- cHTML::setContentlessTag (not supported any longer)
- DB_Sql::lock (not supported any longer)
- DB_Sql::unlock (not supported any longer)
- DB_Sql::nextid (not supported any longer)
- cSession::hidden_session (not supported any longer)
- cModuleHandler::_initWithDatabaseRow was renamed and moved to public usage throught initWithDatabaseRow
- Auth/Contenido_Auth::is_authenticated was renamed to cAuth::isAuthenticated
- Auth/Contenido_Auth::is_auth_form_uid was renamed to cAuth::isLoginForm
- Auth/Contenido_Auth::unauth was renamed to cAuth::resetAuthInfo
- Auth/Contenido_Auth::auth_preauth was renamed to cAuth::preAuthorize
- Auth/Contenido_Auth::auth_loginform was renamed to cAuth::displayLoginForm
- Auth/Contenido_Auth::auth_validatelogin was renamed to cAuth::validateCredentials
- Auth/Contenido_Auth::auth_loglogin was renamed to cAuth::logSuccessfulAuth
- DB_Contenido::metadata was renamed to cDb::getMetaData
- DB_Contenido::nf was renamed to cDb::numRows
- DB_Contenido::num_rows was renamed to cDb::numRows, but is currently supported furthermore
- DB_Contenido::affected_rows was renamed to cDb::affectedRows, but is currently supported furthermore
- DB_Contenido::num_fields was renamed to cDb::numFields, but is currently supported furthermore
- DB_Contenido::next_record was renamed to cDb::nextRecord, but is currently supported furthermore
- DB_Contenido::close was renamed to cDb::disconnect
- DB_Contenido::haltmsg was renamed to cDb::reportHalt
- DB_Contenido::table_names was renamed to cDb::getTableNames
- DB_Contenido::server_info was renamed to cDb::getServerInfo
- Contenido_Notification::messageBox was renamed to cGuiNotification::returnMessageBox
- cSession::is_registered was renamed to isRegistered
- cSession::self_url was renamed to selfURL
- Auth/Contenido_Auth::url (Use the method from cSession instead)
- DB_Contenido::copyResultToArray (Use cDb::toArray instead)
- cCodeGeneratorAbstract::_debug (Use cDebug instead)
- DB_Sql_Abstract::_debug (Use cDebug instead)
Deprecated functions in global context
- domxml_new_doc (not supported any longer)
- domxml_new_xmldoc (not supported any longer)
- domxml_open_file (not supported any longer)
- domxml_open_mem (not supported any longer)
- html_doc (not supported any longer)
- html_doc_file (not supported any longer)
- xmldoc (not supported any longer)
- xmldocfile (not supported any longer)
- xpath_eval (not supported any longer)
- xpath_new_context (not supported any longer)
- xpath_register_ns (not supported any longer)
- _error_report (not supported any longer)
- domxml_xslt_stylesheet (not supported any longer)
- domxml_xslt_stylesheet_doc (not supported any longer)
- domxml_xslt_stylesheet_file (not supported any longer)
- showTable (not supported any longer)
- showLocation (not supported any longer)
- sendPostRequest (not supported any longer)
- cIDNAEncode (not supported any longer)
- cIDNADecode (not supported any longer)
- checkMySQLConnectivity (not supported any longer)
- statReturnCanonicalMonth (not supported any longer)
- getTeaserImage (not supported any longer)
- getPhpModuleInfo (not supported any longer)
- writeSystemValuesOutput (not supported any longer)
- displayPlugin (not supported any longer)
- strShowTreeTable (not supported any longer)
- fakeheader (not supported any longer)
- langDuplicateFromFirstLanguage (not supported any longer)
- dbUpdateSequence (not supported any longer)
- sess_load (not supported any longer)
- sess_save (not supported any longer)
- register_auth_handler (not supported any longer)
- rereadClients (not supported any longer)
- sort_pre_post was renamed to strSortPrePost
- recCats was renamed to strBuildSqlValues
- page_open was renamed to cRegistry::bootstrap
- page_close was renamed to cRegistry::shutdown
- recursive_copy was renamed to recursiveCopy
- is_dbfs was renamed to cApiDbfs::isDbfs
- isImageMagickAvailable was renamed to cApiIsImageMagickAvailable
- isAnimGif was renamed to cApiImageIsAnimGif
- checkImageEditingPosibility was renamed to cApiImageCheckImageEditingPosibility
- capi_cat_getlevelnode was renamed to cApiCatGetLevelNode
- capiImg* and capiStr were renamed to cApiImg* and cApiStr*
- is_alphanumeric was renamed to isAlphanumeric
- is_utf8 was renamed to isUtf8
- human_readable_size was renamed to humanReadableSize
- define_if was renamed to defineIfNotDefined
- IP_match was renamed to ipMatch
- trim_array war renamed to cArray::trim
- array_search_recursive was renamed to cArray::searchRecursive
- locale_arsort was renamed to cArray::sortWithLocale
- array_csort was renamed to cArray::csort
- str_ireplace_once was renamed to cString::iReplaceOnce
- str_ireplace_once_reverse was renamed to cString::iReplaceOnceReverse
- str_rpos was renamed to cString::posReverse
- cInitializeArrayKey was renamed to cArray::initializeKey
- create in Item extended classes generates a PHP Strict Standard error. Therefore the new method createNewItem should be used.
- formGenerateField (Use cHTMLTextbox or cHTMLPasswordBox instead)
- formGenerateCheckbox (Use cHTMLCheckbox instead)
- fileEdit (Use cFileHandler instead)
- getFileContent (Use cFileHandler instead)
- createFile (Use cFileHandler instead)
- fileValidateFilename (Use cFileHandler instead)
- renameFile (Use cFileHandler instead)
- fileGetMimeContentType (Use cFileHandler instead)
- getFileExtension (Use getFileType and cFileHandler instead)
- contenido_include (Use cInclude instead)
- getClientName (Use cApiClientCollection::getClientname instead)
- notifyOnError (Use cWarning or Exceptions instead)
Deprecated class variables
This section may not contain all variables marked as deprecated.
- All files, which contains deprecated classes only
Deprecated (class) constants
Constants now all have the prefix "CON_". In CONTENIDO there were several constants, which were written with the prefix "C_", "CONTENIDO_" or without prefixes. All of these constants existed twice, but the old notation got marked as deprecated and was removed in the final version of CONTENIDO. Note: Class constants do NOT have a prefix.
- PHP 4 style class constructors
PHP 4 style class constructors are not supported any longer, got deprecated and were removed in the final version.
- PEAR and conlib
PEAR packages and conlib got completely deprecated and were removed in the final version.
HTML_Common was widely merged with cHTML. Cache_Lite and Cache_Output were slightly adapted and created as cFileCache and rewriting cOutputCache. For the package RSS Reader the new class cXmlReader can be used. For Log the new cLog classes were created. All other packages were not supported officially.
Most of the conlib classes from here were rewritten and moved to the core. The auth classes were adapted, but written into PHP 5 code. To use the new classes the bootstrap method of the registry (formerly page_open) must contain the new class name. The database layer DB_Contenido was rewritten to cDb. To get a new database instance, simply call cRegistry::getDb() instead of new DB_Contenido().
- Message Box confirmation boxes
The confirmation boxes "Message Box" were replaced by the usage of jQuery UI Dialog.
Instead of box.notify(..) the function showNotification(..) must be called with same parameter order.
Instead of box.confirm(..) the function showConfirmation must be called. The first parameter is the displayed text (headline is not supported any longer). The second parameter is a callback function which is executed on successful confirmation.
- Database access via global variables
Accessing database connection information via the global variable $contenido_* is not advised, because the details are now stored in an sub array of $cfg.
Not longer available ressources
Many resources were not longer compatible or changed. Therefore, already existing resources were removed partially before removal due deprecation in earlier test version and were not longer available.
Earlier removed files
- contenido/classes/class.notification.php (moved to subfolder „gui“)
- contenido/classes/class.navigation.php (moved to subfolder „gui“)
- contenido/includes/cfg_language_de.inc.php (renamed to cfg_actions.inc.php)
- contenido/includes/grouprights*.php (renamed to include.grouprights*.php)
- contenido/includes/rights*.php (renamed to include.rights*.php)
- contenido/includes/main.login.php (renamed to include.mycontenido.php)
- contenido/scripts/HTMLObj.js.php (renamed to HTMLObj.js)
- contenido/scripts/rights.js.php (renamed to rights.js)
- contenido/xml/* (now unified to navigation.xml)
- contenido/plugins/chains (moved to contenido/includes/chains)
- cms/includes/class.input.helper.php (moved to CONTENIDO directory)
- cms/includes/class.concache.php (moved to CONTENIDO directory)
Earlier removed double declarations
Several elements were declared with the same name. They got splitted or renamed.
- The global context function saverightsarea was removed, because it was not longer used.
- The global context function saverights was splitted into the new functions saveRights and saveGroupRights.
- The global context function getExpandCollapseButton was additionally splitted into getUplExpandCollapseButton.
- The global context function uplRender was removed and rewritten to direct call of all logic in the file.
- The class UploadList was additionally splitted to the class UploadSearchResultList.
Earlier removed classes
Earlier removed class methods
- cApiStatCollection::selectByCatArtAndLang (renamed to fetchByCatArtAndLang)
- cApiMetaTagCollection::selectByArtLangAndMetaType (renamed to fetchByArtLangAndMetaType)
- cApiCodeCollection::selectByCatArtAndLang (renamed to fetchByCatArtAndLang)
Earlier removed (class) constants
- The C_SEVERITY constants in the stup process are now available as class constants of cSetupSystemtest.
Earlier removed functions in global context
- cDebug (new usage as static method cDebug::out)
- debugPrint (new usage as static method cDebug::showAll)
- debugAdd (new usage as static method cDebug::add)
- getDebugger (new usage as static method cDebug::getDebugger)
- remove_comments (renamed to removeComments)
- remove_remarks (renamed to removeRemarks)
- split_sql_file (renamed to splitSqlFile)
- cApiImageGetTragetDimensions (renamed to cApiImageGetTargetDimensions)
Earlier removed database tables and database table fields
Handling of database tables were modified to use primary keys with auto_increment feature. Therefore, there is no longer need for this table and getting the next ID with database method "nextid()".
This table was renamed to con_user.
Because sessions are not longer stored in the database, this table is not longer needed.
- Newsletter tables
The newsletter tables got the prefix "pi_".
- con_code, con_config, con_client_config, con_data, con_link and con_status
These tables were removed, because they were not needed any longer.
- con_clients.htmlpath and con_clients.frontendpath
Use $cfgClient instead.
- con_mod.input, con_mod.output and con_lay.code
Use the available API functions to get content of module or layout files.
Handling of content types was changed significantly. Note: There is no transformation to get code of custom content types to filesystem. The files of the content types are located in contenido/includes/type/code.
This field is obsolete because con_upl_meta contains this field, too. During setup values are inserted into con_upl_meta if there is no field value yet.
Earlier removed third party libraries
- wz_tooltip and tip_balloon
Use the jQuery plugin Tipsy instead.
Use the new code highlighting editor CodeMirror instead.
Use the jQuery UI plugin Datepicker instead.
Earlier removed functionality
- is_start_compatible mode
The old is_start_compatible mode was removed. During the update a transformation is executed, which sets all necessary values to use the new behaviour.
- Legacy PHP support
Support for older PHP version was removed because CONTENIDO 4.9 needs at least PHP 5.2. So there is no longer need to emulate filling old global PHP variable HTTP_*_VARS or functions, which were introduced in PHP 4.3.
- Outdated global language arrays
The following old and not longer needed global translation arrays where removed from the PHP language file:
- Old TinyMCE URL converter
The URL converter of the WYSIWYG editor TinyMCE was deprecated and removed in a updated version of the editor. The converting process for CONTENIDO was rewritten.
- PEAR initialization in output cache
cOutputCache does not longer contain the method _initPEARCache because of the removal of PEAR dependencies.
Unifying the API classes
There are several classes, which were renamed, splitted and/or moved to provide better experience using the Generic DB.
Affected classes and their files did remain in deprecation state until the release of CONTENIDO 4.9 RC 1 and are now removed.
The item and item collection classes of the Generic DB are now all located in the folder contenido/classes/contenido. They all have "cApi" as class name prefix.
Classes, which were renamed
- ArtSpecItem was renamed to cApiArticleSpecification
- ArtSpecCollection was renamed to cApiArticleSpecificationCollection
- CommunicationItem was renamed to cApiCommunication
- CommunicationCollection was renamed to cApiCommunicationCollection
- DBFSItem was renamed to cApiDbfs
- DBFSCollection was renamed to cApiDbfsCollection
- FrontendGroup was renamed to cApiFrontendGroup
- FrontendGroupCollection was renamed to cApiFrontendGroupCollection
- FrontendGroupMember was renamed to cApiFrontendGroupMember
- FrontendGroupMemberCollection was renamed to cApiFrontendGroupMemberCollection
- FrontendPermission was renamed to cApiFrontendPermission
- FrontendPermissionCollection was renamed to cApiFrontendPermissionCollection
- FrontendUser was renamed to cApiFrontendUser
- FrontendUserCollection was renamed to cApiFrontendUserCollection
- InUseItem was renamed to cApiInUse
- InUseCollection was renamed to cApiInUseCollection
- PropertyItem was renamed to cApiProperty
- PropertyCollection was renamed to cApiPropertyCollection
- UploadItem was renamed to cApiUpload
- UploadCollection was renamed to cApiUploadCollection
- cApiTree was renamed to cApiCategoryTree
- ActiveUsers was renamed to cApiOnlineUserCollection
- The newsletter classes got the prefix „Newsletter“
Classes, which were merged or changed
- The implementation of ConUser was completely moved to cApiUser.
- Article was merged to cApiArticleLanguage.
CategoryItem was merged to cApiCategory
- CategoryCollection was merged to cApiCategoryCollection
- CategoryLanguageItem wurde was merged to cApiCategoryLanguage
- CategoryLanguageCollection was merged to cApiCategoryLanguageCollection
- Language was merged to cApiLanguage
- Languages was merged to cApiLanguageCollection
- Client was merged to cApiClientCollection
- Area was merged to cApiAreaCollection
- Layout was merged to cApiLayout
- Action was merged to cApiActionCollection
- Users was merged to cApiUserCollection
- User was merged to cApiUser
- Groups was merged to cApiGroupCollection
- Group was merged to cApiGroup
- Usage of class Art was replaced with the usage of cApiArticleLanguage or cApiCategoryArticle
- Usage of class Structure was replaced with the usage of cApiCategoryLanguage or cApiCategoryArticle
Miscellaneous (technical) changes to the core
- Brand new example client
For the 4.9 release there was a totally reworked example client developed and contains more example modules for direct use, including a Google Sitemap generator, a Google Map integration, social media modules and more. The new example client uses the Smarty wrapper plugin, which allows to use Smarty within the frontend.
- Migration of PHP 4 style classes to PHP 5
Old PHP 4 classes were migrated to PHP 5 style.
- Removal of ID generation via con_sequence
IDs are not longer generated and stored in the database table con_sequence, because the database tables now all have auto_increment values.
- Modules and layouts in filesystem
One of the bigger changes is the move of the module and layout codes to the filesystem. They are not longer stored in database. The upgrade process converts them automatically to the filesystem so they can be used in the new structure.
- Action code files and frontend code cache in filesystem
For performance increase the PHP code of backend actions is now stored in the filesystem. Also the database table con_code was replaced by using the clients cache folder to store the page code cache.
- Modernization of content type classes
The content type classes got completely rewritten and are now all based on classes instead of partially including files. Also, their code is not longer stored in the database.
- Various changes for the Generic DB
The generic DB got various changes in caching and performing requests faster. The classes got a major refactoring and are now completely used for accessing database. Remaining SQL queries in the core slightly get changed to the API classes.
- New data directory and environment based configurations
The new data directory now contains all directories, which need write access (such as cache, logs, temp) and additionally all environment based configurations. The folder is located outside the CONTENIDO installation and should not be accessible from the web. Additionally each client has a data directory too.
The configuration files of CONTENIDO now are located in the default enviroment "production". You can define as much enviroments as needed and place individual configurations. Please note, that the configuration can not be derived from an other and therefore must contain all configuration files. To access all the new pathes there are several new entries in $cfg and $cfgClient available.
- New Plugins and their managemet via plugin manager
Each plugin now is being managed via the new plugin manager. Related data of the plugin is stored in a XML file. Existing plugins are not converted, so they will not work instantly after the upgrade. With the new plugin manager, the Workflow was separated to a plugin and the newsletter sources were moved to the plugin folder. With the Smarty Wrapper, URL Shortener, Form Assistant and the Cronjob Overview there came a lot of new default plugins. The popular plugin Advanced ModRewrite also is being shipped per default.
- New registry class for getting global variables, related Item objects and more
With the new cRegistry class you can access global variables easier, for example by calling cRegistry::getArticleId(). Each global variable representation additionally has a getter for the related Item object (for example cRegistry::getArticle() to get the cApiArticle object of the article with the global variable $idart). Also, there are getter for session, auth and permission object and for backend and frontend URLs and paths.
- $cfgClient reloaded
The global client configuration array $cfgClient now is (as well as $cfg) not longer stored in the session. To improve performance the complete array is generated as the new file config.clients.php, which is located in the new data config directory. The global variables errsite_idcat and errsite_idart are additionally now located in that array beside many other pathes to important folders. There is no further need to call rereadClients().
- Changed order on inclusion of config.local.php
The file config.local.php now is directly included after including the config.php of the client. Therefore, it is not longer possible to do changes, which affects the $cfg array of CONTENIDO. These changes should be done directly in the config.local.php of CONTENIDO.
- Unified XML file for backend navigation language translations
There are no longer separated XML files for backend language translation in the navigation. There is only one main file (for plugins too), which contains an I18N instead of the localized value. Therefore, plugins needs to define the language string for the translation of the menu entry at this place instead of providing the localized value.
- Changed base syntax for plugin XML language file
The root node of each plugin XML language file must be "language".
- Various changes to the setup process
The setup process was changed sllightly. There is no migration mode any longer. The possibility for installing plugins was removed, because they are now managed via the plugin manager. Therefore, all installations must specify the system administrator password and its mail address during setup to avoid leaving the login credentials as they are. It is now possible to define the database collaction during setup.
- Removal of the login screen notices for default login and setup folder
Due to a possible security risk the notices for using default login and existing setup folder are removed from the login screen and now executed on the My CONTENIDO page. Additionally on this page there came new checks for the directory size of the log folder and active maintenance mode.
- Removal of the pseudo plugin for chains
With the new plugin manager, chains are no longer stored in the pseudo plugin. The new location for chains now is contenido/includes/chains. Chains are now registered in the file data/config/ENVIRONMENT/config.chains.load.php.
- Removal of URL encoding in the database
URL encoded values in the database are converted in the upgrade process, because the encoding is not longer supported by the core of CONTENIDO. The transformation process does only convert core tables. When URL encoded values were stored in custom tables, they need to get changed manually.
- Changed folder structure in classes
The folder structure in the directory classes was changed slightly. Classes, which belongs to each other, such as cHTML, cGui, the Generic DB and so on are now located within one sub directory. Also the folders are now written all in small caps.
- Native session handling
The session handling in CONTENIDO was changed to the PHP native one instead of writing to the database. Therefore, the method Session::hidden_session is not needed any longer. The cronjob to clear remaining session entries from the database was removed.
- PHP settings via configuration and class autoloader
It is now possible to define PHP settings for the ini_set function in PHP via configuration. Also the class autoloader was a new function in CONTENIDO 4.9. However, these functions were introduced in a later version of 4.8 series, too.
- Merging the different front_content.php and front_crcloginform.inc.php files
The files above existed in various versions. They are now unified and include the most shared functionality from a new place in contenido/includes/frontend.
- Fluid interface and other improvements for cHTML
The cHTML classes now have a fluid interface and return their own object when using a setter method. When accessing a cHTML class as string, the render method is automatically executed. The clsas cHTMLSelectElement got an additional method "appendOptionElement" to set option elements without specifying an index. Additionally, there were several missing cHTML classes added to the repository (e.g. for support of HTML5).
- cArticleCollector as replacement for ArticleCollection
The ArticleCollection class was replaced by the new cArticleCollector class, which implements the Iterator interface to be able to be used in foreach loops. All existing ArticleCollection calls works furthermore, only the class name on initialization needs to be changed to "cArticleCollector".
- Dynamic events for Generic DB
As part of a additional way to implement third party code into CONTENIDO the dynamic events in the Generic DB are introduced. On creating, saving or deleting an item via the API classes it is now possible to inject third party code by registering a callback function. The possible points for injecting code are divided in three places: before the action is executed, when the action was successfully executed and when the action was not successfully executed.
- Logs at one place
The logs for actions, mails and system are now placed in the area Administration - Logs. The system log has been extended to be able to view several logfiles stored in the logs folder, deleting them and displaying them partly.
- Exception handling and more debug configurations
This version introduced more usage of exceptions, which are logged with their complete stack trace. Once a time it could be needed to disabling the plugin system or the hooks. This can be now done easily with a global configuration value. Also it is configurable, if deprecations should be logged and whether error messages should contain a stack trace or not.
- New default mailer class with logging feature
With cMailer CONTENIDO provides a class for sending mails with the Swift Mailer library. Additionally mails can be logged and displayed in the backend. On failures, there is also an option to try sending the mail again.
- New validator classes
There were some validator classes added to the core of CONTENIDO to simply be able to validate common inputs. First validator classes can validate a mail address (with various checks) and regular expressions. There are more to come in further versions.
- Module translation with multiple values
The module translation function mi18n() now supports multiple values. Then, the first parameter will be used as the translation and the other values are being used to replace placeholders in the translation string (like sprintf). Also, the module translation key must be translated. Otherwise an error message will be displayed.
- File and directory handler classes
For interaction with files and directories two new classes called cFileHandler and cDirHandler were created to handle most of the common functions.
- Passwords with salts
Frontend and backend users passwords are now stored salted in the database. The upgrade process converts them automatically so the old passwords should work as before.
- System check also in backend
The system check performed in the setup process is now available as system integrity check in backend, too.