Skip to content
Merged
Show file tree
Hide file tree
Changes from 89 commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
6d4e040
First rework of update layouts
bembelimen Jul 4, 2021
22eafde
Update precheck
bembelimen Jul 4, 2021
19f8c4f
Fix order of empty pages
bembelimen Jul 4, 2021
8688970
Add reinstall and noupdate info screens
bembelimen Jul 5, 2021
d678e6a
Add update channel info
bembelimen Jul 5, 2021
f5e0f91
Add update channel info link
bembelimen Jul 5, 2021
848f97f
Add JS for (re-) install
bembelimen Jul 5, 2021
3ae5ef2
Submit update form
bembelimen Jul 5, 2021
0f58382
fix broken query selector
bembelimen Jul 5, 2021
260fd1b
Remove useless if
bembelimen Jul 5, 2021
cc074c9
Fix notice if download data is not available
bembelimen Jul 5, 2021
dad900b
Merge branch '4.0-dev' of github.com:joomla/joomla-cms into pre-updat…
bembelimen Jul 5, 2021
016231d
Add update confirm checkbox
bembelimen Jul 5, 2021
3a920c4
Add backup confirmation checkbox
bembelimen Jul 5, 2021
de6e404
Add missing form
bembelimen Jul 5, 2021
e9fe3ee
Update pre-update-check view
bembelimen Jul 5, 2021
1e96e64
Add pre-update-check headline
bembelimen Jul 5, 2021
61e4e82
Don't go to update view if critical PHP options are there
bembelimen Jul 5, 2021
22fded1
add preupdatecheck id to target JS
bembelimen Jul 5, 2021
07be14e
Add warning messages
bembelimen Jul 6, 2021
9553037
Offer update download when available
bembelimen Jul 8, 2021
5c6dacd
Add icon to precheck headlines
bembelimen Jul 8, 2021
8da81d0
Move inline events to JS file
bembelimen Jul 9, 2021
1a00c85
Move critical plugin criteria to model
bembelimen Jul 9, 2021
33b1904
Add confirm box for upload
bembelimen Jul 10, 2021
529287f
Add back button to update layout
bembelimen Jul 10, 2021
7818799
Improve precheck infos
bembelimen Jul 10, 2021
7bf2c55
Update JS
bembelimen Jul 10, 2021
4eec5d3
Make a string more personl
bembelimen Jul 10, 2021
005fdd1
Remove unused files
bembelimen Jul 10, 2021
34c2a10
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/se…
bembelimen Jul 11, 2021
1b87b04
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/up…
bembelimen Jul 11, 2021
ddee50a
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 11, 2021
53e42a9
Update administrator/components/com_joomlaupdate/src/View/Joomlaupdat…
bembelimen Jul 11, 2021
6c66918
Update administrator/components/com_joomlaupdate/src/View/Joomlaupdat…
bembelimen Jul 11, 2021
fd38cb6
Update administrator/components/com_joomlaupdate/src/View/Joomlaupdat…
bembelimen Jul 11, 2021
a8d9b4a
Re-add complete message
bembelimen Jul 11, 2021
b95b49d
Move self check to model
bembelimen Jul 12, 2021
b7a8249
Fix JS error
bembelimen Jul 12, 2021
cb29130
Add form to allow update check in pre-check view
bembelimen Jul 12, 2021
8dbeb9e
Add files to delete list
bembelimen Jul 12, 2021
b54df04
Merge branch '4.0/pre-updatecheck' of github.com:bembelimen/joomla-cm…
bembelimen Jul 12, 2021
7aeb41c
Update min filesize to 32MB
bembelimen Jul 12, 2021
7de9b7b
Remove comment
bembelimen Jul 12, 2021
28a14b8
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/no…
bembelimen Jul 12, 2021
46a97dd
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
14e6106
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/re…
bembelimen Jul 12, 2021
e285bd3
lint fix
bembelimen Jul 12, 2021
f07c0cc
Merge branch '4.0/pre-updatecheck' of github.com:bembelimen/joomla-cm…
bembelimen Jul 12, 2021
6298661
lint fix
bembelimen Jul 12, 2021
66b6d00
Move table description to caption
bembelimen Jul 12, 2021
f790f0d
Make icons fixed width
bembelimen Jul 12, 2021
fa1cc04
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
83931d3
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
56beb03
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
2076737
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
8f0275c
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
341f808
Update administrator/components/com_joomlaupdate/tmpl/upload/default.php
bembelimen Jul 12, 2021
893c722
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
35cadac
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
bfb4c22
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
557c3dd
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
266a84e
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
59ab34e
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
0644b1c
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
d7a064a
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/pr…
bembelimen Jul 12, 2021
03b5a3c
Merge branch '4.0/pre-updatecheck' of github.com:bembelimen/joomla-cm…
bembelimen Jul 12, 2021
82b727b
Change hourglass icon to spinner
bembelimen Jul 12, 2021
2904a48
Fix spinner icon
bembelimen Jul 12, 2021
96f685d
Improve popover + warning of critical plugins
bembelimen Jul 12, 2021
3dc7d4f
Convert question to statement
bembelimen Jul 12, 2021
07357ad
Enable update button when no extensions are available
bembelimen Jul 12, 2021
6415e04
Update administrator/components/com_joomlaupdate/src/View/Joomlaupdat…
bembelimen Jul 12, 2021
d11fe7a
Update administrator/components/com_installer/src/Model/WarningsModel…
bembelimen Jul 12, 2021
acfc39d
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
ae21f74
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
44acab1
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
a75f72c
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
adcc0fb
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
0ff509f
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
f0612fb
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
b1566f1
Update administrator/language/en-GB/com_joomlaupdate.ini
bembelimen Jul 12, 2021
17f2e88
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/up…
bembelimen Jul 12, 2021
66f7534
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/re…
bembelimen Jul 12, 2021
a7d75c3
Update administrator/components/com_joomlaupdate/tmpl/joomlaupdate/no…
bembelimen Jul 12, 2021
f999ec6
Update administrator/components/com_joomlaupdate/src/View/Upload/Html…
bembelimen Jul 12, 2021
2926dc8
Set correct memory limit
bembelimen Jul 12, 2021
7ff93a0
Merge branch '4.0/pre-updatecheck' of github.com:bembelimen/joomla-cm…
bembelimen Jul 12, 2021
9a17a98
Update language information
bembelimen Jul 12, 2021
259939f
Update administrator/components/com_installer/src/Model/WarningsModel…
bembelimen Jul 12, 2021
8565055
Improve details button
bembelimen Jul 12, 2021
a21cd66
Merge branch '4.0/pre-updatecheck' of github.com:bembelimen/joomla-cm…
bembelimen Jul 12, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions administrator/components/com_admin/script.php
Original file line number Diff line number Diff line change
Expand Up @@ -1395,6 +1395,14 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false)
'/administrator/components/com_joomlaupdate/helpers/select.php',
'/administrator/components/com_joomlaupdate/joomlaupdate.php',
'/administrator/components/com_joomlaupdate/models/default.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default.php',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This list is grouped by version as well as sorted alphabetically so these files need to be moved to the section beginning // 4.0 from RC 3 to RC 4 around line 5870

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, they need to go to section "// From 3.10 to 4.0" because sections are not named by when the code was added to script.php but by the versions which are compared with the tool.

If after the removal of the files the parent folder(s) are empty, the folders need to be removed, too. Folder list has same sections but is ordered in reverse alphabetical order.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wilsonge If I get pinged after this PR is merged but before RC 4 is built, I can run the tool to generate the lists and make a quick PR for updating script.php.

'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_nodownload.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_noupdate.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_preupdatecheck.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_reinstall.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_update.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_updatemefirst.php',
'/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_upload.php',
'/administrator/components/com_joomlaupdate/views/default/tmpl/complete.php',
'/administrator/components/com_joomlaupdate/views/default/tmpl/default.php',
'/administrator/components/com_joomlaupdate/views/default/tmpl/default.xml',
Expand Down
36 changes: 17 additions & 19 deletions administrator/components/com_installer/src/Model/WarningsModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,11 @@ public function getItems()
return $messages;
}

$messages = array();
$messages = [];

// 16MB
$minMemory = 16 * 1024 * 1024;

$file_uploads = ini_get('file_uploads');

if (!$file_uploads)
Expand All @@ -111,13 +115,10 @@ public function getItems()
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET'),
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC'));
}
else
elseif (!is_writable($upload_dir))
{
if (!is_writable($upload_dir))
{
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'),
'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir));
}
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'),
'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir));
}

$tmp_path = Factory::getApplication()->get('tmp_path');
Expand All @@ -127,26 +128,23 @@ public function getItems()
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET'),
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC'));
}
else
elseif (!is_writable($tmp_path))
{
if (!is_writable($tmp_path))
{
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE'),
'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC', $tmp_path));
}
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE'),
'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC', $tmp_path));
}

$memory_limit = $this->return_bytes(ini_get('memory_limit'));

if ($memory_limit < (8 * 1024 * 1024) && $memory_limit != -1)
if ($memory_limit < $minMemory && $memory_limit != -1)
{
// 8MB
// 16MB
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN'),
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC'));
}
elseif ($memory_limit < (16 * 1024 * 1024) && $memory_limit != -1)
elseif ($memory_limit < ($minMemory * 1.5) && $memory_limit != -1)
{
// 16MB
// 24MB
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN'),
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC'));
}
Expand All @@ -160,13 +158,13 @@ public function getItems()
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOSTDESC'));
}

if ($post_max_size < (8 * 1024 * 1024)) // 8MB
if ($post_max_size < $minMemory)
{
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZE'),
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZEDESC'));
}

if ($upload_max_filesize < (8 * 1024 * 1024)) // 8MB
if ($upload_max_filesize < $minMemory)
{
$messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE'),
'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZEDESC'));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ public function display($cachable = false, $urlparams = false)
// Get and render the view.
if ($view = $this->getView($vName, $vFormat))
{
// Only super user can access file upload
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought only a super user could access the entire component? If so then is this additional check needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's true for the backend (I'm not sure why the check is the way it is). So e.g. in a CLI context one could access without core.admin access. I just took over the permission check.

if ($view == 'upload' && !$this->app->getIdentity()->authorise('core.admin', 'com_joomlaupdate'))
{
$this->app->redirect(Route::_('index.php?option=com_joomlaupdate', true));
}

// Get the model for the view.
/** @var \Joomla\Component\Joomlaupdate\Administrator\Model\UpdateModel $model */
$model = $this->getModel('Update');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,69 @@ public function refreshUpdates($force = false)
}
}

/**
* Makes sure that the Joomla! Update Component Update is in the database and check if there is a new version.
*
* @return boolean True if there is an update else false
*
* @since __DEPLOY_VERSION__
*/
public function getCheckForSelfUpdate()
{
$db = $this->getDbo();

$query = $db->getQuery(true)
->select($db->quoteName('extension_id'))
->from($db->quoteName('#__extensions'))
->where($db->quoteName('element') . ' = ' . $db->quote('com_joomlaupdate'));
$db->setQuery($query);

try
{
// Get the component extension ID
$joomlaUpdateComponentId = $db->loadResult();
}
catch (\RuntimeException $e)
{
// Something is wrong here!
$joomlaUpdateComponentId = 0;
Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
}

// Try the update only if we have an extension id
if ($joomlaUpdateComponentId != 0)
{
// Always force to check for an update!
$cache_timeout = 0;

$updater = Updater::getInstance();
$updater->findUpdates($joomlaUpdateComponentId, $cache_timeout, Updater::STABILITY_STABLE);

// Fetch the update information from the database.
$query = $db->getQuery(true)
->select('*')
->from($db->quoteName('#__updates'))
->where($db->quoteName('extension_id') . ' = :id')
->bind(':id', $joomlaUpdateComponentId, ParameterType::INTEGER);
$db->setQuery($query);

try
{
$joomlaUpdateComponentObject = $db->loadObject();
}
catch (\RuntimeException $e)
{
// Something is wrong here!
$joomlaUpdateComponentObject = null;
Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
}

return !empty($joomlaUpdateComponentObject);
}

return false;
}

/**
* Returns an array with the Joomla! update information.
*
Expand Down Expand Up @@ -1354,7 +1417,7 @@ public function getNonCoreExtensions()
*
* @since 3.10.0
*/
public function getNonCorePlugins($folderFilter = array())
public function getNonCorePlugins($folderFilter = ['system','user','authentication','actionlog','twofactorauth'])
{
$db = $this->getDbo();
$query = $db->getQuery(true);
Expand Down
Loading