Potential backward compatibility issues in Joomla 3 and Joomla Platform 12.2

From Joomla! Documentation

Revision as of 12:28, 29 August 2012 by Realityking (talk | contribs)
Quill icon.png
Content is Incomplete

This article or section is incomplete, which means it may be lacking information. You are welcome to assist in its completion by editing it as well. If this article or section has not been edited in several days, please consider helping complete the content.
This article was last edited by Realityking (talk| contribs) 9 years ago. (Purge)

This document tracks potential backward compatibility issues for Joomla 3.0 and Joomla Platform 12.1, which is included in Joomla 3.0. Listed are issues which potentially break extensions.

Please help make this document complete.

The base of this comparison is Joomla 2.5/Platform 11.4.

Backwards compatibility issues were also tracked for Joomla 2.5: Potential backward compatibility issues in Joomla 2.5 and Joomla Platform 11.4


The platform removed a larger number of deprecated classes and methods. For most extensions written for Joomla 2.5, the required changes should be reasonably small. Note that there are still deprecated classes in the platform that will be removed in future versions -- developers should stop using them where possible.

Updated System Requirements[edit]

The system requirements have changed in the following points:

  • PHP 5.3.1
  • register_globals must be off
  • magic_quotes_gpc must be off

General changes[edit]

  • Almost all functions, methods, members and classed marked as deprecated in Platform 11.4 have been removed. They won't be listed in this document.
  • Appending ?no_html to an URL to get a RAW view is not supported anymore (this was an old Joomla 1.0 feature).
  • The DS constant has been removed. If you really need it you can use DIRECTORY_SEPARATOR instead.
  • Many more function arguments have been type hinted, including existing classes. Make sure you're always passing values of the correct type.
  • The name of modules now have to start with "mod_".
  • Extensions need to set the registeredurlparams now, the fall back on the URL has been removed.
  • Some cookies are only accessible through HTTP (not via JavaScript). For example; the session cookie.
  • Due to upcoming changes to the MVC implementation in the platform, JModel, JView, and JController are re-used as the names of the new interfaces. For now, use JModelLegacy, JViewLegacy and JControllerLegacy instead.
  • JFolder and JFile now require you to do your own jimport statement (You always had to do that, just before it was rather likely something else had loaded them before)

Changes to extension installation[edit]

  • Use of the <install> base tag (from 1.5) is no longer supported; use <extension> instead.
  • Suppport for install_script and uninstall_script, and the methods com_install and com_uninstall in these scripts, has been removed; use scriptfile instead.
  • In language extensions, support for client="both" has been removed; prepare each client as a separate extension and optionally bundle them as a package extension instead.
  • File paths for plugins no longer support the old 1.5 method (i.e. plugins/system/cache.php); each plugin must now be in its own folder (i.e. plugins/system/cache/cache.php).

Changes to Components[edit]

  • In admin components the admin.*.php and toolbar.*.php are not automatically included anymore (this was a Joomla 1.0 legacy feature).

Moved files[edit]

A number of platform classes have moved to the legacy or cms folder. All of the classes moved are now autoloadable. Also a number of classes moved within the platform to facilitate autoloading. Unless you tried to include files with a require_once you should be fine (jimport() fails silently).

Removed classes and methods[edit]

With very few exceptions (notably JRequest and JError) all classes and methods that were marked as @deprecated 12.1 or @dperecated 3.0 have been removed.

There are also a few methods which haven't been marked as deprecated but were still removed. These are listed here:


  • JFactory::_createConfig() has been removed. Use JFactory::createConfig() instead.
  • JFactory::_createSession() has been removed. Use JFactory::createSession() instead.
  • JFactory::_createDbo() has been removed. Use JFactory::createDbo() instead.
  • JFactory::_createMailer() has been removed. Use JFactory::createMailer() instead.
  • JFactory::_createDocument() has been removed. Use JFactory::createDocument() instead.

Changes to classes[edit]

Extending JObject[edit]

The following classes don't extend JObject anymore:

  • JArchiveBzip2
  • JArchiveGzip
  • JArchiveTar
  • JArchiveZip
  • JClientLdap
  • JDocumentRenderer
  • JFeedItem
  • JFeedEnclosure
  • JFeedImage
  • JOpenSearchUrl
  • JOpenSearchImage
  • JBrowser
  • JUri
  • JProfiler
  • JFilterInput
  • JPaginationObject
  • JPagination (the get() and set() methods are retained for backwards compatibility)
  • JToolbar
  • JToolbarButton (former JButton)
  • JLanguage


  • JDocumentXml::$_name has been renamed to JDocumentXml::$name.


  • JBrowser::$_majorVersion has been renamed to JBrowser::$majorVersion.
  • JBrowser::$_minorVersion has been renamed to JBrowser::$minorVersion.
  • JBrowser::$_browser has been renamed to JBrowser::$browser.
  • JBrowser::$_agent has been renamed to JBrowser::$agent.
  • JBrowser::$_lowerAgent has been renamed to JBrowser::$lowerAgent.
  • JBrowser::$_accept has been renamed to JBrowser::$accept.
  • JBrowser::$_accept_parsed has been renamed to JBrowser::$acceptParsed.
  • JBrowser::$_platform has been renamed to JBrowser::$platform.
  • JBrowser::$_robots has been renamed to JBrowser::$robots.
  • JBrowser::$_mobile has been renamed to JBrowser::$mobile.
  • JBrowser::$_images has been renamed to JBrowser::$images.


  • JUri::$_uri has been renamed to JUri::$uri.
  • JUri::$_scheme has been renamed to JUri::$scheme.
  • JUri::$_host has been renamed to JUri::$host.
  • JUri::$_port has been renamed to JUri::$port.
  • JUri::$_user has been renamed to JUri::$user.
  • JUri::$_pass has been renamed to JUri::$pass.
  • JUri::$_path has been renamed to JUri::$path.
  • JUri::$_query has been renamed to JUri::$query.
  • JUri::$_fragment has been renamed to JUri::$fragment.
  • JUri::$_vars has been renamed to JUri::$vars.


  • JStream::$_fh has been renamed to JStream::$fh.
  • JStream::$_filesize has been renamed to JStream::$filesize.
  • JStream::$_context has been renamed to JStream::$context.
  • JStream::$_contextOptions has been renamed to JStream::$contextOptions.
  • JStream::$_openmode has been renamed to JStream::$openmode.


  • JStream::$_currentstring has been renamed to JStream::$currentString.
  • JStream::$_path has been renamed to JStream::$path.
  • JStream::$_mode has been renamed to JStream::$mode.
  • JStream::$_options has been renamed to JStream::$options.
  • JStream::$_opened_path has been renamed to JStream::$openedPath.
  • JStream::$_pos has been renamed to JStream::$pos.
  • JStream::$_len has been renamed to JStream::$len.
  • JStream::$_stat has been renamed to JStream::$stat.


  • JHtmlSelect::$_optionDefaults has been renamed to JHtmlSelect::$optionDefaults.


  • JPagination::$_viewall has been renamed to JPagination::$viewall.
  • JPagination::$_additionalUrlParams has been renamed to JPagination::$additionalUrlParams.


  • JInstaller::$_paths has been renamed to JInstaller::$paths.
  • JInstaller::$_upgrade has been renamed to JInstaller::$upgrade.
  • JInstaller::$_overwrite has been renamed to JInstaller::$overwrite.
  • JInstaller::$_stepStack has been renamed to JInstaller::$stepStack.


  • JInstallerLanguage::$_core as been renamed to JInstallerLanguage::$core.


  • JLanguage::loadLanguage() the argument $overwrite has been removed. It was previously unused.
  • JLanguage::parseXMLLanguageFiles() has been removed.


  • JSessionStorageDatabase::$_data has been renamed to JSessionStorageDatabase::$data.

JavaScript changes[edit]

  • Compatibility with MooTools 1.2 has been removed.
  • Forms that have name="adminForm" now also require id="adminForm" or custom handling.


General changes[edit]

  • JUtility is not always loaded. If you need it you have to add jimport('joomla.utilities.utility'); to your code.

Changes to classes[edit]

Component Classes[edit]

  • MenusModelItem::getItem() no longer returns a JObject but a stdClass.