Skip to content

Commit

Permalink
improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
andrepereiradasilva committed Apr 7, 2016
1 parent ee7fcc0 commit d2343e3
Showing 1 changed file with 81 additions and 62 deletions.
143 changes: 81 additions & 62 deletions administrator/components/com_installer/models/updatesites.php
Original file line number Diff line number Diff line change
Expand Up @@ -152,53 +152,53 @@ public function delete($ids = array())

$count = 0;

// Gets the update site names.
$query = $db->getQuery(true)
->select($db->qn(array('update_site_id', 'name')))
->from($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' IN (' . implode(', ', $ids) . ')');
$db->setQuery($query);
$updateSitesNames = $db->loadObjectList('update_site_id');

// Gets Joomla core update sites Ids.
$joomlaUpdateSitesIds = $this->getJoomlaUpdateSitesIds();

// Enable the update site in the table and store it in the database
foreach ($ids as $i => $id)
{
// Gets the update site name.
$query = $db->getQuery(true);
$query->select($db->qn('name'))
->from($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$name = $db->loadResult();

// Don't allow to delete Joomla Core update sites.
if (in_array((int) $id, array(1, 2, 3, 4)))
if (in_array((int) $id, $joomlaUpdateSitesIds))
{
$app->enqueueMessage(JText::sprintf('COM_INSTALLER_MSG_UPDATESITES_DELETE_CANNOT_DELETE', $name), 'error');
$app->enqueueMessage(JText::sprintf('COM_INSTALLER_MSG_UPDATESITES_DELETE_CANNOT_DELETE', $updateSitesNames[$id]->name), 'error');
continue;
}
else

// Delete the update site from all tables.
try
{
try
{
// Delete from update_sites table
$query = $db->getQuery(true);
$query->delete($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$db->execute();

// Delete from update_sites_extensions table
$query = $db->getQuery(true);
$query->delete($db->qn('#__update_sites_extensions'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$db->execute();

// Delete from updates table
$query = $db->getQuery(true);
$query->delete($db->qn('#__updates'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$db->execute();

$count++;
}
catch (RuntimeException $e)
{
$app->enqueueMessage(JText::sprintf('COM_INSTALLER_MSG_UPDATESITES_DELETE_ERROR', $name, $e->getMessage()), 'error');
}
$query = $db->getQuery(true)
->delete($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$db->execute();

$query = $db->getQuery(true)
->delete($db->qn('#__update_sites_extensions'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$db->execute();

$query = $db->getQuery(true)
->delete($db->qn('#__updates'))
->where($db->qn('update_site_id') . ' = ' . (int) $id);
$db->setQuery($query);
$db->execute();

$count++;
}
catch (RuntimeException $e)
{
$app->enqueueMessage(JText::sprintf('COM_INSTALLER_MSG_UPDATESITES_DELETE_ERROR', $updateSitesNames[$id]->name, $e->getMessage()), 'error');
}
}

Expand Down Expand Up @@ -262,29 +262,30 @@ public function rebuild()
}
}

$count = 0;
// Gets Joomla core update sites Ids.
$joomlaUpdateSitesIds = implode(', ', $this->getJoomlaUpdateSitesIds());

// Delete from update_sites table (except joomla core update sites).
$query = $db->getQuery(true);
$query->delete($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' NOT IN (1, 2, 3, 4)');
// Delete from all tables (except joomla core update sites).
$query = $db->getQuery(true)
->delete($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' NOT IN (' . $joomlaUpdateSitesIds . ')');
$db->setQuery($query);
$db->execute();

// Delete from update_sites_extensions table (except joomla core update sites).
$query = $db->getQuery(true);
$query->delete($db->qn('#__update_sites_extensions'))
->where($db->qn('update_site_id') . ' NOT IN (1, 2, 3, 4)');
$query = $db->getQuery(true)
->delete($db->qn('#__update_sites_extensions'))
->where($db->qn('update_site_id') . ' NOT IN (' . $joomlaUpdateSitesIds . ')');
$db->setQuery($query);
$db->execute();

// Delete from updates table (except joomla core update sites).
$query = $db->getQuery(true);
$query->delete($db->qn('#__updates'))
->where($db->qn('update_site_id') . ' NOT IN (1, 2, 3, 4)');
$query = $db->getQuery(true)
->delete($db->qn('#__updates'))
->where($db->qn('update_site_id') . ' NOT IN (' . $joomlaUpdateSitesIds . ')');
$db->setQuery($query);
$db->execute();

$count = 0;

// Search for updateservers in manifest files inside the folders to search.
foreach ($pathsToSearch as $extensionFolderPath)
{
Expand Down Expand Up @@ -318,18 +319,15 @@ public function rebuild()
$db->setQuery($query);
$eid = (int) $db->loadResult();

if ($eid)
if ($eid && $manifest->updateservers)
{
if ($manifest->updateservers)
{
// Load the extension plugin (if not loaded yet).
$plugin = JPluginHelper::importPlugin('extension');
// Load the extension plugin (if not loaded yet).
$plugin = JPluginHelper::importPlugin('extension', 'joomla');

// Fire the onExtensionAfterUpdate
JEventDispatcher::getInstance()->trigger('onExtensionAfterUpdate', array('installer' => $tmpInstaller, 'eid' => $eid));
// Fire the onExtensionAfterUpdate
JEventDispatcher::getInstance()->trigger('onExtensionAfterUpdate', array('installer' => $tmpInstaller, 'eid' => $eid));

$count++;
}
$count++;
}
}
}
Expand All @@ -346,6 +344,27 @@ public function rebuild()
}
}

/**
* Fetch the Joomla update sites ids.
*
* @return array Array with joomla core update site ids.
*
* @since __DEPLOY_VERSION__
*/
protected function getJoomlaUpdateSitesIds()
{
$db = JFactory::getDbo();

// Fetch the Joomla core Joomla update sites ids.
$query = $db->getQuery(true);
$query->select($db->qn('update_site_id'))
->from($db->qn('#__update_sites'))
->where($db->qn('location') . ' LIKE \'%update.joomla.org%\'');
$db->setQuery($query);

return $db->loadColumn();
}

/**
* Method to get the database query
*
Expand Down

0 comments on commit d2343e3

Please sign in to comment.