You've already forked joomla_test
first commit
This commit is contained in:
247
administrator/components/com_installer/models/database.php
Normal file
247
administrator/components/com_installer/models/database.php
Normal file
@ -0,0 +1,247 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_installer
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
JLoader::register('InstallerModel', __DIR__ . '/extension.php');
|
||||
JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php');
|
||||
|
||||
/**
|
||||
* Installer Manage Model
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_installer
|
||||
* @since 1.6
|
||||
*/
|
||||
class InstallerModelDatabase extends InstallerModel
|
||||
{
|
||||
protected $_context = 'com_installer.discover';
|
||||
|
||||
/**
|
||||
* Method to auto-populate the model state.
|
||||
*
|
||||
* Note. Calling getState in this method will result in recursion.
|
||||
*
|
||||
* @param string $ordering An optional ordering field.
|
||||
* @param string $direction An optional direction (asc|desc).
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.6
|
||||
*/
|
||||
protected function populateState($ordering = null, $direction = null)
|
||||
{
|
||||
$app = JFactory::getApplication();
|
||||
$this->setState('message', $app->getUserState('com_installer.message'));
|
||||
$this->setState('extension_message', $app->getUserState('com_installer.extension_message'));
|
||||
$app->setUserState('com_installer.message', '');
|
||||
$app->setUserState('com_installer.extension_message', '');
|
||||
parent::populateState('name', 'asc');
|
||||
}
|
||||
|
||||
/**
|
||||
* Fixes database problems
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function fix()
|
||||
{
|
||||
if (!$changeSet = $this->getItems())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$changeSet->fix();
|
||||
$this->fixSchemaVersion($changeSet);
|
||||
$this->fixUpdateVersion();
|
||||
$installer = new JoomlaInstallerScript;
|
||||
$installer->deleteUnexistingFiles();
|
||||
$this->fixDefaultTextFilters();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the changeset object
|
||||
*
|
||||
* @return JSchemaChangeset
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
$folder = JPATH_ADMINISTRATOR . '/components/com_admin/sql/updates/';
|
||||
|
||||
try
|
||||
{
|
||||
$changeSet = JSchemaChangeset::getInstance(JFactory::getDbo(), $folder);
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
JFactory::getApplication()->enqueueMessage($e->getMessage(), 'warning');
|
||||
return false;
|
||||
}
|
||||
return $changeSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get a JPagination object for the data set.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 12.2
|
||||
*/
|
||||
public function getPagination()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get version from #__schemas table
|
||||
*
|
||||
* @return mixed the return value from the query, or null if the query fails
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getSchemaVersion()
|
||||
{
|
||||
$db = JFactory::getDbo();
|
||||
$query = $db->getQuery(true)
|
||||
->select('version_id')
|
||||
->from($db->quoteName('#__schemas'))
|
||||
->where('extension_id = 700');
|
||||
$db->setQuery($query);
|
||||
$result = $db->loadResult();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix schema version if wrong
|
||||
*
|
||||
* @param JSchemaChangeSet $changeSet Schema change set
|
||||
*
|
||||
* @return mixed string schema version if success, false if fail
|
||||
*/
|
||||
public function fixSchemaVersion($changeSet)
|
||||
{
|
||||
// Get correct schema version -- last file in array
|
||||
$schema = $changeSet->getSchema();
|
||||
$db = JFactory::getDbo();
|
||||
$result = false;
|
||||
|
||||
// Check value. If ok, don't do update
|
||||
$version = $this->getSchemaVersion();
|
||||
if ($version == $schema)
|
||||
{
|
||||
$result = $version;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Delete old row
|
||||
$query = $db->getQuery(true)
|
||||
->delete($db->quoteName('#__schemas'))
|
||||
->where($db->quoteName('extension_id') . ' = 700');
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
|
||||
// Add new row
|
||||
$query->clear()
|
||||
->insert($db->quoteName('#__schemas'))
|
||||
->set($db->quoteName('extension_id') . '= 700')
|
||||
->set($db->quoteName('version_id') . '= ' . $db->quote($schema));
|
||||
$db->setQuery($query);
|
||||
if ($db->execute())
|
||||
{
|
||||
$result = $schema;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current version from #__extensions table
|
||||
*
|
||||
* @return mixed version if successful, false if fail
|
||||
*/
|
||||
|
||||
public function getUpdateVersion()
|
||||
{
|
||||
$table = JTable::getInstance('Extension');
|
||||
$table->load('700');
|
||||
$cache = new JRegistry($table->manifest_cache);
|
||||
return $cache->get('version');
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix Joomla version in #__extensions table if wrong (doesn't equal JVersion short version)
|
||||
*
|
||||
* @return mixed string update version if success, false if fail
|
||||
*/
|
||||
public function fixUpdateVersion()
|
||||
{
|
||||
$table = JTable::getInstance('Extension');
|
||||
$table->load('700');
|
||||
$cache = new JRegistry($table->manifest_cache);
|
||||
$updateVersion = $cache->get('version');
|
||||
$cmsVersion = new JVersion;
|
||||
if ($updateVersion == $cmsVersion->getShortVersion())
|
||||
{
|
||||
return $updateVersion;
|
||||
}
|
||||
else
|
||||
{
|
||||
$cache->set('version', $cmsVersion->getShortVersion());
|
||||
$table->manifest_cache = $cache->toString();
|
||||
if ($table->store())
|
||||
{
|
||||
return $cmsVersion->getShortVersion();
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For version 2.5.x only
|
||||
* Check if com_config parameters are blank.
|
||||
*
|
||||
* @return string default text filters (if any)
|
||||
*/
|
||||
public function getDefaultTextFilters()
|
||||
{
|
||||
$table = JTable::getInstance('Extension');
|
||||
$table->load($table->find(array('name' => 'com_config')));
|
||||
return $table->params;
|
||||
}
|
||||
/**
|
||||
* For version 2.5.x only
|
||||
* Check if com_config parameters are blank. If so, populate with com_content text filters.
|
||||
*
|
||||
* @return mixed boolean true if params are updated, null otherwise
|
||||
*/
|
||||
public function fixDefaultTextFilters()
|
||||
{
|
||||
$table = JTable::getInstance('Extension');
|
||||
$table->load($table->find(array('name' => 'com_config')));
|
||||
|
||||
// Check for empty $config and non-empty content filters
|
||||
if (!$table->params)
|
||||
{
|
||||
// Get filters from com_content and store if you find them
|
||||
$contentParams = JComponentHelper::getParams('com_content');
|
||||
if ($contentParams->get('filters'))
|
||||
{
|
||||
$newParams = new JRegistry;
|
||||
$newParams->set('filters', $contentParams->get('filters'));
|
||||
$table->params = (string) $newParams;
|
||||
$table->store();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user