Difference between revisions of "Potential backward compatibility issues in Joomla 3 and Joomla Platform 12.2"

From Joomla! Documentation

Line 258: Line 258:
 
*JDate::$offsets has been removed.
 
*JDate::$offsets has been removed.
 
*JDate__construct() doesn't accept an numeric value for $tz anymore.
 
*JDate__construct() doesn't accept an numeric value for $tz anymore.
 +
*JDate::_tz has been renamed to JDate::tz.
  
 
==== JUtility ====
 
==== JUtility ====

Revision as of 13:39, 26 March 2012

This documents track 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 making 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

Platform[edit]

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.

General changes[edit]

  • 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.
  • PHP 5.3 is now required
  • register_globals = on is not supported anymore
  • The name of modules now have to start with mod_
  • The module cacheing option "oldstatic" has been removed.
  • Extensions need to set the registeredurlparams now, the fall back on the URL has been removed.

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; package 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 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]

All classes listed here should now be autoloadable. Explicit requires and includes have to be modified or removed.

Classes moved to the CMS[edit]

  • JFormFieldHelpsite
  • JFormFieldMedia
  • JFormFieldMenuitem
  • JFormFieldUser
  • JHelp
  • JTableContent

Classes moved within the platform[edit]

  • JDatabaseQuery subclasses
  • JInput (and all subclasses)
  • JTable (and all subclasses)
  • JArchive (and all subclasses)

Renamed classes[edit]

  • JFTP is now called JClientFtp
  • JLDAP is now called JClientLdap
  • JWebClient is now called JApplicationWebClient

Removed classes[edit]

  • JParameter (use JForm instead)
  • JElement and its subclasses
  • JFormFieldEditors (use JFormFieldPlugins instead)
  • JHtmlImage
  • JSimpleXML
  • JPane

Changes to classes[edit]

Base classes[edit]

JFactory[edit]

  • JFactory::getXMLParser() has been removed. For RSS and Atom use cases, use JFactory::getFeedParser() instead. To read XML files or strings use JFactory::getXML().
  • 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.

Application[edit]

JApplicationHelper[edit]

  • JApplicationHelper::getPath() has been removed. No replacement.
  • JApplicationHelper::_checkPath() has been removed. No replacement.

JController[edit]

  • JController::$_acoSection has been removed.
  • JController::$_acoSectionValue has been removed.
  • JController::authorize() has been removed. Use JController::authorise() instead.
  • JController:: setAccessControl() has been removed. Use JAccess.

Archive[edit]

Adapters[edit]

  • JArchiveBzip2 does not extend JObject anymore. You must not use any of JObject's methods.
  • JArchiveGzip does not extend JObject anymore. You must not use any of JObject's methods.
  • JArchiveTar does not extend JObject anymore. You must not use any of JObject's methods.
  • JArchiveZip does not extend JObject anymore. You must not use any of JObject's methods.

Base[edit]

JObject[edit]

  • JObject::toString() has been removed. Use JObject::__toString() instead.

Client[edit]

JClientLdap (formerly JLDAP)[edit]

  • JClientLdap does not extend JObject anymore. You must not use any of JObject's methods.

Database[edit]

JDatabase had been renamed JDatabaseDriver. JDatabase is still around (but deprecated) and is the base of JDatabaseDriver, this way type hints and instance of checks keep working.

Due to lazy-connecting a connection is only opened when running a query or explicitly calling JDatabseDriver::connected(). Beware of that when checking JDatabaseDriver::connected().

JDatabase[edit]

  • JDatabase::$hasQuoted has been removed.
  • JDatabase::$quoted has been removed.
  • JDatabase::addQuoted() has been removed.
  • JDatabase::hasUTF() has been removed.
  • JDatabase::debug() has been removed. Use JDatabase::setDebug() instead.
  • JDatabase::explain() has been removed.
  • JDatabase::getEscaped() has been removed. Use JDatabase::escape() instead.
  • JDatabase::getTableFields() has been removed. Use JDatabase::getTableColumns() instead.
  • JDatabase::getTicker() has been removed. Use JDatabase::count() instead.
  • JDatabase::isQuoted() has been removed.
  • JDatabase::loadResultArray() has been removed. Use JDatabase::loadColumn() instead.
  • JDatabase::nameQuote() has been removed. Use JDatabase::quoteName() instead.
  • JDatabase::queryBatch() has been removed.

Document[edit]

JDocument[edit]

  • JDocument::setMetaData() the $sync argument has been removed. It was broken beyond repair.

JDocumentRenderer[edit]

  • JDocumentRenderer does not extend JObject anymore. You must not use any of JObject's methods.

JDocumentFeed[edit]

  • JFeedItem does not extend JObject anymore. You must not use any of JObject's methods.
  • JFeedEnclosure does not extend JObject anymore. You must not use any of JObject's methods.
  • JFeedImage does not extend JObject anymore. You must not use any of JObject's methods.

JDocumentOpenSearch[edit]

  • JOpenSearchUrl does not extend JObject anymore. You must not use any of JObject's methods.
  • JOpenSearchImage does not extend JObject anymore. You must not use any of JObject's methods.

Environment[edit]

JBrowser[edit]

  • JBrowser does not extend JObject anymore. You must not use any of JObject's methods.
  • JBrowser::setQuirk() has been removed.
  • JBrowser::hasQuirk() has been removed.
  • JBrowser::getQuirk() has been removed.
  • JBrowser::setFeature() has been removed.
  • JBrowser::hasFeature() has been removed.
  • JBrowser::getFeature() has been removed.

JRequest[edit]

  • JRequest::clean() has been removed.
  • JRequest::_cleanVar() is now protected.

JURI[edit]

  • JURI does not extend JObject anymore. You must not use any of JObject's methods.

Error[edit]

JError[edit]

  • JError::isError() has been removed. Use instance of Exception instead.

JProfiler[edit]

  • JProfiler does not extend JObject anymore. You must not use any of JObject's methods.

Filter[edit]

JFilterInput[edit]

  • JFilterInput does not extend JObject anymore. You must not use any of JObject's methods.

HTML[edit]

JHtml[edit]

  • JHtml::_includeRelativeFiles() has been removed. Use JHtml::includeRelativeFiles() instead.
  • JHtml::core() has been removed. Use JHtmlBehavior::framework() instead.
  • JHtml::script() doesn't support a string as the second parameter anymore. This used to be the path to the file in Joomla 1.5 and has been removed now.
  • JHtml::stylesheet() doesn't support a string as the second parameter anymore. This used to be the path to the file in Joomla 1.5 and has been removed now.

JHtmlAccess[edit]

  • JHtmlAccess::assetgroups() the argument $config has been removed. It was previously unused.

JHtmlBehavior[edit]

  • JHtmlBehavior::mootools() has been removed. Use JHtmlBehavior::framework instead.
  • JHtmlBehavior::noframes() the argument $location has been removed. It was previously unused.

JHtmlList[edit]

  • JHtmlList::ordering() the argument $chop has been removed. It was previously unused.
  • JHtmlList::users(), the argument $reg has been removed.

JToolBar[edit]

  • JToolBar does not extend JObject anymore. You must not use any of JObject's methods.

JButton[edit]

  • JButton does not extend JObject anymore. You must not use any of JObject's methods.

Installer[edit]

JInstaller[edit]

  • JInstaller::getOverwrite() has been removed. Use JInstaller::isOverwrite() instead.
  • JInstaller::getUpgrade() has been removed. Use JInstaller::isUpgrade() instead.

Language[edit]

JLanguage[edit]

  • JLanguage::getPluralSufficesCallback() has been removed. Use JLanguage::getPluralSuffixesCallback() instead.
  • JLanguage::_parseLanguageFiles() has been removed. Use JLangauge::parseLanguageFiles() instead.
  • JLanguage::_parseXMLLanguageFiles() has been removed. Use JLangauge::parseXMLLanguageFiles() instead.
  • JLanguage::_parseXMLLanguageFile() has been removed. Use JLangauge::parseXMLLanguageFile() instead.
  • JLanguage::loadLanguage() the argument $overwrite has been removed. It was previously unused.

Registry[edit]

JRegistry[edit]

  • JRegistry::loadXML() has been removed. Use JRegistry::loadString() instead.
  • JRegistry::loadINI() has been removed. Use JRegistry::loadString() instead.
  • JRegistry::loadJSON() has been removed. Use JRegistry::loadString() instead.
  • JRegistry::makeNameSpace() has been removed. No replacement.
  • JRegistry::getNameSpaces() has been removed. No replacement.
  • JRegistry::getValue() has been removed. Use JRegistry::get() instead.
  • JRegistry::setValue() has been removed. Use JRegistry::set() instead.
  • JRegistry::loadSetupFile() has been removed. No replacement.

JRegistryFormatINI[edit]

  • JRegistryFormatINI::stringToObject() the second argument ($option) may not be a boolean anymore.

JRegistryFormatJSON[edit]

  • JRegistryFormatJSON::stringToObject() the second argument ($option) may not be a boolean anymore.

Table[edit]

JTable[edit]

  • JTable::canDelete() has been removed.
  • JTable::toXML() has been removed.

Updater[edit]

JUpdater[edit]

  • JUpdater::arrayUnique() has been removed. Use JArrayHelper::arrayUnique() instead.

User[edit]

JAuthentication[edit]

  • The constant JAUTHENTICATE_STATUS_SUCCESS has been removed. Use JAuthentication::STATUS_SUCCESS instead.
  • The constant JAUTHENTICATE_STATUS_CANCEL has been removed. No replacement.
  • The constant JAUTHENTICATE_STATUS_FAILURE has been removed. Use JAuthentication:: STATUS_FAILURE instead.

JUser[edit]

  • JUser::getParameters() has been removed.
  • Juser::authorisedLevels() has been removed. Use JUser::getAuthorisedViewLevels() instead.
  • Juser::authorize() has been removed. Use JUser::authorise() instead.
  • JUser::$usertype has been removed.

Utility[edit]

JDate[edit]

  • JDate::toMysql() has been removed. Use JDate::toSql() instead.
  • JDate::toFormat() has been removed. Use JDate::format() instead.
  • JDate::setOffset() has been removed.
  • JDate::$offsets has been removed.
  • JDate__construct() doesn't accept an numeric value for $tz anymore.
  • JDate::_tz has been renamed to JDate::tz.

JUtility[edit]

  • JUtility::sendMail() has been removed. Use JMail::sendMail() instead.
  • JUtility::sendAdminMail() has been removed. Use JMail:: sendAdminMail() instead.
  • JUtility::getHash() has been removed. Use JApplication::getHash() instead.
  • JUtility::getToken() has been removed. Use JSession::getFormToken() instead.
  • JUtility::isWinOS() has been removed. Use JApplication::isWinOS() instead.
  • JUtility::dump() has been removed. No replacement.
  • JUtility::array_unshift_ref() has been removed. No replacement.
  • JUtility:: array_unshift_ref() has been removed. No replacement.

JXMLElement[edit]

  • JXMLElement::data() has been removed
  • JXMLElement::getAttribute() has been removed. Use SimpleXMLElement::attributes() instead.

JavaScript[edit]

  • Compatibility with MooTools 1.2 has been removed
  • Forms that have name="adminForm" now also require id="adminForm"
  • checkAll() has been removed. Use Joomla.checkAll() instead.
  • isChecked() has been removed. Use Joomla.isChecked() instead.
  • popupWindow() has been removed. Use Joomla.popupWindow() instead.
  • tableOrdering() has been removed. Use Joomla.tableOrdering() instead.

CMS[edit]

Changes to classes[edit]

Removed classes[edit]

  • All classes extending JElement have been removed

Help[edit]

JHelp[edit]

  • JHelp::createSiteList() the argument $selected has been removed. It was unused.