- Posts: 107
- Thank you received: 10
Upgrade your extension from Joomla 3.9 to Joomla 4
- Support Team
-
Topic Author
- Offline
- Moderator
-
Less
More
3 years 11 months ago - 3 years 11 months ago #2169
by Support Team
Upgrade your extension from Joomla 3.9 to Joomla 4 was created by Support Team
Documentation and tips
First of all, here are some publications concerning the extension migration from J3 to J4:
docs.joomla.org/Planning_for_Mini-Migrat...mla_3.10.x_to_4.x/en
docs.joomla.org/Potential_backward_compa...ssues_in_Joomla_4/en
docs.joomla.org/Potential_backward_compa...y_issues_in_Joomla_4
developer.joomla.org/news/764-joomla-3-10-and-joomla-4-0.html
JApplication
isAdmin () deprecated 4.0 Use isClient ('administrator') instead.
Replace
by
JError
To replace
JError :: raiseWarning ('',
through
JFactory :: getApplication () -> enqueueMessage (
and add 'WARNING' as the last parameter.
JDispatcher
Deprecated class placeholder. You should use JEventDispatcher instead
The CMS 'Event classes will be replaced with the `joomla / event` package
Currently (example):
Remove
replace
by
JRegistry
JRegistry :: getInstance: if the object is to pass the information from the model to the view, retrieve the information in another way (getItem and getState for example)
JViewLegacy
Replace
and
by:
JDataBase
To replace :
through
Idem it is necessary to replace the $ db-> getErrorNum () and the $ db-> getErrorMsg () by an exception handling as above.
For example, replace:
$ db-> setQuery ($ query);
$ results = $ db-> loadObjectList ();
if ($ db-> getErrorNum ()) {
JFactory :: getApplication () -> enqueueMessage ($ db-> getErrorMsg (), 'WARNING');
return false;
}
through
$ db-> setQuery ($ query);
try {
$ results = $ db-> loadObjectList ();
} catch (Exception $ e) {
JFactory :: getApplication () -> enqueueMessage (JText :: sprintf ('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $ e-> getCode (), $ e-> getMessage ()), 'ERROR');
return false;
}
JHtml
replace JHtml :: _ ('behavior.formvalidation');
by JHtml :: _ ('behavior.formvalidator');
JHtml :: _ ('behavior.tooltip'); // no longer exists
JForm
Use renderField () instead of getControlGroup
Use renderFieldset () instead of getControlGroups
Example :
Look for: form-> getControlGroup (
and replace with form-> renderField (
To install
Replace $ parent-> get ('manifest') -> version
by $ parent-> getManifest () -> version
First of all, here are some publications concerning the extension migration from J3 to J4:
docs.joomla.org/Planning_for_Mini-Migrat...mla_3.10.x_to_4.x/en
docs.joomla.org/Potential_backward_compa...ssues_in_Joomla_4/en
docs.joomla.org/Potential_backward_compa...y_issues_in_Joomla_4
developer.joomla.org/news/764-joomla-3-10-and-joomla-4-0.html
JApplication
isAdmin () deprecated 4.0 Use isClient ('administrator') instead.
Replace
Code:
JFactory :: getApplication () -> isAdmin ()
Code:
JFactory :: getApplication () -> isClient ('administrator')
JError
To replace
JError :: raiseWarning ('',
through
JFactory :: getApplication () -> enqueueMessage (
and add 'WARNING' as the last parameter.
JDispatcher
Deprecated class placeholder. You should use JEventDispatcher instead
The CMS 'Event classes will be replaced with the `joomla / event` package
Currently (example):
Code:
$ dispatcher = JDispatcher :: getInstance ();
$ result = $ dispatcher-> trigger ('onContentBeforeSave', array ($ this -> _ context, & $ table, $ isNew, $ data));
Remove
Code:
$ dispatcher = JDispatcher :: getInstance ();
replace
Code:
$ result = $ dispatcher-> trigger ('onContentBeforeSave', array ($ this -> _ context, & $ table, $ isNew, $ data));
by
Code:
$ result = Factory :: getApplication () -> triggerEvent ('onContentBeforeSave', array ($ this -> _ context, & $ table, $ isNew, $ data));
JRegistry
JRegistry :: getInstance: if the object is to pass the information from the model to the view, retrieve the information in another way (getItem and getState for example)
JViewLegacy
Replace
Code:
$ this-> assign ('P1', $ P2)
Code:
$ this-> assignRef ('P1', $ P2)
Code:
$ this-> P1 = $ P2;
JDataBase
To replace :
Code:
if (! $ db-> query ()) {
Factory :: getApplication () -> enqueueMessage ($ db-> getErrorMsg (), 'ERROR');
return false;
}
through
Code:
try {
$ db-> execute ();
} catch (Exception $ e) {
Factory :: getApplication () -> enqueueMessage (JText :: sprintf ('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $ e-> getCode (), $ e-> getMessage ()), 'ERROR');
return false;
}
Idem it is necessary to replace the $ db-> getErrorNum () and the $ db-> getErrorMsg () by an exception handling as above.
For example, replace:
$ db-> setQuery ($ query);
$ results = $ db-> loadObjectList ();
if ($ db-> getErrorNum ()) {
JFactory :: getApplication () -> enqueueMessage ($ db-> getErrorMsg (), 'WARNING');
return false;
}
through
$ db-> setQuery ($ query);
try {
$ results = $ db-> loadObjectList ();
} catch (Exception $ e) {
JFactory :: getApplication () -> enqueueMessage (JText :: sprintf ('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $ e-> getCode (), $ e-> getMessage ()), 'ERROR');
return false;
}
JHtml
replace JHtml :: _ ('behavior.formvalidation');
by JHtml :: _ ('behavior.formvalidator');
JHtml :: _ ('behavior.tooltip'); // no longer exists
JForm
Use renderField () instead of getControlGroup
Use renderFieldset () instead of getControlGroups
Example :
Look for: form-> getControlGroup (
and replace with form-> renderField (
To install
Replace $ parent-> get ('manifest') -> version
by $ parent-> getManifest () -> version
Last edit: 3 years 11 months ago by Support Team.
Please Log in or Create an account to join the conversation.
- Support Team
-
Topic Author
- Offline
- Moderator
-
Less
More
- Posts: 107
- Thank you received: 10
3 years 11 months ago - 3 years 11 months ago #2170
by Support Team
Replied by Support Team on topic Upgrade your extension from Joomla 3.9 to Joomla 4
Some other tips:
error:
Call to undefined method Joomla\CMS\Filesystem\File::read()
change
into
or
Class 'JRequest' not found
into
or
into
error:
500 behavior::framework not found.
into
or some other example
into
error:
Call to undefined method Joomla\CMS\Filesystem\File::read()
change
Code:
JFile::read
Code:
jimport
Code:
file_get_contents
Class 'JRequest' not found
Code:
quote( JRequest::getVar('id') ));
Code:
quote( JFactory::getApplication()->input->post->get('id')));
or
Code:
$limitstart = JRequest::getVar('limitstart', 0, '', 'int');
$limitstart = $this->input->get('limitstart', 0, 'int');
error:
500 behavior::framework not found.
Code:
JHtml::_('behavior.framework', true);
Code:
JHtml::_('jquery.framework', true);
or some other example
Code:
JHtml::_('behavior.modal');
Code:
JHtml::_('bootstrap.modal');
Last edit: 3 years 11 months ago by Support Team.
Please Log in or Create an account to join the conversation.
- Genevaheipt
- Offline
- New Member
-
Less
More
- Posts: 4
- Thank you received: 0
3 days 10 hours ago #2425
by Genevaheipt
Replied by Genevaheipt on topic microsoft defender antivirus
We have thoroughly reviewed and evaluated the top
mcafee antivirus protection
to provide our readers with a curated list of the most trusted providers. Safeguard your personal data and computer from cyber threats choose one of the leading antivirus solutions from the table below!
Please Log in or Create an account to join the conversation.