first commit
This commit is contained in:
29
administrator/components/com_actionlogs/actionlogs.xml
Normal file
29
administrator/components/com_actionlogs/actionlogs.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<extension type="component" method="upgrade">
|
||||
<name>com_actionlogs</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>2018-05</creationDate>
|
||||
<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
|
||||
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
|
||||
<authorEmail>admin@joomla.org</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>3.9.0</version>
|
||||
<description>COM_ACTIONLOGS_XML_DESCRIPTION</description>
|
||||
<namespace path="src">Joomla\Component\Actionlogs</namespace>
|
||||
<administration>
|
||||
<menu>COM_ACTIONLOGS</menu>
|
||||
<files folder="admin">
|
||||
<file>actionlogs.xml</file>
|
||||
<file>config.xml</file>
|
||||
<folder>forms</folder>
|
||||
<folder>layouts</folder>
|
||||
<folder>services</folder>
|
||||
<folder>src</folder>
|
||||
<folder>tmpl</folder>
|
||||
</files>
|
||||
<languages folder="admin">
|
||||
<language tag="en-GB">language/en-GB/com_actionlogs.ini</language>
|
||||
<language tag="en-GB">language/en-GB/com_actionlogs.sys.ini</language>
|
||||
</languages>
|
||||
</administration>
|
||||
</extension>
|
||||
74
administrator/components/com_actionlogs/config.xml
Normal file
74
administrator/components/com_actionlogs/config.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<config addfieldprefix="Joomla\Component\Actionlogs\Administrator\Field">
|
||||
<help key="User_Actions_Log:_Options"/>
|
||||
<inlinehelp button="show"/>
|
||||
<fieldset name="actionlogs" label="COM_ACTIONLOGS_OPTIONS">
|
||||
<field
|
||||
name="ip_logging"
|
||||
type="radio"
|
||||
label="COM_ACTIONLOGS_IP_LOGGING_LABEL"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
default="0"
|
||||
filter="integer"
|
||||
>
|
||||
<option value="0">JNO</option>
|
||||
<option value="1">JYES</option>
|
||||
</field>
|
||||
<field
|
||||
name="csv_delimiter"
|
||||
type="list"
|
||||
label="COM_ACTIONLOGS_CSV_DELIMITER_LABEL"
|
||||
default=","
|
||||
validate="options"
|
||||
>
|
||||
<option value=",">COM_ACTIONLOGS_COMMA</option>
|
||||
<option value=";">COM_ACTIONLOGS_SEMICOLON</option>
|
||||
</field>
|
||||
<field
|
||||
name="loggable_extensions"
|
||||
type="logtype"
|
||||
label="COM_ACTIONLOGS_LOG_EXTENSIONS_LABEL"
|
||||
multiple="true"
|
||||
layout="joomla.form.field.list-fancy-select"
|
||||
default="com_banners,com_cache,com_categories,com_checkin,com_config,com_contact,com_content,com_installer,com_media,com_menus,com_messages,com_modules,com_newsfeeds,com_plugins,com_redirect,com_scheduler,com_tags,com_templates,com_users"
|
||||
/>
|
||||
<field
|
||||
name="loggable_api"
|
||||
type="radio"
|
||||
label="COM_ACTIONLOGS_API_LOGGING_LABEL"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
default="0"
|
||||
filter="integer"
|
||||
>
|
||||
<option value="0">JNO</option>
|
||||
<option value="1">JYES</option>
|
||||
</field>
|
||||
<field
|
||||
name="loggable_verbs"
|
||||
type="list"
|
||||
label="COM_ACTIONLOGS_LOG_VERBS_LABEL"
|
||||
multiple="true"
|
||||
showon="loggable_api:1"
|
||||
default="GET"
|
||||
validate="options"
|
||||
layout="joomla.form.field.list-fancy-select"
|
||||
>
|
||||
<option value="GET">COM_ACTIONLOGS_FIELD_VALUE_GET</option>
|
||||
<option value="POST">COM_ACTIONLOGS_FIELD_VALUE_POST</option>
|
||||
<option value="DELETE">COM_ACTIONLOGS_FIELD_VALUE_DELETE</option>
|
||||
<option value="PUT">COM_ACTIONLOGS_FIELD_VALUE_PUT</option>
|
||||
<option value="PATCH">COM_ACTIONLOGS_FIELD_VALUE_PATCH</option>
|
||||
</field>
|
||||
<field
|
||||
name="date_relative"
|
||||
type="radio"
|
||||
label="COM_ACTIONLOGS_DATE_RELATIVE_LABEL"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
default="1"
|
||||
filter="integer"
|
||||
>
|
||||
<option value="0">JHIDE</option>
|
||||
<option value="1">JSHOW</option>
|
||||
</field>
|
||||
</fieldset>
|
||||
</config>
|
||||
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form addfieldprefix="Joomla\Component\Actionlogs\Administrator\Field">
|
||||
<fields name="filter">
|
||||
<field
|
||||
name="search"
|
||||
type="text"
|
||||
inputmode="search"
|
||||
label="COM_ACTIONLOGS_FILTER_SEARCH_LABEL"
|
||||
description="COM_ACTIONLOGS_FILTER_SEARCH_DESC"
|
||||
hint="JSEARCH_FILTER"
|
||||
/>
|
||||
<field
|
||||
name="extension"
|
||||
type="extension"
|
||||
label="COM_ACTIONLOGS_EXTENSION"
|
||||
class="js-select-submit-on-change"
|
||||
>
|
||||
<option value="">COM_ACTIONLOGS_SELECT_EXTENSION</option>
|
||||
</field>
|
||||
<field
|
||||
name="dateRange"
|
||||
type="logsdaterange"
|
||||
label="COM_ACTIONLOGS_DATE"
|
||||
class="js-select-submit-on-change"
|
||||
>
|
||||
<option value="">COM_ACTIONLOGS_OPTION_FILTER_DATE</option>
|
||||
</field>
|
||||
<field
|
||||
name="user"
|
||||
type="logcreator"
|
||||
label="COM_ACTIONLOGS_NAME"
|
||||
class="js-select-submit-on-change"
|
||||
>
|
||||
<option value="">COM_ACTIONLOGS_SELECT_USER</option>
|
||||
</field>
|
||||
</fields>
|
||||
<fields name="list">
|
||||
<field
|
||||
name="fullordering"
|
||||
type="list"
|
||||
label="JGLOBAL_SORT_BY"
|
||||
class="js-select-submit-on-change"
|
||||
default="a.id DESC"
|
||||
validate="options"
|
||||
>
|
||||
<option value="">JGLOBAL_SORT_BY</option>
|
||||
<option value="a.message ASC">COM_ACTIONLOGS_ACTION_ASC</option>
|
||||
<option value="a.message DESC">COM_ACTIONLOGS_ACTION_DESC</option>
|
||||
<option value="a.extension ASC">COM_ACTIONLOGS_EXTENSION_ASC</option>
|
||||
<option value="a.extension DESC">COM_ACTIONLOGS_EXTENSION_DESC</option>
|
||||
<option value="a.log_date ASC">JDATE_ASC</option>
|
||||
<option value="a.log_date DESC">JDATE_DESC</option>
|
||||
<option value="a.user_id ASC">JGLOBAL_NAME_ASC</option>
|
||||
<option value="a.user_id DESC">JGLOBAL_NAME_DESC</option>
|
||||
<option value="a.id ASC">JGRID_HEADING_ID_ASC</option>
|
||||
<option value="a.id DESC">JGRID_HEADING_ID_DESC</option>
|
||||
</field>
|
||||
</fields>
|
||||
<fields name="list">
|
||||
<field
|
||||
name="limit"
|
||||
type="limitbox"
|
||||
label="JGLOBAL_LIST_LIMIT"
|
||||
class="input-mini js-select-submit-on-change"
|
||||
default="25"
|
||||
/>
|
||||
</fields>
|
||||
</form>
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
|
||||
use Joomla\CMS\Extension\ComponentInterface;
|
||||
use Joomla\CMS\Extension\MVCComponent;
|
||||
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
|
||||
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
|
||||
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
|
||||
use Joomla\DI\Container;
|
||||
use Joomla\DI\ServiceProviderInterface;
|
||||
|
||||
/**
|
||||
* The actionlogs service provider.
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
return new class () implements ServiceProviderInterface {
|
||||
/**
|
||||
* Registers the service provider with a DI container.
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
public function register(Container $container)
|
||||
{
|
||||
$container->registerServiceProvider(new MVCFactory('\\Joomla\\Component\\Actionlogs'));
|
||||
$container->registerServiceProvider(new ComponentDispatcherFactory('\\Joomla\\Component\\Actionlogs'));
|
||||
|
||||
$container->set(
|
||||
ComponentInterface::class,
|
||||
function (Container $container) {
|
||||
$component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
|
||||
|
||||
$component->setMVCFactory($container->get(MVCFactoryInterface::class));
|
||||
|
||||
return $component;
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,163 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Controller;
|
||||
|
||||
use Joomla\CMS\Application\CMSApplication;
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
use Joomla\CMS\Date\Date;
|
||||
use Joomla\CMS\Input\Input;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\MVC\Controller\AdminController;
|
||||
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
|
||||
use Joomla\Component\Actionlogs\Administrator\Model\ActionlogsModel;
|
||||
use Joomla\Utilities\ArrayHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Actionlogs list controller class.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class ActionlogsController extends AdminController
|
||||
{
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param array $config An optional associative array of configuration settings.
|
||||
* Recognized key values include 'name', 'default_task', 'model_path', and
|
||||
* 'view_path' (this list is not meant to be comprehensive).
|
||||
* @param MVCFactoryInterface $factory The factory.
|
||||
* @param CMSApplication $app The Application for the dispatcher
|
||||
* @param Input $input Input
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($config = [], MVCFactoryInterface $factory = null, $app = null, $input = null)
|
||||
{
|
||||
parent::__construct($config, $factory, $app, $input);
|
||||
|
||||
$this->registerTask('exportSelectedLogs', 'exportLogs');
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to export logs
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function exportLogs()
|
||||
{
|
||||
// Check for request forgeries.
|
||||
$this->checkToken();
|
||||
|
||||
$task = $this->getTask();
|
||||
|
||||
$pks = [];
|
||||
|
||||
if ($task == 'exportSelectedLogs') {
|
||||
// Get selected logs
|
||||
$pks = ArrayHelper::toInteger(explode(',', $this->input->post->getString('cids')));
|
||||
}
|
||||
|
||||
/** @var ActionlogsModel $model */
|
||||
$model = $this->getModel();
|
||||
|
||||
// Get the logs data
|
||||
$data = $model->getLogDataAsIterator($pks);
|
||||
|
||||
if (\count($data)) {
|
||||
try {
|
||||
$rows = ActionlogsHelper::getCsvData($data);
|
||||
} catch (\InvalidArgumentException $exception) {
|
||||
$this->setMessage(Text::_('COM_ACTIONLOGS_ERROR_COULD_NOT_EXPORT_DATA'), 'error');
|
||||
$this->setRedirect(Route::_('index.php?option=com_actionlogs&view=actionlogs', false));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Destroy the iterator now
|
||||
unset($data);
|
||||
|
||||
$date = new Date('now', new \DateTimeZone('UTC'));
|
||||
$filename = 'logs_' . $date->format('Y-m-d_His_T');
|
||||
|
||||
$csvDelimiter = ComponentHelper::getComponent('com_actionlogs')->getParams()->get('csv_delimiter', ',');
|
||||
|
||||
$this->app->setHeader('Content-Type', 'application/csv', true)
|
||||
->setHeader('Content-Disposition', 'attachment; filename="' . $filename . '.csv"', true)
|
||||
->setHeader('Cache-Control', 'must-revalidate', true)
|
||||
->sendHeaders();
|
||||
|
||||
$output = fopen("php://output", "w");
|
||||
|
||||
foreach ($rows as $row) {
|
||||
fputcsv($output, $row, $csvDelimiter);
|
||||
}
|
||||
|
||||
fclose($output);
|
||||
$this->app->triggerEvent('onAfterLogExport', []);
|
||||
$this->app->close();
|
||||
} else {
|
||||
$this->setMessage(Text::_('COM_ACTIONLOGS_NO_LOGS_TO_EXPORT'));
|
||||
$this->setRedirect(Route::_('index.php?option=com_actionlogs&view=actionlogs', false));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get a model object, loading it if required.
|
||||
*
|
||||
* @param string $name The model name. Optional.
|
||||
* @param string $prefix The class prefix. Optional.
|
||||
* @param array $config Configuration array for model. Optional.
|
||||
*
|
||||
* @return object The model.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getModel($name = 'Actionlogs', $prefix = 'Administrator', $config = ['ignore_request' => true])
|
||||
{
|
||||
// Return the model
|
||||
return parent::getModel($name, $prefix, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean out the logs
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function purge()
|
||||
{
|
||||
// Check for request forgeries.
|
||||
$this->checkToken();
|
||||
|
||||
$model = $this->getModel();
|
||||
|
||||
if ($model->purge()) {
|
||||
$message = Text::_('COM_ACTIONLOGS_PURGE_SUCCESS');
|
||||
} else {
|
||||
$message = Text::_('COM_ACTIONLOGS_PURGE_FAIL');
|
||||
}
|
||||
|
||||
$this->setRedirect(Route::_('index.php?option=com_actionlogs&view=actionlogs', false), $message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Controller;
|
||||
|
||||
use Joomla\CMS\MVC\Controller\BaseController;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Actionlogs display controller.
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
class DisplayController extends BaseController
|
||||
{
|
||||
/**
|
||||
* The default view.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.6
|
||||
*/
|
||||
protected $default_view = 'actionlogs';
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Dispatcher;
|
||||
|
||||
use Joomla\CMS\Access\Exception\NotAllowed;
|
||||
use Joomla\CMS\Dispatcher\ComponentDispatcher;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* ComponentDispatcher class for com_actionlogs
|
||||
*
|
||||
* @since 4.2.7
|
||||
*/
|
||||
class Dispatcher extends ComponentDispatcher
|
||||
{
|
||||
/**
|
||||
* Method to check component access permission
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 4.2.7
|
||||
*/
|
||||
protected function checkAccess()
|
||||
{
|
||||
$user = $this->app->getIdentity();
|
||||
|
||||
// Access check
|
||||
if (!$user->authorise('core.admin')) {
|
||||
throw new NotAllowed($this->app->getLanguage()->_('JERROR_ALERTNOAUTHOR'), 403);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Field;
|
||||
|
||||
use Joomla\CMS\Form\Field\ListField;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Field to load a list of all extensions that have logged actions
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class ExtensionField extends ListField
|
||||
{
|
||||
/**
|
||||
* The form field type.
|
||||
*
|
||||
* @var string
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $type = 'extension';
|
||||
|
||||
/**
|
||||
* Method to get the options to populate list
|
||||
*
|
||||
* @return array The field option objects.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getOptions()
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select('DISTINCT ' . $db->quoteName('extension'))
|
||||
->from($db->quoteName('#__action_logs'))
|
||||
->order($db->quoteName('extension'));
|
||||
|
||||
$db->setQuery($query);
|
||||
$context = $db->loadColumn();
|
||||
|
||||
$options = [];
|
||||
|
||||
if (\count($context) > 0) {
|
||||
foreach ($context as $item) {
|
||||
$extensions[] = strtok($item, '.');
|
||||
}
|
||||
|
||||
$extensions = array_unique($extensions);
|
||||
|
||||
foreach ($extensions as $extension) {
|
||||
ActionlogsHelper::loadTranslationFiles($extension);
|
||||
$options[] = HTMLHelper::_('select.option', $extension, Text::_($extension));
|
||||
}
|
||||
}
|
||||
|
||||
return array_merge(parent::getOptions(), $options);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Field;
|
||||
|
||||
use Joomla\CMS\Form\Field\ListField;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Field to load a list of all users that have logged actions
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class LogcreatorField extends ListField
|
||||
{
|
||||
/**
|
||||
* Cached array of the category items.
|
||||
*
|
||||
* @var array
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected static $options = [];
|
||||
|
||||
/**
|
||||
* The form field type.
|
||||
*
|
||||
* @var string
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $type = 'LogCreator';
|
||||
|
||||
/**
|
||||
* Method to get the options to populate list
|
||||
*
|
||||
* @return array The field option objects.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected function getOptions()
|
||||
{
|
||||
// Accepted modifiers
|
||||
$hash = md5($this->element);
|
||||
|
||||
if (!isset(static::$options[$hash])) {
|
||||
static::$options[$hash] = parent::getOptions();
|
||||
|
||||
$db = $this->getDatabase();
|
||||
|
||||
// Construct the query
|
||||
$query = $db->getQuery(true)
|
||||
->select($db->quoteName('u.id', 'value'))
|
||||
->select($db->quoteName('u.username', 'text'))
|
||||
->from($db->quoteName('#__users', 'u'))
|
||||
->join('INNER', $db->quoteName('#__action_logs', 'c') . ' ON ' . $db->quoteName('c.user_id') . ' = ' . $db->quoteName('u.id'))
|
||||
->group($db->quoteName('u.id'))
|
||||
->group($db->quoteName('u.username'))
|
||||
->order($db->quoteName('u.username'));
|
||||
|
||||
// Setup the query
|
||||
$db->setQuery($query);
|
||||
|
||||
// Return the result
|
||||
if ($options = $db->loadObjectList()) {
|
||||
static::$options[$hash] = array_merge(static::$options[$hash], $options);
|
||||
}
|
||||
}
|
||||
|
||||
return static::$options[$hash];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Field;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Form\Field\PredefinedlistField;
|
||||
use Joomla\CMS\Form\Form;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Field to show a list of range dates to sort with
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class LogsdaterangeField extends PredefinedlistField
|
||||
{
|
||||
/**
|
||||
* The form field type.
|
||||
*
|
||||
* @var string
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $type = 'logsdaterange';
|
||||
|
||||
/**
|
||||
* Available options
|
||||
*
|
||||
* @var array
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $predefinedOptions = [
|
||||
'today' => 'COM_ACTIONLOGS_OPTION_RANGE_TODAY',
|
||||
'past_week' => 'COM_ACTIONLOGS_OPTION_RANGE_PAST_WEEK',
|
||||
'past_1month' => 'COM_ACTIONLOGS_OPTION_RANGE_PAST_1MONTH',
|
||||
'past_3month' => 'COM_ACTIONLOGS_OPTION_RANGE_PAST_3MONTH',
|
||||
'past_6month' => 'COM_ACTIONLOGS_OPTION_RANGE_PAST_6MONTH',
|
||||
'past_year' => 'COM_ACTIONLOGS_OPTION_RANGE_PAST_YEAR',
|
||||
];
|
||||
|
||||
/**
|
||||
* Method to instantiate the form field object.
|
||||
*
|
||||
* @param Form $form The form to attach to the form field object.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function __construct($form = null)
|
||||
{
|
||||
parent::__construct($form);
|
||||
|
||||
// Load the required language
|
||||
$lang = Factory::getLanguage();
|
||||
$lang->load('com_actionlogs', JPATH_ADMINISTRATOR);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Field;
|
||||
|
||||
use Joomla\CMS\Application\ApplicationHelper;
|
||||
use Joomla\CMS\Form\Field\ListField;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Field to load a list of all extensions that have logged actions
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class LogtypeField extends ListField
|
||||
{
|
||||
/**
|
||||
* The form field type.
|
||||
*
|
||||
* @var string
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $type = 'LogType';
|
||||
|
||||
/**
|
||||
* Method to get the field options.
|
||||
*
|
||||
* @return array The field option objects.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getOptions()
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select($db->quoteName('extension'))
|
||||
->from($db->quoteName('#__action_logs_extensions'));
|
||||
|
||||
$extensions = $db->setQuery($query)->loadColumn();
|
||||
|
||||
$options = [];
|
||||
|
||||
foreach ($extensions as $extension) {
|
||||
ActionlogsHelper::loadTranslationFiles($extension);
|
||||
$extensionName = Text::_($extension);
|
||||
$options[ApplicationHelper::stringURLSafe($extensionName) . '_' . $extension] = HTMLHelper::_('select.option', $extension, $extensionName);
|
||||
}
|
||||
|
||||
ksort($options);
|
||||
|
||||
return array_merge(parent::getOptions(), array_values($options));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Field;
|
||||
|
||||
use Joomla\CMS\Form\FormField;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Information field.
|
||||
*
|
||||
* @since 3.9.2
|
||||
*/
|
||||
class PlugininfoField extends FormField
|
||||
{
|
||||
/**
|
||||
* The form field type.
|
||||
*
|
||||
* @var string
|
||||
* @since 3.9.2
|
||||
*/
|
||||
protected $type = 'PluginInfo';
|
||||
|
||||
/**
|
||||
* Method to get the field input markup.
|
||||
*
|
||||
* @return string The field input markup.
|
||||
*
|
||||
* @since 3.9.2
|
||||
*/
|
||||
protected function getInput()
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select($db->quoteName('extension_id'))
|
||||
->from($db->quoteName('#__extensions'))
|
||||
->where($db->quoteName('folder') . ' = ' . $db->quote('actionlog'))
|
||||
->where($db->quoteName('element') . ' = ' . $db->quote('joomla'));
|
||||
$db->setQuery($query);
|
||||
|
||||
$result = (int) $db->loadResult();
|
||||
|
||||
$link = HTMLHelper::_(
|
||||
'link',
|
||||
Route::_('index.php?option=com_plugins&task=plugin.edit&extension_id=' . $result),
|
||||
Text::_('PLG_SYSTEM_ACTIONLOGS_JOOMLA_ACTIONLOG_DISABLED'),
|
||||
['class' => 'alert-link']
|
||||
);
|
||||
|
||||
return '<div class="alert alert-info">'
|
||||
. '<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden">'
|
||||
. Text::_('INFO')
|
||||
. '</span>'
|
||||
. Text::sprintf('PLG_SYSTEM_ACTIONLOGS_JOOMLA_ACTIONLOG_DISABLED_REDIRECT', $link)
|
||||
. '</div>';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,364 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Helper;
|
||||
|
||||
use Joomla\CMS\Date\Date;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Filesystem\Path;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Object\CMSObject;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\String\StringHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Actionlogs component helper.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class ActionlogsHelper
|
||||
{
|
||||
/**
|
||||
* Array of characters starting a formula
|
||||
*
|
||||
* @var array
|
||||
*
|
||||
* @since 3.9.7
|
||||
*/
|
||||
private static $characters = ['=', '+', '-', '@'];
|
||||
|
||||
/**
|
||||
* Method to convert logs objects array to an iterable type for use with a CSV export
|
||||
*
|
||||
* @param array|\Traversable $data The logs data objects to be exported
|
||||
*
|
||||
* @return \Generator
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public static function getCsvData($data): \Generator
|
||||
{
|
||||
if (!is_iterable($data)) {
|
||||
throw new \InvalidArgumentException(
|
||||
sprintf(
|
||||
'%s() requires an array or object implementing the Traversable interface, a %s was given.',
|
||||
__METHOD__,
|
||||
\gettype($data) === 'object' ? \get_class($data) : \gettype($data)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$disabledText = Text::_('COM_ACTIONLOGS_DISABLED');
|
||||
|
||||
// Header row
|
||||
yield ['Id', 'Action', 'Extension', 'Date', 'Name', 'IP Address'];
|
||||
|
||||
foreach ($data as $log) {
|
||||
$extension = strtok($log->extension, '.');
|
||||
|
||||
static::loadTranslationFiles($extension);
|
||||
|
||||
yield [
|
||||
'id' => $log->id,
|
||||
'message' => self::escapeCsvFormula(strip_tags(static::getHumanReadableLogMessage($log, false))),
|
||||
'extension' => self::escapeCsvFormula(Text::_($extension)),
|
||||
'date' => (new Date($log->log_date, new \DateTimeZone('UTC')))->format('Y-m-d H:i:s T'),
|
||||
'name' => self::escapeCsvFormula($log->name),
|
||||
'ip_address' => self::escapeCsvFormula($log->ip_address === 'COM_ACTIONLOGS_DISABLED' ? $disabledText : $log->ip_address),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the translation files for an extension
|
||||
*
|
||||
* @param string $extension Extension name
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public static function loadTranslationFiles($extension)
|
||||
{
|
||||
static $cache = [];
|
||||
$extension = strtolower($extension);
|
||||
|
||||
if (isset($cache[$extension])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$lang = Factory::getLanguage();
|
||||
$source = '';
|
||||
|
||||
switch (substr($extension, 0, 3)) {
|
||||
case 'com':
|
||||
default:
|
||||
$source = JPATH_ADMINISTRATOR . '/components/' . $extension;
|
||||
break;
|
||||
|
||||
case 'lib':
|
||||
$source = JPATH_LIBRARIES . '/' . substr($extension, 4);
|
||||
break;
|
||||
|
||||
case 'mod':
|
||||
$source = JPATH_SITE . '/modules/' . $extension;
|
||||
break;
|
||||
|
||||
case 'plg':
|
||||
$parts = explode('_', $extension, 3);
|
||||
|
||||
if (\count($parts) > 2) {
|
||||
$source = JPATH_PLUGINS . '/' . $parts[1] . '/' . $parts[2];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'pkg':
|
||||
$source = JPATH_SITE;
|
||||
break;
|
||||
|
||||
case 'tpl':
|
||||
$source = JPATH_BASE . '/templates/' . substr($extension, 4);
|
||||
break;
|
||||
}
|
||||
|
||||
$lang->load($extension, JPATH_ADMINISTRATOR)
|
||||
|| $lang->load($extension, $source);
|
||||
|
||||
if (!$lang->hasKey(strtoupper($extension))) {
|
||||
$lang->load($extension . '.sys', JPATH_ADMINISTRATOR)
|
||||
|| $lang->load($extension . '.sys', $source);
|
||||
}
|
||||
|
||||
$cache[$extension] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parameters to be
|
||||
*
|
||||
* @param string $context The context of the content
|
||||
*
|
||||
* @return mixed An object contains content type parameters, or null if not found
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @deprecated 4.3 will be removed in 6.0
|
||||
* Use the action log config model instead
|
||||
* Example: Factory::getApplication()->bootComponent('actionlogs')->getMVCFactory()
|
||||
* ->createModel('ActionlogConfig', 'Administrator')->getLogContentTypeParams($context);
|
||||
*/
|
||||
public static function getLogContentTypeParams($context)
|
||||
{
|
||||
return Factory::getApplication()->bootComponent('actionlogs')->getMVCFactory()
|
||||
->createModel('ActionlogConfig', 'Administrator')->getLogContentTypeParams($context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get human readable log message for a User Action Log
|
||||
*
|
||||
* @param \stdClass $log A User Action log message record
|
||||
* @param boolean $generateLinks Flag to disable link generation when creating a message
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public static function getHumanReadableLogMessage($log, $generateLinks = true)
|
||||
{
|
||||
static::loadActionLogPluginsLanguage();
|
||||
static $links = [];
|
||||
$message = Text::_($log->message_language_key);
|
||||
$messageData = json_decode($log->message, true);
|
||||
|
||||
// Special handling for translation extension name
|
||||
if (isset($messageData['extension_name'])) {
|
||||
static::loadTranslationFiles($messageData['extension_name']);
|
||||
$messageData['extension_name'] = Text::_($messageData['extension_name']);
|
||||
}
|
||||
|
||||
// Translating application
|
||||
if (isset($messageData['app'])) {
|
||||
$messageData['app'] = Text::_($messageData['app']);
|
||||
}
|
||||
|
||||
// Translating type
|
||||
if (isset($messageData['type'])) {
|
||||
$messageData['type'] = Text::_($messageData['type']);
|
||||
}
|
||||
|
||||
$linkMode = Factory::getApplication()->get('force_ssl', 0) >= 1 ? Route::TLS_FORCE : Route::TLS_IGNORE;
|
||||
|
||||
foreach ($messageData as $key => $value) {
|
||||
// Escape any markup in the values to prevent XSS attacks
|
||||
$value = $value !== null ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : '';
|
||||
|
||||
// Convert relative url to absolute url so that it is clickable in action logs notification email
|
||||
if ($generateLinks && StringHelper::strpos($value, 'index.php?') === 0) {
|
||||
if (!isset($links[$value])) {
|
||||
$links[$value] = Route::link('administrator', $value, false, $linkMode, true);
|
||||
}
|
||||
|
||||
$value = $links[$value];
|
||||
}
|
||||
|
||||
$message = str_replace('{' . $key . '}', $value, $message);
|
||||
}
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get link to an item of given content type
|
||||
*
|
||||
* @param string $component
|
||||
* @param string $contentType
|
||||
* @param integer $id
|
||||
* @param string $urlVar
|
||||
* @param CMSObject $object
|
||||
*
|
||||
* @return string Link to the content item
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public static function getContentTypeLink($component, $contentType, $id, $urlVar = 'id', $object = null)
|
||||
{
|
||||
// Try to find the component helper.
|
||||
$eName = str_replace('com_', '', $component);
|
||||
$file = Path::clean(JPATH_ADMINISTRATOR . '/components/' . $component . '/helpers/' . $eName . '.php');
|
||||
|
||||
if (file_exists($file)) {
|
||||
$prefix = ucfirst(str_replace('com_', '', $component));
|
||||
$cName = $prefix . 'Helper';
|
||||
|
||||
\JLoader::register($cName, $file);
|
||||
|
||||
if (class_exists($cName) && \is_callable([$cName, 'getContentTypeLink'])) {
|
||||
return $cName::getContentTypeLink($contentType, $id, $object);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($urlVar)) {
|
||||
$urlVar = 'id';
|
||||
}
|
||||
|
||||
// Return default link to avoid having to implement getContentTypeLink in most of our components
|
||||
return 'index.php?option=' . $component . '&task=' . $contentType . '.edit&' . $urlVar . '=' . $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load both enabled and disabled actionlog plugins language file.
|
||||
*
|
||||
* It is used to make sure actions log is displayed properly instead of only language items displayed when a plugin is disabled.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public static function loadActionLogPluginsLanguage()
|
||||
{
|
||||
static $loaded;
|
||||
if ($loaded) {
|
||||
return;
|
||||
}
|
||||
$loaded = true;
|
||||
|
||||
$lang = Factory::getLanguage();
|
||||
$db = Factory::getDbo();
|
||||
|
||||
// Get all (both enabled and disabled) actionlog plugins
|
||||
$query = $db->getQuery(true)
|
||||
->select(
|
||||
$db->quoteName(
|
||||
[
|
||||
'folder',
|
||||
'element',
|
||||
'params',
|
||||
'extension_id',
|
||||
],
|
||||
[
|
||||
'type',
|
||||
'name',
|
||||
'params',
|
||||
'id',
|
||||
]
|
||||
)
|
||||
)
|
||||
->from($db->quoteName('#__extensions'))
|
||||
->where($db->quoteName('type') . ' = ' . $db->quote('plugin'))
|
||||
->where($db->quoteName('folder') . ' = ' . $db->quote('actionlog'))
|
||||
->whereIn($db->quoteName('state'), [0, 1])
|
||||
->order($db->quoteName('ordering'));
|
||||
$db->setQuery($query);
|
||||
|
||||
try {
|
||||
$rows = $db->loadObjectList();
|
||||
} catch (\RuntimeException $e) {
|
||||
$rows = [];
|
||||
}
|
||||
|
||||
if (empty($rows)) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$name = $row->name;
|
||||
$type = $row->type;
|
||||
$extension = 'Plg_' . $type . '_' . $name;
|
||||
$extension = strtolower($extension);
|
||||
|
||||
// If language already loaded, don't load it again.
|
||||
if ($lang->getPaths($extension)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$lang->load($extension, JPATH_ADMINISTRATOR)
|
||||
|| $lang->load($extension, JPATH_PLUGINS . '/' . $type . '/' . $name);
|
||||
}
|
||||
|
||||
// Load plg_system_actionlogs too
|
||||
$lang->load('plg_system_actionlogs', JPATH_ADMINISTRATOR);
|
||||
|
||||
// Load plg_system_privacyconsent too
|
||||
$lang->load('plg_system_privacyconsent', JPATH_ADMINISTRATOR);
|
||||
|
||||
// Load plg_user_terms too
|
||||
$lang->load('plg_user_terms', JPATH_ADMINISTRATOR);
|
||||
|
||||
// Load com_privacy too.
|
||||
$lang->load('com_privacy', JPATH_ADMINISTRATOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapes potential characters that start a formula in a CSV value to prevent injection attacks
|
||||
*
|
||||
* @param mixed $value csv field value
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @since 3.9.7
|
||||
*/
|
||||
protected static function escapeCsvFormula($value)
|
||||
{
|
||||
if ($value == '') {
|
||||
return $value;
|
||||
}
|
||||
|
||||
if (\in_array($value[0], self::$characters, true)) {
|
||||
$value = ' ' . $value;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2022 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Model;
|
||||
|
||||
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Model to interact with the action log configuration.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
class ActionlogConfigModel extends BaseDatabaseModel
|
||||
{
|
||||
/**
|
||||
* Returns the action logs config for the given context.
|
||||
*
|
||||
* @param string $context The context of the content
|
||||
*
|
||||
* @return \stdClass|null An object contains content type parameters, or null if not found
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
public function getLogContentTypeParams(string $context): ?\stdClass
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select('a.*')
|
||||
->from($db->quoteName('#__action_log_config', 'a'))
|
||||
->where($db->quoteName('a.type_alias') . ' = :context')
|
||||
->bind(':context', $context);
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
return $db->loadObject();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Model;
|
||||
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Mail\Exception\MailDisabledException;
|
||||
use Joomla\CMS\Mail\MailTemplate;
|
||||
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
|
||||
use Joomla\CMS\User\UserFactoryAwareInterface;
|
||||
use Joomla\CMS\User\UserFactoryAwareTrait;
|
||||
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
|
||||
use Joomla\Utilities\IpHelper;
|
||||
use PHPMailer\PHPMailer\Exception as phpMailerException;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Methods supporting a list of Actionlog records.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class ActionlogModel extends BaseDatabaseModel implements UserFactoryAwareInterface
|
||||
{
|
||||
use UserFactoryAwareTrait;
|
||||
|
||||
/**
|
||||
* Function to add logs to the database
|
||||
* This method adds a record to #__action_logs contains (message_language_key, message, date, context, user)
|
||||
*
|
||||
* @param array $messages The contents of the messages to be logged
|
||||
* @param string $messageLanguageKey The language key of the message
|
||||
* @param string $context The context of the content passed to the plugin
|
||||
* @param integer $userId ID of user perform the action, usually ID of current logged in user
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function addLog($messages, $messageLanguageKey, $context, $userId = 0)
|
||||
{
|
||||
if (!is_numeric($userId)) {
|
||||
@trigger_error(sprintf('User ID must be an integer in %s.', __METHOD__), E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
$user = $userId ? $this->getUserFactory()->loadUserById($userId) : $this->getCurrentUser();
|
||||
$db = $this->getDatabase();
|
||||
$date = Factory::getDate();
|
||||
$params = ComponentHelper::getComponent('com_actionlogs')->getParams();
|
||||
|
||||
if ($params->get('ip_logging', 0)) {
|
||||
$ip = IpHelper::getIp();
|
||||
|
||||
if (!filter_var($ip, FILTER_VALIDATE_IP)) {
|
||||
$ip = 'COM_ACTIONLOGS_IP_INVALID';
|
||||
}
|
||||
} else {
|
||||
$ip = 'COM_ACTIONLOGS_DISABLED';
|
||||
}
|
||||
|
||||
$loggedMessages = [];
|
||||
|
||||
foreach ($messages as $message) {
|
||||
$logMessage = new \stdClass();
|
||||
$logMessage->message_language_key = $messageLanguageKey;
|
||||
$logMessage->message = json_encode($message);
|
||||
$logMessage->log_date = (string) $date;
|
||||
$logMessage->extension = $context;
|
||||
$logMessage->user_id = $user->id;
|
||||
$logMessage->ip_address = $ip;
|
||||
$logMessage->item_id = isset($message['id']) ? (int) $message['id'] : 0;
|
||||
|
||||
try {
|
||||
$db->insertObject('#__action_logs', $logMessage);
|
||||
$loggedMessages[] = $logMessage;
|
||||
} catch (\RuntimeException $e) {
|
||||
// Ignore it
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
// Send notification email to users who choose to be notified about the action logs
|
||||
$this->sendNotificationEmails($loggedMessages, $user->name, $context);
|
||||
} catch (MailDisabledException | phpMailerException $e) {
|
||||
// Ignore it
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send notification emails about the action log
|
||||
*
|
||||
* @param array $messages The logged messages
|
||||
* @param string $username The username
|
||||
* @param string $context The Context
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws MailDisabledException if mail is disabled
|
||||
* @throws phpmailerException if sending mail failed
|
||||
*/
|
||||
protected function sendNotificationEmails($messages, $username, $context)
|
||||
{
|
||||
$app = Factory::getApplication();
|
||||
$lang = $app->getLanguage();
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
$query
|
||||
->select($db->quoteName(['u.email', 'l.extensions']))
|
||||
->from($db->quoteName('#__users', 'u'))
|
||||
->where($db->quoteName('u.block') . ' = 0')
|
||||
->join(
|
||||
'INNER',
|
||||
$db->quoteName('#__action_logs_users', 'l') . ' ON ( ' . $db->quoteName('l.notify') . ' = 1 AND '
|
||||
. $db->quoteName('l.user_id') . ' = ' . $db->quoteName('u.id') . ')'
|
||||
);
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
$users = $db->loadObjectList();
|
||||
|
||||
$recipients = [];
|
||||
|
||||
foreach ($users as $user) {
|
||||
$extensions = json_decode($user->extensions, true);
|
||||
|
||||
if ($extensions && \in_array(strtok($context, '.'), $extensions)) {
|
||||
$recipients[] = $user->email;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($recipients)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$extension = strtok($context, '.');
|
||||
$lang->load('com_actionlogs', JPATH_ADMINISTRATOR);
|
||||
ActionlogsHelper::loadTranslationFiles($extension);
|
||||
$temp = [];
|
||||
|
||||
foreach ($messages as $message) {
|
||||
$m = [];
|
||||
$m['extension'] = Text::_($extension);
|
||||
$m['message'] = ActionlogsHelper::getHumanReadableLogMessage($message);
|
||||
$m['date'] = HTMLHelper::_('date', $message->log_date, 'Y-m-d H:i:s T', 'UTC');
|
||||
$m['username'] = $username;
|
||||
$temp[] = $m;
|
||||
}
|
||||
|
||||
$templateData = [
|
||||
'messages' => $temp,
|
||||
];
|
||||
|
||||
$mailer = new MailTemplate('com_actionlogs.notification', $app->getLanguage()->getTag());
|
||||
$mailer->addTemplateData($templateData);
|
||||
|
||||
foreach ($recipients as $recipient) {
|
||||
$mailer->addRecipient($recipient);
|
||||
}
|
||||
|
||||
$mailer->send();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,398 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Model;
|
||||
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
use Joomla\CMS\Date\Date;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Form\Form;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\MVC\Model\ListModel;
|
||||
use Joomla\Database\DatabaseIterator;
|
||||
use Joomla\Database\DatabaseQuery;
|
||||
use Joomla\Database\ParameterType;
|
||||
use Joomla\Utilities\ArrayHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Methods supporting a list of article records.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class ActionlogsModel extends ListModel
|
||||
{
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param array $config An optional associative array of configuration settings.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($config = [])
|
||||
{
|
||||
if (empty($config['filter_fields'])) {
|
||||
$config['filter_fields'] = [
|
||||
'a.id', 'id',
|
||||
'a.extension', 'extension',
|
||||
'a.user_id', 'user',
|
||||
'a.message', 'message',
|
||||
'a.log_date', 'log_date',
|
||||
'a.ip_address', 'ip_address',
|
||||
'dateRange',
|
||||
];
|
||||
}
|
||||
|
||||
parent::__construct($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to auto-populate the model state.
|
||||
*
|
||||
* @param string $ordering An optional ordering field.
|
||||
* @param string $direction An optional direction (asc|desc).
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function populateState($ordering = 'a.id', $direction = 'desc')
|
||||
{
|
||||
parent::populateState($ordering, $direction);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an SQL query to load the list data.
|
||||
*
|
||||
* @return DatabaseQuery
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function getListQuery()
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select('a.*')
|
||||
->select($db->quoteName('u.name'))
|
||||
->from($db->quoteName('#__action_logs', 'a'))
|
||||
->join('LEFT', $db->quoteName('#__users', 'u') . ' ON ' . $db->quoteName('a.user_id') . ' = ' . $db->quoteName('u.id'));
|
||||
|
||||
// Get ordering
|
||||
$fullorderCol = $this->state->get('list.fullordering', 'a.id DESC');
|
||||
|
||||
// Apply ordering
|
||||
if (!empty($fullorderCol)) {
|
||||
$query->order($db->escape($fullorderCol));
|
||||
}
|
||||
|
||||
// Get filter by user
|
||||
$user = $this->getState('filter.user');
|
||||
|
||||
// Apply filter by user
|
||||
if (!empty($user)) {
|
||||
$user = (int) $user;
|
||||
$query->where($db->quoteName('a.user_id') . ' = :userid')
|
||||
->bind(':userid', $user, ParameterType::INTEGER);
|
||||
}
|
||||
|
||||
// Get filter by extension
|
||||
$extension = $this->getState('filter.extension');
|
||||
|
||||
// Apply filter by extension
|
||||
if (!empty($extension)) {
|
||||
$extension = $extension . '%';
|
||||
$query->where($db->quoteName('a.extension') . ' LIKE :extension')
|
||||
->bind(':extension', $extension);
|
||||
}
|
||||
|
||||
// Get filter by date range
|
||||
$dateRange = $this->getState('filter.dateRange');
|
||||
|
||||
// Apply filter by date range
|
||||
if (!empty($dateRange)) {
|
||||
$date = $this->buildDateRange($dateRange);
|
||||
|
||||
// If the chosen range is not more than a year ago
|
||||
if ($date['dNow'] !== false && $date['dStart'] !== false) {
|
||||
$dStart = $date['dStart']->format('Y-m-d H:i:s');
|
||||
$dNow = $date['dNow']->format('Y-m-d H:i:s');
|
||||
$query->where(
|
||||
$db->quoteName('a.log_date') . ' BETWEEN :dstart AND :dnow'
|
||||
);
|
||||
$query->bind(':dstart', $dStart);
|
||||
$query->bind(':dnow', $dNow);
|
||||
}
|
||||
}
|
||||
|
||||
// Filter the items over the search string if set.
|
||||
$search = $this->getState('filter.search');
|
||||
|
||||
if (!empty($search)) {
|
||||
if (stripos($search, 'id:') === 0) {
|
||||
$ids = (int) substr($search, 3);
|
||||
$query->where($db->quoteName('a.id') . ' = :id')
|
||||
->bind(':id', $ids, ParameterType::INTEGER);
|
||||
} elseif (stripos($search, 'item_id:') === 0) {
|
||||
$ids = (int) substr($search, 8);
|
||||
$query->where($db->quoteName('a.item_id') . ' = :itemid')
|
||||
->bind(':itemid', $ids, ParameterType::INTEGER);
|
||||
} else {
|
||||
$search = '%' . $search . '%';
|
||||
$query->where($db->quoteName('a.message') . ' LIKE :message')
|
||||
->bind(':message', $search);
|
||||
}
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the date range to filter on.
|
||||
*
|
||||
* @param string $range The textual range to construct the filter for.
|
||||
*
|
||||
* @return array The date range to filter on.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function buildDateRange($range)
|
||||
{
|
||||
// Get UTC for now.
|
||||
$dNow = new Date();
|
||||
$dStart = clone $dNow;
|
||||
|
||||
switch ($range) {
|
||||
case 'past_week':
|
||||
$dStart->modify('-7 day');
|
||||
break;
|
||||
|
||||
case 'past_1month':
|
||||
$dStart->modify('-1 month');
|
||||
break;
|
||||
|
||||
case 'past_3month':
|
||||
$dStart->modify('-3 month');
|
||||
break;
|
||||
|
||||
case 'past_6month':
|
||||
$dStart->modify('-6 month');
|
||||
break;
|
||||
|
||||
case 'past_year':
|
||||
$dStart->modify('-1 year');
|
||||
break;
|
||||
|
||||
case 'today':
|
||||
// Ranges that need to align with local 'days' need special treatment.
|
||||
$offset = Factory::getApplication()->get('offset');
|
||||
|
||||
// Reset the start time to be the beginning of today, local time.
|
||||
$dStart = new Date('now', $offset);
|
||||
$dStart->setTime(0, 0, 0);
|
||||
|
||||
// Now change the timezone back to UTC.
|
||||
$tz = new \DateTimeZone('GMT');
|
||||
$dStart->setTimezone($tz);
|
||||
break;
|
||||
}
|
||||
|
||||
return ['dNow' => $dNow, 'dStart' => $dStart];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all log entries for an item
|
||||
*
|
||||
* @param string $extension The extension the item belongs to
|
||||
* @param integer $itemId The item ID
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getLogsForItem($extension, $itemId)
|
||||
{
|
||||
$itemId = (int) $itemId;
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select('a.*')
|
||||
->select($db->quoteName('u.name'))
|
||||
->from($db->quoteName('#__action_logs', 'a'))
|
||||
->join('INNER', $db->quoteName('#__users', 'u') . ' ON ' . $db->quoteName('a.user_id') . ' = ' . $db->quoteName('u.id'))
|
||||
->where($db->quoteName('a.extension') . ' = :extension')
|
||||
->where($db->quoteName('a.item_id') . ' = :itemid')
|
||||
->bind(':extension', $extension)
|
||||
->bind(':itemid', $itemId, ParameterType::INTEGER);
|
||||
|
||||
// Get ordering
|
||||
$fullorderCol = $this->getState('list.fullordering', 'a.id DESC');
|
||||
|
||||
// Apply ordering
|
||||
if (!empty($fullorderCol)) {
|
||||
$query->order($db->escape($fullorderCol));
|
||||
}
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
return $db->loadObjectList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get logs data into Table object
|
||||
*
|
||||
* @param integer[]|null $pks An optional array of log record IDs to load
|
||||
*
|
||||
* @return array All logs in the table
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getLogsData($pks = null)
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $this->getLogDataQuery($pks);
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
return $db->loadObjectList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get logs data as a database iterator
|
||||
*
|
||||
* @param integer[]|null $pks An optional array of log record IDs to load
|
||||
*
|
||||
* @return DatabaseIterator
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getLogDataAsIterator($pks = null)
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $this->getLogDataQuery($pks);
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
return $db->getIterator();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the query for loading logs data
|
||||
*
|
||||
* @param integer[]|null $pks An optional array of log record IDs to load
|
||||
*
|
||||
* @return DatabaseQuery
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
private function getLogDataQuery($pks = null)
|
||||
{
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->select('a.*')
|
||||
->select($db->quoteName('u.name'))
|
||||
->from($db->quoteName('#__action_logs', 'a'))
|
||||
->join('INNER', $db->quoteName('#__users', 'u') . ' ON ' . $db->quoteName('a.user_id') . ' = ' . $db->quoteName('u.id'));
|
||||
|
||||
if (\is_array($pks) && \count($pks) > 0) {
|
||||
$pks = ArrayHelper::toInteger($pks);
|
||||
$query->whereIn($db->quoteName('a.id'), $pks);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete logs
|
||||
*
|
||||
* @param array $pks Primary keys of logs
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function delete(&$pks)
|
||||
{
|
||||
$keys = ArrayHelper::toInteger($pks);
|
||||
$db = $this->getDatabase();
|
||||
$query = $db->getQuery(true)
|
||||
->delete($db->quoteName('#__action_logs'))
|
||||
->whereIn($db->quoteName('id'), $keys);
|
||||
$db->setQuery($query);
|
||||
|
||||
try {
|
||||
$db->execute();
|
||||
} catch (\RuntimeException $e) {
|
||||
$this->setError($e->getMessage());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Factory::getApplication()->triggerEvent('onAfterLogPurge', []);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all of logs from the table.
|
||||
*
|
||||
* @return boolean result of operation
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function purge()
|
||||
{
|
||||
try {
|
||||
$this->getDatabase()->truncateTable('#__action_logs');
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Factory::getApplication()->triggerEvent('onAfterLogPurge', []);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the filter form
|
||||
*
|
||||
* @param array $data data
|
||||
* @param boolean $loadData load current data
|
||||
*
|
||||
* @return Form|boolean The Form object or false on error
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public function getFilterForm($data = [], $loadData = true)
|
||||
{
|
||||
$form = parent::getFilterForm($data, $loadData);
|
||||
$params = ComponentHelper::getParams('com_actionlogs');
|
||||
$ipLogging = (bool) $params->get('ip_logging', 0);
|
||||
|
||||
// Add ip sort options to sort dropdown
|
||||
if ($form && $ipLogging) {
|
||||
/* @var \Joomla\CMS\Form\Field\ListField $field */
|
||||
$field = $form->getField('fullordering', 'list');
|
||||
$field->addOption(Text::_('COM_ACTIONLOGS_IP_ADDRESS_ASC'), ['value' => 'a.ip_address ASC']);
|
||||
$field->addOption(Text::_('COM_ACTIONLOGS_IP_ADDRESS_DESC'), ['value' => 'a.ip_address DESC']);
|
||||
}
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\Plugin;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Plugin\CMSPlugin;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Abstract Action Log Plugin
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
abstract class ActionLogPlugin extends CMSPlugin
|
||||
{
|
||||
/**
|
||||
* Application object.
|
||||
*
|
||||
* @var \Joomla\CMS\Application\CMSApplication
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* Database object.
|
||||
*
|
||||
* @var \Joomla\Database\DatabaseDriver
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Load plugin language file automatically so that it can be used inside component
|
||||
*
|
||||
* @var boolean
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $autoloadLanguage = true;
|
||||
|
||||
/**
|
||||
* Proxy for ActionlogsModelUserlog addLog method
|
||||
*
|
||||
* This method adds a record to #__action_logs contains (message_language_key, message, date, context, user)
|
||||
*
|
||||
* @param array $messages The contents of the messages to be logged
|
||||
* @param string $messageLanguageKey The language key of the message
|
||||
* @param string $context The context of the content passed to the plugin
|
||||
* @param int $userId ID of user perform the action, usually ID of current logged in user
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected function addLog($messages, $messageLanguageKey, $context, $userId = null)
|
||||
{
|
||||
$user = Factory::getUser();
|
||||
|
||||
foreach ($messages as $index => $message) {
|
||||
if (!\array_key_exists('userid', $message)) {
|
||||
$message['userid'] = $user->id;
|
||||
}
|
||||
|
||||
if (!\array_key_exists('username', $message)) {
|
||||
$message['username'] = $user->username;
|
||||
}
|
||||
|
||||
if (!\array_key_exists('accountlink', $message)) {
|
||||
$message['accountlink'] = 'index.php?option=com_users&task=user.edit&id=' . $user->id;
|
||||
}
|
||||
|
||||
if (\array_key_exists('type', $message)) {
|
||||
$message['type'] = strtoupper($message['type']);
|
||||
}
|
||||
|
||||
if (\array_key_exists('app', $message)) {
|
||||
$message['app'] = strtoupper($message['app']);
|
||||
}
|
||||
|
||||
$messages[$index] = $message;
|
||||
}
|
||||
|
||||
/** @var \Joomla\Component\Actionlogs\Administrator\Model\ActionlogModel $model */
|
||||
$model = $this->app->bootComponent('com_actionlogs')
|
||||
->getMVCFactory()->createModel('Actionlog', 'Administrator', ['ignore_request' => true]);
|
||||
|
||||
$model->addLog($messages, strtoupper($messageLanguageKey), $context, $userId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Actionlogs\Administrator\View\Actionlogs;
|
||||
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
use Joomla\CMS\Form\Form;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\MVC\View\GenericDataException;
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Pagination\Pagination;
|
||||
use Joomla\CMS\Toolbar\Toolbar;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
|
||||
use Joomla\Component\Actionlogs\Administrator\Model\ActionlogsModel;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* View class for a list of logs.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
/**
|
||||
* An array of items.
|
||||
*
|
||||
* @var array
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $items;
|
||||
|
||||
/**
|
||||
* The model state
|
||||
*
|
||||
* @var array
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $state;
|
||||
|
||||
/**
|
||||
* The pagination object
|
||||
*
|
||||
* @var Pagination
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $pagination;
|
||||
|
||||
/**
|
||||
* Form object for search filters
|
||||
*
|
||||
* @var Form
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public $filterForm;
|
||||
|
||||
/**
|
||||
* The active search filters
|
||||
*
|
||||
* @var array
|
||||
* @since 3.9.0
|
||||
*/
|
||||
public $activeFilters;
|
||||
|
||||
/**
|
||||
* Setting if the IP column should be shown
|
||||
*
|
||||
* @var boolean
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected $showIpColumn = false;
|
||||
|
||||
/**
|
||||
* Setting if the date should be displayed relative to the current date.
|
||||
*
|
||||
* @var boolean
|
||||
* @since 4.1.0
|
||||
*/
|
||||
protected $dateRelative = false;
|
||||
|
||||
/**
|
||||
* Method to display the view.
|
||||
*
|
||||
* @param string $tpl A template file to load. [optional]
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function display($tpl = null)
|
||||
{
|
||||
/** @var ActionlogsModel $model */
|
||||
$model = $this->getModel();
|
||||
$this->items = $model->getItems();
|
||||
$this->state = $model->getState();
|
||||
$this->pagination = $model->getPagination();
|
||||
$this->filterForm = $model->getFilterForm();
|
||||
$this->activeFilters = $model->getActiveFilters();
|
||||
$params = ComponentHelper::getParams('com_actionlogs');
|
||||
$this->showIpColumn = (bool) $params->get('ip_logging', 0);
|
||||
$this->dateRelative = (bool) $params->get('date_relative', 1);
|
||||
|
||||
if (\count($errors = $model->getErrors())) {
|
||||
throw new GenericDataException(implode("\n", $errors), 500);
|
||||
}
|
||||
|
||||
$this->addToolbar();
|
||||
|
||||
// Load all actionlog plugins language files
|
||||
ActionlogsHelper::loadActionLogPluginsLanguage();
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the page title and toolbar.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.0
|
||||
*/
|
||||
protected function addToolbar()
|
||||
{
|
||||
ToolbarHelper::title(Text::_('COM_ACTIONLOGS_MANAGER_USERLOGS'), 'icon-list-2');
|
||||
$toolbar = Toolbar::getInstance();
|
||||
|
||||
$toolbar->standardButton('download', 'COM_ACTIONLOGS_EXPORT_CSV', 'actionlogs.exportSelectedLogs')
|
||||
->icon('icon-download')
|
||||
->listCheck(true);
|
||||
|
||||
$toolbar->standardButton('download', 'COM_ACTIONLOGS_EXPORT_ALL_CSV', 'actionlogs.exportLogs')
|
||||
->icon('icon-download')
|
||||
->listCheck(false);
|
||||
|
||||
$toolbar->delete('actionlogs.delete')
|
||||
->message('JGLOBAL_CONFIRM_DELETE');
|
||||
|
||||
$toolbar->confirmButton('delete', 'COM_ACTIONLOGS_TOOLBAR_PURGE', 'actionlogs.purge')
|
||||
->message('COM_ACTIONLOGS_PURGE_CONFIRM')
|
||||
->listCheck(false);
|
||||
|
||||
$toolbar->preferences('com_actionlogs');
|
||||
$toolbar->help('User_Actions_Log');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_actionlogs
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Layout\LayoutHelper;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\Component\Actionlogs\Administrator\Helper\ActionlogsHelper;
|
||||
use Joomla\Component\Actionlogs\Administrator\View\Actionlogs\HtmlView;
|
||||
|
||||
/** @var HtmlView $this */
|
||||
|
||||
$listOrder = $this->escape($this->state->get('list.ordering'));
|
||||
$listDirn = $this->escape($this->state->get('list.direction'));
|
||||
|
||||
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
|
||||
$wa = $this->document->getWebAssetManager();
|
||||
$wa->useScript('keepalive')
|
||||
->useScript('table.columns')
|
||||
->useScript('multiselect')
|
||||
->useScript('com_actionlogs.admin-actionlogs');
|
||||
|
||||
?>
|
||||
|
||||
<form action="<?php echo Route::_('index.php?option=com_actionlogs&view=actionlogs'); ?>" method="post" name="adminForm" id="adminForm">
|
||||
<div id="j-main-container" class="j-main-container">
|
||||
<?php // Search tools bar ?>
|
||||
<?php echo LayoutHelper::render('joomla.searchtools.default', ['view' => $this]); ?>
|
||||
<?php if (empty($this->items)) : ?>
|
||||
<div class="alert alert-info">
|
||||
<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
|
||||
<?php echo Text::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<table class="table" id="logsList">
|
||||
<caption class="visually-hidden">
|
||||
<?php echo Text::_('COM_ACTIONLOGS_TABLE_CAPTION'); ?>,
|
||||
<span id="orderedBy"><?php echo Text::_('JGLOBAL_SORTED_BY'); ?> </span>,
|
||||
<span id="filteredBy"><?php echo Text::_('JGLOBAL_FILTERED_BY'); ?></span>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="w-1 text-center">
|
||||
<?php echo HTMLHelper::_('grid.checkall'); ?>
|
||||
</td>
|
||||
<th scope="col" class="d-md-table-cell">
|
||||
<?php echo HTMLHelper::_('searchtools.sort', 'COM_ACTIONLOGS_ACTION', 'a.message', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
<th scope="col" class="w-15 d-none d-md-table-cell">
|
||||
<?php echo HTMLHelper::_('searchtools.sort', 'COM_ACTIONLOGS_EXTENSION', 'a.extension', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
<th scope="col" class="w-15 d-none d-md-table-cell">
|
||||
<?php echo HTMLHelper::_('searchtools.sort', 'COM_ACTIONLOGS_DATE', 'a.log_date', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
<th scope="col" class="w-10 d-md-table-cell">
|
||||
<?php echo HTMLHelper::_('searchtools.sort', 'COM_ACTIONLOGS_NAME', 'a.user_id', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
<?php if ($this->showIpColumn) : ?>
|
||||
<th scope="col" class="w-10 d-none d-md-table-cell">
|
||||
<?php echo HTMLHelper::_('searchtools.sort', 'COM_ACTIONLOGS_IP_ADDRESS', 'a.ip_address', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
<?php endif; ?>
|
||||
<th scope="col" class="w-1 d-none d-md-table-cell">
|
||||
<?php echo HTMLHelper::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($this->items as $i => $item) :
|
||||
$extension = strtok($item->extension, '.');
|
||||
ActionlogsHelper::loadTranslationFiles($extension); ?>
|
||||
<tr class="row<?php echo $i % 2; ?>">
|
||||
<td class="text-center">
|
||||
<?php echo HTMLHelper::_('grid.id', $i, $item->id); ?>
|
||||
</td>
|
||||
<th scope="row" class="d-md-table-cell">
|
||||
<?php echo ActionlogsHelper::getHumanReadableLogMessage($item); ?>
|
||||
</th>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<?php echo $this->escape(Text::_($extension)); ?>
|
||||
</td>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<?php if ($this->dateRelative) : ?>
|
||||
<?php echo HTMLHelper::_('date.relative', $item->log_date); ?>
|
||||
<div class="small">
|
||||
<?php endif; ?>
|
||||
<?php echo HTMLHelper::_('date', $item->log_date, Text::_('DATE_FORMAT_LC6')); ?>
|
||||
<?php if ($this->dateRelative) : ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td class="d-md-table-cell">
|
||||
<?php echo $this->escape($item->name); ?>
|
||||
</td>
|
||||
<?php if ($this->showIpColumn) : ?>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<?php echo Text::_($this->escape($item->ip_address)); ?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<?php echo (int) $item->id; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php // Load the pagination. ?>
|
||||
<?php echo $this->pagination->getListFooter(); ?>
|
||||
|
||||
<?php endif;?>
|
||||
<input type="hidden" name="task" value="" />
|
||||
<input type="hidden" name="boxchecked" value="0" />
|
||||
<?php echo HTMLHelper::_('form.token'); ?>
|
||||
</div>
|
||||
</form>
|
||||
<form action="<?php echo Route::_('index.php?option=com_actionlogs&view=actionlogs'); ?>" method="post" name="exportForm" id="exportForm">
|
||||
<input type="hidden" name="task" value="" />
|
||||
<input type="hidden" name="cids" value="" />
|
||||
<?php echo HTMLHelper::_('form.token'); ?>
|
||||
</form>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<layout title="COM_ACTIONLOGS_VIEW_DEFAULT_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_ACTIONLOGS_VIEW_DEFAULT_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
</metadata>
|
||||
|
||||
29
administrator/components/com_admin/admin.xml
Normal file
29
administrator/components/com_admin/admin.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<extension type="component" method="upgrade">
|
||||
<name>com_admin</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>2006-04</creationDate>
|
||||
<copyright>(C) 2006 Open Source Matters, Inc.</copyright>
|
||||
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
|
||||
<authorEmail>admin@joomla.org</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>4.0.0</version>
|
||||
<description>COM_ADMIN_XML_DESCRIPTION</description>
|
||||
<namespace path="src">Joomla\Component\Admin</namespace>
|
||||
<media />
|
||||
<administration>
|
||||
<files folder="admin">
|
||||
<filename>admin.xml</filename>
|
||||
<filename>script.php</filename>
|
||||
<folder>forms</folder>
|
||||
<folder>postinstall</folder>
|
||||
<folder>services</folder>
|
||||
<folder>src</folder>
|
||||
<folder>tmpl</folder>
|
||||
</files>
|
||||
<languages folder="admin">
|
||||
<language tag="en-GB">language/en-GB/com_admin.ini</language>
|
||||
<language tag="en-GB">language/en-GB/com_admin.sys.ini</language>
|
||||
</languages>
|
||||
</administration>
|
||||
</extension>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for notifying users of a change
|
||||
* in the default .htaccess and web.config files.
|
||||
*/
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Notifies users of the add the nosniff headers by applying the changes from the default .htaccess or web.config file
|
||||
*
|
||||
* This check returns true regardless of condition.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.4
|
||||
*/
|
||||
function admin_postinstall_addnosniff_condition()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Filesystem\Path;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\Filesystem\File;
|
||||
use Joomla\Registry\Registry;
|
||||
use Joomla\Utilities\ArrayHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Notifies users of the new Behind Load Balancer option in Global Config, if we detect they might be behind a proxy
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.9.26
|
||||
*/
|
||||
function admin_postinstall_behindproxy_condition()
|
||||
{
|
||||
$app = Factory::getApplication();
|
||||
|
||||
if ($app->get('behind_loadbalancer', '0')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER) && !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (array_key_exists('HTTP_CLIENT_IP', $_SERVER) && !empty($_SERVER['HTTP_CLIENT_IP'])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enables the Behind Load Balancer setting in Global Configuration
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.9.26
|
||||
*/
|
||||
function behindproxy_postinstall_action()
|
||||
{
|
||||
$prev = ArrayHelper::fromObject(new JConfig());
|
||||
$data = array_merge($prev, ['behind_loadbalancer' => '1']);
|
||||
|
||||
$config = new Registry($data);
|
||||
|
||||
// Set the configuration file path.
|
||||
$file = JPATH_CONFIGURATION . '/configuration.php';
|
||||
|
||||
// Attempt to make the file writeable
|
||||
if (Path::isOwner($file) && !Path::setPermissions($file, '0644')) {
|
||||
Factory::getApplication()->enqueueMessage(Text::_('COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTWRITABLE'), 'error');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Attempt to write the configuration file as a PHP class named JConfig.
|
||||
$configuration = $config->toString('PHP', ['class' => 'JConfig', 'closingtag' => false]);
|
||||
|
||||
if (!File::write($file, $configuration)) {
|
||||
Factory::getApplication()->enqueueMessage(Text::_('COM_CONFIG_ERROR_WRITE_FAILED'), 'error');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Attempt to make the file unwriteable
|
||||
if (Path::isOwner($file) && !Path::setPermissions($file, '0444')) {
|
||||
Factory::getApplication()->enqueueMessage(Text::_('COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTUNWRITABLE'), 'error');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2024 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for notifying users of a change
|
||||
* in the default .htaccess file regarding setting the Content-Encoding header.
|
||||
*/
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Notifies users of a change in the default .htaccess file regarding setting for brotli to prevent double compression
|
||||
*
|
||||
* This check returns true regardless of condition.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 4.4.4
|
||||
*/
|
||||
function admin_postinstall_htaccessbrotli_condition()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for notifying users of a change
|
||||
* in the default .htaccess file regarding setting the Content-Encoding header.
|
||||
*/
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Notifies users of a change in the default .htaccess file regarding setting the Content-Encoding header
|
||||
*
|
||||
* This check returns true regardless of condition.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 4.2.9
|
||||
*/
|
||||
function admin_postinstall_htaccesssetce_condition()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for notifying users of a change
|
||||
* in the default .htaccess file regarding hardening against XSS in SVG's
|
||||
*/
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Notifies users of a change in the default .htaccess file regarding hardening against XSS in SVG's
|
||||
*
|
||||
* This check returns true regardless of condition.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.9.21
|
||||
*/
|
||||
function admin_postinstall_htaccesssvg_condition()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for the checks if the installation is
|
||||
* affected by the issue with content languages access in 3.4.0
|
||||
*/
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Checks if the installation is affected by the issue with content languages access in 3.4.0
|
||||
*
|
||||
* @link https://github.com/joomla/joomla-cms/pull/6172
|
||||
* @link https://github.com/joomla/joomla-cms/pull/6194
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.4.1
|
||||
*/
|
||||
function admin_postinstall_languageaccess340_condition()
|
||||
{
|
||||
$db = Factory::getDbo();
|
||||
$query = $db->getQuery(true)
|
||||
->select($db->quoteName('access'))
|
||||
->from($db->quoteName('#__languages'))
|
||||
->where($db->quoteName('access') . ' = ' . $db->quote('0'));
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
$numRows = $db->getNumRows();
|
||||
|
||||
if (isset($numRows) && $numRows != 0) {
|
||||
// We have rows here so we have at minimum one row with access set to 0
|
||||
return true;
|
||||
}
|
||||
|
||||
// All good the query return nothing.
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for the checking minimum PHP version support
|
||||
*/
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Alerts the user we are collecting anonymous data as of Joomla 3.5.0.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.5
|
||||
*/
|
||||
function admin_postinstall_statscollection_condition()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*
|
||||
* This file contains post-installation message handling for notifying users of a change
|
||||
* in the default textfilter settings
|
||||
*/
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Notifies users the changes from the default textfilter.
|
||||
*
|
||||
* This check returns true regardless of condition.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.9.19
|
||||
*/
|
||||
function admin_postinstall_textfilter3919_condition()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
8961
administrator/components/com_admin/script.php
Normal file
8961
administrator/components/com_admin/script.php
Normal file
File diff suppressed because it is too large
Load Diff
55
administrator/components/com_admin/services/provider.php
Normal file
55
administrator/components/com_admin/services/provider.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_admin
|
||||
*
|
||||
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
|
||||
use Joomla\CMS\Extension\ComponentInterface;
|
||||
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
|
||||
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
|
||||
use Joomla\CMS\HTML\Registry;
|
||||
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
|
||||
use Joomla\Component\Admin\Administrator\Extension\AdminComponent;
|
||||
use Joomla\DI\Container;
|
||||
use Joomla\DI\ServiceProviderInterface;
|
||||
|
||||
/**
|
||||
* The admin service provider.
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
return new class () implements ServiceProviderInterface {
|
||||
/**
|
||||
* Registers the service provider with a DI container.
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
public function register(Container $container)
|
||||
{
|
||||
$container->registerServiceProvider(new MVCFactory('\\Joomla\\Component\\Admin'));
|
||||
$container->registerServiceProvider(new ComponentDispatcherFactory('\\Joomla\\Component\\Admin'));
|
||||
|
||||
$container->set(
|
||||
ComponentInterface::class,
|
||||
function (Container $container) {
|
||||
$component = new AdminComponent($container->get(ComponentDispatcherFactoryInterface::class));
|
||||
|
||||
$component->setMVCFactory($container->get(MVCFactoryInterface::class));
|
||||
$component->setRegistry($container->get(Registry::class));
|
||||
|
||||
return $component;
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,131 @@
|
||||
--
|
||||
-- Step 1: Convert all tables to utf8mb4 character set with utf8mb4_unicode_ci collation
|
||||
-- except of #__finder_xxx tables, those are handled with 4.0.0-2018-07-29.sql at update.
|
||||
--
|
||||
|
||||
ALTER TABLE `#__action_logs` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__action_logs_extensions` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__action_logs_users` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__action_log_config` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__assets` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__associations` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__banners` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__banner_clients` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__banner_tracks` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__categories` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__contact_details` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content_frontpage` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content_rating` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content_types` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__contentitem_tag_map` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__extensions` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields_categories` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields_groups` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields_values` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__history` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__languages` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__menu` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__menu_types` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__messages` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__messages_cfg` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__modules` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__modules_menu` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__newsfeeds` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__overrider` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__postinstall_messages` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__privacy_consents` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__privacy_requests` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__redirect_links` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__schemas` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__session` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__tags` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__template_overrides` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__template_styles` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__ucm_base` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__ucm_content` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__updates` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__update_sites` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__update_sites_extensions` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__usergroups` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__users` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_keys` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_notes` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_profiles` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_usergroup_map` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__utf8_conversion` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__viewlevels` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Step 2: Set collation to utf8mb4_bin for formerly utf8_bin collated columns
|
||||
-- and for the lang_code column of the languages table
|
||||
--
|
||||
|
||||
ALTER TABLE `#__banners` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__categories` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__contact_details` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__content` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__languages` MODIFY `lang_code` char(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||
ALTER TABLE `#__menu` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'The SEF alias of the menu item.';
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__tags` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
|
||||
--
|
||||
-- Step 3: Set default character set and collation for all tables
|
||||
--
|
||||
|
||||
ALTER TABLE `#__action_logs` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__action_logs_extensions` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__action_logs_users` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__action_log_config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__assets` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__associations` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__banners` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__banner_clients` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__banner_tracks` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__categories` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__contact_details` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content_frontpage` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content_rating` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__content_types` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__contentitem_tag_map` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__extensions` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields_categories` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields_groups` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__fields_values` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__history` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__languages` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__menu` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__menu_types` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__messages` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__messages_cfg` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__modules` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__modules_menu` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__newsfeeds` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__overrider` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__postinstall_messages` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__privacy_consents` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__privacy_requests` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__redirect_links` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__schemas` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__session` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__tags` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__template_overrides` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__template_styles` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__ucm_base` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__ucm_content` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__updates` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__update_sites` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__update_sites_extensions` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__usergroups` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__users` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_keys` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_notes` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_profiles` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__user_usergroup_map` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__utf8_conversion` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__viewlevels` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,23 @@
|
||||
--
|
||||
-- This file contains the part of the UTF-8 Multibyte (utf8mb4) conversion for MySQL
|
||||
-- for optional extensions which might be still installed or not on an updated installation.
|
||||
--
|
||||
-- In opposite to file utf8mb4-conversion.sql, any table handled by this file here doesn't
|
||||
-- need to exist.
|
||||
--
|
||||
|
||||
--
|
||||
-- Step 1: Convert all tables to utf8mb4 character set with utf8mb4_unicode_ci collation.
|
||||
--
|
||||
|
||||
ALTER TABLE `#__core_log_searches` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Step 2: Set collation to utf8mb4_bin for formerly utf8_bin collated columns.
|
||||
--
|
||||
|
||||
--
|
||||
-- Step 3: Set default character set and collation for all tables
|
||||
--
|
||||
|
||||
ALTER TABLE `#__core_log_searches` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,95 @@
|
||||
-- The following statement was moved from below to here and modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__extensions` DROP COLUMN `system_data` /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2016-07-03.sql
|
||||
-- The following statement was modified for 4.1.1 by removing the `system_data` column.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
('plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2016-09-22.sql
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'library' AND `element` = 'phputf8';
|
||||
|
||||
-- From 4.0.0-2016-09-28.sql
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'plugin' AND `element` = 'p3p' AND `folder` = 'system';
|
||||
|
||||
-- From 4.0.0-2016-10-02.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__user_keys` DROP COLUMN `invalid` /** CAN FAIL **/;
|
||||
|
||||
--
|
||||
-- Insert the new templates into the database. Set as home if the old template is the active one
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by removing the `system_data` column.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('atum', 'template', 'atum', '', 1, 1, 1, 0, '{}', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
('cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, '{}', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- The following statement had to be modified for 4.1 by adding the `inheritable` and `parent` columns.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/36585
|
||||
INSERT INTO `#__template_styles` (`template`, `client_id`, `home`, `title`, `inheritable`, `parent`, `params`) VALUES
|
||||
('atum', 1, (CASE WHEN (SELECT b.`count` FROM (SELECT count(a.`id`) AS `count` FROM `#__template_styles` a WHERE a.`home` = '1' AND a.`client_id` = 1 AND a.`template` IN ('isis', 'hathor')) AS b) = 0 THEN '0' ELSE '1' END), 'atum - Default', 1, '', '{}'),
|
||||
('cassiopeia', 0, (CASE WHEN (SELECT d.`count` FROM (SELECT count(c.`id`) AS `count` FROM `#__template_styles` c WHERE c.`home` = '1' AND c.`client_id` = 0 AND c.`template` IN ('protostar', 'beez3')) AS d) = 0 THEN '0' ELSE '1' END), 'cassiopeia - Default', 1, '', '{}');
|
||||
|
||||
--
|
||||
-- Move mod_version to the right position for the atum template
|
||||
--
|
||||
UPDATE `#__modules` SET `position` = 'status' WHERE `module` = 'mod_version' AND `client_id` = 1;
|
||||
|
||||
--
|
||||
-- Now we can clean up the old templates
|
||||
--
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'template' AND `element` = 'hathor' AND `client_id` = 1;
|
||||
DELETE FROM `#__template_styles` WHERE `template` = 'hathor' AND `client_id` = 1;
|
||||
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'template' AND `element` = 'isis' AND `client_id` = 1;
|
||||
DELETE FROM `#__template_styles` WHERE `template` = 'isis' AND `client_id` = 1;
|
||||
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'template' AND `element` = 'protostar' AND `client_id` = 0;
|
||||
DELETE FROM `#__template_styles` WHERE `template` = 'protostar' AND `client_id` = 0;
|
||||
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'template' AND `element` = 'beez3' AND `client_id` = 0;
|
||||
DELETE FROM `#__template_styles` WHERE `template` = 'beez3' AND `client_id` = 0;
|
||||
|
||||
-- From 4.0.0-2016-10-03.sql
|
||||
DELETE FROM `#__extensions` WHERE `name` = 'mod_submenu';
|
||||
|
||||
-- From 4.0.0-2017-03-18.sql
|
||||
-- The following statement was moved to the top for 4.1.1.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
-- ALTER TABLE `#__extensions` DROP COLUMN `system_data`;
|
||||
|
||||
-- From 4.0.0-2017-04-25.sql
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
('plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
('plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
('plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2017-05-31.sql
|
||||
UPDATE `#__menu` SET `link` = 'index.php?option=com_config&view=config' WHERE `link` = 'index.php?option=com_config&view=config&controller=config.display.config';
|
||||
UPDATE `#__menu` SET `link` = 'index.php?option=com_config&view=templates' WHERE `link` = 'index.php?option=com_config&view=templates&controller=config.display.templates';
|
||||
|
||||
-- From 4.0.0-2017-06-03.sql
|
||||
-- The following two statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__extensions` ADD COLUMN `changelogurl` text AFTER `element` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__updates` ADD COLUMN `changelogurl` text AFTER `infourl` /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2017-10-10.sql
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 0, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`)
|
||||
SELECT extension_id, 'PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_TITLE', 'PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_BODY', 'PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_ACTION', 'plg_system_httpheaders', 1, 'action', 'site://plugins/system/httpheaders/postinstall/introduction.php', 'httpheaders_postinstall_action', 'site://plugins/system/httpheaders/postinstall/introduction.php', 'httpheaders_postinstall_condition', '4.0.0', 1 FROM `#__extensions` WHERE `name` = 'files_joomla';
|
||||
|
||||
-- From 4.0.0-2018-02-24.sql
|
||||
DELETE FROM `#__extensions` WHERE `type` = 'library' AND `element` = 'idna_convert';
|
||||
|
||||
-- From 4.0.0-2018-03-05.sql
|
||||
ALTER TABLE `#__modules` CHANGE `content` `content` TEXT NULL;
|
||||
@@ -0,0 +1,150 @@
|
||||
--
|
||||
-- Table structure for table `#__workflows`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__workflows` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`asset_id` int DEFAULT 0,
|
||||
`published` tinyint NOT NULL DEFAULT 0,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`extension` varchar(50) NOT NULL,
|
||||
`default` tinyint NOT NULL DEFAULT 0,
|
||||
`ordering` int NOT NULL DEFAULT 0,
|
||||
`created` datetime NOT NULL,
|
||||
`created_by` int NOT NULL DEFAULT 0,
|
||||
`modified` datetime NOT NULL,
|
||||
`modified_by` int NOT NULL DEFAULT 0,
|
||||
`checked_out_time` datetime,
|
||||
`checked_out` int NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_asset_id` (`asset_id`),
|
||||
KEY `idx_title` (`title`(191)),
|
||||
KEY `idx_extension` (`extension`),
|
||||
KEY `idx_default` (`default`),
|
||||
KEY `idx_created` (`created`),
|
||||
KEY `idx_created_by` (`created_by`),
|
||||
KEY `idx_modified` (`modified`),
|
||||
KEY `idx_modified_by` (`modified_by`),
|
||||
KEY `idx_checked_out` (`checked_out`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `#__workflows`
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__workflows` (`id`, `asset_id`, `published`, `title`, `description`, `extension`, `default`, `ordering`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`) VALUES
|
||||
(1, 0, 1, 'COM_WORKFLOW_BASIC_WORKFLOW', '', 'com_content.article', 1, 1, CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, 0);
|
||||
|
||||
--
|
||||
-- Table structure for table `#__workflow_associations`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__workflow_associations` (
|
||||
`item_id` int NOT NULL DEFAULT 0 COMMENT 'Extension table id value',
|
||||
`stage_id` int NOT NULL COMMENT 'Foreign Key to #__workflow_stages.id',
|
||||
`extension` varchar(50) NOT NULL,
|
||||
PRIMARY KEY (`item_id`, `extension`),
|
||||
KEY `idx_item_stage_extension` (`item_id`, `stage_id`, `extension`),
|
||||
KEY `idx_item_id` (`item_id`),
|
||||
KEY `idx_stage_id` (`stage_id`),
|
||||
KEY `idx_extension` (`extension`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Table structure for table `#__workflow_stages`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__workflow_stages` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`asset_id` int DEFAULT 0,
|
||||
`ordering` int NOT NULL DEFAULT 0,
|
||||
`workflow_id` int NOT NULL,
|
||||
`published` tinyint NOT NULL DEFAULT 0,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`default` tinyint NOT NULL DEFAULT 0,
|
||||
`checked_out_time` datetime,
|
||||
`checked_out` int NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_workflow_id` (`workflow_id`),
|
||||
KEY `idx_checked_out` (`checked_out`),
|
||||
KEY `idx_title` (`title`(191)),
|
||||
KEY `idx_asset_id` (`asset_id`),
|
||||
KEY `idx_default` (`default`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `#__workflow_stages`
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__workflow_stages` (`id`, `asset_id`, `ordering`, `workflow_id`, `published`, `title`, `description`, `default`, `checked_out_time`, `checked_out`) VALUES
|
||||
(1, 0, 1, 1, 1, 'COM_WORKFLOW_BASIC_STAGE', '', 1, NULL, 0);
|
||||
|
||||
--
|
||||
-- Table structure for table `#__workflow_transitions`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__workflow_transitions` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`asset_id` int DEFAULT 0,
|
||||
`ordering` int NOT NULL DEFAULT 0,
|
||||
`workflow_id` int NOT NULL,
|
||||
`published` tinyint NOT NULL DEFAULT 0,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`from_stage_id` int NOT NULL,
|
||||
`to_stage_id` int NOT NULL,
|
||||
`options` text NOT NULL,
|
||||
`checked_out_time` datetime,
|
||||
`checked_out` int NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_title` (`title`(191)),
|
||||
KEY `idx_asset_id` (`asset_id`),
|
||||
KEY `idx_checked_out` (`checked_out`),
|
||||
KEY `idx_from_stage_id` (`from_stage_id`),
|
||||
KEY `idx_to_stage_id` (`to_stage_id`),
|
||||
KEY `idx_workflow_id` (`workflow_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `#__workflow_transitions`
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__workflow_transitions` (`id`, `asset_id`, `published`, `ordering`, `workflow_id`, `title`, `description`, `from_stage_id`, `to_stage_id`, `options`, `checked_out_time`, `checked_out`) VALUES
|
||||
(1, 0, 1, 1, 1, 'Unpublish', '', -1, 1, '{"publishing":"0"}', NULL, 0),
|
||||
(2, 0, 1, 2, 1, 'Publish', '', -1, 1, '{"publishing":"1"}', NULL, 0),
|
||||
(3, 0, 1, 3, 1, 'Trash', '', -1, 1, '{"publishing":"-2"}', NULL, 0),
|
||||
(4, 0, 1, 4, 1, 'Archive', '', -1, 1, '{"publishing":"2"}', NULL, 0),
|
||||
(5, 0, 1, 5, 1, 'Feature', '', -1, 1, '{"featuring":"1"}', NULL, 0),
|
||||
(6, 0, 1, 6, 1, 'Unfeature', '', -1, 1, '{"featuring":"0"}', NULL, 0),
|
||||
(7, 0, 1, 7, 1, 'Publish & Feature', '', -1, 1, '{"publishing":"1","featuring":"1"}', NULL, 0);
|
||||
|
||||
--
|
||||
-- Creating extension entry
|
||||
--
|
||||
-- Note that the old pseudo null dates have to be used for the `checked_out_time`
|
||||
-- column because the conversion to real null dates will be done with a later
|
||||
-- update SQL script.
|
||||
--
|
||||
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_workflow_publishing', 'plugin', 'publishing', 'workflow', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_workflow_featuring', 'plugin', 'featuring', 'workflow', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_workflow_notification', 'plugin', 'notification', 'workflow', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
--
|
||||
-- Creating Associations for existing content
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__workflow_associations` (`item_id`, `stage_id`, `extension`)
|
||||
SELECT `id`, 1, 'com_content.article' FROM `#__content`;
|
||||
@@ -0,0 +1,29 @@
|
||||
-- From 4.0.0-2018-06-03.sql
|
||||
-- This has been removed as com_csp has been removed from the final build
|
||||
|
||||
-- From 4.0.0-2018-06-26.sql
|
||||
ALTER TABLE `#__user_notes` CHANGE `modified_user_id` `modified_user_id` int unsigned NOT NULL DEFAULT 0;
|
||||
|
||||
-- From 4.0.0-2018-07-02.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 0, 1, 1, '', '', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2018-07-19.sql
|
||||
CREATE TABLE IF NOT EXISTS `#__template_overrides` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`template` varchar(50) NOT NULL DEFAULT '',
|
||||
`hash_id` varchar(255) NOT NULL DEFAULT '',
|
||||
`extension_id` int DEFAULT 0,
|
||||
`state` tinyint NOT NULL DEFAULT 0,
|
||||
`action` varchar(50) NOT NULL DEFAULT '',
|
||||
`client_id` tinyint unsigned NOT NULL DEFAULT 0,
|
||||
`created_date` datetime NOT NULL,
|
||||
`modified_date` datetime,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_template` (`template`),
|
||||
KEY `idx_extension_id` (`extension_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 1, '', '', '', 0, '0000-00-00 00:00:00', 4, 0),
|
||||
(0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 1, '', '', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
@@ -0,0 +1,328 @@
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, '', '', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
TRUNCATE TABLE `#__finder_filters`;
|
||||
ALTER TABLE `#__finder_filters` MODIFY `created_by` int unsigned NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `#__finder_filters` MODIFY `created_by_alias` varchar(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__finder_filters` MODIFY `created` datetime NOT NULL;
|
||||
ALTER TABLE `#__finder_filters` MODIFY `modified` datetime NOT NULL;
|
||||
ALTER TABLE `#__finder_filters` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__finder_filters` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_filters` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
TRUNCATE TABLE `#__finder_links`;
|
||||
ALTER TABLE `#__finder_links` CHANGE `route` `route` varchar(400);
|
||||
ALTER TABLE `#__finder_links` CHANGE `language` `language` CHAR(7) NOT NULL DEFAULT '' AFTER `access`;
|
||||
ALTER TABLE `#__finder_links` MODIFY `state` int NOT NULL DEFAULT 1;
|
||||
ALTER TABLE `#__finder_links` MODIFY `access` int NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `#__finder_links` MODIFY `indexdate` datetime NOT NULL;
|
||||
ALTER TABLE `#__finder_links` MODIFY `publish_start_date` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__finder_links` MODIFY `publish_end_date` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__finder_links` MODIFY `start_date` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__finder_links` MODIFY `end_date` datetime NULL DEFAULT NULL;
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__finder_links` ADD INDEX `idx_language` (`language`) /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_links` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_links` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IF NOT EXISTS" keywords.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
CREATE TABLE IF NOT EXISTS `#__finder_links_terms` (
|
||||
`link_id` INT UNSIGNED NOT NULL,
|
||||
`term_id` INT UNSIGNED NOT NULL,
|
||||
`weight` FLOAT UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`link_id`, `term_id`),
|
||||
INDEX `idx_term_weight` (`term_id`, `weight`),
|
||||
INDEX `idx_link_term_weight` (`link_id`, `term_id`, `weight`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- The following 16 statements were modified for 4.1.1 by adding the "IF EXISTS" keywords.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms0`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms1`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms2`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms3`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms4`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms5`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms6`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms7`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms8`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_terms9`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_termsa`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_termsb`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_termsc`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_termsd`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_termse`;
|
||||
DROP TABLE IF EXISTS `#__finder_links_termsf`;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__finder_logging` (
|
||||
`searchterm` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`md5sum` VARCHAR(32) NOT NULL DEFAULT '',
|
||||
`query` BLOB NOT NULL,
|
||||
`hits` INT NOT NULL DEFAULT 1,
|
||||
`results` INT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`md5sum`),
|
||||
INDEX `searchterm` (`searchterm`(191))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_logging` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_logging` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IF EXISTS" keywords.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
DROP TABLE IF EXISTS `#__finder_taxonomy`;
|
||||
CREATE TABLE IF NOT EXISTS `#__finder_taxonomy` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`parent_id` INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
`lft` INT NOT NULL DEFAULT '0',
|
||||
`rgt` INT NOT NULL DEFAULT '0',
|
||||
`level` INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
`path` VARCHAR(400) NOT NULL DEFAULT '',
|
||||
`title` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`alias` VARCHAR(400) NOT NULL DEFAULT '',
|
||||
`state` TINYINT UNSIGNED NOT NULL DEFAULT '1',
|
||||
`access` TINYINT UNSIGNED NOT NULL DEFAULT '1',
|
||||
`language` CHAR(7) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_state` (`state`),
|
||||
INDEX `idx_access` (`access`),
|
||||
INDEX `idx_path` (`path`(100)),
|
||||
INDEX `idx_left_right` (`lft`, `rgt`),
|
||||
INDEX `idx_alias` (`alias`(100)),
|
||||
INDEX `idx_language` (`language`),
|
||||
INDEX `idx_parent_published` (`parent_id`, `state`, `access`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
INSERT INTO `#__finder_taxonomy` (`id`, `parent_id`, `lft`, `rgt`, `level`, `path`, `title`, `alias`, `state`, `access`, `language`) VALUES
|
||||
(1, 0, 0, 1, 0, '', 'ROOT', 'root', 1, 1, '*');
|
||||
|
||||
TRUNCATE TABLE `#__finder_taxonomy_map`;
|
||||
ALTER TABLE `#__finder_taxonomy_map` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_taxonomy_map` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
TRUNCATE TABLE `#__finder_terms`;
|
||||
ALTER TABLE `#__finder_terms` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_terms` CHANGE `language` `language` CHAR(7) NOT NULL DEFAULT '' AFTER `links`;
|
||||
ALTER TABLE `#__finder_terms` MODIFY `term` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||
ALTER TABLE `#__finder_terms` MODIFY `stem` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__finder_terms` MODIFY `soundex` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
-- The following 4 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__finder_terms` DROP INDEX `idx_term` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_terms` ADD INDEX `idx_stem` (`stem`) /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_terms` ADD INDEX `idx_language` (`language`) /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_terms` ADD UNIQUE INDEX `idx_term_language` (`term`, `language`) /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_terms` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `#__finder_terms_common`;
|
||||
-- The following statement was modified for 4.1.1 by adding the "IF NOT EXISTS" keywords.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
CREATE TABLE IF NOT EXISTS `#__finder_terms_common` (
|
||||
`term` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`language` char(7) NOT NULL DEFAULT '',
|
||||
`custom` int NOT NULL DEFAULT '0',
|
||||
UNIQUE KEY `idx_term_language` (`term`,`language`),
|
||||
KEY `idx_lang` (`language`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
INSERT INTO `#__finder_terms_common` (`term`, `language`, `custom`) VALUES
|
||||
('i', 'en', 0),
|
||||
('me', 'en', 0),
|
||||
('my', 'en', 0),
|
||||
('myself', 'en', 0),
|
||||
('we', 'en', 0),
|
||||
('our', 'en', 0),
|
||||
('ours', 'en', 0),
|
||||
('ourselves', 'en', 0),
|
||||
('you', 'en', 0),
|
||||
('your', 'en', 0),
|
||||
('yours', 'en', 0),
|
||||
('yourself', 'en', 0),
|
||||
('yourselves', 'en', 0),
|
||||
('he', 'en', 0),
|
||||
('him', 'en', 0),
|
||||
('his', 'en', 0),
|
||||
('himself', 'en', 0),
|
||||
('she', 'en', 0),
|
||||
('her', 'en', 0),
|
||||
('hers', 'en', 0),
|
||||
('herself', 'en', 0),
|
||||
('it', 'en', 0),
|
||||
('its', 'en', 0),
|
||||
('itself', 'en', 0),
|
||||
('they', 'en', 0),
|
||||
('them', 'en', 0),
|
||||
('their', 'en', 0),
|
||||
('theirs', 'en', 0),
|
||||
('themselves', 'en', 0),
|
||||
('what', 'en', 0),
|
||||
('which', 'en', 0),
|
||||
('who', 'en', 0),
|
||||
('whom', 'en', 0),
|
||||
('this', 'en', 0),
|
||||
('that', 'en', 0),
|
||||
('these', 'en', 0),
|
||||
('those', 'en', 0),
|
||||
('am', 'en', 0),
|
||||
('is', 'en', 0),
|
||||
('are', 'en', 0),
|
||||
('was', 'en', 0),
|
||||
('were', 'en', 0),
|
||||
('be', 'en', 0),
|
||||
('been', 'en', 0),
|
||||
('being', 'en', 0),
|
||||
('have', 'en', 0),
|
||||
('has', 'en', 0),
|
||||
('had', 'en', 0),
|
||||
('having', 'en', 0),
|
||||
('do', 'en', 0),
|
||||
('does', 'en', 0),
|
||||
('did', 'en', 0),
|
||||
('doing', 'en', 0),
|
||||
('would', 'en', 0),
|
||||
('should', 'en', 0),
|
||||
('could', 'en', 0),
|
||||
('ought', 'en', 0),
|
||||
('i\'m', 'en', 0),
|
||||
('you\'re', 'en', 0),
|
||||
('he\'s', 'en', 0),
|
||||
('she\'s', 'en', 0),
|
||||
('it\'s', 'en', 0),
|
||||
('we\'re', 'en', 0),
|
||||
('they\'re', 'en', 0),
|
||||
('i\'ve', 'en', 0),
|
||||
('you\'ve', 'en', 0),
|
||||
('we\'ve', 'en', 0),
|
||||
('they\'ve', 'en', 0),
|
||||
('i\'d', 'en', 0),
|
||||
('you\'d', 'en', 0),
|
||||
('he\'d', 'en', 0),
|
||||
('she\'d', 'en', 0),
|
||||
('we\'d', 'en', 0),
|
||||
('they\'d', 'en', 0),
|
||||
('i\'ll', 'en', 0),
|
||||
('you\'ll', 'en', 0),
|
||||
('he\'ll', 'en', 0),
|
||||
('she\'ll', 'en', 0),
|
||||
('we\'ll', 'en', 0),
|
||||
('they\'ll', 'en', 0),
|
||||
('isn\'t', 'en', 0),
|
||||
('aren\'t', 'en', 0),
|
||||
('wasn\'t', 'en', 0),
|
||||
('weren\'t', 'en', 0),
|
||||
('hasn\'t', 'en', 0),
|
||||
('haven\'t', 'en', 0),
|
||||
('hadn\'t', 'en', 0),
|
||||
('doesn\'t', 'en', 0),
|
||||
('don\'t', 'en', 0),
|
||||
('didn\'t', 'en', 0),
|
||||
('won\'t', 'en', 0),
|
||||
('wouldn\'t', 'en', 0),
|
||||
('shan\'t', 'en', 0),
|
||||
('shouldn\'t', 'en', 0),
|
||||
('can\'t', 'en', 0),
|
||||
('cannot', 'en', 0),
|
||||
('couldn\'t', 'en', 0),
|
||||
('mustn\'t', 'en', 0),
|
||||
('let\'s', 'en', 0),
|
||||
('that\'s', 'en', 0),
|
||||
('who\'s', 'en', 0),
|
||||
('what\'s', 'en', 0),
|
||||
('here\'s', 'en', 0),
|
||||
('there\'s', 'en', 0),
|
||||
('when\'s', 'en', 0),
|
||||
('where\'s', 'en', 0),
|
||||
('why\'s', 'en', 0),
|
||||
('how\'s', 'en', 0),
|
||||
('a', 'en', 0),
|
||||
('an', 'en', 0),
|
||||
('the', 'en', 0),
|
||||
('and', 'en', 0),
|
||||
('but', 'en', 0),
|
||||
('if', 'en', 0),
|
||||
('or', 'en', 0),
|
||||
('because', 'en', 0),
|
||||
('as', 'en', 0),
|
||||
('until', 'en', 0),
|
||||
('while', 'en', 0),
|
||||
('of', 'en', 0),
|
||||
('at', 'en', 0),
|
||||
('by', 'en', 0),
|
||||
('for', 'en', 0),
|
||||
('with', 'en', 0),
|
||||
('about', 'en', 0),
|
||||
('against', 'en', 0),
|
||||
('between', 'en', 0),
|
||||
('into', 'en', 0),
|
||||
('through', 'en', 0),
|
||||
('during', 'en', 0),
|
||||
('before', 'en', 0),
|
||||
('after', 'en', 0),
|
||||
('above', 'en', 0),
|
||||
('below', 'en', 0),
|
||||
('to', 'en', 0),
|
||||
('from', 'en', 0),
|
||||
('up', 'en', 0),
|
||||
('down', 'en', 0),
|
||||
('in', 'en', 0),
|
||||
('out', 'en', 0),
|
||||
('on', 'en', 0),
|
||||
('off', 'en', 0),
|
||||
('over', 'en', 0),
|
||||
('under', 'en', 0),
|
||||
('again', 'en', 0),
|
||||
('further', 'en', 0),
|
||||
('then', 'en', 0),
|
||||
('once', 'en', 0),
|
||||
('here', 'en', 0),
|
||||
('there', 'en', 0),
|
||||
('when', 'en', 0),
|
||||
('where', 'en', 0),
|
||||
('why', 'en', 0),
|
||||
('how', 'en', 0),
|
||||
('all', 'en', 0),
|
||||
('any', 'en', 0),
|
||||
('both', 'en', 0),
|
||||
('each', 'en', 0),
|
||||
('few', 'en', 0),
|
||||
('more', 'en', 0),
|
||||
('most', 'en', 0),
|
||||
('other', 'en', 0),
|
||||
('some', 'en', 0),
|
||||
('such', 'en', 0),
|
||||
('no', 'en', 0),
|
||||
('nor', 'en', 0),
|
||||
('not', 'en', 0),
|
||||
('only', 'en', 0),
|
||||
('own', 'en', 0),
|
||||
('same', 'en', 0),
|
||||
('so', 'en', 0),
|
||||
('than', 'en', 0),
|
||||
('too', 'en', 0),
|
||||
('very', 'en', 0);
|
||||
|
||||
TRUNCATE TABLE `#__finder_tokens`;
|
||||
ALTER TABLE `#__finder_tokens` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_tokens` CHANGE `language` `language` CHAR(7) NOT NULL DEFAULT '' AFTER `context`;
|
||||
ALTER TABLE `#__finder_tokens` MODIFY `term` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||
ALTER TABLE `#__finder_tokens` MODIFY `stem` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
-- The following 2 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__finder_tokens` ADD INDEX `idx_stem` (`stem`) /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_tokens` ADD INDEX `idx_language` (`language`) /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_tokens` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
TRUNCATE TABLE `#__finder_tokens_aggregate`;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__finder_tokens_aggregate` DROP COLUMN `map_suffix` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` CHANGE `language` `language` CHAR(7) NOT NULL DEFAULT '' AFTER `total_weight`;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` MODIFY `term` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` MODIFY `stem` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__finder_tokens_aggregate` MODIFY `term_weight` float unsigned NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` MODIFY `context_weight` float unsigned NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` MODIFY `total_weight` float unsigned NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `#__finder_tokens_aggregate` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
ALTER TABLE `#__finder_types` MODIFY `mime` varchar(100) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `#__finder_types` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE `#__finder_types` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,23 @@
|
||||
-- From 4.0.0-2018-08-01.sql
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_created_time` datetime NOT NULL;
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_modified_time` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_publish_down` datetime NULL DEFAULT NULL;
|
||||
|
||||
-- Only on MySQL: Update empty strings to null date before converting the column from varchar to datetime
|
||||
-- The following statement was modified for 4.1.1 by adding a check for NULL and a type cast to CHAR.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = '0000-00-00 00:00:00' WHERE `core_checked_out_time` IS NOT NULL AND CAST(`core_checked_out_time` AS char) = '';
|
||||
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
-- From 4.0.0-2018-08-29.sql
|
||||
ALTER TABLE `#__modules` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__modules` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__modules` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
-- Use 0 instead of '0000-00-00 00:00:00' if you get 'Invalid default value for ...'
|
||||
UPDATE `#__modules` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__modules` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__modules` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
@@ -0,0 +1,40 @@
|
||||
-- From 4.0.0-2018-09-12.sql
|
||||
UPDATE `#__extensions` SET `client_id` = 1 WHERE `name` = 'com_mailto';
|
||||
UPDATE `#__extensions` SET `client_id` = 1 WHERE `name` = 'com_wrapper';
|
||||
|
||||
-- From 4.0.0-2018-10-18.sql
|
||||
UPDATE `#__content_types` SET `router` = '' WHERE `type_alias` = 'com_users.user';
|
||||
|
||||
-- From 4.0.0-2019-01-05.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2019-01-16.sql
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('com_mails', 'component', 'com_mails', '', 1, 1, 1, 1, '{"name":"com_mails","type":"component","creationDate":"January 2019","author":"Joomla! Project","copyright":"(C) 2019 Open Source Matters, Inc. <https://www.joomla.org>","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"4.0.0","description":"COM_MAILS_XML_DESCRIPTION","group":""}', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__mail_templates` (
|
||||
`template_id` VARCHAR(127) NOT NULL DEFAULT '',
|
||||
`language` char(7) NOT NULL DEFAULT '',
|
||||
`subject` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`body` TEXT NOT NULL,
|
||||
`htmlbody` TEXT NOT NULL,
|
||||
`attachments` TEXT NOT NULL,
|
||||
`params` TEXT NOT NULL,
|
||||
PRIMARY KEY (`template_id`, `language`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__mail_templates` (`template_id`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
|
||||
('com_config.test_mail', '', 'COM_CONFIG_SENDMAIL_SUBJECT', 'COM_CONFIG_SENDMAIL_BODY', '', '', '{"tags":["sitename","method"]}');
|
||||
|
||||
-- From 4.0.0-2019-02-03.sql
|
||||
DELETE FROM `#__menu` WHERE `link` = 'index.php?option=com_postinstall' AND `menutype` = 'main';
|
||||
DELETE FROM `#__menu` WHERE `link` = 'index.php?option=com_redirect' AND `menutype` = 'main';
|
||||
DELETE FROM `#__menu` WHERE `link` = 'index.php?option=com_joomlaupdate' AND `menutype` = 'main';
|
||||
|
||||
-- From 4.0.0-2019-03-09.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
@@ -0,0 +1,8 @@
|
||||
-- The following two statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__menu` ADD COLUMN `publish_up` datetime /** CAN FAIL **/;
|
||||
ALTER TABLE `#__menu` ADD COLUMN `publish_down` datetime /** CAN FAIL **/;
|
||||
|
||||
ALTER TABLE `#__menu` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__menu` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
@@ -0,0 +1,8 @@
|
||||
-- From 4.0.0-2019-03-31.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2019-04-15.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_fields_subform', 'plugin', 'subform', 'fields', 0, 1, 1, 0, '', '', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
@@ -0,0 +1,31 @@
|
||||
ALTER TABLE `#__contact_details` MODIFY `created` datetime NOT NULL;
|
||||
ALTER TABLE `#__contact_details` MODIFY `modified` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__contact_details` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__contact_details` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__contact_details` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__contact_details` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__contact_details` SET `modified` = `created`, `modified_by` = `created_by` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__contact_details` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__contact_details` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__contact_details` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_created_time` = '1980-01-01 00:00:00'
|
||||
WHERE `core_type_alias` = 'com_contact.contact'
|
||||
AND `core_created_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` = 'com_contact.contact'
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_publish_up` = NULL
|
||||
WHERE `core_type_alias` = 'com_contact.contact'
|
||||
AND `core_publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_publish_down` = NULL
|
||||
WHERE `core_type_alias` = 'com_contact.contact'
|
||||
AND `core_publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias` = 'com_contact.contact'
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
@@ -0,0 +1,17 @@
|
||||
-- From 4.0.0-2019-05-05.sql
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_banners&view=banners' WHERE `menutype`='main' AND `path`='Banners/Banners';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_categories&view=categories&extension=com_banners' WHERE `menutype`='main' AND `path`='Banners/Categories';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_contact&view=contacts' WHERE `menutype`='main' AND `path`='Contacts/Contacts';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_categories&view=categories&extension=com_contact' WHERE `menutype`='main' AND `path`='Contacts/Categories';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_newsfeeds&view=newsfeeds' WHERE `menutype`='main' AND `path`='News Feeds/Feeds';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_categories&view=categories&extension=com_newsfeeds' WHERE `menutype`='main' AND `path`='News Feeds/Categories';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_redirect&view=links' WHERE `menutype`='main' AND `path`='Redirect';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_search&view=searches' WHERE `menutype`='main' AND `path`='Basic Search';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_finder&view=index' WHERE `menutype`='main' AND `path`='Smart Search';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_tags&view=tags' WHERE `menutype`='main' AND `path`='Tags';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_associations&view=associations' WHERE `menutype`='main' AND `path`='Multilingual Associations';
|
||||
|
||||
-- From 4.0.0-2019-05-20.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__extensions` ADD COLUMN `note` varchar(255) AFTER `state` /** CAN FAIL **/;
|
||||
@@ -0,0 +1,71 @@
|
||||
-- From 4.0.0-2019-06-28.sql
|
||||
ALTER TABLE `#__banners` MODIFY `created` datetime NOT NULL;
|
||||
ALTER TABLE `#__banners` MODIFY `modified` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__banners` MODIFY `reset` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__banners` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__banners` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__banners` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `#__banner_clients` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__banners` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__banners` SET `modified` = `created`, `modified_by` = `created_by` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__banners` SET `reset` = NULL WHERE `reset` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__banners` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__banners` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__banners` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__banner_clients` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_created_time` = '1980-01-01 00:00:00'
|
||||
WHERE `core_type_alias` = 'com_banners.banner'
|
||||
AND `core_created_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` = 'com_banners.banner'
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_publish_up` = NULL
|
||||
WHERE `core_type_alias` = 'com_banners.banner'
|
||||
AND `core_publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_publish_down` = NULL
|
||||
WHERE `core_type_alias` = 'com_banners.banner'
|
||||
AND `core_publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias` = 'com_banners.banner'
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-06-29.sql
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `created` datetime NOT NULL;
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `modified` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__newsfeeds` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__newsfeeds` SET `modified` = `created`, `modified_by` = `created_by` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__newsfeeds` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__newsfeeds` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__newsfeeds` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_created_time` = '1980-01-01 00:00:00'
|
||||
WHERE `core_type_alias` = 'com_newsfeeds.newsfeed'
|
||||
AND `core_created_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` = 'com_newsfeeds.newsfeed'
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_publish_up` = NULL
|
||||
WHERE `core_type_alias` = 'com_newsfeeds.newsfeed'
|
||||
AND `core_publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_publish_down` = NULL
|
||||
WHERE `core_type_alias` = 'com_newsfeeds.newsfeed'
|
||||
AND `core_publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias` = 'com_newsfeeds.newsfeed'
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
@@ -0,0 +1,107 @@
|
||||
-- From 4.0.0-2019-07-02.sql
|
||||
CREATE TABLE IF NOT EXISTS `#__webauthn_credentials` (
|
||||
`id` VARCHAR(1000) NOT NULL COMMENT 'Credential ID',
|
||||
`user_id` VARCHAR(128) NOT NULL COMMENT 'User handle',
|
||||
`label` VARCHAR(190) NOT NULL COMMENT 'Human readable label',
|
||||
`credential` MEDIUMTEXT NOT NULL COMMENT 'Credential source data, JSON format',
|
||||
PRIMARY KEY (`id`(100)),
|
||||
INDEX (`user_id`(60))
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
DEFAULT COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_system_webauthn', 'plugin', 'webauthn', 'system', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2019-07-13.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'mod_loginsupport', 'module', 'mod_loginsupport', '', 1, 1, 1, 1, '', '', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'mod_frontend', 'module', 'mod_frontend', '', 1, 1, 1, 0, '', '', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'mod_messages', 'module', 'mod_messages', '', 1, 1, 1, 0, '', '', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'mod_post_installation_messages', 'module', 'mod_post_installation_messages', '', 1, 1, 1, 0, '', '', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'mod_user', 'module', 'mod_user', '', 1, 1, 1, 0, '', '', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
DELETE FROM `#__extensions` WHERE `element` = 'mod_status' AND `client_id` = 1;
|
||||
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Login Support', '', '', 1, 'sidebar', 0, NULL, NULL, NULL, 1, 'mod_loginsupport', 1, 1, '{"forum_url":"https://forum.joomla.org/","documentation_url":"https://docs.joomla.org/","news_url":"https://www.joomla.org/announcements.html","automatic_title":1,"prepare_content":1,"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('System Dashboard', '', '', 1, 'cpanel-system', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"system","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Content Dashboard', '', '', 1, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"content","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"3","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Menus Dashboard', '', '', 1, 'cpanel-menus', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"menus","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Components Dashboard', '', '', 1, 'cpanel-components', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"components","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Users Dashboard', '', '', 1, 'cpanel-users', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"users","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Popular Articles', '', '', 3, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Recently Added Articles', '', '', 4, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Logged-in Users', '', '', 2, 'cpanel-users', 0, NULL, NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Frontend Link', '', '', 5, 'status', 0, NULL, NULL, NULL, 1, 'mod_frontend', 1, 1, '', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Messages', '', '', 4, 'status', 0, NULL, NULL, NULL, 1, 'mod_messages', 3, 1, '', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Post Install Messages', '', '', 3, 'status', 0, NULL, NULL, NULL, 1, 'mod_post_installation_messages', 3, 1, '', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('User Status', '', '', 6, 'status', 0, NULL, NULL, NULL, 1, 'mod_user', 3, 1, '', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Site', '', '', 1, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"site_quickicon","header_icon":"fas fa-desktop","show_users":"1","show_articles":"1","show_categories":"1","show_media":"1","show_menuItems":"1","show_modules":"1","show_plugins":"1","show_templates":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('System', '', '', 2, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"system_quickicon","header_icon":"fas fa-wrench","show_global":"1","show_checkin":"1","show_cache":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('3rd Party', '', '', 4, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"mod_quickicon","header_icon":"fas fa-boxes","load_plugins":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
UPDATE `#__modules` SET `title` = 'Update Checks',`ordering` = 3,`position` = 'icon',`showtitle` = 1,`params` = '{"context":"update_quickicon","header_icon":"fas fa-sync","show_global":"0","show_checkin":"0","show_cache":"0","show_users":"0","show_articles":"0","show_categories":"0","show_media":"0","show_menuItems":"0","show_modules":"0","show_plugins":"0","show_templates":"0","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":""}' WHERE `#__modules`.`id` = 9;
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Help Dashboard', '', '', 1, 'cpanel-help', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
UPDATE `#__modules` SET `ordering` = 2,`position` = 'status' WHERE `#__modules`.`id` = 79;
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Privacy Requests', '', '', 1, 'cpanel-privacy', 0, NULL, NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Privacy Status', '', '', 1, 'cpanel-privacy', 0, NULL, NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*');
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
@@ -0,0 +1,44 @@
|
||||
-- From 4.0.0-2019-07-14.sql
|
||||
-- The following 3 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__contact_details` DROP COLUMN `xreference` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__content` DROP COLUMN `xreference` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__newsfeeds` DROP COLUMN `xreference` /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2019-07-16.sql
|
||||
-- This has been removed as com_csp has been removed from the final build
|
||||
|
||||
-- From 4.0.0-2019-08-03.sql
|
||||
-- The following two statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__update_sites` ADD COLUMN `checked_out` int unsigned NOT NULL DEFAULT 0 /** CAN FAIL **/;
|
||||
ALTER TABLE `#__update_sites` ADD COLUMN `checked_out_time` datetime NULL DEFAULT NULL /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2019-08-20.sql
|
||||
-- The following two statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__content_frontpage` ADD COLUMN `featured_up` datetime /** CAN FAIL **/;
|
||||
ALTER TABLE `#__content_frontpage` ADD COLUMN `featured_down` datetime /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2019-08-21.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_webservices_banners', 'plugin', 'banners', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_config', 'plugin', 'config', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_contact', 'plugin', 'contact', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_languages', 'plugin', 'languages', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_menus', 'plugin', 'menus', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_messages', 'plugin', 'messages', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_modules', 'plugin', 'modules', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_newsfeeds', 'plugin', 'newsfeeds', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_plugins', 'plugin', 'plugins', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_privacy', 'plugin', 'privacy', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_redirect', 'plugin', 'redirect', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_tags', 'plugin', 'tags', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_templates', 'plugin', 'templates', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0),
|
||||
(0, 'plg_webservices_users', 'plugin', 'users', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, '0000-00-00 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2019-09-13.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__menu` (`menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`)
|
||||
SELECT 'main', 'com_messages_manager', 'Private Messages', '', 'Messaging/Private Messages', 'index.php?option=com_messages&view=messages', 'component', 1, 10, 2, `extension_id`, 0, NULL, 0, 0, 'class:messages-add', 0, '', 18, 19, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_messages';
|
||||
@@ -0,0 +1,35 @@
|
||||
-- From 4.0.0-2019-09-14.sql
|
||||
ALTER TABLE `#__content` MODIFY `created` datetime NOT NULL;
|
||||
ALTER TABLE `#__content` MODIFY `modified` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__content` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__content` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__content` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__content` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__content` SET `modified` = `created`, `modified_by` = `created_by` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__content` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__content` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__content` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_created_time` = '1980-01-01 00:00:00'
|
||||
WHERE `core_type_alias` = 'com_content.article'
|
||||
AND `core_created_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` = 'com_content.article'
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_publish_up` = NULL
|
||||
WHERE `core_type_alias` = 'com_content.article'
|
||||
AND `core_publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_publish_down` = NULL
|
||||
WHERE `core_type_alias` = 'com_content.article'
|
||||
AND `core_publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias` = 'com_content.article'
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-09-22.sql
|
||||
ALTER TABLE `#__messages` MODIFY `date_time` datetime NOT NULL;
|
||||
@@ -0,0 +1,118 @@
|
||||
-- From 4.0.0-2019-09-23.sql
|
||||
ALTER TABLE `#__redirect_links` MODIFY `created_date` datetime NOT NULL;
|
||||
ALTER TABLE `#__redirect_links` MODIFY `modified_date` datetime NOT NULL;
|
||||
|
||||
UPDATE `#__redirect_links` SET `created_date` = '1980-01-01 00:00:00' WHERE `created_date` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__redirect_links` SET `modified_date` = `created_date` WHERE `modified_date` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-09-24.sql
|
||||
ALTER TABLE `#__action_logs` MODIFY `log_date` datetime NOT NULL;
|
||||
|
||||
-- From 4.0.0-2019-09-25.sql
|
||||
ALTER TABLE `#__fields` MODIFY `created_time` datetime NOT NULL;
|
||||
ALTER TABLE `#__fields` MODIFY `modified_time` datetime NOT NULL;
|
||||
ALTER TABLE `#__fields` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `#__fields_groups` MODIFY `created` datetime NOT NULL;
|
||||
ALTER TABLE `#__fields_groups` MODIFY `modified` datetime NOT NULL;
|
||||
ALTER TABLE `#__fields_groups` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__fields` SET `modified_time` = `created_time`, `modified_by` = `created_user_id` WHERE `modified_time` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__fields` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__fields_groups` SET `modified` = `created`, `modified_by` = `created_by` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__fields_groups` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-09-26.sql
|
||||
ALTER TABLE `#__privacy_requests` MODIFY `requested_at` datetime NOT NULL;
|
||||
ALTER TABLE `#__privacy_requests` MODIFY `confirm_token_created_at` datetime NULL DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `#__privacy_consents` MODIFY `created` datetime NOT NULL;
|
||||
|
||||
UPDATE `#__privacy_requests` SET `confirm_token_created_at` = NULL WHERE `confirm_token_created_at` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-09-27.sql
|
||||
ALTER TABLE `#__tags` MODIFY `created_time` datetime NOT NULL;
|
||||
ALTER TABLE `#__tags` MODIFY `modified_time` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__tags` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__tags` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__tags` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__tags` SET `modified_time` = `created_time`, `modified_user_id` = `created_user_id` WHERE `modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__tags` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__tags` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__tags` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` = 'com_tags.tag'
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_publish_up` = NULL
|
||||
WHERE `core_type_alias` = 'com_tags.tag'
|
||||
AND `core_publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_publish_down` = NULL
|
||||
WHERE `core_type_alias` = 'com_tags.tag'
|
||||
AND `core_publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias` = 'com_tags.tag'
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-09-28.sql
|
||||
ALTER TABLE `#__user_notes` MODIFY `created_time` datetime NOT NULL;
|
||||
ALTER TABLE `#__user_notes` MODIFY `modified_time` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__user_notes` MODIFY `review_time` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__user_notes` MODIFY `publish_up` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__user_notes` MODIFY `publish_down` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__user_notes` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__user_notes` SET `modified_time` = `created_time`, `modified_user_id` = `created_user_id` WHERE `modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__user_notes` SET `review_time` = NULL WHERE `review_time` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__user_notes` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__user_notes` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__user_notes` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` = 'com_users.note'
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_publish_up` = NULL
|
||||
WHERE `core_type_alias` = 'com_users.note'
|
||||
AND `core_publish_up` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_publish_down` = NULL
|
||||
WHERE `core_type_alias` = 'com_users.note'
|
||||
AND `core_publish_down` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias` = 'com_users.note'
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-09-29.sql
|
||||
ALTER TABLE `#__categories` MODIFY `created_time` datetime NOT NULL;
|
||||
ALTER TABLE `#__categories` MODIFY `modified_time` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__categories` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__categories` SET `created_time` = '1980-01-01 00:00:00' WHERE `created_time` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__categories` SET `modified_time` = `created_time`, `modified_user_id` = `created_user_id` WHERE `modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__categories` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_created_time` = '1980-01-01 00:00:00'
|
||||
WHERE `core_type_alias` IN ('com_content.category', 'com_contact.category', 'com_newsfeeds.category', 'com_banners.category', 'com_users.category')
|
||||
AND `core_created_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias` IN ('com_content.category', 'com_contact.category', 'com_newsfeeds.category', 'com_banners.category', 'com_users.category')
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_time` = NULL
|
||||
WHERE `core_type_alias`IN ('com_content.category', 'com_contact.category', 'com_newsfeeds.category', 'com_banners.category', 'com_users.category')
|
||||
AND `core_checked_out_time` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2019-10-06.sql
|
||||
ALTER TABLE `#__extensions` MODIFY `checked_out_time` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__extensions` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00';
|
||||
@@ -0,0 +1,18 @@
|
||||
-- From 4.0.0-2019-10-13.sql
|
||||
UPDATE `#__content_types`
|
||||
SET `field_mappings` = REPLACE(`field_mappings`,'"core_created_time":"registerdate"','"core_created_time":"registerDate"')
|
||||
WHERE `type_alias` = 'com_users.user';
|
||||
|
||||
-- From 4.0.0-2019-10-17.sql
|
||||
ALTER TABLE `#__users` MODIFY `registerDate` datetime NOT NULL;
|
||||
|
||||
ALTER TABLE `#__users` MODIFY `lastvisitDate` datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `#__users` MODIFY `lastResetTime` datetime NULL DEFAULT NULL;
|
||||
|
||||
UPDATE `#__users` SET `registerDate` = '1980-01-01 00:00:00' WHERE `registerDate` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__users` SET `lastvisitDate` = NULL WHERE `lastvisitDate` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__users` SET `lastResetTime` = NULL WHERE `lastResetTime` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__content_types`
|
||||
SET `field_mappings` = REPLACE(`field_mappings`,'"core_modified_time":"lastvisitDate"','"core_modified_time":"null"')
|
||||
WHERE `type_alias` = 'com_users.user';
|
||||
@@ -0,0 +1,28 @@
|
||||
-- From 4.0.0-2019-10-29.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_webservices_installer', 'plugin', 'installer', 'webservices', 0, 1, 1, 0, '', '{}', '', 0, NULL, 0, 0);
|
||||
|
||||
-- From 4.0.0-2019-11-07.sql
|
||||
--
|
||||
-- Joomla API authentication with token
|
||||
--
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_user_token', 'plugin', 'token', 'user', 0, 1, 1, 0, '', '{}', '', 0, NULL, 0, 0),
|
||||
(0, 'plg_api-authentication_token', 'plugin', 'token', 'api-authentication', 0, 1, 1, 0, '', '{}', '', 0, NULL, 0, 0);
|
||||
|
||||
--
|
||||
-- Disable the less secure basic authentication
|
||||
--
|
||||
UPDATE `#__extensions` SET `enabled` = 0 WHERE `name` = 'plg_api-authentication_basic' AND `type` = 'plugin';
|
||||
|
||||
-- From 4.0.0-2019-11-19.sql
|
||||
DELETE FROM `#__menu` WHERE `link` = 'index.php?option=com_messages' AND `menutype` = 'main';
|
||||
DELETE FROM `#__menu` WHERE `link` = 'index.php?option=com_messages&view=messages' AND `menutype` = 'main';
|
||||
DELETE FROM `#__menu` WHERE `link` = 'index.php?option=com_messages&task=message.add' AND `menutype` = 'main';
|
||||
|
||||
-- From 4.0.0-2020-02-02.sql
|
||||
UPDATE `#__menu` SET `img` = 'class:bookmark' WHERE `path` = 'Banners';
|
||||
UPDATE `#__menu` SET `img` = 'class:address-book' WHERE `path` = 'Contacts';
|
||||
UPDATE `#__menu` SET `img` = 'class:rss' WHERE `path` = 'News Feeds';
|
||||
UPDATE `#__menu` SET `img` = 'class:language' WHERE `path` = 'Multilingual Associations';
|
||||
UPDATE `#__menu` SET `img` = 'class:search-plus' WHERE `path` = 'Smart Search';
|
||||
@@ -0,0 +1,22 @@
|
||||
-- From 4.0.0-2020-02-08.sql
|
||||
ALTER TABLE `#__banners` MODIFY `metakey` text;
|
||||
ALTER TABLE `#__banner_clients` MODIFY `metakey` text;
|
||||
ALTER TABLE `#__contact_details` MODIFY `metakey` text;
|
||||
ALTER TABLE `#__content` MODIFY `metakey` text;
|
||||
ALTER TABLE `#__languages` MODIFY `metakey` text;
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `metakey` text;
|
||||
ALTER TABLE `#__tags` MODIFY `metakey` varchar(1024) NOT NULL DEFAULT '';
|
||||
|
||||
-- From 4.0.0-2020-02-20.sql
|
||||
ALTER TABLE `#__content_types` MODIFY `table` varchar(2048) NOT NULL DEFAULT '';
|
||||
|
||||
-- From 4.0.0-2020-02-22.sql
|
||||
DELETE FROM `#__extensions` WHERE `name` = 'com_mailto';
|
||||
|
||||
-- From 4.0.0-2020-02-29.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, '', '{}', '', 0, NULL, 0, 0);
|
||||
|
||||
-- From 4.0.0-2020-03-10.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`)
|
||||
SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 3, 1, 1, 1, '', '', '', 0, NULL, 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack';
|
||||
@@ -0,0 +1,172 @@
|
||||
-- Add locked field to extensions table.
|
||||
ALTER TABLE `#__extensions` MODIFY `protected` tinyint NOT NULL DEFAULT 0 COMMENT 'Flag to indicate if the extension is protected. Protected extensions cannot be disabled.';
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__extensions` ADD COLUMN `locked` tinyint NOT NULL DEFAULT 0 COMMENT 'Flag to indicate if the extension is locked. Locked extensions cannot be uninstalled.' /** CAN FAIL **/;
|
||||
|
||||
-- Set all core extensions as locked extensions and unprotected them.
|
||||
UPDATE `#__extensions`
|
||||
SET `locked` = 1, `protected` = 0
|
||||
WHERE (`type` = 'component' AND `element` IN (
|
||||
'com_wrapper',
|
||||
'com_admin',
|
||||
'com_banners',
|
||||
'com_cache',
|
||||
'com_categories',
|
||||
'com_checkin',
|
||||
'com_contact',
|
||||
'com_cpanel',
|
||||
'com_installer',
|
||||
'com_languages',
|
||||
'com_login',
|
||||
'com_media',
|
||||
'com_menus',
|
||||
'com_messages',
|
||||
'com_modules',
|
||||
'com_newsfeeds',
|
||||
'com_plugins',
|
||||
'com_templates',
|
||||
'com_content',
|
||||
'com_config',
|
||||
'com_redirect',
|
||||
'com_users',
|
||||
'com_finder',
|
||||
'com_joomlaupdate',
|
||||
'com_tags',
|
||||
'com_contenthistory',
|
||||
'com_ajax',
|
||||
'com_postinstall',
|
||||
'com_fields',
|
||||
'com_associations',
|
||||
'com_privacy',
|
||||
'com_actionlogs',
|
||||
'com_workflow',
|
||||
'com_mails'
|
||||
))
|
||||
OR (`type` = 'module' AND `client_id` = 0 AND `element` IN (
|
||||
'mod_articles_archive',
|
||||
'mod_articles_latest',
|
||||
'mod_articles_popular',
|
||||
'mod_banners',
|
||||
'mod_breadcrumbs',
|
||||
'mod_custom',
|
||||
'mod_feed',
|
||||
'mod_footer',
|
||||
'mod_login',
|
||||
'mod_menu',
|
||||
'mod_articles_news',
|
||||
'mod_random_image',
|
||||
'mod_related_items',
|
||||
'mod_stats',
|
||||
'mod_syndicate',
|
||||
'mod_users_latest',
|
||||
'mod_whosonline',
|
||||
'mod_wrapper',
|
||||
'mod_articles_category',
|
||||
'mod_articles_categories',
|
||||
'mod_languages',
|
||||
'mod_finder',
|
||||
'mod_tags_popular',
|
||||
'mod_tags_similar'
|
||||
))
|
||||
OR (`type` = 'module' AND `client_id` = 1 AND `element` IN (
|
||||
'mod_custom',
|
||||
'mod_feed',
|
||||
'mod_latest',
|
||||
'mod_logged',
|
||||
'mod_login',
|
||||
'mod_loginsupport',
|
||||
'mod_menu',
|
||||
'mod_popular',
|
||||
'mod_quickicon',
|
||||
'mod_frontend',
|
||||
'mod_messages',
|
||||
'mod_post_installation_messages',
|
||||
'mod_user',
|
||||
'mod_title',
|
||||
'mod_toolbar',
|
||||
'mod_multilangstatus',
|
||||
'mod_version',
|
||||
'mod_stats_admin',
|
||||
'mod_sampledata',
|
||||
'mod_latestactions',
|
||||
'mod_privacy_dashboard',
|
||||
'mod_submenu',
|
||||
'mod_privacy_status'
|
||||
))
|
||||
OR (`type` = 'plugin' AND
|
||||
(
|
||||
(`folder` = 'actionlog' AND `element` IN ('joomla'))
|
||||
OR (`folder` = 'api-authentication' AND `element` IN ('basic', 'token'))
|
||||
OR (`folder` = 'authentication' AND `element` IN ('cookie', 'joomla', 'ldap'))
|
||||
OR (`folder` = 'behaviour' AND `element` IN ('taggable', 'versionable'))
|
||||
OR (`folder` = 'captcha' AND `element` IN ('recaptcha', 'recaptcha_invisible'))
|
||||
OR (`folder` = 'content' AND `element` IN ('confirmconsent', 'contact', 'emailcloak', 'fields', 'finder', 'joomla', 'loadmodule', 'pagebreak', 'pagenavigation', 'vote'))
|
||||
OR (`folder` = 'editors' AND `element` IN ('codemirror', 'none', 'tinymce'))
|
||||
OR (`folder` = 'editors-xtd' AND `element` IN ('article', 'contact', 'fields', 'image', 'menu', 'module', 'pagebreak', 'readmore'))
|
||||
OR (`folder` = 'extension' AND `element` IN ('finder', 'joomla', 'namespacemap'))
|
||||
OR (`folder` = 'fields' AND `element` IN ('calendar', 'checkboxes', 'color', 'editor', 'imagelist', 'integer', 'list', 'media', 'radio', 'sql', 'subform', 'text', 'textarea', 'url', 'user', 'usergrouplist'))
|
||||
OR (`folder` = 'filesystem' AND `element` IN ('local'))
|
||||
OR (`folder` = 'finder' AND `element` IN ('categories', 'contacts', 'content', 'newsfeeds', 'tags'))
|
||||
OR (`folder` = 'installer' AND `element` IN ('folderinstaller', 'override', 'packageinstaller', 'urlinstaller', 'webinstaller'))
|
||||
OR (`folder` = 'media-action' AND `element` IN ('crop', 'resize', 'rotate'))
|
||||
OR (`folder` = 'privacy' AND `element` IN ('actionlogs', 'consents', 'contact', 'content', 'message', 'user'))
|
||||
OR (`folder` = 'quickicon' AND `element` IN ('downloadkey', 'extensionupdate', 'joomlaupdate', 'overridecheck', 'phpversioncheck', 'privacycheck'))
|
||||
OR (`folder` = 'sampledata' AND `element` IN ('blog', 'multilang', 'testing'))
|
||||
OR (`folder` = 'system' AND `element` IN ('accessibility', 'actionlogs', 'cache', 'debug', 'fields', 'highlight', 'httpheaders', 'languagecode', 'languagefilter', 'log', 'logout', 'logrotation', 'privacyconsent', 'redirect', 'remember', 'sef', 'sessiongc', 'skipto', 'stats', 'updatenotification', 'webauthn'))
|
||||
OR (`folder` = 'twofactorauth' AND `element` IN ('totp', 'yubikey'))
|
||||
OR (`folder` = 'user' AND `element` IN ('contactcreator', 'joomla', 'profile', 'terms', 'token'))
|
||||
OR (`folder` = 'webservices' AND `element` IN ('banners', 'config', 'contact', 'content', 'languages', 'menus', 'messages', 'modules', 'newsfeeds', 'plugins', 'privacy', 'redirect', 'tags', 'templates', 'users'))
|
||||
)
|
||||
)
|
||||
OR (`type` = 'library' AND `element` IN ('joomla', 'phpass'))
|
||||
OR (`type` = 'template' AND `element` IN ('cassiopeia', 'atum'))
|
||||
OR (`type` = 'language' AND `element` IN ('en-GB'))
|
||||
OR (`type` = 'file' AND `element` IN ('joomla'))
|
||||
OR (`type` = 'package' AND `element` IN ('pkg_en-GB'));
|
||||
|
||||
-- Now protect from disabling essential core extensions.
|
||||
UPDATE `#__extensions`
|
||||
SET `protected` = 1, `enabled` = 1
|
||||
WHERE (`type` = 'component' AND `element` IN (
|
||||
'com_admin',
|
||||
'com_ajax',
|
||||
'com_cache',
|
||||
'com_categories',
|
||||
'com_checkin',
|
||||
'com_config',
|
||||
'com_content',
|
||||
'com_cpanel',
|
||||
'com_installer',
|
||||
'com_joomlaupdate',
|
||||
'com_languages',
|
||||
'com_login',
|
||||
'com_mails',
|
||||
'com_media',
|
||||
'com_menus',
|
||||
'com_messages',
|
||||
'com_modules',
|
||||
'com_plugins',
|
||||
'com_postinstall',
|
||||
'com_templates',
|
||||
'com_users',
|
||||
'com_workflow'
|
||||
))
|
||||
OR (`type` = 'plugin' AND
|
||||
(
|
||||
(`folder` = 'authentication' AND `element` IN ('joomla'))
|
||||
OR (`folder` = 'editors' AND `element` IN ('none'))
|
||||
OR (`folder` = 'extension' AND `element` IN ('namespacemap'))
|
||||
)
|
||||
)
|
||||
OR (`type` = 'library' AND `element` IN ('joomla', 'phpass'))
|
||||
OR (`type` = 'language' AND `element` IN ('en-GB'))
|
||||
OR (`type` = 'file' AND `element` IN ('joomla'))
|
||||
OR (`type` = 'package' AND `element` IN ('pkg_en-GB'));
|
||||
|
||||
-- Set core extensions (from J3) as unlocked extensions and unprotect them.
|
||||
UPDATE `#__extensions`
|
||||
SET `protected` = 0, `locked` = 0
|
||||
WHERE (`type` = 'library' AND `element` IN (
|
||||
'fof'
|
||||
));
|
||||
@@ -0,0 +1,69 @@
|
||||
-- From 4.0.0-2020-04-11.sql
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_quickicon_downloadkey', 'plugin', 'downloadkey', 'quickicon', 0, 1, 1, 0, 1, '', '', '', 0, NULL, 0, 0);
|
||||
|
||||
-- From 4.0.0-2020-04-16.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__mail_templates` (`template_id`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
|
||||
('com_contact.mail', '', 'COM_CONTACT_ENQUIRY_SUBJECT', 'COM_CONTACT_ENQUIRY_TEXT', '', '', '{"tags":["sitename","name","email","subject","body","url","customfields"]}'),
|
||||
('com_contact.mail.copy', '', 'COM_CONTACT_COPYSUBJECT_OF', 'COM_CONTACT_COPYTEXT_OF', '', '', '{"tags":["sitename","name","email","subject","body","url","customfields"]}'),
|
||||
('com_users.massmail.mail', '', 'COM_USERS_MASSMAIL_MAIL_SUBJECT', 'COM_USERS_MASSMAIL_MAIL_BODY', '', '', '{"tags":["subject","body","subjectprefix","bodysuffix"]}'),
|
||||
('com_users.password_reset', '', 'COM_USERS_EMAIL_PASSWORD_RESET_SUBJECT', 'COM_USERS_EMAIL_PASSWORD_RESET_BODY', '', '', '{"tags":["name","email","sitename","link_text","link_html","token"]}'),
|
||||
('com_users.reminder', '', 'COM_USERS_EMAIL_USERNAME_REMINDER_SUBJECT', 'COM_USERS_EMAIL_USERNAME_REMINDER_BODY', '', '', '{"tags":["name","username","sitename","email","link_text","link_html"]}'),
|
||||
('plg_system_updatenotification.mail', '', 'PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_SUBJECT', 'PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY', '', '', '{"tags":["newversion","curversion","sitename","url","link","releasenews"]}'),
|
||||
('plg_user_joomla.mail', '', 'PLG_USER_JOOMLA_NEW_USER_EMAIL_SUBJECT', 'PLG_USER_JOOMLA_NEW_USER_EMAIL_BODY', '', '', '{"tags":["name","sitename","url","username","password","email"]}');
|
||||
|
||||
-- From 4.0.0-2020-05-21.sql
|
||||
-- The following 4 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
-- Renaming table
|
||||
RENAME TABLE `#__ucm_history` TO `#__history` /** CAN FAIL **/;
|
||||
-- Rename ucm_item_id to item_id as the new primary identifier for the original content item
|
||||
ALTER TABLE `#__history` CHANGE `ucm_item_id` `item_id` VARCHAR(50) NOT NULL AFTER `version_id` /** CAN FAIL **/;
|
||||
-- Extend the original field content with the alias of the content type
|
||||
UPDATE #__history AS h INNER JOIN #__content_types AS c ON h.ucm_type_id = c.type_id SET h.item_id = CONCAT(c.type_alias, '.', h.item_id) /** CAN FAIL **/;
|
||||
-- Now we don't need the ucm_type_id anymore and drop it.
|
||||
ALTER TABLE `#__history` DROP COLUMN `ucm_type_id` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__history` MODIFY `save_date` datetime NOT NULL;
|
||||
|
||||
-- From 4.0.0-2020-05-29.sql
|
||||
ALTER TABLE `#__extensions` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__menu` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__modules` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__tags` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__update_sites` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__user_notes` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__workflows` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__workflow_stages` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__workflow_transitions` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__banners` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__banner_clients` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__contact_details` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__content` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__finder_filters` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__newsfeeds` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__categories` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__fields` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__fields_groups` MODIFY `checked_out` INT UNSIGNED;
|
||||
ALTER TABLE `#__ucm_content` MODIFY `core_checked_out_user_id` INT UNSIGNED;
|
||||
|
||||
UPDATE `#__extensions` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__menu` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__modules` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__tags` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__update_sites` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__user_notes` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__workflows` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__workflow_stages` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__workflow_transitions` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__banners` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__banner_clients` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__contact_details` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__content` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__finder_filters` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__newsfeeds` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__categories` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__fields` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__fields_groups` SET `checked_out` = null WHERE `checked_out` = 0;
|
||||
UPDATE `#__ucm_content` SET `core_checked_out_user_id` = null WHERE `core_checked_out_user_id` = 0;
|
||||
@@ -0,0 +1,24 @@
|
||||
-- From 4.0.0-2020-09-19.sql
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_finder' WHERE `menutype`='main' AND `title`='com_finder' AND `link`='index.php?option=com_finder&view=index';
|
||||
|
||||
-- From 4.0.0-2020-09-22.sql
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_tags&view=tags' WHERE `menutype`='main' AND `path`='Tags';
|
||||
UPDATE `#__menu` SET `link`='index.php?option=com_associations&view=associations' WHERE `menutype`='main' AND `path`='Multilingual Associations';
|
||||
|
||||
-- From 4.0.0-2020-09-27.sql
|
||||
DELETE FROM `#__extensions` WHERE `name` = 'plg_content_imagelazyload' AND `type` = 'plugin' AND `element` = 'imagelazyload' AND `folder` = 'content' AND `client_id` = 0;
|
||||
DELETE FROM `#__extensions` WHERE `name` = 'plg_authentication_gmail' AND `type` = 'plugin' AND `element` = 'gmail' AND `folder` = 'authentication' AND `client_id` = 0;
|
||||
|
||||
--
|
||||
-- Delete possibly duplicate record for plg_sampledata_multilang
|
||||
--
|
||||
DELETE `e1`.*
|
||||
FROM `#__extensions` AS `e1`
|
||||
LEFT JOIN (SELECT MAX(extension_id) AS last_id FROM `#__extensions` GROUP BY `name`,`type`,`element`,`folder`,`client_id`) AS `e2`
|
||||
ON `e2`.`last_id` = `e1`.`extension_id`
|
||||
WHERE `last_id` IS NULL;
|
||||
|
||||
--
|
||||
-- Enable the remaining plg_sampledata_multilang record in case it has been disabled before
|
||||
--
|
||||
UPDATE `#__extensions` SET `enabled` = 1 WHERE `name` = 'plg_sampledata_multilang' AND `type` = 'plugin' AND `element` = 'multilang' AND `folder` = 'sampledata' AND `client_id` = 0;
|
||||
@@ -0,0 +1,72 @@
|
||||
-- From 4.0.0-2020-12-08.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__mail_templates` (`template_id`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
|
||||
('com_actionlogs.notification', '', 'COM_ACTIONLOGS_EMAIL_SUBJECT', 'COM_ACTIONLOGS_EMAIL_BODY', 'COM_ACTIONLOGS_EMAIL_HTMLBODY', '', '{"tags":["message","date","extension"]}'),
|
||||
('com_privacy.userdataexport', '', 'COM_PRIVACY_EMAIL_DATA_EXPORT_COMPLETED_BODY', 'COM_PRIVACY_EMAIL_DATA_EXPORT_COMPLETED_SUBJECT', '', '', '{"tags":["sitename","url"]}'),
|
||||
('com_privacy.notification.export', '', 'COM_PRIVACY_EMAIL_REQUEST_SUBJECT_EXPORT_REQUEST', 'COM_PRIVACY_EMAIL_REQUEST_BODY_EXPORT_REQUEST', '', '', '{"tags":["sitename","url","tokenurl","formurl","token"]}'),
|
||||
('com_privacy.notification.remove', '', 'COM_PRIVACY_EMAIL_REQUEST_SUBJECT_REMOVE_REQUEST', 'COM_PRIVACY_EMAIL_REQUEST_BODY_REMOVE_REQUEST', '', '', '{"tags":["sitename","url","tokenurl","formurl","token"]}'),
|
||||
('com_privacy.notification.admin.export', '', 'COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT_EXPORT_REQUEST', 'COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_EXPORT_REQUEST', '', '', '{"tags":["sitename","url","tokenurl","formurl","token"]}'),
|
||||
('com_privacy.notification.admin.remove', '', 'COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT_REMOVE_REQUEST', 'COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_REMOVE_REQUEST', '', '', '{"tags":["sitename","url","tokenurl","formurl","token"]}'),
|
||||
('com_users.registration.user.admin_activation', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY_NOPW', '', '', '{"tags":["name","sitename","activate","siteurl","username"]}'),
|
||||
('com_users.registration.user.admin_activation_w_pw', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY', '', '', '{"tags":["name","sitename","activate","siteurl","username","password_clear"]}'),
|
||||
('com_users.registration.user.self_activation', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY_NOPW', '', '', '{"tags":["name","sitename","activate","siteurl","username"]}'),
|
||||
('com_users.registration.user.self_activation_w_pw', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY', '', '', '{"tags":["name","sitename","activate","siteurl","username","password_clear"]}'),
|
||||
('com_users.registration.user.registration_mail', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_BODY_NOPW', '', '', '{"tags":["name","sitename","siteurl","username"]}'),
|
||||
('com_users.registration.user.registration_mail_w_pw', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_BODY', '', '', '{"tags":["name","sitename","siteurl","username","password_clear"]}'),
|
||||
('com_users.registration.admin.new_notification', '', 'COM_USERS_EMAIL_ACCOUNT_DETAILS', 'COM_USERS_EMAIL_REGISTERED_NOTIFICATION_TO_ADMIN_BODY', '', '', '{"tags":["name","sitename","siteurl","username"]}'),
|
||||
('com_users.registration.user.admin_activated', '', 'COM_USERS_EMAIL_ACTIVATED_BY_ADMIN_ACTIVATION_SUBJECT', 'COM_USERS_EMAIL_ACTIVATED_BY_ADMIN_ACTIVATION_BODY', '', '', '{"tags":["name","sitename","siteurl","username"]}'),
|
||||
('com_users.registration.admin.verification_request', '', 'COM_USERS_EMAIL_ACTIVATE_WITH_ADMIN_ACTIVATION_SUBJECT', 'COM_USERS_EMAIL_ACTIVATE_WITH_ADMIN_ACTIVATION_BODY', '', '', '{"tags":["name","sitename","email","username","activate"]}'),
|
||||
('plg_system_privacyconsent.request.reminder', '', 'PLG_SYSTEM_PRIVACYCONSENT_EMAIL_REMIND_SUBJECT', 'PLG_SYSTEM_PRIVACYCONSENT_EMAIL_REMIND_BODY', '', '', '{"tags":["sitename","url","tokenurl","formurl","token"]}'),
|
||||
('com_messages.new_message', '', 'COM_MESSAGES_NEW_MESSAGE', 'COM_MESSAGES_NEW_MESSAGE_BODY', '', '', '{"tags":["subject","message","fromname","sitename","siteurl","fromemail","toname","toemail"]}')
|
||||
;
|
||||
|
||||
-- From 4.0.0-2020-12-19.sql
|
||||
UPDATE `#__banners` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__banners` SET `modified` = `created` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__categories` SET `created_time` = '1980-01-01 00:00:00' WHERE `created_time` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__categories` SET `modified_time` = `created_time` WHERE `modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__contact_details` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__contact_details` SET `modified` = `created` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__content` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__content` SET `modified` = `created` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__newsfeeds` SET `created` = '1980-01-01 00:00:00' WHERE `created` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__newsfeeds` SET `modified` = `created` WHERE `modified` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_created_time` = '1980-01-01 00:00:00'
|
||||
WHERE `core_type_alias`
|
||||
IN ('com_banners.banner'
|
||||
,'com_banners.category'
|
||||
,'com_contact.category'
|
||||
,'com_contact.contact'
|
||||
,'com_content.article'
|
||||
,'com_content.category'
|
||||
,'com_newsfeeds.category'
|
||||
,'com_newsfeeds.newsfeed'
|
||||
,'com_users.category')
|
||||
AND `core_created_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__ucm_content` SET `core_modified_time` = `core_created_time`
|
||||
WHERE `core_type_alias`
|
||||
IN ('com_banners.banner'
|
||||
,'com_banners.category'
|
||||
,'com_contact.category'
|
||||
,'com_contact.contact'
|
||||
,'com_content.article'
|
||||
,'com_content.category'
|
||||
,'com_newsfeeds.category'
|
||||
,'com_newsfeeds.newsfeed'
|
||||
,'com_users.category')
|
||||
AND `core_modified_time` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__redirect_links` SET `created_date` = '1980-01-01 00:00:00' WHERE `created_date` = '0000-00-00 00:00:00';
|
||||
UPDATE `#__redirect_links` SET `modified_date` = `created_date` WHERE `modified_date` = '0000-00-00 00:00:00';
|
||||
|
||||
UPDATE `#__users` SET `registerDate` = '1980-01-01 00:00:00' WHERE `registerDate` = '0000-00-00 00:00:00';
|
||||
|
||||
-- From 4.0.0-2020-12-20.sql
|
||||
UPDATE `#__modules` SET `title` = 'Notifications' WHERE `#__modules`.`id` = 9;
|
||||
@@ -0,0 +1,24 @@
|
||||
-- From 4.0.0-2021-02-28.sql
|
||||
DELETE FROM `#__postinstall_messages`
|
||||
WHERE `title_key`
|
||||
IN ('COM_CPANEL_MSG_EACCELERATOR_TITLE',
|
||||
'COM_CPANEL_MSG_HTACCESS_TITLE',
|
||||
'COM_CPANEL_MSG_JOOMLA40_PRE_CHECKS_TITLE',
|
||||
'COM_CPANEL_MSG_UPDATEDEFAULTSETTINGS_TITLE',
|
||||
'PLG_PLG_RECAPTCHA_VERSION_1_POSTINSTALL_TITLE',
|
||||
'TPL_HATHOR_MESSAGE_POSTINSTALL_TITLE');
|
||||
|
||||
-- From 4.0.0-2021-04-11.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__fields` ADD COLUMN `only_use_in_subform` tinyint NOT NULL DEFAULT 0 /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2021-04-20.sql
|
||||
UPDATE `#__extensions` SET `name` = 'plg_fields_subform', `element` = 'subform' WHERE `name` = 'plg_fields_subfields' AND `type` = 'plugin' AND `element` = 'subfields' AND `folder` = 'fields' AND `client_id` = 0;
|
||||
UPDATE `#__fields` SET `type` = 'subform' WHERE `type` = 'subfields';
|
||||
|
||||
-- From 4.0.0-2021-04-22.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__mail_templates` ADD COLUMN `extension` varchar(127) NOT NULL DEFAULT '' AFTER `template_id` /** CAN FAIL **/;
|
||||
UPDATE `#__mail_templates` SET `extension` = SUBSTRING(`template_id`, 1, POSITION('.' IN `template_id`) - 1);
|
||||
@@ -0,0 +1,86 @@
|
||||
UPDATE `#__modules`
|
||||
SET `params` = REPLACE(`params`,'"bootstrap_size":"6"','"bootstrap_size":"12"')
|
||||
WHERE `client_id` = 1
|
||||
AND `module`
|
||||
IN (
|
||||
'mod_latest',
|
||||
'mod_latestactions',
|
||||
'mod_logged',
|
||||
'mod_popular',
|
||||
'mod_privacy_dashboard',
|
||||
'mod_privacy_status',
|
||||
'mod_quickicon',
|
||||
'mod_sampledata',
|
||||
'mod_submenu'
|
||||
)
|
||||
AND `position`
|
||||
IN (
|
||||
'cpanel',
|
||||
'cpanel-components',
|
||||
'cpanel-content',
|
||||
'cpanel-help',
|
||||
'cpanel-menus',
|
||||
'cpanel-privacy',
|
||||
'cpanel-system',
|
||||
'cpanel-users',
|
||||
'icon'
|
||||
)
|
||||
AND `params` LIKE '{%"bootstrap_size":"6"%}';
|
||||
|
||||
UPDATE `#__modules`
|
||||
SET `params` = REPLACE(`params`,'"bootstrap_size": "6"','"bootstrap_size":"12"')
|
||||
WHERE `client_id` = 1
|
||||
AND `module`
|
||||
IN (
|
||||
'mod_latest',
|
||||
'mod_latestactions',
|
||||
'mod_logged',
|
||||
'mod_popular',
|
||||
'mod_privacy_dashboard',
|
||||
'mod_privacy_status',
|
||||
'mod_quickicon',
|
||||
'mod_sampledata',
|
||||
'mod_submenu'
|
||||
)
|
||||
AND `position`
|
||||
IN (
|
||||
'cpanel',
|
||||
'cpanel-components',
|
||||
'cpanel-content',
|
||||
'cpanel-help',
|
||||
'cpanel-menus',
|
||||
'cpanel-privacy',
|
||||
'cpanel-system',
|
||||
'cpanel-users',
|
||||
'icon'
|
||||
)
|
||||
AND `params` LIKE '{%"bootstrap_size": "6"%}';
|
||||
|
||||
UPDATE `#__modules`
|
||||
SET `params` = REPLACE(`params`,'"header_tag":"h3"','"header_tag":"h2"')
|
||||
WHERE `client_id` = 1
|
||||
AND `module`
|
||||
IN (
|
||||
'mod_latest',
|
||||
'mod_latestactions',
|
||||
'mod_logged',
|
||||
'mod_popular',
|
||||
'mod_privacy_dashboard',
|
||||
'mod_privacy_status',
|
||||
'mod_quickicon',
|
||||
'mod_sampledata',
|
||||
'mod_submenu'
|
||||
)
|
||||
AND `position`
|
||||
IN (
|
||||
'cpanel',
|
||||
'cpanel-components',
|
||||
'cpanel-content',
|
||||
'cpanel-help',
|
||||
'cpanel-menus',
|
||||
'cpanel-privacy',
|
||||
'cpanel-system',
|
||||
'cpanel-users',
|
||||
'icon'
|
||||
)
|
||||
AND `params` LIKE '{%"header_tag":"h3"%}';
|
||||
@@ -0,0 +1,33 @@
|
||||
-- From 4.0.0-2021-05-01.sql
|
||||
UPDATE `#__template_styles`
|
||||
SET `params` = '{"hue":"hsl(214, 63%, 20%)","bg-light":"#f0f4fb","text-dark":"#495057","text-light":"#ffffff","link-color":"#2a69b8","special-color":"#001b4c","monochrome":"0","loginLogo":"","loginLogoAlt":"","logoBrandLarge":"","logoBrandLargeAlt":"","logoBrandSmall":"","logoBrandSmallAlt":""}'
|
||||
WHERE `template` = 'atum'
|
||||
AND `client_id` = 1;
|
||||
|
||||
-- From 4.0.0-2021-05-04.sql
|
||||
DELETE FROM `#__extensions` WHERE `name` = 'com_csp' and `type` = 'component' and `element` = 'com_csp';
|
||||
DROP TABLE IF EXISTS `#__csp`;
|
||||
|
||||
-- From 4.0.0-2021-05-07.sql
|
||||
UPDATE `#__mail_templates`
|
||||
SET `subject` = 'COM_PRIVACY_EMAIL_DATA_EXPORT_COMPLETED_SUBJECT',
|
||||
`body` = 'COM_PRIVACY_EMAIL_DATA_EXPORT_COMPLETED_BODY'
|
||||
WHERE `template_id` = 'com_privacy.userdataexport';
|
||||
|
||||
-- From 4.0.0-2021-05-10.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__finder_taxonomy` ADD INDEX `idx_level` (`level`) /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2021-05-21.sql
|
||||
UPDATE `#__modules`
|
||||
SET `params` = REPLACE(`params`,'"layout":"cassiopeia:dropdown-metismenu"','"layout":"cassiopeia:collapse-metismenu"')
|
||||
WHERE `client_id` = 0
|
||||
AND `module` = 'mod_menu'
|
||||
AND `position` = 'menu'
|
||||
AND `params` LIKE '{%"layout":"cassiopeia:dropdown-metismenu"%}';
|
||||
|
||||
-- From 4.0.0-2021-05-30.sql
|
||||
UPDATE `#__update_sites`
|
||||
SET `location` = 'https://update.joomla.org/language/translationlist_4.xml'
|
||||
WHERE `location` = 'https://update.joomla.org/language/translationlist_3.xml';
|
||||
@@ -0,0 +1,8 @@
|
||||
-- after 4.0.0 RC1
|
||||
UPDATE `#__template_styles`
|
||||
SET `title` = 'Atum - Default'
|
||||
WHERE `title` = 'atum - Default';
|
||||
|
||||
UPDATE `#__template_styles`
|
||||
SET `title` = 'Cassiopeia - Default'
|
||||
WHERE `title` = 'cassiopeia - Default';
|
||||
@@ -0,0 +1,28 @@
|
||||
--
|
||||
-- Fix wrong asset name for com_content basic workflow stage if a new asset with the right
|
||||
-- name hasn't been created yet when saving the workflow stage in backend in past.
|
||||
--
|
||||
UPDATE `#__assets`
|
||||
SET `name` = 'com_content.stage.1'
|
||||
WHERE `name` = 'com_content.state.1'
|
||||
AND (SELECT c.`count` FROM (SELECT COUNT(b.`id`) AS `count` FROM `#__assets` b WHERE b.`name` = 'com_content.stage.1') AS c) = 0;
|
||||
|
||||
--
|
||||
-- Fix wrong asset titles for workflow transitions
|
||||
--
|
||||
UPDATE `#__assets` SET `title` = 'Unpublish' WHERE `name` = 'com_content.transition.1' AND `title` = 'Publish';
|
||||
UPDATE `#__assets` SET `title` = 'Publish' WHERE `name` = 'com_content.transition.2' AND `title` = 'Unpublish';
|
||||
UPDATE `#__assets` SET `title` = 'Trash' WHERE `name` = 'com_content.transition.3' AND `title` = 'Archive';
|
||||
UPDATE `#__assets` SET `title` = 'Archive' WHERE `name` = 'com_content.transition.4' AND `title` = 'Trash';
|
||||
|
||||
--
|
||||
-- Set asset ID of com_content basic workflow stage to the right value if not already set.
|
||||
-- The right value is either the asset fixed with the first update statement at the top
|
||||
-- of this file or a new asset which has been created yet when saving the workflow stage
|
||||
-- in backend in past.
|
||||
--
|
||||
UPDATE `#__workflow_stages` s
|
||||
INNER JOIN (SELECT `name`, MAX(`id`) AS `id` FROM `#__assets` GROUP BY `name`) AS a ON a.`name` = CONCAT('com_content.stage.', s.`id`)
|
||||
SET s.`asset_id` = a.`id`
|
||||
WHERE s.`id` = 1
|
||||
AND s.`asset_id` = 0;
|
||||
@@ -0,0 +1,15 @@
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('search', 'package', 'pkg_search', '', 0, 1, 1, 0, '', '', '', 0, NULL, 0, 0);
|
||||
|
||||
UPDATE `#__extensions` a
|
||||
CROSS JOIN (SELECT `extension_id` FROM `#__extensions` WHERE `type`='package' AND `element`='pkg_search') AS b
|
||||
SET a.`package_id` = b.`extension_id`
|
||||
WHERE (`type` = 'component' AND `element` = 'com_search')
|
||||
OR (`type` = 'module' AND `element` = 'mod_search' AND `client_id` = 0)
|
||||
OR (`type` = 'plugin' AND `element` IN ('categories', 'contacts', 'content', 'newsfeeds', 'tags') AND `folder` = 'search');
|
||||
|
||||
INSERT INTO `#__update_sites` (`name`, `type`, `location`, `enabled`) VALUES
|
||||
('Search Update Site', 'extension', 'https://raw.githubusercontent.com/joomla-extensions/search/main/manifest.xml', 1);
|
||||
|
||||
INSERT INTO `#__update_sites_extensions` (`update_site_id`, `extension_id`) VALUES
|
||||
((SELECT `update_site_id` FROM `#__update_sites` WHERE `name` = 'Search Update Site'), (SELECT `extension_id` FROM `#__extensions` WHERE `element` = 'pkg_search' AND `type` = 'package'));
|
||||
@@ -0,0 +1,33 @@
|
||||
--
|
||||
-- Delete the com_search package extension including its update site if no other
|
||||
-- com_search extension exists
|
||||
--
|
||||
DELETE FROM `#__update_sites_extensions`
|
||||
WHERE `update_site_id` IN (SELECT `update_site_id` FROM `#__update_sites` WHERE `location` = 'https://raw.githubusercontent.com/joomla-extensions/search/main/manifest.xml')
|
||||
AND `extension_id` IN (SELECT `extension_id` FROM `#__extensions` WHERE `element` = 'pkg_search' AND `type` = 'package')
|
||||
AND (SELECT COUNT(a.`extension_id`)
|
||||
FROM `#__extensions` a
|
||||
WHERE (a.`type` = 'component' AND a.`element` = 'com_search')
|
||||
OR (a.`type` = 'module' AND a.`element` = 'mod_search' AND a.`client_id` = 0)
|
||||
OR (a.`type` = 'plugin' AND a.`element` IN ('categories', 'contacts', 'content', 'newsfeeds', 'tags') AND a.`folder` = 'search')
|
||||
) = 0;
|
||||
|
||||
DELETE FROM `#__update_sites`
|
||||
WHERE `location` = 'https://raw.githubusercontent.com/joomla-extensions/search/main/manifest.xml'
|
||||
AND (SELECT COUNT(a.`extension_id`)
|
||||
FROM `#__extensions` a
|
||||
WHERE (a.`type` = 'component' AND a.`element` = 'com_search')
|
||||
OR (a.`type` = 'module' AND a.`element` = 'mod_search' AND a.`client_id` = 0)
|
||||
OR (a.`type` = 'plugin' AND a.`element` IN ('categories', 'contacts', 'content', 'newsfeeds', 'tags') AND a.`folder` = 'search')
|
||||
) = 0;
|
||||
|
||||
DELETE FROM `#__extensions`
|
||||
WHERE `type` = 'package' AND `element` = 'pkg_search'
|
||||
AND (SELECT b.`count`
|
||||
FROM (SELECT COUNT(a.`extension_id`) AS `count`
|
||||
FROM `#__extensions` a
|
||||
WHERE (a.`type` = 'component' AND a.`element` = 'com_search')
|
||||
OR (a.`type` = 'module' AND a.`element` = 'mod_search' AND a.`client_id` = 0)
|
||||
OR (a.`type` = 'plugin' AND a.`element` IN ('categories', 'contacts', 'content', 'newsfeeds', 'tags') AND a.`folder` = 'search')
|
||||
) b
|
||||
) = 0;
|
||||
@@ -0,0 +1,7 @@
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'PUBLISH' WHERE `title`= 'Publish';
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'UNPUBLISH' WHERE `title`= 'Unpublish';
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'TRASH' WHERE `title`= 'Trash';
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'ARCHIVE' WHERE `title`= 'Archive';
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'FEATURE' WHERE `title`= 'Feature';
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'UNFEATURE' WHERE `title`= 'Unfeature';
|
||||
UPDATE `#__workflow_transitions` SET `title` = 'PUBLISH_AND_FEATURE' WHERE `title`= 'Publish & Feature';
|
||||
@@ -0,0 +1 @@
|
||||
UPDATE `#__extensions` SET `checked_out` = NULL WHERE `type` = 'package' AND `element` = 'pkg_search' AND `checked_out` = 0;
|
||||
@@ -0,0 +1,65 @@
|
||||
--
|
||||
-- Table structure for table `#__scheduler_tasks`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__scheduler_tasks` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`asset_id` int unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
|
||||
`title` varchar(255) NOT NULL DEFAULT '',
|
||||
`type` varchar(128) NOT NULL COMMENT 'unique identifier for job defined by plugin',
|
||||
`execution_rules` text COMMENT 'Execution Rules, Unprocessed',
|
||||
`cron_rules` text COMMENT 'Processed execution rules, crontab-like JSON form',
|
||||
`state` tinyint NOT NULL DEFAULT FALSE,
|
||||
`last_exit_code` int NOT NULL DEFAULT 0 COMMENT 'Exit code when job was last run',
|
||||
`last_execution` datetime COMMENT 'Timestamp of last run',
|
||||
`next_execution` datetime COMMENT 'Timestamp of next (planned) run, referred for execution on trigger',
|
||||
`times_executed` int DEFAULT 0 COMMENT 'Count of successful triggers',
|
||||
`times_failed` int DEFAULT 0 COMMENT 'Count of failures',
|
||||
`locked` datetime,
|
||||
`priority` smallint NOT NULL DEFAULT 0,
|
||||
`ordering` int NOT NULL DEFAULT 0 COMMENT 'Configurable list ordering',
|
||||
`cli_exclusive` smallint NOT NULL DEFAULT 0 COMMENT 'If 1, the task is only accessible via CLI',
|
||||
`params` text NOT NULL,
|
||||
`note` text,
|
||||
`created` datetime NOT NULL,
|
||||
`created_by` int UNSIGNED NOT NULL DEFAULT 0,
|
||||
`checked_out` int unsigned,
|
||||
`checked_out_time` datetime,
|
||||
PRIMARY KEY (id),
|
||||
KEY `idx_type` (`type`),
|
||||
KEY `idx_state` (`state`),
|
||||
KEY `idx_last_exit` (`last_exit_code`),
|
||||
KEY `idx_next_exec` (`next_execution`),
|
||||
KEY `idx_locked` (`locked`),
|
||||
KEY `idx_priority` (`priority`),
|
||||
KEY `idx_cli_exclusive` (`cli_exclusive`),
|
||||
KEY `idx_checked_out` (`checked_out`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
-- Add `com_scheduler` to `#__extensions`
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`) VALUES
|
||||
(0, 'com_scheduler', 'component', 'com_scheduler', '', 1, 1, 1, 0, 1, '', '{}', '');
|
||||
|
||||
-- Add plugins to `#__extensions`
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_system_schedulerunner', 'plugin', 'schedulerunner', 'system', 0, 1, 1, 0, 0, '', '{}', '', 15, 0),
|
||||
(0, 'plg_system_tasknotification', 'plugin', 'tasknotification', 'system', 0, 1, 1, 0, 1, '', '', '', 22, 0),
|
||||
(0, 'plg_task_checkfiles', 'plugin', 'checkfiles', 'task', 0, 1, 1, 0, 0, '', '{}', '', 15, 0),
|
||||
(0, 'plg_task_demotasks', 'plugin', 'demotasks', 'task', 0, 1, 1, 0, 0, '', '{}', '', 15, 0),
|
||||
(0, 'plg_task_requests', 'plugin', 'requests', 'task', 0, 1, 1, 0, 0, '', '{}', '', 15, 0),
|
||||
(0, 'plg_task_sitestatus', 'plugin', 'sitestatus', 'task', 0, 1, 1, 0, 0, '', '{}', '', 15, 0);
|
||||
|
||||
-- Add com_scheduler to action logs
|
||||
INSERT INTO `#__action_logs_extensions` (`extension`) VALUES ('com_scheduler');
|
||||
|
||||
INSERT INTO `#__action_log_config` (`type_title`, `type_alias`, `id_holder`, `title_holder`, `table_name`, `text_prefix`) VALUES
|
||||
('task', 'com_scheduler.task', 'id', 'title', '#__scheduler_tasks', 'PLG_ACTIONLOG_JOOMLA');
|
||||
|
||||
-- Add mail templates
|
||||
-- The following statement was modified for 4.1.1 by adding the "IGNORE" keyword.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT IGNORE INTO `#__mail_templates` (`template_id`, `extension`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
|
||||
('plg_system_tasknotification.failure_mail', 'plg_system_tasknotification', '', 'PLG_SYSTEM_TASK_NOTIFICATION_FAILURE_MAIL_SUBJECT', 'PLG_SYSTEM_TASK_NOTIFICATION_FAILURE_MAIL_BODY', '', '', '{"tags": ["task_id", "task_title", "exit_code", "exec_data_time", "task_output"]}'),
|
||||
('plg_system_tasknotification.fatal_recovery_mail', 'plg_system_tasknotification', '', 'PLG_SYSTEM_TASK_NOTIFICATION_FATAL_MAIL_SUBJECT', 'PLG_SYSTEM_TASK_NOTIFICATION_FATAL_MAIL_BODY', '', '', '{"tags": ["task_id", "task_title"]}'),
|
||||
('plg_system_tasknotification.orphan_mail', 'plg_system_tasknotification', '', 'PLG_SYSTEM_TASK_NOTIFICATION_ORPHAN_MAIL_SUBJECT', 'PLG_SYSTEM_TASK_NOTIFICATION_ORPHAN_MAIL_BODY', '', '', '{"tags": ["task_id", "task_title"]}'),
|
||||
('plg_system_tasknotification.success_mail', 'plg_system_tasknotification', '', 'PLG_SYSTEM_TASK_NOTIFICATION_SUCCESS_MAIL_SUBJECT', 'PLG_SYSTEM_TASK_NOTIFICATION_SUCCESS_MAIL_BODY', '', '', '{"tags":["task_id", "task_title", "exec_data_time", "task_output"]}');
|
||||
@@ -0,0 +1,9 @@
|
||||
--
|
||||
-- Convert core templates to new mode
|
||||
--
|
||||
UPDATE `#__template_styles` SET `inheritable` = 1 WHERE `template` = 'atum' AND `client_id` = 1 OR `template` = 'cassiopeia' AND `client_id` = 0;
|
||||
|
||||
UPDATE `#__template_styles`
|
||||
SET `params` = REPLACE(`params`,'"useFontScheme":"templates\\/cassiopeia\\/css\\/','"useFontScheme":"media\\/templates\\/site\\/cassiopeia\\/css\\/')
|
||||
WHERE `template` = 'cassiopeia'
|
||||
AND `client_id` = 0;
|
||||
@@ -0,0 +1,2 @@
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('plg_system_jooa11y', 'plugin', 'jooa11y', 'system', 0, 1, 1, 0, 1, '', '', '', NULL, NULL, 0, 0);
|
||||
@@ -0,0 +1,3 @@
|
||||
UPDATE `#__mail_templates`
|
||||
SET `params` = '{"tags": ["task_id", "task_title"]}'
|
||||
WHERE `template_id`= 'plg_system_tasknotification.orphan_mail' AND `params` = '{"tags": ["task_id", "task_title", ""]}';
|
||||
@@ -0,0 +1,2 @@
|
||||
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
|
||||
('plg_webservices_media', 'plugin', 'media', 'webservices', 0, 1, 1, 0, 1, '', '{}', '', NULL, NULL, 0, 0);
|
||||
@@ -0,0 +1,4 @@
|
||||
-- The following two statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE `#__redirect_links` DROP INDEX `idx_link_modifed` /** CAN FAIL **/;
|
||||
ALTER TABLE `#__redirect_links` ADD INDEX `idx_link_modified` (`modified_date`) /** CAN FAIL **/;
|
||||
@@ -0,0 +1 @@
|
||||
DELETE FROM `#__postinstall_messages` WHERE `title_key` = 'COM_ADMIN_POSTINSTALL_MSG_FLOC_BLOCKER_TITLE';
|
||||
@@ -0,0 +1,7 @@
|
||||
UPDATE `#__mail_templates`
|
||||
SET `params` = '{"tags":["message","date","extension","username"]}'
|
||||
WHERE `template_id` = 'com_actionlogs.notification' AND `params` = '{"tags":["message","date","extension"]}';
|
||||
|
||||
UPDATE `#__mail_templates`
|
||||
SET `params` = '{"tags":["sitename","name","email","subject","body","url","customfields","contactname"]}'
|
||||
WHERE `template_id` = 'com_contact.mail.copy' AND `params` = '{"tags":["sitename","name","email","subject","body","url","customfields"]}';
|
||||
@@ -0,0 +1,3 @@
|
||||
UPDATE `#__update_sites`
|
||||
SET `name` = 'Joomla! Update Component'
|
||||
WHERE `name` = 'Joomla! Update Component Update Site';
|
||||
@@ -0,0 +1,57 @@
|
||||
--
|
||||
-- Create the new table for MFA
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS `#__user_mfa` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int unsigned NOT NULL,
|
||||
`title` varchar(255) NOT NULL DEFAULT '',
|
||||
`method` varchar(100) NOT NULL,
|
||||
`default` tinyint NOT NULL DEFAULT 0,
|
||||
`options` mediumtext NOT NULL,
|
||||
`created_on` datetime NOT NULL,
|
||||
`last_used` datetime,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci COMMENT='Multi-factor Authentication settings';
|
||||
|
||||
--
|
||||
-- Remove obsolete postinstallation message
|
||||
--
|
||||
DELETE FROM `#__postinstall_messages` WHERE `condition_file` = 'site://plugins/twofactorauth/totp/postinstall/actions.php';
|
||||
|
||||
--
|
||||
-- Add new MFA plugins
|
||||
--
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_multifactorauth_totp', 'plugin', 'totp', 'multifactorauth', 0, 0, 1, 0, 1, '', '', '', 1, 0),
|
||||
(0, 'plg_multifactorauth_yubikey', 'plugin', 'yubikey', 'multifactorauth', 0, 0, 1, 0, 1, '', '', '', 2, 0),
|
||||
(0, 'plg_multifactorauth_webauthn', 'plugin', 'webauthn', 'multifactorauth', 0, 0, 1, 0, 1, '', '', '', 3, 0),
|
||||
(0, 'plg_multifactorauth_email', 'plugin', 'email', 'multifactorauth', 0, 0, 1, 0, 1, '', '', '', 4, 0),
|
||||
(0, 'plg_multifactorauth_fixed', 'plugin', 'fixed', 'multifactorauth', 0, 0, 1, 0, 1, '', '', '', 5, 0);
|
||||
|
||||
--
|
||||
-- Update MFA plugins' publish status
|
||||
--
|
||||
UPDATE `#__extensions` AS `a`
|
||||
INNER JOIN `#__extensions` AS `b` on `a`.`element` = `b`.`element`
|
||||
SET `a`.enabled = `b`.enabled
|
||||
WHERE `a`.folder = 'multifactorauth'
|
||||
AND `b`.folder = 'twofactorauth';
|
||||
|
||||
--
|
||||
-- Remove legacy TFA plugins
|
||||
--
|
||||
DELETE FROM `#__extensions`
|
||||
WHERE `type` = 'plugin' AND `folder` = 'twofactorauth' AND `element` IN ('totp', 'yubikey');
|
||||
|
||||
--
|
||||
-- Add post-installation message
|
||||
--
|
||||
INSERT IGNORE INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`)
|
||||
SELECT `extension_id`, 'COM_USERS_POSTINSTALL_MULTIFACTORAUTH_TITLE', 'COM_USERS_POSTINSTALL_MULTIFACTORAUTH_BODY', 'COM_USERS_POSTINSTALL_MULTIFACTORAUTH_ACTION', 'com_users', 1, 'action', 'admin://components/com_users/postinstall/multifactorauth.php', 'com_users_postinstall_mfa_action', 'admin://components/com_users/postinstall/multifactorauth.php', 'com_users_postinstall_mfa_condition', '4.2.0', 1 FROM `#__extensions` WHERE `name` = 'files_joomla';
|
||||
|
||||
--
|
||||
-- Create a mail template for plg_multifactorauth_email
|
||||
--
|
||||
INSERT IGNORE INTO `#__mail_templates` (`template_id`, `extension`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
|
||||
('plg_multifactorauth_email.mail', 'plg_multifactorauth_email', '', 'PLG_MULTIFACTORAUTH_EMAIL_EMAIL_SUBJECT', 'PLG_MULTIFACTORAUTH_EMAIL_EMAIL_BODY', '', '', '{"tags":["code","sitename","siteurl","username","email","fullname"]}');
|
||||
@@ -0,0 +1,4 @@
|
||||
--
|
||||
-- Increase the size of the htmlbody field in the #__mail_templates table
|
||||
--
|
||||
ALTER TABLE `#__mail_templates` MODIFY `htmlbody` mediumtext NOT NULL COLLATE 'utf8mb4_unicode_ci';
|
||||
@@ -0,0 +1,3 @@
|
||||
-- See https://github.com/joomla/joomla-cms/pull/38092
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_system_shortcut', 'plugin', 'shortcut', 'system', 0, 1, 1, 0, 1, '', '', '', 0, 0);
|
||||
@@ -0,0 +1,9 @@
|
||||
-- Set core extensions as locked extensions.
|
||||
UPDATE `#__extensions`
|
||||
SET `locked` = 1
|
||||
WHERE (`type` = 'plugin' AND
|
||||
(
|
||||
(`folder` = 'system' AND `element` = 'schedulerunner')
|
||||
OR (`folder` = 'task' AND `element` IN ('checkfiles', 'demotasks', 'requests', 'sitestatus'))
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,4 @@
|
||||
-- The following statement added with Joonmla version 4.2.0 RC 1 had to be removed with version 4.2.0 (stable).
|
||||
-- See https://github.com/joomla/joomla-cms/pull/38244
|
||||
-- INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
-- (0, 'plg_fields_menuitem', 'plugin', 'menuitem', 'fields', 0, 1, 1, 0, 1, '', '', '', 0, 0);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- Revert https://github.com/joomla/joomla-cms/pull/38244
|
||||
-- See also file 4.2.0-2022-07-07.sql
|
||||
DELETE FROM `#__extensions` WHERE `name` = 'plg_fields_menuitem' AND `type` = 'plugin' AND `element` = 'menuitem' AND `folder` = 'fields' AND `client_id` = 0;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Remove the record of any template overrides where the template has already been uninstalled
|
||||
DELETE FROM `#__template_overrides` WHERE `template` NOT IN (SELECT `name` FROM `#__extensions` WHERE `type`='template');
|
||||
@@ -0,0 +1,7 @@
|
||||
UPDATE `#__mail_templates`
|
||||
SET `params` = '{"tags":["name","sitename","siteurl","username"]}'
|
||||
WHERE `template_id` = 'com_users.registration.user.registration_mail' AND `params` = '{"tags":["name","sitename","activate","siteurl","username"]}';
|
||||
|
||||
UPDATE `#__mail_templates`
|
||||
SET `params` = '{"tags":["name","sitename","siteurl","username","password_clear"]}'
|
||||
WHERE `template_id` = 'com_users.registration.user.registration_mail_w_pw' AND `params` = '{"tags":["name","sitename","activate","siteurl","username","password_clear"]}';
|
||||
@@ -0,0 +1,5 @@
|
||||
--
|
||||
-- Add post-installation message about setting the Content-Encoding header in .htaccess
|
||||
--
|
||||
INSERT IGNORE INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`)
|
||||
SELECT `extension_id`, 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_SETCE_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_SETCE_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccesssetce.php', 'admin_postinstall_htaccesssetce_condition', '4.2.9', 1 FROM `#__extensions` WHERE `name` = 'files_joomla';
|
||||
@@ -0,0 +1 @@
|
||||
-- The SQL statement had to be removed, see https://github.com/joomla/joomla-cms/pull/40535
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Remove dummy entries for #__ucm_content rows in the #__assets table
|
||||
DELETE FROM `#__assets` WHERE `name` LIKE '#__ucm_content.%';
|
||||
@@ -0,0 +1,36 @@
|
||||
UPDATE `#__extensions`
|
||||
SET `params` = REPLACE(`params`, '"negotiate_tls":1', '"encryption":"tls"')
|
||||
WHERE `name` = 'plg_authentication_ldap'
|
||||
AND `type` = 'plugin'
|
||||
AND `element` = 'ldap'
|
||||
AND `folder` = 'authentication'
|
||||
AND `client_id` = 0
|
||||
AND `params` LIKE '{%"negotiate_tls":1%}';
|
||||
|
||||
UPDATE `#__extensions`
|
||||
SET `params` = REPLACE(`params`, '"negotiate_tls":0', '"encryption":"none"')
|
||||
WHERE `name` = 'plg_authentication_ldap'
|
||||
AND `type` = 'plugin'
|
||||
AND `element` = 'ldap'
|
||||
AND `folder` = 'authentication'
|
||||
AND `client_id` = 0
|
||||
AND `params` LIKE '{%"negotiate_tls":0%}';
|
||||
|
||||
UPDATE `#__extensions`
|
||||
SET `params` = REPLACE(`params`, '"encryption":"none"', '"encryption":"ssl"')
|
||||
WHERE `name` = 'plg_authentication_ldap'
|
||||
AND `type` = 'plugin'
|
||||
AND `element` = 'ldap'
|
||||
AND `folder` = 'authentication'
|
||||
AND `client_id` = 0
|
||||
AND `params` LIKE '{%"host":"ldaps:\\\\/\\\\/%}';
|
||||
|
||||
UPDATE `#__extensions`
|
||||
SET `params` = REPLACE(`params`, '"host":"ldaps:\\/\\/', '"host":"')
|
||||
WHERE `name` = 'plg_authentication_ldap'
|
||||
AND `type` = 'plugin'
|
||||
AND `element` = 'ldap'
|
||||
AND `folder` = 'authentication'
|
||||
AND `client_id` = 0
|
||||
AND `params` LIKE '{%"host":"ldaps:\\\\/\\\\/%}';
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
--
|
||||
-- Table structure for table `#__guidedtours`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__guidedtours` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(255) DEFAULT '' NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`ordering` int NOT NULL DEFAULT 0,
|
||||
`extensions` text NOT NULL,
|
||||
`url` varchar(255) NOT NULL,
|
||||
`created` datetime NOT NULL,
|
||||
`created_by` int NOT NULL DEFAULT 0,
|
||||
`modified` datetime NOT NULL,
|
||||
`modified_by` int NOT NULL DEFAULT 0,
|
||||
`checked_out_time` datetime,
|
||||
`checked_out` int unsigned,
|
||||
`published` tinyint NOT NULL DEFAULT 0,
|
||||
`language` varchar(7) NOT NULL,
|
||||
`note` varchar(255) NOT NULL DEFAULT '',
|
||||
`access` int unsigned NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_access` (`access`),
|
||||
KEY `idx_state` (`published`),
|
||||
KEY `idx_language` (`language`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `#__guidedtours`
|
||||
--
|
||||
|
||||
INSERT IGNORE INTO `#__guidedtours` (`id`, `title`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES
|
||||
(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1),
|
||||
(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `#__guidedtour_steps`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `#__guidedtour_steps` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`tour_id` int NOT NULL DEFAULT 0,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`published` tinyint NOT NULL DEFAULT 0,
|
||||
`description` text NOT NULL,
|
||||
`ordering` int NOT NULL DEFAULT 0,
|
||||
`position` varchar(255) NOT NULL,
|
||||
`target` varchar(255) NOT NULL,
|
||||
`type` int NOT NULL,
|
||||
`interactive_type` int NOT NULL DEFAULT 1,
|
||||
`url` varchar(255) NOT NULL,
|
||||
`created` datetime NOT NULL,
|
||||
`created_by` int unsigned NOT NULL DEFAULT 0,
|
||||
`modified` datetime NOT NULL,
|
||||
`modified_by` int unsigned NOT NULL DEFAULT 0,
|
||||
`checked_out_time` datetime,
|
||||
`checked_out` int unsigned,
|
||||
`language` varchar(7) NOT NULL,
|
||||
`note` varchar(255) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tour` (`tour_id`),
|
||||
KEY `idx_state` (`published`),
|
||||
KEY `idx_language` (`language`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `#__guidedtour_steps`
|
||||
--
|
||||
|
||||
INSERT IGNORE INTO `#__guidedtour_steps` (`id`, `tour_id`, `title`, `published`, `description`, `ordering`, `position`, `target`, `type`, `interactive_type`, `url`, `created`, `created_by`, `modified`, `modified_by`, `language`) VALUES
|
||||
(1, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION', 1, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(2, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION', 2, 'bottom', '#jform_title', 2, 2, 'administrator/index.php?option=com_guidedtours&view=tour&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(3, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION', 3, 'top', '#jform_url', 2, 2, 'administrator/index.php?option=com_guidedtours&view=tour&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(4, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION', 4, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_guidedtours&view=tour&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(5, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION', 5, 'top', 'joomla-field-fancy-select .choices', 2, 3, 'administrator/index.php?option=com_guidedtours&view=tour&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(6, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION', 6, 'top', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_guidedtours&view=tour&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(7, 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION', 7, 'bottom', '', 0, 1, 'administrator/index.php?option=com_guidedtours&view=tour&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(8, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION', 8, 'top', '#toursList tbody tr:nth-last-of-type(1) td:nth-of-type(5) .btn', 2, 1, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(9, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION', 9, 'bottom', '.button-new', 2, 1, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(10, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION', 10, 'bottom', '#jform_title', 2, 2, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(11, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION', 11, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(12, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION', 12, 'bottom', '#jform_published', 2, 3, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(13, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION', 13, 'top', '#jform_position', 2, 3, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(14, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION', 14, 'top', '#jform_target', 2, 3, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(15, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION', 15, 'top', '#jform_type', 2, 3, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(16, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION', 16, 'bottom', '#save-group-children-save .button-save', 2, 1, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(17, 2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION', 17, 'bottom', '', 0, 1, '', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(18, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION', 18, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(19, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION', 19, 'bottom', '#jform_title', 2, 2, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(20, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION', 20, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(21, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION', 21, 'bottom', '#jform_articletext,#jform_articletext_ifr', 2, 3, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(22, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION', 22, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(23, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION', 23, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(24, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION', 24, 'bottom', '#jform_featured0', 2, 3, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(25, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION', 25, 'bottom', '#jform_access', 2, 3, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(26, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION', 26, 'top', 'joomla-field-fancy-select .choices[data-type=select-multiple]', 2, 3, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(27, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION', 27, 'top', '#jform_note', 2, 2, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(28, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION', 28, 'top', '#jform_version_note', 2, 2, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(29, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION', 29, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(30, 3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION', 30, 'bottom', '', 0, 1, 'administrator/index.php?option=com_content&view=article&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(31, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION', 31, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(32, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION', 32, 'bottom', '#jform_title', 2, 2, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(33, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION', 33, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(34, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION', 34, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(35, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION', 35, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(36, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION', 36, 'bottom', '#jform_published', 2, 3, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(37, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION', 37, 'bottom', '#jform_access', 2, 3, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(38, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION', 38, 'top', 'joomla-field-fancy-select .choices[data-type=select-multiple]', 2, 3, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(39, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION', 39, 'top', '#jform_note', 2, 2, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(40, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION', 40, 'top', '#jform_version_note', 2, 2, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(41, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION', 41, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(42, 4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION', 42, 'bottom', '', 0, 1, 'administrator/index.php?option=com_categories&view=category&layout=edit&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(43, 5, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION', 43, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(44, 5, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION', 44, 'bottom', '#jform_title', 2, 2, 'administrator/index.php?option=com_menus&view=menu&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(45, 5, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION', 45, 'top', '#jform_menutype', 2, 2, 'administrator/index.php?option=com_menus&view=menu&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(46, 5, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION', 46, 'top', '#jform_menudescription', 2, 2, 'administrator/index.php?option=com_menus&view=menu&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(47, 5, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION', 47, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_menus&view=menu&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(48, 5, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION', 48, 'bottom', '', 0, 1, 'administrator/index.php?option=com_menus&view=menu&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(49, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION', 49, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(50, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION', 50, 'bottom', '#jform_title', 2, 2, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(51, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION', 51, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(52, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION', 52, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(53, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION', 53, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(54, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION', 54, 'bottom', '#jform_published', 2, 3, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(55, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION', 55, 'bottom', '#jform_access', 2, 3, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(56, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION', 56, 'top', '#jform_note', 2, 2, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(57, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION', 57, 'top', '#jform_version_note', 2, 2, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(58, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION', 58, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(59, 6, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION', 59, 'bottom', '', 0, 1, 'administrator/index.php?option=com_tags&view=tag&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(60, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION', 60, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(61, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION', 61, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(62, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION', 62, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', 63, 'bottom', '.col-lg-9', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(64, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION', 64, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(65, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION', 65, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(66, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION', 66, 'bottom', '#jform_sticky1', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(67, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION', 67, 'top', '#jform_version_note', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(68, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION', 68, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(69, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION', 69, 'bottom', '', 0, 1, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(70, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION', 70, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(71, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION', 71, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(72, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION', 72, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(73, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION', 73, 'bottom', '.col-lg-9', 0, 1, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(74, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION', 74, 'bottom', '#jform_published', 2, 3, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(75, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION', 75, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(76, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION', 76, 'bottom', '#jform_featured0', 2, 3, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(77, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION', 77, 'bottom', '#jform_access', 2, 3, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(78, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION', 78, 'top', 'joomla-field-fancy-select .choices[data-type=select-multiple]', 2, 3, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(79, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION', 79, 'top', '#jform_version_note', 2, 2, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(80, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION', 80, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(81, 8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION', 81, 'bottom', '', 0, 1, 'administrator/index.php?option=com_contact&view=contact&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(82, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION', 82, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(83, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION', 83, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(84, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION', 84, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(85, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION', 85, 'bottom', '#jform_link', 2, 2, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(86, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION', 86, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(87, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION', 87, 'bottom', '#jform_published', 2, 3, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(88, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION', 88, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(89, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION', 89, 'bottom', '#jform_access', 2, 3, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(90, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION', 90, 'top', 'joomla-field-fancy-select .choices[data-type=select-multiple]', 2, 3, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(91, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION', 91, 'top', '#jform_version_note', 2, 2, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(92, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION', 92, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(93, 9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION', 93, 'bottom', '', 0, 1, 'administrator/index.php?option=com_newsfeeds&view=newsfeed&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(94, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION', 94, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(95, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION', 95, 'bottom', '#jform_title', 2, 2, 'administrator/index.php?option=com_finder&view=filter&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(96, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION', 96, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_finder&view=filter&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(97, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION', 97, 'bottom', '.col-lg-9', 0, 1, 'administrator/index.php?option=com_finder&view=filter&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(98, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION', 98, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_finder&view=filter&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(99, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION', 99, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_finder&view=filter&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(100, 10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION', 100, 'bottom', '', 0, 1, 'administrator/index.php?option=com_finder&view=filter&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
|
||||
(101, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION', 101, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(102, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION', 102, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(103, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION', 103, 'bottom', '#jform_username', 2, 2, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(104, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION', 104, 'bottom', '#jform_password', 2, 2, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(105, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION', 105, 'bottom', '#jform_password2', 2, 2, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(106, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION', 106, 'bottom', '#jform_email', 2, 2, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(107, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION', 107, 'top', '#jform_sendEmail0', 2, 3, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(108, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION', 108, 'top', '#jform_block0', 2, 3, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(109, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION', 109, 'top', '#jform_requireReset0', 2, 3, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(110, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION', 110, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'),
|
||||
(111, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION', 111, 'bottom', '', 0, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*');
|
||||
|
||||
-- Add new `#__extensions`
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
(0, 'com_guidedtours', 'component', 'com_guidedtours', '', 1, 1, 0, 0, 1, '', '{}', '', 0, 0),
|
||||
(0, 'mod_guidedtours', 'module', 'mod_guidedtours', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0),
|
||||
(0, 'plg_system_guidedtours', 'plugin', 'guidedtours', 'system', 0, 1, 1, 0, 1, '', '{}', '', 0, 0);
|
||||
|
||||
INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES
|
||||
('Guided Tours', '', '', 1, 'status', NULL, NULL, NULL, NULL, 1, 'mod_guidedtours', 1, 1, '', 1, '*');
|
||||
|
||||
INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE `#__banners` MODIFY `clickurl` VARCHAR(2048) NOT NULL DEFAULT '';
|
||||
@@ -0,0 +1,7 @@
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = '#jform_description,#jform_description_ifr'
|
||||
WHERE `target` = '#jform_description';
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = '#jform_articletext,#jform_articletext_ifr'
|
||||
WHERE `target` = '#jform_articletext';
|
||||
@@ -0,0 +1,15 @@
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = '#jform_published'
|
||||
WHERE `target` = '#jform_state' AND `id` = 87;
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = '#jform_sendEmail0'
|
||||
WHERE `target` = '#jform_sendEmail';
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = '#jform_block0'
|
||||
WHERE `target` = '#jform_block';
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = '#jform_requireReset0'
|
||||
WHERE `target` = '#jform_requireReset';
|
||||
@@ -0,0 +1,19 @@
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `type` = 2, `interactive_type` = 2
|
||||
WHERE `id` IN (20,27,28,33,39,40,46,51,56,57,62,67,72,79,84,91,96);
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `type` = 2, `interactive_type` = 3
|
||||
WHERE `id` IN (5,21,22,23,24,25,26,34,35,36,37,38,52,53,54,55,63,64,65,66,74,75,76,77,78,86,87,88,89,90,98,107,108,109);
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = 'joomla-field-fancy-select .choices input'
|
||||
WHERE `id` = 5;
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = 'joomla-field-fancy-select .choices[data-type=select-one]'
|
||||
WHERE `id` IN (23,35,53,65,75,88);
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = 'joomla-field-fancy-select .choices[data-type=select-multiple] input'
|
||||
WHERE `id` IN (26,38,78,90);
|
||||
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE `#__guidedtours` DROP COLUMN `asset_id` /** CAN FAIL **/;
|
||||
|
||||
DELETE FROM `#__assets` WHERE `name` LIKE 'com_guidedtours.tour.%';
|
||||
@@ -0,0 +1,7 @@
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = 'joomla-field-fancy-select .choices'
|
||||
WHERE `id` = 5;
|
||||
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `target` = 'joomla-field-fancy-select .choices[data-type=select-multiple]'
|
||||
WHERE `id` IN (26,38,78,90);
|
||||
@@ -0,0 +1,3 @@
|
||||
UPDATE `#__guidedtour_steps`
|
||||
SET `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', `description` = 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', `target` = '.col-lg-9'
|
||||
WHERE `id` = 63;
|
||||
@@ -0,0 +1,3 @@
|
||||
UPDATE `#__extensions`
|
||||
SET `params` = '{"template_positions_display":"0","upload_limit":"10","image_formats":"gif,bmp,jpg,jpeg,png,webp","source_formats":"txt,less,ini,xml,js,php,css,scss,sass,json","font_formats":"woff,woff2,ttf,otf","compressed_formats":"zip","difference":"SideBySide"}'
|
||||
WHERE `name` = 'com_templates' AND `params` IN ('{,"difference":"SideBySide"}', '{}', '');
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `#__user_mfa` ADD COLUMN `tries` int NOT NULL DEFAULT 0 /** CAN FAIL **/;
|
||||
ALTER TABLE `#__user_mfa` ADD COLUMN `last_try` datetime /** CAN FAIL **/;
|
||||
@@ -0,0 +1,2 @@
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_quickicon_eos', 'plugin', 'eos', 'quickicon', 0, 1, 1, 0, 1, '', '', '', 7, 0);
|
||||
@@ -0,0 +1,2 @@
|
||||
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
|
||||
(0, 'plg_behaviour_compat', 'plugin', 'compat', 'behaviour', 0, 1, 1, 0, 1, '', '{}', '', -1, 0);
|
||||
@@ -0,0 +1,5 @@
|
||||
--
|
||||
-- Add post-installation message about setting the Content-Encoding header in .htaccess
|
||||
--
|
||||
INSERT IGNORE INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`)
|
||||
SELECT `extension_id`, 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '4.4.4', 1 FROM `#__extensions` WHERE `name` = 'files_joomla';
|
||||
@@ -0,0 +1,95 @@
|
||||
-- The following statement was moved from below to here and modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE "#__extensions" DROP COLUMN "system_data" /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2016-07-03.sql
|
||||
-- The following statement was modified for 4.1.1 by removing the "system_data" column.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO "#__extensions" ("name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "checked_out", "checked_out_time", "ordering", "state") VALUES
|
||||
('plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
('plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2016-09-22.sql
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'library' AND "element" = 'phputf8';
|
||||
|
||||
-- From 4.0.0-2016-09-28.sql
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'plugin' AND "element" = 'p3p' AND "folder" = 'system';
|
||||
|
||||
-- From 4.0.0-2016-10-02.sql
|
||||
-- The following statement was modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE "#__user_keys" DROP COLUMN "invalid" /** CAN FAIL **/;
|
||||
|
||||
--
|
||||
-- Insert the new templates into the database. Set as home if the old template is the active one
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by removing the "system_data" column.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO "#__extensions" ("name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "checked_out", "checked_out_time", "ordering", "state") VALUES
|
||||
('atum', 'template', 'atum', '', 1, 1, 1, 0, '{}', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
('cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, '{}', '{}', '', 0, '1970-01-01 00:00:00', 0, 0);
|
||||
|
||||
-- The following statement had to be modified for 4.1 by adding the "inheritable" and "parent" columns.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/36585
|
||||
INSERT INTO "#__template_styles" ("template", "client_id", "home", "title", "inheritable", "parent", "params") VALUES
|
||||
('atum', 1, (CASE WHEN (SELECT b."count" FROM (SELECT count(a."id") AS "count" FROM "#__template_styles" a WHERE a."home" = '1' AND a."client_id" = 1 AND a."template" IN ('isis', 'hathor')) AS b) = 0 THEN '0' ELSE '1' END), 'atum - Default', 1, '', '{}'),
|
||||
('cassiopeia', 0, (CASE WHEN (SELECT d."count" FROM (SELECT count(c."id") AS "count" FROM "#__template_styles" c WHERE c."home" = '1' AND c."client_id" = 0 AND c."template" IN ('protostar', 'beez3')) AS d) = 0 THEN '0' ELSE '1' END), 'cassiopeia - Default', 1, '', '{}');
|
||||
|
||||
--
|
||||
-- Move mod_version to the right position for the atum template
|
||||
--
|
||||
UPDATE "#__modules" SET "position" = 'status' WHERE "module" = 'mod_version' AND "client_id" = 1;
|
||||
|
||||
--
|
||||
-- Now we can clean up the old templates
|
||||
--
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'template' AND "element" = 'hathor' AND "client_id" = 1;
|
||||
DELETE FROM "#__template_styles" WHERE "template" = 'hathor' AND "client_id" = 1;
|
||||
|
||||
DELETE FROM "#__template_styles" WHERE "template" = 'isis' AND "client_id" = 1;
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'template' AND "element" = 'isis' AND "client_id" = 1;
|
||||
|
||||
DELETE FROM "#__template_styles" WHERE "template" = 'protostar' AND "client_id" = 0;
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'template' AND "element" = 'protostar' AND "client_id" = 0;
|
||||
|
||||
DELETE FROM "#__template_styles" WHERE "template" = 'beez3' AND "client_id" = 0;
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'template' AND "element" = 'beez3' AND "client_id" = 0;
|
||||
|
||||
-- From 4.0.0-2016-10-03.sql
|
||||
DELETE FROM "#__extensions" WHERE "name" = 'mod_submenu';
|
||||
|
||||
-- From 4.0.0-2017-03-18.sql
|
||||
-- The following statement was moved to the top for 4.1.1.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
-- ALTER TABLE "#__extensions" DROP COLUMN "system_data";
|
||||
|
||||
-- From 4.0.0-2017-04-25.sql
|
||||
INSERT INTO "#__extensions" ("name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "checked_out", "checked_out_time", "ordering", "state") VALUES
|
||||
('plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
('plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
('plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
('plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0);
|
||||
|
||||
-- From 4.0.0-2017-05-31.sql
|
||||
UPDATE "#__menu" SET "link" = 'index.php?option=com_config&view=config' WHERE "link" = 'index.php?option=com_config&view=config&controller=config.display.config';
|
||||
UPDATE "#__menu" SET "link" = 'index.php?option=com_config&view=templates' WHERE "link" = 'index.php?option=com_config&view=templates&controller=config.display.templates';
|
||||
|
||||
-- From 4.0.0-2017-06-03.sql
|
||||
-- The following two statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
ALTER TABLE "#__extensions" ADD COLUMN "changelogurl" text /** CAN FAIL **/;
|
||||
ALTER TABLE "#__updates" ADD COLUMN "changelogurl" text /** CAN FAIL **/;
|
||||
|
||||
-- From 4.0.0-2017-10-10.sql
|
||||
INSERT INTO "#__extensions" ("name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "checked_out", "checked_out_time", "ordering", "state") VALUES
|
||||
('plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 0, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0);
|
||||
|
||||
INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled")
|
||||
SELECT "extension_id", 'PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_TITLE', 'PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_BODY', 'PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_ACTION', 'plg_system_httpheaders', 1, 'action', 'site://plugins/system/httpheaders/postinstall/introduction.php', 'httpheaders_postinstall_action', 'site://plugins/system/httpheaders/postinstall/introduction.php', 'httpheaders_postinstall_condition', '4.0.0', 1 FROM "#__extensions" WHERE "name" = 'files_joomla';
|
||||
|
||||
-- From 4.0.0-2018-02-24.sql
|
||||
DELETE FROM "#__extensions" WHERE "type" = 'library' AND "element" = 'idna_convert';
|
||||
|
||||
-- From 4.0.0-2018-03-05.sql
|
||||
ALTER TABLE "#__modules" ALTER COLUMN "content" DROP NOT NULL;
|
||||
@@ -0,0 +1,164 @@
|
||||
--
|
||||
-- Table structure for table "#__workflows"
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "#__workflows" (
|
||||
"id" serial NOT NULL,
|
||||
"asset_id" bigint DEFAULT 0 NOT NULL,
|
||||
"published" smallint DEFAULT 0 NOT NULL,
|
||||
"title" varchar(255) DEFAULT '' NOT NULL,
|
||||
"description" text NOT NULL,
|
||||
"extension" varchar(50) NOT NULL,
|
||||
"default" smallint NOT NULL DEFAULT 0,
|
||||
"ordering" bigint NOT NULL DEFAULT 0,
|
||||
"created" timestamp without time zone NOT NULL,
|
||||
"created_by" bigint DEFAULT 0 NOT NULL,
|
||||
"modified" timestamp without time zone NOT NULL,
|
||||
"modified_by" bigint DEFAULT 0 NOT NULL,
|
||||
"checked_out_time" timestamp without time zone,
|
||||
"checked_out" bigint DEFAULT 0 NOT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- The following 9 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
CREATE INDEX "#__workflows_idx_asset_id" ON "#__workflows" ("asset_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_title" ON "#__workflows" ("title") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_extension" ON "#__workflows" ("extension") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_default" ON "#__workflows" ("default") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_created" ON "#__workflows" ("created") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_created_by" ON "#__workflows" ("created_by") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_modified" ON "#__workflows" ("modified") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_modified_by" ON "#__workflows" ("modified_by") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflows_idx_checked_out" ON "#__workflows" ("checked_out") /** CAN FAIL **/;
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "ON CONFLICT" clause.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO "#__workflows" ("id", "asset_id", "published", "title", "description", "extension", "default", "ordering", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out") VALUES
|
||||
(1, 0, 1, 'COM_WORKFLOW_BASIC_WORKFLOW', '', 'com_content.article', 1, 1, CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, 0)
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
SELECT setval('#__workflows_id_seq', 2, false);
|
||||
|
||||
--
|
||||
-- Table structure for table "#__workflow_associations"
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "#__workflow_associations" (
|
||||
"item_id" bigint DEFAULT 0 NOT NULL,
|
||||
"stage_id" bigint DEFAULT 0 NOT NULL,
|
||||
"extension" varchar(50) NOT NULL,
|
||||
PRIMARY KEY ("item_id", "extension")
|
||||
);
|
||||
-- The following 4 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
CREATE INDEX "#__workflow_associations_idx_item_stage_extension" ON "#__workflow_associations" ("item_id", "stage_id", "extension") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_associations_idx_item_id" ON "#__workflow_associations" ("item_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_associations_idx_stage_id" ON "#__workflow_associations" ("stage_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_associations_idx_extension" ON "#__workflow_associations" ("extension") /** CAN FAIL **/;
|
||||
|
||||
COMMENT ON COLUMN "#__workflow_associations"."item_id" IS 'Extension table id value';
|
||||
COMMENT ON COLUMN "#__workflow_associations"."stage_id" IS 'Foreign Key to #__workflow_stages.id';
|
||||
|
||||
--
|
||||
-- Table structure for table "#__workflow_stages"
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "#__workflow_stages" (
|
||||
"id" serial NOT NULL,
|
||||
"asset_id" bigint DEFAULT 0 NOT NULL,
|
||||
"ordering" bigint DEFAULT 0 NOT NULL,
|
||||
"workflow_id" bigint DEFAULT 0 NOT NULL,
|
||||
"published" smallint NOT NULL DEFAULT 0,
|
||||
"title" varchar(255) NOT NULL,
|
||||
"description" text NOT NULL,
|
||||
"default" smallint NOT NULL DEFAULT 0,
|
||||
"checked_out_time" timestamp without time zone,
|
||||
"checked_out" bigint DEFAULT 0 NOT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
-- The following 5 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
CREATE INDEX "#__workflow_stages_idx_workflow_id" ON "#__workflow_stages" ("workflow_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_stages_idx_title" ON "#__workflow_stages" ("title") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_stages_idx_asset_id" ON "#__workflow_stages" ("asset_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_stages_idx_default" ON "#__workflow_stages" ("default") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_stages_idx_checked_out" ON "#__workflow_stages" ("checked_out") /** CAN FAIL **/;
|
||||
|
||||
--
|
||||
-- Dumping data for table "#__workflow_stages"
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "ON CONFLICT" clause.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO "#__workflow_stages" ("id", "asset_id", "ordering", "workflow_id", "published", "title", "description", "default", "checked_out_time", "checked_out") VALUES
|
||||
(1, 0, 1, 1, 1, 'COM_WORKFLOW_BASIC_STAGE', '', 1, NULL, 0)
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
SELECT setval('#__workflow_stages_id_seq', 2, false);
|
||||
|
||||
--
|
||||
-- Table structure for table "#__workflow_transitions"
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "#__workflow_transitions" (
|
||||
"id" serial NOT NULL,
|
||||
"asset_id" bigint DEFAULT 0 NOT NULL,
|
||||
"ordering" bigint DEFAULT 0 NOT NULL,
|
||||
"workflow_id" bigint DEFAULT 0 NOT NULL,
|
||||
"published" smallint NOT NULL DEFAULT 0,
|
||||
"title" varchar(255) NOT NULL,
|
||||
"description" text NOT NULL,
|
||||
"from_stage_id" bigint DEFAULT 0 NOT NULL,
|
||||
"to_stage_id" bigint DEFAULT 0 NOT NULL,
|
||||
"options" text NOT NULL,
|
||||
"checked_out_time" timestamp without time zone,
|
||||
"checked_out" bigint DEFAULT 0 NOT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
-- The following 6 statements were modified for 4.1.1 by adding the "/** CAN FAIL **/" installer hint.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
CREATE INDEX "#__workflow_transitions_idx_title" ON "#__workflow_transitions" ("title") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_transitions_idx_asset_id" ON "#__workflow_transitions" ("asset_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_transitions_idx_from_stage_id" ON "#__workflow_transitions" ("from_stage_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_transitions_idx_to_stage_id" ON "#__workflow_transitions" ("to_stage_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_transitions_idx_workflow_id" ON "#__workflow_transitions" ("workflow_id") /** CAN FAIL **/;
|
||||
CREATE INDEX "#__workflow_transitions_idx_checked_out" ON "#__workflow_transitions" ("checked_out") /** CAN FAIL **/;
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "ON CONFLICT" clause.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO "#__workflow_transitions" ("id", "asset_id", "published", "ordering", "workflow_id", "title", "description", "from_stage_id", "to_stage_id", "options", "checked_out_time", "checked_out") VALUES
|
||||
(1, 0, 1, 1, 1, 'Unpublish', '', -1, 1, '{"publishing":"0"}', NULL, 0),
|
||||
(2, 0, 1, 2, 1, 'Publish', '', -1, 1, '{"publishing":"1"}', NULL, 0),
|
||||
(3, 0, 1, 3, 1, 'Trash', '', -1, 1, '{"publishing":"-2"}', NULL, 0),
|
||||
(4, 0, 1, 4, 1, 'Archive', '', -1, 1, '{"publishing":"2"}', NULL, 0),
|
||||
(5, 0, 1, 5, 1, 'Feature', '', -1, 1, '{"featuring":"1"}', NULL, 0),
|
||||
(6, 0, 1, 6, 1, 'Unfeature', '', -1, 1, '{"featuring":"0"}', NULL, 0),
|
||||
(7, 0, 1, 7, 1, 'Publish & Feature', '', -1, 1, '{"publishing":"1","featuring":"1"}', NULL, 0)
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
SELECT setval('#__workflow_transitions_id_seq', 8, false);
|
||||
|
||||
--
|
||||
-- Creating extension entry
|
||||
--
|
||||
-- Note that the old pseudo null dates have to be used for the "checked_out_time"
|
||||
-- column because the conversion to real null dates will be done with a later
|
||||
-- update SQL script.
|
||||
--
|
||||
|
||||
INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "checked_out", "checked_out_time", "ordering", "state") VALUES
|
||||
(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
(0, 'plg_workflow_publishing', 'plugin', 'publishing', 'workflow', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
(0, 'plg_workflow_featuring', 'plugin', 'featuring', 'workflow', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0),
|
||||
(0, 'plg_workflow_notification', 'plugin', 'notification', 'workflow', 0, 1, 1, 0, '', '{}', '', 0, '1970-01-01 00:00:00', 0, 0);
|
||||
|
||||
--
|
||||
-- Creating Associations for existing content
|
||||
--
|
||||
|
||||
-- The following statement was modified for 4.1.1 by adding the "ON CONFLICT" clause.
|
||||
-- See https://github.com/joomla/joomla-cms/pull/37156
|
||||
INSERT INTO "#__workflow_associations" ("item_id", "stage_id", "extension")
|
||||
SELECT "id", 1, 'com_content.article' FROM "#__content"
|
||||
ON CONFLICT DO NOTHING;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user