diff --git a/administrator/components/com_actionlogs/actionlogs.php b/administrator/components/com_actionlogs/actionlogs.php index 5abeff39fc2ac..1a9fd3dfa433d 100644 --- a/administrator/components/com_actionlogs/actionlogs.php +++ b/administrator/components/com_actionlogs/actionlogs.php @@ -16,4 +16,4 @@ $controller = JControllerLegacy::getInstance('Actionlogs'); $controller->execute(JFactory::getApplication()->input->get('task')); -$controller->redirect(); \ No newline at end of file +$controller->redirect(); diff --git a/administrator/components/com_actionlogs/actionlogs.xml b/administrator/components/com_actionlogs/actionlogs.xml index d40a08d1284c8..a1361cebe8a51 100644 --- a/administrator/components/com_actionlogs/actionlogs.xml +++ b/administrator/components/com_actionlogs/actionlogs.xml @@ -19,7 +19,7 @@ controllers helpers models - views + views language/en-GB.com_actionlogs.ini diff --git a/administrator/components/com_actionlogs/config.xml b/administrator/components/com_actionlogs/config.xml index 55d29700c4677..e6d1d16305fc1 100644 --- a/administrator/components/com_actionlogs/config.xml +++ b/administrator/components/com_actionlogs/config.xml @@ -8,6 +8,7 @@ description="COM_ACTIONLOGS_IP_LOGGING_DESC" class="btn-group btn-group-yesno" default="0" + filter="integer" > diff --git a/administrator/components/com_actionlogs/controller.php b/administrator/components/com_actionlogs/controller.php index 66c2d58e1610c..f1e3b5c9ee24f 100644 --- a/administrator/components/com_actionlogs/controller.php +++ b/administrator/components/com_actionlogs/controller.php @@ -16,18 +16,4 @@ */ class ActionlogsController extends JControllerLegacy { - /** - * Method to display a view. - * - * @param boolean $cachable If true, the view output will be cached - * @param array $urlparams An array of safe URL parameters and their variable types, for valid values see {@link JFilterInput::clean()}. - * - * @return ActionlogsController This object to support chaining. - * - * @since __DEPLOY_VERSION__ - */ - public function display($cachable = false, $urlparams = array()) - { - return parent::display(); - } } diff --git a/administrator/components/com_actionlogs/controllers/actionlogs.php b/administrator/components/com_actionlogs/controllers/actionlogs.php index 9b5d973b57e3b..3e5c85c666400 100644 --- a/administrator/components/com_actionlogs/controllers/actionlogs.php +++ b/administrator/components/com_actionlogs/controllers/actionlogs.php @@ -8,11 +8,12 @@ */ defined('_JEXEC') or die; -JLoader::register('ActionlogsHelper', JPATH_COMPONENT . '/helpers/actionlogs.php'); use Joomla\CMS\Component\ComponentHelper; use Joomla\Utilities\ArrayHelper; +JLoader::register('ActionlogsHelper', JPATH_COMPONENT . '/helpers/actionlogs.php'); + /** * Actionlogs list controller class. * @@ -45,10 +46,8 @@ public function __construct(array $config = array()) * * @since __DEPLOY_VERSION__ */ - public function getModel($name = 'Actionlogs', $prefix = 'ActionlogsModel', - $config = array('ignore_request' => true)) + public function getModel($name = 'Actionlogs', $prefix = 'ActionlogsModel', $config = array('ignore_request' => true)) { - // Return the model return parent::getModel($name, $prefix, $config); } @@ -74,7 +73,7 @@ public function exportLogs() if (count($data)) { $rows = ActionlogsHelper::getCsvData($data); - $filename = "logs_" . JFactory::getDate(); + $filename = 'logs_' . JFactory::getDate()->format('Y-m-d_His_T'); $csvDelimiter = ComponentHelper::getComponent('com_actionlogs')->getParams()->get('csv_delimiter', ','); $app = JFactory::getApplication(); @@ -101,18 +100,6 @@ public function exportLogs() } } - /** - * Method to delete logs - * - * @return void - * - * @since __DEPLOY_VERSION__ - */ - public function delete() - { - parent::delete(); - } - /** * Clean out the logs * diff --git a/administrator/components/com_actionlogs/helpers/actionlogs.php b/administrator/components/com_actionlogs/helpers/actionlogs.php index e12769321ed0b..a474670b8c530 100644 --- a/administrator/components/com_actionlogs/helpers/actionlogs.php +++ b/administrator/components/com_actionlogs/helpers/actionlogs.php @@ -10,6 +10,8 @@ defined('_JEXEC') or die; use Joomla\CMS\Filesystem\Path; +use Joomla\String\StringHelper; +use Joomla\Utilities\ArrayHelper; /** * Actionlogs component helper. @@ -36,11 +38,13 @@ public static function getCsvData($data) foreach ($data as $log) { + $extension = strtok($log->extension, '.'); + static::loadTranslationFiles($extension); $row = array(); $row['id'] = $log->id; - $row['message'] = strip_tags(self::getHumanReadableLogMessage($log)); - $row['date'] = $log->log_date; - $row['extension'] = self::translateExtensionName(strtoupper(strtok($log->extension, '.'))); + $row['message'] = strip_tags(static::getHumanReadableLogMessage($log)); + $row['date'] = JHtml::_('date', $log->log_date, JText::_('DATE_FORMAT_LC6')); + $row['extension'] = JText::_($extension); $row['name'] = $log->name; $row['ip_address'] = JText::_($log->ip_address); @@ -51,23 +55,55 @@ public static function getCsvData($data) } /** - * Change the retrieved extension name to more user friendly name + * Load the translation files for an extension * * @param string $extension Extension name * - * @return string Translated extension name + * @return void * * @since __DEPLOY_VERSION__ */ - public static function translateExtensionName($extension) + public static function loadTranslationFiles($extension) { + static $cache = array(); + + if (isset($cache[$extension])) + { + return; + } + $lang = JFactory::getLanguage(); - $source = JPATH_ADMINISTRATOR . '/components/' . $extension; + + 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); + $source = JPATH_PLUGINS . '/' . $parts[1] . '/' . $parts[2]; + break; + + case 'tpl': + $source = JPATH_BASE . '/templates/' . substr($extension, 4); + break; + + } $lang->load(strtolower($extension), JPATH_ADMINISTRATOR, null, false, true) || $lang->load(strtolower($extension), $source, null, false, true); - return JText::_($extension); + $cache[$extension] = true; } /** @@ -83,9 +119,9 @@ public static function getLogContentTypeParams($context) { $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select('a.*') - ->from($db->quoteName('#__action_logs_tables_data', 'a')) - ->where($db->quoteName('a.type_alias') . ' = ' .$db->quote($context)); + ->select('a.*') + ->from($db->quoteName('#__action_log_config', 'a')) + ->where($db->quoteName('a.type_alias') . ' = ' . $db->quote($context)); $db->setQuery($query); @@ -110,7 +146,7 @@ public static function getDataByPks($pks, $field, $idField, $table) $query = $db->getQuery(true) ->select($db->quoteName(array($idField, $field))) ->from($db->quoteName($table)) - ->where($db->quoteName($idField) . ' IN (' . implode(',', $pks) . ')'); + ->where($db->quoteName($idField) . ' IN (' . implode(',', ArrayHelper::toInteger($pks)) . ')'); $db->setQuery($query); try @@ -140,11 +176,20 @@ public static function getHumanReadableLogMessage($log) // Special handling for translation extension name if (isset($messageData['extension_name'])) { - $messageData['extension_name'] = self::translateExtensionName($messageData['extension_name']); + static::loadTranslationFiles($messageData['extension_name']); + $messageData['extension_name'] = JText::_($messageData['extension_name']); } + $linkMode = JFactory::getApplication()->get('force_ssl', 0) >= 1 ? 1 : -1; + foreach ($messageData as $key => $value) { + // Convert relative url to absolute url so that it is clickable in action logs notification email + if (StringHelper::strpos($value, 'index.php?') === 0) + { + $value = JRoute::link('administrator', $value, false, $linkMode); + } + $message = str_replace('{' . $key . '}', JText::_($value), $message); } @@ -154,12 +199,13 @@ public static function getHumanReadableLogMessage($log) /** * Get link to an item of given content type * - * @param string $component - * @param string $contentType - * @param int $id - * @param string $urlVar + * @param string $component + * @param string $contentType + * @param integer $id + * @param string $urlVar * * @return string Link to the content item + * * @since __DEPLOY_VERSION__ */ public static function getContentTypeLink($component, $contentType, $id, $urlVar = 'id') @@ -191,8 +237,9 @@ public static function getContentTypeLink($component, $contentType, $id, $urlVar } /** - * 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 + * 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 * @@ -258,5 +305,8 @@ public static function loadActionLogPluginsLanguage() $lang->load($extension, JPATH_ADMINISTRATOR, null, false, true) || $lang->load($extension, JPATH_PLUGINS . '/' . $type . '/' . $name, null, false, true); } + + // Load com_privacy too. + $lang->load('com_privacy', JPATH_ADMINISTRATOR, null, false, true); } } diff --git a/administrator/components/com_actionlogs/layouts/logstable.php b/administrator/components/com_actionlogs/layouts/logstable.php index 8b43f1e8cff80..26952302b8492 100644 --- a/administrator/components/com_actionlogs/layouts/logstable.php +++ b/administrator/components/com_actionlogs/layouts/logstable.php @@ -1,10 +1,10 @@ getDbo(); @@ -41,7 +42,12 @@ public function addLogsToDb($messages, $messageLanguageKey, $context, $userId = if ($params->get('ip_logging', 0)) { - $ip = JFactory::getApplication()->input->server->get('REMOTE_ADDR'); + $ip = JFactory::getApplication()->input->server->get('REMOTE_ADDR', null, 'raw'); + + if (!filter_var($ip, FILTER_VALIDATE_IP)) + { + $ip = 'COM_ACTIONLOGS_IP_INVALID'; + } } else { @@ -65,7 +71,6 @@ public function addLogsToDb($messages, $messageLanguageKey, $context, $userId = { $db->insertObject('#__action_logs', $logMessage); $loggedMessages[] = $logMessage; - } catch (RuntimeException $e) { @@ -97,7 +102,7 @@ protected function sendNotificationEmails($messages, $username, $context) $query->select($db->quoteName(array('email', 'params'))) ->from($db->quoteName('#__users')) - ->where($db->quoteName('params') . ' LIKE ' . $db->quote('%"logs_notification_option":"1"%')); + ->where($db->quoteName('params') . ' LIKE ' . $db->quote('%"logs_notification_option":1%')); $db->setQuery($query); @@ -131,11 +136,12 @@ protected function sendNotificationEmails($messages, $username, $context) } $layout = new JLayoutFile('components.com_actionlogs.layouts.logstable', JPATH_ADMINISTRATOR); - $extension = ActionlogsHelper::translateExtensionName(strtoupper(strtok($context, '.'))); + $extension = strtok($context, '.'); + ActionlogsHelper::loadTranslationFiles($extension); foreach ($messages as $message) { - $message->extension = $extension; + $message->extension = JText::_($extension); $message->message = ActionlogsHelper::getHumanReadableLogMessage($message); } diff --git a/administrator/components/com_actionlogs/models/actionlogs.php b/administrator/components/com_actionlogs/models/actionlogs.php index 3d0ae7a263b71..db31249bf2cd2 100644 --- a/administrator/components/com_actionlogs/models/actionlogs.php +++ b/administrator/components/com_actionlogs/models/actionlogs.php @@ -9,6 +9,8 @@ defined('_JEXEC') or die; +use Joomla\Utilities\ArrayHelper; + /** * Methods supporting a list of article records. * @@ -16,6 +18,13 @@ */ class ActionlogsModelActionlogs extends JModelList { + /** + * Constructor. + * + * @param array $config An optional associative array of configuration settings. + * + * @since __DEPLOY_VERSION__ + */ public function __construct($config = array()) { if (empty($config['filter_fields'])) @@ -195,7 +204,6 @@ private function buildDateRange($range) $tz = new DateTimeZone('GMT'); $dStart->setTimezone($tz); break; - } return array('dNow' => $dNow, 'dStart' => $dStart); @@ -238,7 +246,6 @@ public function getLogsForItem($extension, $itemId) /** * Get logs data into JTable object * - * * @return array All logs in the table * * @since __DEPLOY_VERSION__ @@ -253,7 +260,7 @@ public function getLogsData($pks = null) if (is_array($pks) && count($pks) > 0) { - $query->where($db->quoteName('a.id') . ' IN (' . implode(',', $pks) . ')'); + $query->where($db->quoteName('a.id') . ' IN (' . implode(',', ArrayHelper::toInteger($pks)) . ')'); } $db->setQuery($query); @@ -275,7 +282,7 @@ public function delete(&$pks) $db = $this->getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__action_logs')) - ->where($db->quoteName('id') . ' IN (' . implode(',', $pks) . ')'); + ->where($db->quoteName('id') . ' IN (' . implode(',', ArrayHelper::toInteger($pks)) . ')'); $db->setQuery($query); try diff --git a/administrator/components/com_actionlogs/models/fields/extension.php b/administrator/components/com_actionlogs/models/fields/extension.php index 049b8d290a277..51788790a2c6b 100644 --- a/administrator/components/com_actionlogs/models/fields/extension.php +++ b/administrator/components/com_actionlogs/models/fields/extension.php @@ -38,8 +38,8 @@ public function getOptions() { $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select('DISTINCT b.extension') - ->from($db->quoteName('#__action_logs', 'b')); + ->select('DISTINCT b.extension') + ->from($db->quoteName('#__action_logs', 'b')); $db->setQuery($query); $extensions = $db->loadObjectList(); @@ -48,8 +48,9 @@ public function getOptions() foreach ($extensions as $extension) { - $text = ActionlogsHelper::translateExtensionName(strtoupper(strtok($extension->extension, '.'))); - $options[] = JHtml::_('select.option', $extension->extension, $text); + $extension = strtok($context, '.'); + ActionlogsHelper::loadTranslationFiles($extension); + $options[] = JHtml::_('select.option', $extension->extension, JText::_($extension)); } return array_merge(parent::getOptions(), $options); diff --git a/administrator/components/com_actionlogs/models/fields/logtype.php b/administrator/components/com_actionlogs/models/fields/logtype.php index 29baf1e93d8a3..638dd7e8792e8 100644 --- a/administrator/components/com_actionlogs/models/fields/logtype.php +++ b/administrator/components/com_actionlogs/models/fields/logtype.php @@ -38,8 +38,8 @@ public function getOptions() { $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select('a.extension') - ->from($db->quoteName('#__action_logs_extensions', 'a')); + ->select('a.extension') + ->from($db->quoteName('#__action_logs_extensions', 'a')); $db->setQuery($query); @@ -56,7 +56,8 @@ public function getOptions() $defaults[] = $extension; - $option = JHtml::_('select.option', $extension->extension, ActionlogsHelper::translateExtensionName($extension->extension)); + ActionlogsHelper::loadTranslationFiles($extension->extension); + $option = JHtml::_('select.option', $extension->extension, JText::_($extension->extension)); $options[] = (object) array_merge($tmp, (array) $option); } diff --git a/administrator/components/com_actionlogs/views/actionlogs/tmpl/default.php b/administrator/components/com_actionlogs/views/actionlogs/tmpl/default.php index 432e207ee4c23..df9e4b6fa0deb 100644 --- a/administrator/components/com_actionlogs/views/actionlogs/tmpl/default.php +++ b/administrator/components/com_actionlogs/views/actionlogs/tmpl/default.php @@ -8,32 +8,17 @@ */ defined('_JEXEC') or die; + +/** @var ActionlogsViewActionlogs $this */ + JLoader::register('ActionlogsHelper', JPATH_COMPONENT . '/helpers/actionlogs.php'); -JHtml::_('behavior.tooltip'); +JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); -JHtml::_('dropdown.init'); JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); - -JFactory::getDocument()->addScriptDeclaration(' - Joomla.submitbutton = function(task) - { - if (task == "actionlogs.exportSelectedLogs" || task == "actionlogs.exportLogs") - { - var form = document.getElementById("adminForm"); - Joomla.submitform(task, form); - form.task.value = ""; - } - else - { - Joomla.submitform(task); - } - }; -'); - ?>
@@ -45,29 +30,27 @@ - - - - showIpColumn) : ?> - - @@ -79,19 +62,23 @@ - items as $i => $item) : ?> + items as $i => $item) : + $extension = strtok($item->extension, '.'); + ActionlogsHelper::loadTranslationFiles($extension); ?> - - diff --git a/administrator/components/com_actionlogs/views/actionlogs/view.html.php b/administrator/components/com_actionlogs/views/actionlogs/view.html.php index 1acc533718301..cbfef078d5634 100644 --- a/administrator/components/com_actionlogs/views/actionlogs/view.html.php +++ b/administrator/components/com_actionlogs/views/actionlogs/view.html.php @@ -23,36 +23,32 @@ class ActionlogsViewActionlogs extends JViewLegacy /** * An array of items. * - * @var array - * - * @since __DEPLOY_VERSION__ + * @var array + * @since __DEPLOY_VERSION__ */ protected $items; /** * The model state * - * @var object - * - * @since __DEPLOY_VERSION__ + * @var array + * @since __DEPLOY_VERSION__ */ protected $state; /** * The pagination object * - * @var JPagination - * - * @since __DEPLOY_VERSION__ + * @var JPagination + * @since __DEPLOY_VERSION__ */ protected $pagination; /** * The active search filters * - * @var array - * - * @since __DEPLOY_VERSION__ + * @var array + * @since __DEPLOY_VERSION__ */ public $activeFilters; @@ -61,7 +57,7 @@ class ActionlogsViewActionlogs extends JViewLegacy * * @param string $tpl A template file to load. [optional] * - * @return void + * @return mixed A string if successful, otherwise an Error object. * * @since __DEPLOY_VERSION__ */ @@ -88,7 +84,7 @@ public function display($tpl = null) // Load all actionlog plugins language files ActionlogsHelper::loadActionLogPluginsLanguage(); - parent::display($tpl); + return parent::display($tpl); } /** @@ -100,7 +96,7 @@ public function display($tpl = null) */ protected function addToolbar() { - JToolbarHelper::title(JText::_('COM_ACTIONLOGS_MANAGER_USERLOGS')); + JToolbarHelper::title(JText::_('COM_ACTIONLOGS_MANAGER_USERLOGS'), 'list-2'); JToolbarHelper::deleteList('JGLOBAL_CONFIRM_DELETE', 'actionlogs.delete'); $bar = JToolbar::getInstance('toolbar'); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-02.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-02.sql index 90af11be0bf0b..3879478d66bb5 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-02.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-02.sql @@ -1,4 +1,4 @@ -INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES +INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (35, 0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); CREATE TABLE IF NOT EXISTS `#__privacy_requests` ( diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-03.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-03.sql index 5d7cd049af175..d1f294af6a0ff 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-03.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-03.sql @@ -1,2 +1,2 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); +(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-05.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-05.sql index a9851b1685655..78db9a8d1cc88 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-05.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-05.sql @@ -1,6 +1,6 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":"0","csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', '', '', 0, '0000-00-00 00:00:00', 0, 0), -(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 0, 1, 0, '', '{"logDeletePeriod":"0"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), +(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', '', '', 0, '0000-00-00 00:00:00', 0, 0), +(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 0, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (484, 0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); @@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `#__action_logs` ( `extension` varchar(50) NOT NULL DEFAULT '', `user_id` int(11) NOT NULL DEFAULT 0, `item_id` int(11) NOT NULL DEFAULT 0, - `ip_address` VARCHAR(30) NOT NULL DEFAULT '0.0.0.0', + `ip_address` VARCHAR(40) NOT NULL DEFAULT '0.0.0.0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; @@ -50,10 +50,10 @@ INSERT INTO `#__action_logs_extensions` (`id`, `extension`) VALUES (17, 'com_users'); -- --- Table structure for table `#__action_logs_tables_data` +-- Table structure for table `#__action_log_config` -- -CREATE TABLE IF NOT EXISTS `#__action_logs_tables_data` ( +CREATE TABLE IF NOT EXISTS `#__action_log_config` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type_title` varchar(255) NOT NULL DEFAULT '', `type_alias` varchar(255) NOT NULL DEFAULT '', @@ -64,7 +64,7 @@ CREATE TABLE IF NOT EXISTS `#__action_logs_tables_data` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; -INSERT INTO `#__action_logs_tables_data` (`id`, `type_title`, `type_alias`, `id_holder`, `title_holder`, `table_name`, `text_prefix`) VALUES +INSERT INTO `#__action_log_config` (`id`, `type_title`, `type_alias`, `id_holder`, `title_holder`, `table_name`, `text_prefix`) VALUES (1, 'article', 'com_content.article', 'id' ,'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (2, 'article', 'com_content.form', 'id', 'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (3, 'banner', 'com_banners.banner', 'id' ,'name' , '#__banners', 'PLG_ACTIONLOG_JOOMLA'), @@ -74,7 +74,7 @@ INSERT INTO `#__action_logs_tables_data` (`id`, `type_title`, `type_alias`, `id_ (7, 'menu', 'com_menus.menu', 'id' ,'title' , '#__menu_types', 'PLG_ACTIONLOG_JOOMLA'), (8, 'menu_item', 'com_menus.item', 'id' , 'title' , '#__menu', 'PLG_ACTIONLOG_JOOMLA'), (9, 'newsfeed', 'com_newsfeeds.newsfeed', 'id' ,'name' , '#__newsfeeds', 'PLG_ACTIONLOG_JOOMLA'), -(10, 'link', 'com_redirect.link', 'id', 'old_url' , '__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), +(10, 'link', 'com_redirect.link', 'id', 'old_url' , '#__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), (11, 'tag', 'com_tags.tag', 'id', 'title' , '#__tags', 'PLG_ACTIONLOG_JOOMLA'), (12, 'style', 'com_templates.style', 'id' , 'title' , '#__template_styles', 'PLG_ACTIONLOG_JOOMLA'), (13, 'plugin', 'com_plugins.plugin', 'extension_id' , 'name' , '#__extensions', 'PLG_ACTIONLOG_JOOMLA'), diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-20.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-20.sql index 659fa94b0dcee..1582f8352f557 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-20.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-20.sql @@ -1,4 +1,2 @@ -INSERT INTO "#__extensions" -("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") -VALUES - (319, 0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); \ No newline at end of file +INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES +(319, 0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-24.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-24.sql index 172b059e41d2e..af662df1ba84b 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-24.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-24.sql @@ -1,5 +1,5 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); +(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); CREATE TABLE IF NOT EXISTS `#__privacy_consents` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-27.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-27.sql index 29ddc3c14f31a..ab0958e02c946 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-27.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-05-27.sql @@ -1,3 +1,3 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, '', '{"cachetimeout":"30","logstokeep":"1","lastrun":0}', '', '', 0, '0000-00-00 00:00:00', 0, 0), -(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); +(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), +(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-12.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-12.sql index cde2f321336e0..526c61d53440f 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-12.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-12.sql @@ -1,4 +1,2 @@ -INSERT INTO "#__extensions" -("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") -VALUES +INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (320, 0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-13.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-13.sql index 54096e40e979e..edda43880912d 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-13.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-13.sql @@ -1,2 +1,2 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); +(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-17.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-17.sql index 5bce4e9790723..d3d3ee5f930f3 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-17.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-06-17.sql @@ -1,2 +1,2 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), +(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-09.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-09.sql new file mode 100644 index 0000000000000..7c8215c3f93e6 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-09.sql @@ -0,0 +1,4 @@ +INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES +(490, 0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), +(491, 0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), +(492, 0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-10.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-10.sql new file mode 100644 index 0000000000000..3c8c70a81ade9 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-10.sql @@ -0,0 +1,2 @@ +INSERT INTO `#__action_log_config` (`id`, `type_title`, `type_alias`, `id_holder`, `title_holder`, `table_name`, `text_prefix`) + VALUES (19, 'application_config', 'com_config.application', '', 'name', '', 'PLG_ACTIONLOG_JOOMLA'); diff --git a/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-11.sql b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-11.sql new file mode 100644 index 0000000000000..bc347d66fd884 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/3.9.0-2018-07-11.sql @@ -0,0 +1,2 @@ +INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES +(493, 0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 0, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); \ No newline at end of file diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-02.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-02.sql index 6aae953caff55..68da8e8a7a008 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-02.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-02.sql @@ -1,4 +1,4 @@ -INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES +INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (35, 0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); CREATE TABLE "#__privacy_requests" ( diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-03.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-03.sql index 9514bdb81aae6..6ef9999e731f4 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-03.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-03.sql @@ -1,2 +1,2 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES -(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); +(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-05.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-05.sql index 7be83f0b341a5..03932b7f106c1 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-05.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-05.sql @@ -1,6 +1,6 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES -(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":"0","csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', '', '', 0, '1970-01-01 00:00:00', 0, 0), -(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 0, 1, 0, '', '{"logDeletePeriod":"0"}', '', '', 0, '1970-01-01 00:00:00', 0, 0), +(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', '', '', 0, '1970-01-01 00:00:00', 0, 0), +(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (484, 0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); -- @@ -14,7 +14,7 @@ CREATE TABLE "#__action_logs" ( "extension" varchar(50) NOT NULL DEFAULT '', "user_id" integer DEFAULT 0 NOT NULL, "item_id" integer DEFAULT 0 NOT NULL, - "ip_address" varchar(30) NOT NULL DEFAULT '0.0.0.0', + "ip_address" varchar(40) NOT NULL DEFAULT '0.0.0.0', PRIMARY KEY ("id") ); @@ -52,9 +52,9 @@ SELECT setval('#__action_logs_extensions_id_seq', 18, false); -- -------------------------------------------------------- -- --- Table: #__action_logs_tables_data +-- Table: #__action_log_config -- -CREATE TABLE "#__action_logs_tables_data" ( +CREATE TABLE "#__action_log_config" ( "id" serial NOT NULL, "type_title" varchar(255) NOT NULL DEFAULT '', "type_alias" varchar(255) NOT NULL DEFAULT '', @@ -66,9 +66,9 @@ CREATE TABLE "#__action_logs_tables_data" ( ); -- --- Dumping data for table #__action_logs_tables_data +-- Dumping data for table #__action_log_config -- -INSERT INTO "#__action_logs_tables_data" ("id", "type_title", "type_alias", "id_holder", "table_name", "text_prefix") VALUES +INSERT INTO "#__action_log_config" ("id", "type_title", "type_alias", "id_holder", "table_name", "text_prefix") VALUES (1, 'article', 'com_content.article', 'id' ,'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (2, 'article', 'com_content.form', 'id', 'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (3, 'banner', 'com_banners.banner', 'id' ,'name' , '#__banners', 'PLG_ACTIONLOG_JOOMLA'), @@ -78,7 +78,7 @@ INSERT INTO "#__action_logs_tables_data" ("id", "type_title", "type_alias", "id_ (7, 'menu', 'com_menus.menu', 'id' ,'title' , '#__menu_types', 'PLG_ACTIONLOG_JOOMLA'), (8, 'menu_item', 'com_menus.item', 'id' , 'title' , '#__menu', 'PLG_ACTIONLOG_JOOMLA'), (9, 'newsfeed', 'com_newsfeeds.newsfeed', 'id' ,'name' , '#__newsfeeds', 'PLG_ACTIONLOG_JOOMLA'), -(10, 'link', 'com_redirect.link', 'id', 'old_url' , '__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), +(10, 'link', 'com_redirect.link', 'id', 'old_url' , '#__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), (11, 'tag', 'com_tags.tag', 'id', 'title' , '#__tags', 'PLG_ACTIONLOG_JOOMLA'), (12, 'style', 'com_templates.style', 'id' , 'title' , '#__template_styles', 'PLG_ACTIONLOG_JOOMLA'), (13, 'plugin', 'com_plugins.plugin', 'extension_id' , 'name' , '#__extensions', 'PLG_ACTIONLOG_JOOMLA'), @@ -89,4 +89,4 @@ INSERT INTO "#__action_logs_tables_data" ("id", "type_title", "type_alias", "id_ (18, 'banner_client', 'com_banners.client', 'id', 'name', '#__banner_clients', 'PLG_ACTIONLOG_JOOMLA'); -SELECT setval('#__action_logs_tables_data_id_seq', 18, false); +SELECT setval('#__action_log_config_id_seq', 18, false); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-20.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-20.sql index f15cd8354455d..3fccb586bf6be 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-20.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-20.sql @@ -1,4 +1,2 @@ -INSERT INTO "#__extensions" -("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") -VALUES - (319, 0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); +INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES +(319, 0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-24.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-24.sql index c73bcd8f8b765..6d1f27acbe6e6 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-24.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-24.sql @@ -1,5 +1,5 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES -(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); +(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); -- -- Table structure for table `#__privacy_consents` diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-27.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-27.sql index 3563f717466f5..9d13ef54ad8e7 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-27.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-05-27.sql @@ -1,3 +1,3 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES -(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 0, 1, 0, '', '{"cachetimeout":"30","logstokeep":"1","lastrun":0}', '', '', 0, '1970-01-01 00:00:00', 0, 0), -(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); +(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), +(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-12.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-12.sql index cde2f321336e0..24647cf7ccc0d 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-12.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-12.sql @@ -1,4 +1,2 @@ -INSERT INTO "#__extensions" -("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") -VALUES +INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (320, 0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-13.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-13.sql index 6cc4d11c1f706..86a8fa6ba7167 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-13.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-13.sql @@ -1,2 +1,2 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES -(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); +(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-17.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-17.sql index 889dd34d9e38c..e10fe5087a320 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-17.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-06-17.sql @@ -1,2 +1,2 @@ -INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), +INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES +(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-09.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-09.sql new file mode 100644 index 0000000000000..513341f9df10d --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-09.sql @@ -0,0 +1,4 @@ +INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES +(490, 0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), +(491, 0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), +(492, 0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-10.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-10.sql new file mode 100644 index 0000000000000..74e65fd4b16be --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-10.sql @@ -0,0 +1,2 @@ +INSERT INTO "#__action_log_config" ("id", "type_title", "type_alias", "id_holder", "title_holder", "table_name", "text_prefix") + VALUES (19, 'application_config', 'com_config.application', '', 'name', '', 'PLG_ACTIONLOG_JOOMLA'); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-11.sql b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-11.sql new file mode 100644 index 0000000000000..afbbed91cd09a --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/3.9.0-2018-07-11.sql @@ -0,0 +1,2 @@ +INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES +(493, 0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 0, 1, 0, '', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); \ No newline at end of file diff --git a/administrator/components/com_config/Model/ApplicationModel.php b/administrator/components/com_config/Model/ApplicationModel.php index 973fe3948bc7e..8540884c38ea5 100644 --- a/administrator/components/com_config/Model/ApplicationModel.php +++ b/administrator/components/com_config/Model/ApplicationModel.php @@ -305,7 +305,7 @@ public function save($data) $revisedDbo->truncateTable('#__session'); } } - catch (RuntimeException $e) + catch (\RuntimeException $e) { /* * The database API logs errors on failures so we don't need to add any error handling mechanisms here. @@ -513,8 +513,21 @@ public function save($data) $this->cleanCache('_system', 0); $this->cleanCache('_system', 1); + $result = $app->triggerEvent('onApplicationBeforeSave', array($config)); + + // Store the data. + if (in_array(false, $result, true)) + { + throw new \RuntimeException(Text::_('COM_CONFIG_ERROR_UNKNOWN_BEFORE_SAVING')); + } + // Write the configuration file. - return $this->writeConfigFile($config); + $result = $this->writeConfigFile($config); + + // Trigger the after save event. + $app->triggerEvent('onApplicationAfterSave', array($config)); + + return $result; } /** @@ -529,6 +542,8 @@ public function save($data) */ public function removeroot() { + $app = Factory::getApplication(); + // Get the previous configuration. $prev = new \JConfig; $prev = ArrayHelper::fromObject($prev); @@ -537,8 +552,21 @@ public function removeroot() unset($prev['root_user']); $config = new Registry($prev); + $result = $app->triggerEvent('onApplicationBeforeSave', array($config)); + + // Store the data. + if (in_array(false, $result, true)) + { + throw new \RuntimeException(Text::_('COM_CONFIG_ERROR_UNKNOWN_BEFORE_SAVING')); + } + // Write the configuration file. - return $this->writeConfigFile($config); + $result = $this->writeConfigFile($config); + + // Trigger the after save event. + $app->triggerEvent('onApplicationAfterSave', array($config)); + + return $result; } /** diff --git a/administrator/components/com_content/Model/ArticlesModel.php b/administrator/components/com_content/Model/ArticlesModel.php index b79fa00029630..b98c71487c2c0 100644 --- a/administrator/components/com_content/Model/ArticlesModel.php +++ b/administrator/components/com_content/Model/ArticlesModel.php @@ -220,9 +220,14 @@ protected function getListQuery() ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the categories. - $query->select('c.title AS category_title') + $query->select('c.title AS category_title, c.created_user_id AS category_uid, c.level AS category_level') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); + // Join over the parent categories. + $query->select('parent.title AS parent_category_title, parent.id AS parent_category_id, + parent.created_user_id AS parent_category_uid, parent.level AS parent_category_level') + ->join('LEFT', '#__categories AS parent ON parent.id = c.parent_id'); + // Join over the users for the author. $query->select('ua.name AS author_name') ->join('LEFT', '#__users AS ua ON ua.id = a.created_by'); diff --git a/administrator/components/com_content/Model/FeaturedModel.php b/administrator/components/com_content/Model/FeaturedModel.php index c370e320876b2..ffa5e8dbac0ad 100644 --- a/administrator/components/com_content/Model/FeaturedModel.php +++ b/administrator/components/com_content/Model/FeaturedModel.php @@ -107,9 +107,14 @@ protected function getListQuery() ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the categories. - $query->select('c.title AS category_title') + $query->select('c.title AS category_title, c.created_user_id AS category_uid, c.level AS category_level') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); + // Join over the parent categories. + $query->select('parent.title AS parent_category_title, parent.id AS parent_category_id, + parent.created_user_id AS parent_category_uid, parent.level AS parent_category_level') + ->join('LEFT', '#__categories AS parent ON parent.id = c.parent_id'); + // Join over the users for the author. $query->select('ua.name AS author_name') ->join('LEFT', '#__users AS ua ON ua.id = a.created_by'); diff --git a/administrator/components/com_content/tmpl/articles/default.php b/administrator/components/com_content/tmpl/articles/default.php index 47fedb0b96fed..43732dadedc1c 100644 --- a/administrator/components/com_content/tmpl/articles/default.php +++ b/administrator/components/com_content/tmpl/articles/default.php @@ -173,6 +173,10 @@ $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', 'com_content.article.' . $item->id) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; + $canEditCat = $user->authorise('core.edit', 'com_content.category.' . $item->catid); + $canEditOwnCat = $user->authorise('core.edit.own', 'com_content.category.' . $item->catid) && $item->category_uid == $userId; + $canEditParCat = $user->authorise('core.edit', 'com_content.category.' . $item->parent_category_id); + $canEditOwnParCat = $user->authorise('core.edit.own', 'com_content.category.' . $item->parent_category_id) && $item->parent_category_uid == $userId; $transitions = ContentHelper::filterTransitions($this->transitions, $item->stage_id, $item->workflow_id); @@ -278,7 +282,57 @@
- escape($item->category_title); ?> + parent_category_id . '&extension=com_content'); + $CurrentCatUrl = Route::_('index.php?option=com_categories&task=category.edit&id=' . $item->catid . '&extension=com_content'); + $EditCatTxt = Text::_('JACTION_EDIT') . ' ' . Text::_('JCATEGORY'); + echo Text::_('JCATEGORY') . ': '; + if ($item->category_level != '1') : + if ($item->parent_category_level != '1') : + echo ' » '; + endif; + endif; + if (Factory::getLanguage()->isRtl()) + { + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + echo $this->escape($item->category_title); + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + if ($item->category_level != '1') : + echo ' « '; + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + echo $this->escape($item->parent_category_title); + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + endif; + } + else + { + if ($item->category_level != '1') : + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + echo $this->escape($item->parent_category_title); + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + echo ' » '; + endif; + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + echo $this->escape($item->category_title); + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + } + ?>
diff --git a/administrator/components/com_content/tmpl/articles/default.xml b/administrator/components/com_content/tmpl/articles/default.xml index b3dec7f7be330..aaacb96288aef 100644 --- a/administrator/components/com_content/tmpl/articles/default.xml +++ b/administrator/components/com_content/tmpl/articles/default.xml @@ -5,4 +5,79 @@ + + +
+ + + + + + + + + + + + + + + + + + + +
+
+ diff --git a/administrator/components/com_content/tmpl/featured/default.php b/administrator/components/com_content/tmpl/featured/default.php index d09c23502a317..ac980dea478ea 100644 --- a/administrator/components/com_content/tmpl/featured/default.php +++ b/administrator/components/com_content/tmpl/featured/default.php @@ -147,12 +147,16 @@ items); ?> items as $i => $item) : $item->max_ordering = 0; - $ordering = ($listOrder == 'fp.ordering'); - $assetId = 'com_content.article.' . $item->id; - $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); - $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; - $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; + $ordering = ($listOrder == 'fp.ordering'); + $assetId = 'com_content.article.' . $item->id; + $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); + $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; + $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; + $canEditCat = $user->authorise('core.edit', 'com_content.category.' . $item->catid); + $canEditOwnCat = $user->authorise('core.edit.own', 'com_content.category.' . $item->catid) && $item->category_uid == $userId; + $canEditParCat = $user->authorise('core.edit', 'com_content.category.' . $item->parent_category_id); + $canEditOwnParCat = $user->authorise('core.edit.own', 'com_content.category.' . $item->parent_category_id) && $item->parent_category_uid == $userId; $transitions = ContentHelper::filterTransitions($this->transitions, $item->stage_id, $item->workflow_id); @@ -259,7 +263,57 @@
- escape($item->category_title); ?> + parent_category_id . '&extension=com_content'); + $CurrentCatUrl = Route::_('index.php?option=com_categories&task=category.edit&id=' . $item->catid . '&extension=com_content'); + $EditCatTxt = Text::_('JACTION_EDIT') . ' ' . Text::_('JCATEGORY'); + echo Text::_('JCATEGORY') . ': '; + if ($item->category_level != '1') : + if ($item->parent_category_level != '1') : + echo ' » '; + endif; + endif; + if (Factory::getLanguage()->isRtl()) + { + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + echo $this->escape($item->category_title); + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + if ($item->category_level != '1') : + echo ' « '; + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + echo $this->escape($item->parent_category_title); + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + endif; + } + else + { + if ($item->category_level != '1') : + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + echo $this->escape($item->parent_category_title); + if ($canEditParCat || $canEditOwnParCat) : + echo ''; + endif; + echo ' » '; + endif; + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + echo $this->escape($item->category_title); + if ($canEditCat || $canEditOwnCat) : + echo ''; + endif; + } + ?>
diff --git a/administrator/components/com_fields/Plugin/FieldsPlugin.php b/administrator/components/com_fields/Plugin/FieldsPlugin.php index dc99724f09c6d..e9061d1f9a1fc 100644 --- a/administrator/components/com_fields/Plugin/FieldsPlugin.php +++ b/administrator/components/com_fields/Plugin/FieldsPlugin.php @@ -189,6 +189,7 @@ public function onCustomFieldsPrepareDom($field, \DOMElement $parent, Form $form $node->setAttribute('name', $field->name); $node->setAttribute('type', $field->type); $node->setAttribute('label', $field->label); + $node->setAttribute('labelclass', $field->params->get('label_class')); $node->setAttribute('description', $field->description); $node->setAttribute('class', $field->params->get('class')); $node->setAttribute('hint', $field->params->get('hint')); diff --git a/administrator/components/com_fields/forms/field.xml b/administrator/components/com_fields/forms/field.xml index 21ea3690e4b90..e469b812752e2 100644 --- a/administrator/components/com_fields/forms/field.xml +++ b/administrator/components/com_fields/forms/field.xml @@ -206,6 +206,13 @@
+ + + + + + + + + + + + + @@ -242,15 +271,12 @@ - - - - + name="label_render_class" + type="textarea" + label="COM_FIELDS_FIELD_LABEL_RENDER_CLASS_LABEL" + size="40" + showon="showlabel:1" + /> where($db->quoteName('a.id') . ' = ' . (int) substr($search, 3)); } + elseif (stripos($search, 'uid:') === 0) + { + $query->where($db->quoteName('a.user_id') . ' = ' . (int) substr($search, 4)); + } else { $search = $db->quote('%' . $db->escape($search, true) . '%'); diff --git a/administrator/components/com_privacy/models/export.php b/administrator/components/com_privacy/models/export.php index ea7ef2bc3e824..aad9f7ac51bb6 100644 --- a/administrator/components/com_privacy/models/export.php +++ b/administrator/components/com_privacy/models/export.php @@ -265,7 +265,7 @@ public function logExport(PrivacyTableRequest $request) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_EXPORT', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_EXPORT', 'com_privacy.request', $user->id); } /** @@ -294,7 +294,7 @@ public function logExportEmailed(PrivacyTableRequest $request) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_EXPORT_EMAILED', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_EXPORT_EMAILED', 'com_privacy.request', $user->id); } /** diff --git a/administrator/components/com_privacy/models/forms/filter_consents.xml b/administrator/components/com_privacy/models/forms/filter_consents.xml index 173ff70c2c8dd..82e8b4d55ac82 100644 --- a/administrator/components/com_privacy/models/forms/filter_consents.xml +++ b/administrator/components/com_privacy/models/forms/filter_consents.xml @@ -23,6 +23,8 @@ > + + diff --git a/administrator/components/com_privacy/models/remove.php b/administrator/components/com_privacy/models/remove.php index dfd8500e1d545..405158e43d697 100644 --- a/administrator/components/com_privacy/models/remove.php +++ b/administrator/components/com_privacy/models/remove.php @@ -138,7 +138,7 @@ public function logRemove(PrivacyTableRequest $request) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_REMOVE', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_REMOVE', 'com_privacy.request', $user->id); } /** @@ -169,7 +169,7 @@ public function logRemoveBlocked(PrivacyTableRequest $request, array $reasons) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_REMOVE_BLOCKED', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_REMOVE_BLOCKED', 'com_privacy.request', $user->id); } /** diff --git a/administrator/components/com_privacy/models/request.php b/administrator/components/com_privacy/models/request.php index d8d7509c35445..f24dbd00cd34e 100644 --- a/administrator/components/com_privacy/models/request.php +++ b/administrator/components/com_privacy/models/request.php @@ -129,7 +129,7 @@ public function logRequestCompleted($id) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_ADMIN_COMPLETED_REQUEST', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_ADMIN_COMPLETED_REQUEST', 'com_privacy.request', $user->id); return true; } @@ -172,7 +172,7 @@ public function logRequestCreated($id) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_ADMIN_CREATED_REQUEST', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_ADMIN_CREATED_REQUEST', 'com_privacy.request', $user->id); return true; } @@ -215,7 +215,7 @@ public function logRequestInvalidated($id) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), 'COM_PRIVACY_ACTION_LOG_ADMIN_INVALIDATED_REQUEST', 'com_privacy.request', $user->id); + $model->addLog(array($message), 'COM_PRIVACY_ACTION_LOG_ADMIN_INVALIDATED_REQUEST', 'com_privacy.request', $user->id); return true; } @@ -310,18 +310,18 @@ public function notifyUserAdminCreatedRequest($id) '[TOKEN]' => $token, '\\n' => "\n", ); - - $emailSubject = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT'); - + switch ($table->request_type) { case 'export': - $emailBody = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_EXPORT_REQUEST'); + $emailSubject = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT_EXPORT_REQUEST'); + $emailBody = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_EXPORT_REQUEST'); break; case 'remove': - $emailBody = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_REMOVE_REQUEST'); + $emailSubject = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT_REMOVE_REQUEST'); + $emailBody = $lang->_('COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_REMOVE_REQUEST'); break; diff --git a/administrator/components/com_privacy/views/capabilities/view.html.php b/administrator/components/com_privacy/views/capabilities/view.html.php index f6220e50d7084..06a23edf7e0bb 100644 --- a/administrator/components/com_privacy/views/capabilities/view.html.php +++ b/administrator/components/com_privacy/views/capabilities/view.html.php @@ -79,7 +79,7 @@ public function display($tpl = null) */ protected function addToolbar() { - JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_CAPABILITIES'), 'dashboard'); + JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_CAPABILITIES'), 'lock'); JToolbarHelper::preferences('com_privacy'); diff --git a/administrator/components/com_privacy/views/consents/tmpl/default.php b/administrator/components/com_privacy/views/consents/tmpl/default.php index 766ce6a4a9b1c..f54a30ce98ff8 100644 --- a/administrator/components/com_privacy/views/consents/tmpl/default.php +++ b/administrator/components/com_privacy/views/consents/tmpl/default.php @@ -44,6 +44,9 @@
+ @@ -71,6 +74,9 @@ + diff --git a/administrator/components/com_privacy/views/consents/view.html.php b/administrator/components/com_privacy/views/consents/view.html.php index 394db38921b4d..e7741c1dcd78d 100644 --- a/administrator/components/com_privacy/views/consents/view.html.php +++ b/administrator/components/com_privacy/views/consents/view.html.php @@ -108,7 +108,7 @@ public function display($tpl = null) */ protected function addToolbar() { - JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_CONSENTS'), 'dashboard'); + JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_CONSENTS'), 'lock'); JToolbarHelper::preferences('com_privacy'); diff --git a/administrator/components/com_privacy/views/dashboard/tmpl/default.php b/administrator/components/com_privacy/views/dashboard/tmpl/default.php index 0f71cff631ed6..c3dea06d42805 100644 --- a/administrator/components/com_privacy/views/dashboard/tmpl/default.php +++ b/administrator/components/com_privacy/views/dashboard/tmpl/default.php @@ -79,15 +79,15 @@
privacyPolicyInfo['published']) : ?> - + - +
@@ -100,15 +100,15 @@
requestFormPublished['published']) : ?> - + - +
@@ -121,15 +121,15 @@
numberOfUrgentRequests === 0) : ?> - + - +
diff --git a/administrator/components/com_privacy/views/dashboard/view.html.php b/administrator/components/com_privacy/views/dashboard/view.html.php index 7f29270f1c9d3..6d92a22414c47 100644 --- a/administrator/components/com_privacy/views/dashboard/view.html.php +++ b/administrator/components/com_privacy/views/dashboard/view.html.php @@ -103,7 +103,7 @@ public function display($tpl = null) */ protected function addToolbar() { - JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_DASHBOARD'), 'dashboard'); + JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_DASHBOARD'), 'lock'); JToolbarHelper::preferences('com_privacy'); diff --git a/administrator/components/com_privacy/views/request/view.html.php b/administrator/components/com_privacy/views/request/view.html.php index beb34a1615259..54257be29d41a 100644 --- a/administrator/components/com_privacy/views/request/view.html.php +++ b/administrator/components/com_privacy/views/request/view.html.php @@ -110,7 +110,7 @@ protected function addToolbar() // Set the title and toolbar based on the layout if ($this->getLayout() === 'edit') { - JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_REQUEST_ADD_REQUEST'), 'dashboard'); + JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_REQUEST_ADD_REQUEST'), 'lock'); JToolbarHelper::apply('request.save'); JToolbarHelper::cancel('request.cancel'); @@ -118,7 +118,7 @@ protected function addToolbar() } else { - JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_REQUEST_SHOW_REQUEST'), 'dashboard'); + JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_REQUEST_SHOW_REQUEST'), 'lock'); $bar = JToolbar::getInstance('toolbar'); diff --git a/administrator/components/com_privacy/views/requests/tmpl/default.php b/administrator/components/com_privacy/views/requests/tmpl/default.php index 528c0ff26a8cc..a93219caf4821 100644 --- a/administrator/components/com_privacy/views/requests/tmpl/default.php +++ b/administrator/components/com_privacy/views/requests/tmpl/default.php @@ -85,11 +85,11 @@
diff --git a/administrator/components/com_privacy/views/requests/view.html.php b/administrator/components/com_privacy/views/requests/view.html.php index c4d8eade8b380..1598ddec6046f 100644 --- a/administrator/components/com_privacy/views/requests/view.html.php +++ b/administrator/components/com_privacy/views/requests/view.html.php @@ -117,7 +117,7 @@ public function display($tpl = null) */ protected function addToolbar() { - JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_REQUESTS'), 'dashboard'); + JToolbarHelper::title(JText::_('COM_PRIVACY_VIEW_REQUESTS'), 'lock'); JToolbarHelper::addNew('request.add'); diff --git a/administrator/language/en-GB/en-GB.com_actionlogs.ini b/administrator/language/en-GB/en-GB.com_actionlogs.ini index 1776165a5d379..6b6d09dda4b7c 100644 --- a/administrator/language/en-GB/en-GB.com_actionlogs.ini +++ b/administrator/language/en-GB/en-GB.com_actionlogs.ini @@ -23,6 +23,7 @@ COM_ACTIONLOGS_EXTENSION_FILTER_DESC="Search in the User Action logs by extensio COM_ACTIONLOGS_IP_ADDRESS="IP Address" COM_ACTIONLOGS_IP_ADDRESS_ASC="IP Address ascending" COM_ACTIONLOGS_IP_ADDRESS_DESC="IP Address descending" +COM_ACTIONLOGS_IP_INVALID="Invalid IP" COM_ACTIONLOGS_IP_LOGGING="IP logging" COM_ACTIONLOGS_IP_LOGGING_DESC="Enable logging the IP address of users." COM_ACTIONLOGS_LOG_EXTENSIONS="Select events to be logged" diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 7fa676dec04fd..874ae0120d47a 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -26,6 +26,7 @@ COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND="The asset for global configuration could COM_CONFIG_ERROR_SSL_NOT_AVAILABLE="HTTPS has not been enabled as it is not available on this server. HTTPS connection test failed with the following error: %s" COM_CONFIG_ERROR_SSL_NOT_AVAILABLE_HTTP_CODE="HTTPS version of the site returned an invalid HTTP status code." COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN="You can't remove your own Super User permissions." +COM_CONFIG_ERROR_UNKNOWN_BEFORE_SAVING="A plugin reported an unknown error before saving the configuration." COM_CONFIG_ERROR_WRITE_FAILED="Could not write to the configuration file" COM_CONFIG_FIELD_CACHE_HANDLER_LABEL="Cache Handler" COM_CONFIG_FIELD_CACHE_PLATFORMPREFIX_LABEL="Platform Specific Caching" diff --git a/administrator/language/en-GB/en-GB.com_fields.ini b/administrator/language/en-GB/en-GB.com_fields.ini index 23fcd1e9638d1..e59542c99932f 100644 --- a/administrator/language/en-GB/en-GB.com_fields.ini +++ b/administrator/language/en-GB/en-GB.com_fields.ini @@ -8,7 +8,9 @@ COM_FIELDS_BATCH_GROUP_LABEL="To Move or Copy your selection please select a gro COM_FIELDS_BATCH_GROUP_OPTION_NONE="- No Group -" COM_FIELDS_ERROR_UNIQUE_NAME="Another Field has the same name (remember it may be a trashed item)." COM_FIELDS_FIELD_CLASS_DESC="The class attributes of the field in the edit form. If multiple classes are needed, list them with spaces." -COM_FIELDS_FIELD_CLASS_LABEL="Edit Class" +COM_FIELDS_FIELD_CLASS_LABEL="Field Class" +COM_FIELDS_FIELD_FORMOPTIONS_HEADING="Form Options" +COM_FIELDS_FIELD_RENDEROPTIONS_HEADING="Render Options" COM_FIELDS_FIELD_SHOWLABEL_DESC="Show or Hide the label when the field renders." COM_FIELDS_FIELD_SHOWLABEL_LABEL="Label" COM_FIELDS_FIELD_DEFAULT_VALUE_LABEL="Default Value" @@ -27,7 +29,9 @@ COM_FIELDS_FIELD_IMAGE_ALT_LABEL="Alt Text" COM_FIELDS_FIELD_IMAGE_DESC="Image label." COM_FIELDS_FIELD_IMAGE_LABEL="Image" COM_FIELDS_FIELD_INVALID_DEFAULT_VALUE="The default value is invalid." +COM_FIELDS_FIELD_LABEL_FORM_CLASS_LABEL="Label Class (Form)" COM_FIELDS_FIELD_LABEL_LABEL="Label" +COM_FIELDS_FIELD_LABEL_RENDER_CLASS_LABEL="Label Class (Output)" COM_FIELDS_FIELD_NOTE_LABEL="Note" COM_FIELDS_FIELD_RENDER_CLASS_DESC="The class attributes of the field when the field is rendered. If multiple classes are needed, list them with spaces." COM_FIELDS_FIELD_RENDER_CLASS_LABEL="Render Class" diff --git a/administrator/language/en-GB/en-GB.com_menus.ini b/administrator/language/en-GB/en-GB.com_menus.ini index 12e39c65837b7..71609bcb0e2e4 100644 --- a/administrator/language/en-GB/en-GB.com_menus.ini +++ b/administrator/language/en-GB/en-GB.com_menus.ini @@ -9,6 +9,20 @@ COM_MENUS_ACTION_DESELECT="Deselect" COM_MENUS_ACTION_EXPAND="Expand" COM_MENUS_ACTION_SELECT="Select" COM_MENUS_ADD_MENU_MODULE="Add a module for this menu" +COM_MENUS_ADMIN_ACCESS_DESC="Filter by viewing access level." +COM_MENUS_ADMIN_ACCESS_LABEL="Access" +COM_MENUS_ADMIN_AUTHOR_DESC="Filter by author." +COM_MENUS_ADMIN_AUTHOR_LABEL="Author" +COM_MENUS_ADMIN_CATEGORY_DESC="Filter by category." +COM_MENUS_ADMIN_CATEGORY_LABEL="Category" +COM_MENUS_ADMIN_FILTER_DESC="Apply filters to the menu item." +COM_MENUS_ADMIN_FILTER_LABEL="Filter" +COM_MENUS_ADMIN_LANGUAGE_DESC="Filter by language." +COM_MENUS_ADMIN_LANGUAGE_LABEL="Language" +COM_MENUS_ADMIN_LEVEL_DESC="The number of subcategory levels to display." +COM_MENUS_ADMIN_LEVEL_LABEL="Subcategory Levels" +COM_MENUS_ADMIN_TAGS_DESC="Filter by tags." +COM_MENUS_ADMIN_TAGS_LABEL="Tags" COM_MENUS_BASIC_FIELDSET_LABEL="Options" COM_MENUS_BATCH_MENU_ITEM_CANNOT_CREATE="You are not allowed to create new menu items." COM_MENUS_BATCH_MENU_ITEM_CANNOT_EDIT="You are not allowed to edit menu items." diff --git a/administrator/language/en-GB/en-GB.com_privacy.ini b/administrator/language/en-GB/en-GB.com_privacy.ini index 251b43af3839c..bd09fd450a991 100644 --- a/administrator/language/en-GB/en-GB.com_privacy.ini +++ b/administrator/language/en-GB/en-GB.com_privacy.ini @@ -25,7 +25,7 @@ COM_PRIVACY_CORE_CAPABILITY_COMMUNICATION_WITH_JOOMLA_ORG="When a network connec ; The placeholder for this key is the configured log path for the site. COM_PRIVACY_CORE_CAPABILITY_LOGGING_IP_ADDRESS="Joomla's logging system records the IP address of the visitor which led to a message being written to its log files. These log files are used to record various activity on a Joomla site, including information related to core updates, invalid login attempts, unhandled errors, and development information such as the use of deprecated APIs. The format of these log files may be customised by any extension which configures a logger, therefore you are encouraged to download and review the log files for your website which may be found at `%s`." COM_PRIVACY_CORE_CAPABILITY_SESSION_IP_ADDRESS_AND_COOKIE="All requests to a Joomla website start a session which stores the IP address in the session data and creates a session cookie in the user's browser. The IP address is used as a security measure to help protect against potential session hijacking attacks and this information is deleted once the session has expired and its data purged. The session cookie's name is based on a randomly generated hash and therefore does not have a constant identifier. The session cookie is destroyed once the session has expired or the user has exited their browser." -COM_PRIVACY_DASHBOARD_BADGE_ACTIVE_REQUESTS_0="%d Active Requests" +COM_PRIVACY_DASHBOARD_BADGE_ACTIVE_REQUESTS_0="%d Active Requests" COM_PRIVACY_DASHBOARD_BADGE_ACTIVE_REQUESTS_1="%d Active Request" COM_PRIVACY_DASHBOARD_BADGE_ACTIVE_REQUESTS_MORE="%d Active Requests" COM_PRIVACY_DASHBOARD_BADGE_TOTAL_REQUESTS_0="%d Total Requests" @@ -52,7 +52,8 @@ COM_PRIVACY_EXTENSION_CAPABILITY_PERSONAL_INFO="In order to process information ; \n Newline character. Use it to start a new line in the email. COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_EXPORT_REQUEST="An administrator for [URL] has created a request to export personal information related to this email address. As a security measure, you must confirm that this is a valid request for your personal information from this website.\n\nIn order to confirm this request, you can complete one of the following tasks:\n\n1. Visit the following URL: [TOKENURL]\n\n2. Copy your token from this email, visit the referenced URL, and paste your token into the form.\nURL: [FORMURL]\nToken: [TOKEN]\n\nPlease note that this token is only valid for 24 hours from the time this email was sent." COM_PRIVACY_EMAIL_ADMIN_REQUEST_BODY_REMOVE_REQUEST="An administrator for [URL] has created a request to remove all personal information related to this email address. As a security measure, you must confirm that this is a valid request for your personal information to be removed from this website.\n\nIn order to confirm this request, you can complete one of the following tasks:\n\n1. Visit the following URL: [TOKENURL]\n\n2. Copy your token from this email, visit the referenced URL, and paste your token into the form.\nURL: [FORMURL]\nToken: [TOKEN]\n\nPlease note that this token is only valid for 24 hours from the time this email was sent." -COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT="Information Request Created at [SITENAME]" +COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT_EXPORT_REQUEST="Information Request Created at [SITENAME]" +COM_PRIVACY_EMAIL_ADMIN_REQUEST_SUBJECT_REMOVE_REQUEST="Information Deletion Request Created at [SITENAME]" COM_PRIVACY_EMAIL_DATA_EXPORT_COMPLETED_BODY="An administrator for [URL] has completed the data export you requested and a copy of the information can be found in the file attached to this message." COM_PRIVACY_EMAIL_DATA_EXPORT_COMPLETED_SUBJECT="Data Export for [SITENAME]" COM_PRIVACY_ERROR_ACTIVE_REQUEST_FOR_EMAIL="There is already an active information request for this email address, the active request should be completed before starting a new one." @@ -79,9 +80,9 @@ COM_PRIVACY_FIELD_USER_ID_LABEL="Associated User" COM_PRIVACY_FILTER_SEARCH_LABEL="Search Requests" COM_PRIVACY_HEADING_ACTION_LOG="Action Log" COM_PRIVACY_HEADING_ACTIONS="Actions" -COM_PRIVACY_HEADING_CONSENTS_SUBJECT="Subject" COM_PRIVACY_HEADING_CONSENTS_BODY="Body" COM_PRIVACY_HEADING_CONSENTS_CREATED="Created" +COM_PRIVACY_HEADING_CONSENTS_SUBJECT="Subject" COM_PRIVACY_HEADING_CORE_CAPABILITIES="Joomla Core Capabilities" COM_PRIVACY_HEADING_CREATED_ASC="Created ascending" COM_PRIVACY_HEADING_CREATED_DESC="Created descending" @@ -98,6 +99,9 @@ COM_PRIVACY_HEADING_REQUESTED_AT_ASC="Requested ascending" COM_PRIVACY_HEADING_REQUESTED_AT_DESC="Requested descending" COM_PRIVACY_HEADING_STATUS_ASC="Status ascending" COM_PRIVACY_HEADING_STATUS_DESC="Status descending" +COM_PRIVACY_HEADING_USERID="User ID" +COM_PRIVACY_HEADING_USERID_ASC="User ID ascending" +COM_PRIVACY_HEADING_USERID_DESC="User ID descending" COM_PRIVACY_HEADING_USERNAME_ASC="Username descending" COM_PRIVACY_HEADING_USERNAME_DESC="Username descending" COM_PRIVACY_MSG_CAPABILITIES_ABOUT_THIS_INFORMATION="About This Information" @@ -127,7 +131,7 @@ COM_PRIVACY_STATUS_CONFIRMED="Confirmed" COM_PRIVACY_STATUS_INVALID="Invalid" COM_PRIVACY_STATUS_PENDING="Pending" COM_PRIVACY_SEARCH_IN_EMAIL="Search in requestor email address. Prefix with ID: to search for a request ID." -COM_PRIVACY_SEARCH_IN_USERNAME="Search in username. Prefix with ID: to search for a consent ID." +COM_PRIVACY_SEARCH_IN_USERNAME="Search in username. Prefix with ID: to search for a consent ID. Prefix with UID: to search for a User ID." COM_PRIVACY_SUBMENU_CAPABILITIES="Capabilities" COM_PRIVACY_SUBMENU_CONSENTS="Consents" COM_PRIVACY_SUBMENU_DASHBOARD="Dashboard" diff --git a/administrator/language/en-GB/en-GB.ini b/administrator/language/en-GB/en-GB.ini index 84590f29c51b6..082bb2bc914bb 100644 --- a/administrator/language/en-GB/en-GB.ini +++ b/administrator/language/en-GB/en-GB.ini @@ -816,6 +816,7 @@ JHELP_MENUS_MENU_ITEM_NEWSFEED_CATEGORY="Menus_Menu_Item_Newsfeed_Category" JHELP_MENUS_MENU_ITEM_NEWSFEED_SINGLE_NEWSFEED="Menus_Menu_Item_Newsfeed_Single_Newsfeed" JHELP_MENUS_MENU_ITEM_PRIVACY_CONFIRM_REQUEST="Menus_Menu_Item_Privacy_Confirm_Request" JHELP_MENUS_MENU_ITEM_PRIVACY_CREATE_REQUEST=" Menus_Menu_Item_Privacy_Create_Request" +JHELP_MENUS_MENU_ITEM_PRIVACY_REMIND_REQUEST="Menus_Menu_Item_Privacy_Remind_Request" JHELP_MENUS_MENU_ITEM_SEARCH_RESULTS="Menus_Menu_Item_Search_Results" JHELP_MENUS_MENU_ITEM_TAGS_ITEMS_COMPACT_LIST="Menus_Menu_Item_Tags_Items_Compact_List" JHELP_MENUS_MENU_ITEM_TAGS_ITEMS_LIST="Menus_Menu_Item_Tags_Items_List" diff --git a/administrator/language/en-GB/en-GB.plg_actionlog_joomla.ini b/administrator/language/en-GB/en-GB.plg_actionlog_joomla.ini index c68a8f0c1956b..cc1943480ab09 100644 --- a/administrator/language/en-GB/en-GB.plg_actionlog_joomla.ini +++ b/administrator/language/en-GB/en-GB.plg_actionlog_joomla.ini @@ -9,6 +9,7 @@ PLG_ACTIONLOG_JOOMLA_APPLICATION_SITE="site" PLG_ACTIONLOG_JOOMLA_APPLICATION_ADMINISTRATOR="admin" ; Content types title PLG_ACTIONLOG_JOOMLA_TYPE_ACCESS_LEVEL="access level" +PLG_ACTIONLOG_JOOMLA_TYPE_APPLICATION_CONFIG="Global Configuration" PLG_ACTIONLOG_JOOMLA_TYPE_ARTICLE="article" PLG_ACTIONLOG_JOOMLA_TYPE_BANNER="banner" PLG_ACTIONLOG_JOOMLA_TYPE_BANNER_CLIENT="banner client" @@ -32,11 +33,14 @@ PLG_ACTIONLOG_JOOMLA_TYPE_STYLE="template style" PLG_ACTIONLOG_JOOMLA_TYPE_TAG="tag" PLG_ACTIONLOG_JOOMLA_TYPE_TEMPLATE="template" PLG_ACTIONLOG_JOOMLA_TYPE_USER="user" +PLG_ACTIONLOG_JOOMLA_USER_LOGIN_FAILED="User {username} tried to login to {app}" PLG_ACTIONLOG_JOOMLA_USER_LOGGED_IN="User {username} logged in to {app}" PLG_ACTIONLOG_JOOMLA_USER_LOGGED_OUT="User {username} logged out from {app}" +PLG_ACTIONLOG_JOOMLA_USER_REGISTERED="User {username} registered for an account" PLG_ACTIONLOG_JOOMLA_TYPE_USER_GROUP="user group" PLG_ACTIONLOG_JOOMLA_TYPE_USER_NOTE="user note" ; Component +PLG_ACTIONLOG_JOOMLA_APPLICATION_CONFIG_UPDATED="User {username} changed settings of the application configuration" PLG_ACTIONLOG_JOOMLA_COMPONENT_CONFIG_UPDATED="User {username} changed settings of the component {extension_name}" ; Extensions PLG_ACTIONLOG_JOOMLA_EXTENSION_INSTALLED="User {username} installed the {type} {extension_name}" diff --git a/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini b/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini new file mode 100644 index 0000000000000..e6faefd882185 --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_ACTIONLOGS="Privacy - Action Logs" +PLG_PRIVACY_ACTIONLOGS_XML_DESCRIPTION="Responsible for exporting the action log data for a user's privacy request. Since the action logs are an audit log, these can not be deleted from the system." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.sys.ini b/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.sys.ini new file mode 100644 index 0000000000000..e6faefd882185 --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_ACTIONLOGS="Privacy - Action Logs" +PLG_PRIVACY_ACTIONLOGS_XML_DESCRIPTION="Responsible for exporting the action log data for a user's privacy request. Since the action logs are an audit log, these can not be deleted from the system." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_contact.ini b/administrator/language/en-GB/en-GB.plg_privacy_contact.ini new file mode 100644 index 0000000000000..190cbd446351a --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_contact.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_CONTACT="Privacy - Contacts" +PLG_PRIVACY_CONTACT_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla contact data." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_contact.sys.ini b/administrator/language/en-GB/en-GB.plg_privacy_contact.sys.ini new file mode 100644 index 0000000000000..190cbd446351a --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_contact.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_CONTACT="Privacy - Contacts" +PLG_PRIVACY_CONTACT_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla contact data." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_content.ini b/administrator/language/en-GB/en-GB.plg_privacy_content.ini new file mode 100644 index 0000000000000..bd01ffafe1de6 --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_content.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_CONTENT="Privacy - Content" +PLG_PRIVACY_CONTENTT_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla content data." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_content.sys.ini b/administrator/language/en-GB/en-GB.plg_privacy_content.sys.ini new file mode 100644 index 0000000000000..bd01ffafe1de6 --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_content.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_CONTENT="Privacy - Content" +PLG_PRIVACY_CONTENTT_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla content data." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_message.ini b/administrator/language/en-GB/en-GB.plg_privacy_message.ini new file mode 100644 index 0000000000000..c67d1908f89aa --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_message.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_MESSAGE="Privacy - User Messages" +PLG_PRIVACY_MESSAGE_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla user messages data." diff --git a/administrator/language/en-GB/en-GB.plg_privacy_message.sys.ini b/administrator/language/en-GB/en-GB.plg_privacy_message.sys.ini new file mode 100644 index 0000000000000..c67d1908f89aa --- /dev/null +++ b/administrator/language/en-GB/en-GB.plg_privacy_message.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_PRIVACY_MESSAGE="Privacy - User Messages" +PLG_PRIVACY_MESSAGE_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla user messages data." diff --git a/administrator/language/en-GB/en-GB.plg_system_actionlogs.ini b/administrator/language/en-GB/en-GB.plg_system_actionlogs.ini index 7ab5e4f772b84..cd8d760f59c94 100644 --- a/administrator/language/en-GB/en-GB.plg_system_actionlogs.ini +++ b/administrator/language/en-GB/en-GB.plg_system_actionlogs.ini @@ -13,9 +13,9 @@ PLG_SYSTEM_ACTIONLOGS_NOTIFICATIONS_DESC="Send a notifications of users' actions PLG_SYSTEM_ACTIONLOGS_OPTIONS="User Actions Log Options" PLG_SYSTEM_ACTIONLOGS_XML_DESCRIPTION="Record the actions of users on the site so they can be reviewed if required." ; Common content type log messages -PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED="User {username} added new {type} {title}" -PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED="User {username} updated the {type} {title}" -PLG_SYSTEM_ACTIONLOGS_CONTENT_PUBLISHED="User {username} published the {type} {title}" -PLG_SYSTEM_ACTIONLOGS_CONTENT_UNPUBLISHED="User {username} unpublished the {type} {title}" -PLG_SYSTEM_ACTIONLOGS_CONTENT_TRASHED="User {username} trashed the {type} {title}" -PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED="User {username} deleted the {type} {title}" +PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED="User {username} added new {type} {title}" +PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED="User {username} updated the {type} {title}" +PLG_SYSTEM_ACTIONLOGS_CONTENT_PUBLISHED="User {username} published the {type} {title}" +PLG_SYSTEM_ACTIONLOGS_CONTENT_UNPUBLISHED="User {username} unpublished the {type} {title}" +PLG_SYSTEM_ACTIONLOGS_CONTENT_TRASHED="User {username} trashed the {type} {title}" +PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED="User {username} deleted the {type} {title}" diff --git a/administrator/language/en-GB/en-GB.plg_user_terms.ini b/administrator/language/en-GB/en-GB.plg_user_terms.ini index a8230f1f901f8..7ddb767a6fed8 100644 --- a/administrator/language/en-GB/en-GB.plg_user_terms.ini +++ b/administrator/language/en-GB/en-GB.plg_user_terms.ini @@ -10,9 +10,10 @@ PLG_USER_TERMS_FIELD_DESC="Read the full terms and conditions." PLG_USER_TERMS_FIELD_ERROR="Agreement to the site's Terms & Conditions is required." PLG_USER_TERMS_FIELD_LABEL="Terms & Conditions" PLG_USER_TERMS_LABEL="Terms & Conditions" +PLG_USER_TERMS_LOGGING_CONSENT_TO_TERMS="User {username} consented to the terms and conditions during registration." PLG_USER_TERMS_NOTE_FIELD_DEFAULT="By signing up to this web site you accept the Terms & Conditions." PLG_USER_TERMS_NOTE_FIELD_DESC="A summary of the site's terms & conditions. If left blank then the default message will be used." PLG_USER_TERMS_NOTE_FIELD_LABEL="Short Terms & Conditions" PLG_USER_TERMS_OPTION_AGREE="I agree" PLG_USER_TERMS_SUBJECT="Privacy Policy" -PLG_USER_TERMS_XML_DESCRIPTION="Basic plugin to request user's consent to the site's terms and conditions." \ No newline at end of file +PLG_USER_TERMS_XML_DESCRIPTION="Basic plugin to request user's consent to the site's terms and conditions." diff --git a/administrator/modules/mod_feed/mod_feed.xml b/administrator/modules/mod_feed/mod_feed.xml index fd07fac0b12e6..8865934ff70fa 100644 --- a/administrator/modules/mod_feed/mod_feed.xml +++ b/administrator/modules/mod_feed/mod_feed.xml @@ -99,13 +99,14 @@ - + diff --git a/administrator/modules/mod_feed/tmpl/default.php b/administrator/modules/mod_feed/tmpl/default.php index 656a126345cc6..24b89bb8f9789 100644 --- a/administrator/modules/mod_feed/tmpl/default.php +++ b/administrator/modules/mod_feed/tmpl/default.php @@ -114,7 +114,7 @@ - get('rssitemdate')) : ?> + get('rssitemdate', 0)) : ?>
publishedDate, Text::_('DATE_FORMAT_LC3')); ?>
diff --git a/administrator/modules/mod_latestactions/mod_latestactions.xml b/administrator/modules/mod_latestactions/mod_latestactions.xml index b1f990c2bf9b4..708aee6b32aa5 100644 --- a/administrator/modules/mod_latestactions/mod_latestactions.xml +++ b/administrator/modules/mod_latestactions/mod_latestactions.xml @@ -28,6 +28,7 @@ label="MOD_LATESTACTIONS_FIELD_COUNT_LABEL" description="MOD_LATESTACTIONS_FIELD_COUNT_DESC" default="5" + filter="integer" />
@@ -35,12 +36,12 @@ name="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL" - description="JFIELD_ALT_MODULE_LAYOUT_DESC" + description="JFIELD_ALT_MODULE_LAYOUT_DESC" /> + + + + + + + + + + +
diff --git a/administrator/modules/mod_latestactions/tmpl/default.php b/administrator/modules/mod_latestactions/tmpl/default.php index 57c9518d433c1..31e684ac936d1 100644 --- a/administrator/modules/mod_latestactions/tmpl/default.php +++ b/administrator/modules/mod_latestactions/tmpl/default.php @@ -16,7 +16,7 @@ $item) : ?>
- message; ?> + message; ?>
diff --git a/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml b/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml index 3f2f04fd2e1b4..0075c4777b9c8 100644 --- a/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml +++ b/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml @@ -28,7 +28,7 @@ name="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL" - description="JFIELD_ALT_MODULE_LAYOUT_DESC" + description="JFIELD_ALT_MODULE_LAYOUT_DESC" /> @@ -56,6 +57,7 @@ label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC" default="900" + filter="integer" /> value; $class = $field->params->get('render_class'); $showLabel = $field->params->get('showlabel'); +$labelClass = $field->params->get('label_render_class'); if ($field->context == 'com_contact.mail') { @@ -38,7 +39,7 @@ ?>
- : + :
diff --git a/components/com_fields/layouts/field/render.php b/components/com_fields/layouts/field/render.php index ff02d0548176e..8ba2f89c18ab6 100644 --- a/components/com_fields/layouts/field/render.php +++ b/components/com_fields/layouts/field/render.php @@ -19,6 +19,7 @@ $label = Text::_($field->label); $value = $field->value; $showLabel = $field->params->get('showlabel'); +$labelClass = $field->params->get('label_render_class'); if ($value == '') { @@ -27,6 +28,6 @@ ?> - : + : diff --git a/components/com_privacy/models/confirm.php b/components/com_privacy/models/confirm.php index 2fb51b3aa5663..f014028735b88 100644 --- a/components/com_privacy/models/confirm.php +++ b/components/com_privacy/models/confirm.php @@ -162,7 +162,7 @@ public function confirmRequest($data) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), $messageKey, 'com_privacy.request', $userId); + $model->addLog(array($message), $messageKey, 'com_privacy.request', $userId); return true; } diff --git a/components/com_privacy/models/forms/confirm.xml b/components/com_privacy/models/forms/confirm.xml index 4cc1716dfea8e..6113c06056b4d 100644 --- a/components/com_privacy/models/forms/confirm.xml +++ b/components/com_privacy/models/forms/confirm.xml @@ -6,7 +6,7 @@ type="text" label="JGLOBAL_EMAIL" description="COM_PRIVACY_FIELD_CONFIRM_EMAIL_DESC" - filter="email" + validate="email" required="true" size="30" /> diff --git a/components/com_privacy/models/forms/remind.xml b/components/com_privacy/models/forms/remind.xml index f7a174365870a..f97926394bdfc 100644 --- a/components/com_privacy/models/forms/remind.xml +++ b/components/com_privacy/models/forms/remind.xml @@ -6,7 +6,7 @@ type="text" label="JGLOBAL_EMAIL" description="COM_PRIVACY_FIELD_CONFIRM_EMAIL_DESC" - filter="email" + validate="email" required="true" size="30" /> diff --git a/components/com_privacy/models/forms/request.xml b/components/com_privacy/models/forms/request.xml index 0f3e5fdadda2b..195e7c79e3c1b 100644 --- a/components/com_privacy/models/forms/request.xml +++ b/components/com_privacy/models/forms/request.xml @@ -6,9 +6,9 @@ type="email" label="JGLOBAL_EMAIL" description="COM_PRIVACY_FIELD_CONFIRM_EMAIL_DESC" + validate="email" required="true" size="30" - validate="email" /> token)) { diff --git a/components/com_privacy/models/request.php b/components/com_privacy/models/request.php index 29eccbb08f215..8ea0d7b202180 100644 --- a/components/com_privacy/models/request.php +++ b/components/com_privacy/models/request.php @@ -141,17 +141,17 @@ public function createRequest($data) '\\n' => "\n", ); - $emailSubject = JText::_('COM_PRIVACY_EMAIL_REQUEST_SUBJECT'); - switch ($data['request_type']) { case 'export': - $emailBody = JText::_('COM_PRIVACY_EMAIL_REQUEST_BODY_EXPORT_REQUEST'); + $emailSubject = JText::_('COM_PRIVACY_EMAIL_REQUEST_SUBJECT_EXPORT_REQUEST'); + $emailBody = JText::_('COM_PRIVACY_EMAIL_REQUEST_BODY_EXPORT_REQUEST'); break; case 'remove': - $emailBody = JText::_('COM_PRIVACY_EMAIL_REQUEST_BODY_REMOVE_REQUEST'); + $emailSubject = JText::_('COM_PRIVACY_EMAIL_REQUEST_SUBJECT_REMOVE_REQUEST'); + $emailBody = JText::_('COM_PRIVACY_EMAIL_REQUEST_BODY_REMOVE_REQUEST'); break; @@ -222,7 +222,7 @@ public function createRequest($data) /** @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb(array($message), $messageKey, 'com_privacy.request', $userId); + $model->addLog(array($message), $messageKey, 'com_privacy.request', $userId); // The email sent and the record is saved, everything is good to go from here return true; diff --git a/components/com_privacy/views/confirm/tmpl/default.php b/components/com_privacy/views/confirm/tmpl/default.php index 7f2b9fe87b3db..8cbf6e703037b 100644 --- a/components/com_privacy/views/confirm/tmpl/default.php +++ b/components/com_privacy/views/confirm/tmpl/default.php @@ -26,10 +26,10 @@ form->getFieldsets() as $fieldset) : ?>
-

label); ?>

- form->getFieldset($fieldset->name) as $name => $field) : ?> - renderField(); ?> - + label)) : ?> + label); ?> + + form->renderFieldset($fieldset->name); ?>
diff --git a/components/com_privacy/views/remind/tmpl/default.php b/components/com_privacy/views/remind/tmpl/default.php index 3d57088561963..a438c89616713 100644 --- a/components/com_privacy/views/remind/tmpl/default.php +++ b/components/com_privacy/views/remind/tmpl/default.php @@ -26,10 +26,10 @@ form->getFieldsets() as $fieldset) : ?>
-

label); ?>

- form->getFieldset($fieldset->name) as $name => $field) : ?> - renderField(); ?> - + label)) : ?> + label); ?> + + form->renderFieldset($fieldset->name); ?>
diff --git a/components/com_privacy/views/request/tmpl/default.php b/components/com_privacy/views/request/tmpl/default.php index 7fd13ca80da46..c6f617b8f63b3 100644 --- a/components/com_privacy/views/request/tmpl/default.php +++ b/components/com_privacy/views/request/tmpl/default.php @@ -13,6 +13,7 @@ JHtml::_('behavior.keepalive'); JHtml::_('behavior.formvalidator'); +JHtml::_('formbehavior.chosen', 'select'); ?>
@@ -26,10 +27,10 @@ form->getFieldsets() as $fieldset) : ?>
-

label); ?>

- form->getFieldset($fieldset->name) as $name => $field) : ?> - renderField(); ?> - + label)) : ?> + label); ?> + + form->renderFieldset($fieldset->name); ?>
diff --git a/installation/sql/mysql/joomla.sql b/installation/sql/mysql/joomla.sql index 4495b65095b98..40b42b3d66d36 100644 --- a/installation/sql/mysql/joomla.sql +++ b/installation/sql/mysql/joomla.sql @@ -550,7 +550,7 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `elem (33, 0, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), (34, 0, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), (35, 0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":"0","csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, '0000-00-00 00:00:00', 0, 0), +(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, '0000-00-00 00:00:00', 0, 0), (37, 0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), (38, 0, 'com_csp', 'component', 'com_csp', '', 1, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), (103, 0, 'Joomla! Platform', 'library', 'joomla', '', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), @@ -674,36 +674,41 @@ INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `elem (479, 0, 'plg_sampledata_blog', 'plugin', 'blog', 'sampledata', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), (480, 0, 'plg_system_sessiongc', 'plugin', 'sessiongc', 'system', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), (481, 0, 'plg_fields_repeatable', 'plugin', 'repeatable', 'fields', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, '', '{"logDeletePeriod":"0"}', 0, '0000-00-00 00:00:00', 0, 0), +(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), (484, 0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, '', '{"cachetimeout":"30","logstokeep":"1","lastrun":0}', 0, '0000-00-00 00:00:00', 0, 0), -(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(490, 0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(491, 0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(492, 0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(493, 0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(494, 0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(495, 0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(496, 0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, '', '{"tab_position":"1"}', 0, '0000-00-00 00:00:00', 0, 0), -(497, 0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(498, 0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(499, 0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(500, 0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 4, 0), -(501, 0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(502, 0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(503, 0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(504, 0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), -(505, 0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(490, 0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(491, 0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(492, 0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(493, 0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 0, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(494, 0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(495, 0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(496, 0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(497, 0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(498, 0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(499, 0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(500, 0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, '', '{"tab_position":"1"}', 0, '0000-00-00 00:00:00', 0, 0), +(501, 0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(502, 0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), +(503, 0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(504, 0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 4, 0), +(505, 0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), +(506, 0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), +(507, 0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), (509, 0, 'atum', 'template', 'atum', '', 1, 1, 1, 0, '', '', 0, '0000-00-00 00:00:00', 0, 0), (510, 0, 'cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}', 0, '0000-00-00 00:00:00', 0, 0), (600, 802, 'English (en-GB)', 'language', 'en-GB', '', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), (601, 802, 'English (en-GB)', 'language', 'en-GB', '', 1, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), (700, 0, 'files_joomla', 'file', 'joomla', '', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), -(802, 0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0); +(802, 0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, '', '', 0, '0000-00-00 00:00:00', 0, 0), +-- Temporarily giving some plugins IDs of 900 until we remove all and just use auto-increment. +(900, 0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(901, 0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0); -- -------------------------------------------------------- @@ -2063,7 +2068,7 @@ CREATE TABLE IF NOT EXISTS `#__action_logs` ( `extension` varchar(50) NOT NULL DEFAULT '', `user_id` int(11) NOT NULL DEFAULT 0, `item_id` int(11) NOT NULL DEFAULT 0, - `ip_address` VARCHAR(30) NOT NULL DEFAULT '0.0.0.0', + `ip_address` VARCHAR(40) NOT NULL DEFAULT '0.0.0.0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; @@ -2097,10 +2102,10 @@ INSERT INTO `#__action_logs_extensions` (`id`, `extension`) VALUES (17, 'com_users'); -- --- Table structure for table `#__action_logs_tables_data` +-- Table structure for table `#__action_log_config` -- -CREATE TABLE IF NOT EXISTS `#__action_logs_tables_data` ( +CREATE TABLE IF NOT EXISTS `#__action_log_config` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type_title` varchar(255) NOT NULL DEFAULT '', `type_alias` varchar(255) NOT NULL DEFAULT '', @@ -2111,7 +2116,7 @@ CREATE TABLE IF NOT EXISTS `#__action_logs_tables_data` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; -INSERT INTO `#__action_logs_tables_data` (`id`, `type_title`, `type_alias`, `id_holder`, `title_holder`, `table_name`, `text_prefix`) VALUES +INSERT INTO `#__action_log_config` (`id`, `type_title`, `type_alias`, `id_holder`, `title_holder`, `table_name`, `text_prefix`) VALUES (1, 'article', 'com_content.article', 'id' ,'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (2, 'article', 'com_content.form', 'id', 'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (3, 'banner', 'com_banners.banner', 'id' ,'name' , '#__banners', 'PLG_ACTIONLOG_JOOMLA'), @@ -2121,7 +2126,7 @@ INSERT INTO `#__action_logs_tables_data` (`id`, `type_title`, `type_alias`, `id_ (7, 'menu', 'com_menus.menu', 'id' ,'title' , '#__menu_types', 'PLG_ACTIONLOG_JOOMLA'), (8, 'menu_item', 'com_menus.item', 'id' , 'title' , '#__menu', 'PLG_ACTIONLOG_JOOMLA'), (9, 'newsfeed', 'com_newsfeeds.newsfeed', 'id' ,'name' , '#__newsfeeds', 'PLG_ACTIONLOG_JOOMLA'), -(10, 'link', 'com_redirect.link', 'id', 'old_url' , '__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), +(10, 'link', 'com_redirect.link', 'id', 'old_url' , '#__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), (11, 'tag', 'com_tags.tag', 'id', 'title' , '#__tags', 'PLG_ACTIONLOG_JOOMLA'), (12, 'style', 'com_templates.style', 'id' , 'title' , '#__template_styles', 'PLG_ACTIONLOG_JOOMLA'), (13, 'plugin', 'com_plugins.plugin', 'extension_id' , 'name' , '#__extensions', 'PLG_ACTIONLOG_JOOMLA'), @@ -2129,7 +2134,8 @@ INSERT INTO `#__action_logs_tables_data` (`id`, `type_title`, `type_alias`, `id_ (15, 'contact', 'com_contact.contact', 'id', 'name', '#__contact_details', 'PLG_ACTIONLOG_JOOMLA'), (16, 'module', 'com_modules.module', 'id' ,'title', '#__modules', 'PLG_ACTIONLOG_JOOMLA'), (17, 'access_level', 'com_users.level', 'id' , 'title', '#__viewlevels', 'PLG_ACTIONLOG_JOOMLA'), -(18, 'banner_client', 'com_banners.client', 'id', 'name', '#__banner_clients', 'PLG_ACTIONLOG_JOOMLA'); +(18, 'banner_client', 'com_banners.client', 'id', 'name', '#__banner_clients', 'PLG_ACTIONLOG_JOOMLA'), +(19, 'application_config', 'com_config.application', '', 'name', '', 'PLG_ACTIONLOG_JOOMLA'); -- -- Table structure for table `#__utf8_conversion` diff --git a/installation/sql/postgresql/joomla.sql b/installation/sql/postgresql/joomla.sql index d4f8d65f8e75b..9bafb234f3708 100644 --- a/installation/sql/postgresql/joomla.sql +++ b/installation/sql/postgresql/joomla.sql @@ -561,7 +561,7 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "elem (33, 0, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), (34, 0, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), (35, 0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":"0","csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, '1970-01-01 00:00:00', 0, 0), +(36, 0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, '1970-01-01 00:00:00', 0, 0), (37, 0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), (38, 0, 'com_csp', 'component', 'com_csp', '', 1, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), (103, 0, 'Joomla! Platform', 'library', 'joomla', '', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), @@ -685,36 +685,41 @@ INSERT INTO "#__extensions" ("extension_id", "package_id", "name", "type", "elem (479, 0, 'plg_sampledata_blog', 'plugin', 'blog', 'sampledata', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), (480, 0, 'plg_system_sessiongc', 'plugin', 'sessiongc', 'system', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), (481, 0, 'plg_fields_repeatable', 'plugin', 'repeatable', 'fields', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, '', '{"logDeletePeriod":"0"}', 0, '1970-01-01 00:00:00', 0, 0), +(482, 0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(483, 0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), (484, 0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 0, 1, 0, '', '{"cachetimeout":"30","logstokeep":"1","lastrun":0}', 0, '1970-01-01 00:00:00', 0, 0), -(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(490, 0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(491, 0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(492, 0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(493, 0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(494, 0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(495, 0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(496, 0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, '', '{"tab_position":"1"}', 0, '1970-01-01 00:00:00', 0, 0), -(497, 0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(498, 0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(499, 0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(500, 0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 4, 0), -(501, 0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(502, 0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(503, 0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(504, 0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), -(505, 0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(485, 0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(486, 0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(487, 0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(488, 0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(489, 0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(490, 0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(491, 0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(492, 0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(493, 0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 0, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(494, 0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(495, 0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(496, 0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(497, 0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(498, 0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(499, 0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(500, 0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, '', '{"tab_position":"1"}', 0, '1970-01-01 00:00:00', 0, 0), +(501, 0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(502, 0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), +(503, 0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(504, 0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 4, 0), +(505, 0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), +(506, 0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), +(507, 0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), (509, 0, 'atum', 'template', 'atum', '', 1, 1, 1, 0, '', '', 0, '1970-01-01 00:00:00', 0, 0), (510, 0, 'cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}', 0, '1970-01-01 00:00:00', 0, 0), (600, 802, 'English (en-GB)', 'language', 'en-GB', '', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), (601, 802, 'English (en-GB)', 'language', 'en-GB', '', 1, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), (700, 0, 'files_joomla', 'file', 'joomla', '', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), -(802, 0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0); +(802, 0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, '', '', 0, '1970-01-01 00:00:00', 0, 0), +-- Temporarily giving some plugins IDs of 900 until we remove all and just use auto-increment. +(900, 0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(901, 0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0); SELECT setval('#__extensions_extension_id_seq', 10000, false); @@ -2074,7 +2079,7 @@ CREATE TABLE "#__action_logs" ( "extension" varchar(50) NOT NULL DEFAULT '', "user_id" integer DEFAULT 0 NOT NULL, "item_id" integer DEFAULT 0 NOT NULL, - "ip_address" varchar(30) NOT NULL DEFAULT '0.0.0.0', + "ip_address" varchar(40) NOT NULL DEFAULT '0.0.0.0', PRIMARY KEY ("id") ); @@ -2112,9 +2117,9 @@ SELECT setval('#__action_logs_extensions_id_seq', 18, false); -- -------------------------------------------------------- -- --- Table: #__action_logs_tables_data +-- Table: #__action_log_config -- -CREATE TABLE "#__action_logs_tables_data" ( +CREATE TABLE "#__action_log_config" ( "id" serial NOT NULL, "type_title" varchar(255) NOT NULL DEFAULT '', "type_alias" varchar(255) NOT NULL DEFAULT '', @@ -2126,9 +2131,9 @@ CREATE TABLE "#__action_logs_tables_data" ( ); -- --- Dumping data for table #__action_logs_tables_data +-- Dumping data for table #__action_log_config -- -INSERT INTO "#__action_logs_tables_data" ("id", "type_title", "type_alias", "id_holder", "title_holder", "table_name", "text_prefix") VALUES +INSERT INTO "#__action_log_config" ("id", "type_title", "type_alias", "id_holder", "title_holder", "table_name", "text_prefix") VALUES (1, 'article', 'com_content.article', 'id' ,'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (2, 'article', 'com_content.form', 'id', 'title' , '#__content', 'PLG_ACTIONLOG_JOOMLA'), (3, 'banner', 'com_banners.banner', 'id' ,'name' , '#__banners', 'PLG_ACTIONLOG_JOOMLA'), @@ -2138,7 +2143,7 @@ INSERT INTO "#__action_logs_tables_data" ("id", "type_title", "type_alias", "id_ (7, 'menu', 'com_menus.menu', 'id' ,'title' , '#__menu_types', 'PLG_ACTIONLOG_JOOMLA'), (8, 'menu_item', 'com_menus.item', 'id' , 'title' , '#__menu', 'PLG_ACTIONLOG_JOOMLA'), (9, 'newsfeed', 'com_newsfeeds.newsfeed', 'id' ,'name' , '#__newsfeeds', 'PLG_ACTIONLOG_JOOMLA'), -(10, 'link', 'com_redirect.link', 'id', 'old_url' , '__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), +(10, 'link', 'com_redirect.link', 'id', 'old_url' , '#__redirect_links', 'PLG_ACTIONLOG_JOOMLA'), (11, 'tag', 'com_tags.tag', 'id', 'title' , '#__tags', 'PLG_ACTIONLOG_JOOMLA'), (12, 'style', 'com_templates.style', 'id' , 'title' , '#__template_styles', 'PLG_ACTIONLOG_JOOMLA'), (13, 'plugin', 'com_plugins.plugin', 'extension_id' , 'name' , '#__extensions', 'PLG_ACTIONLOG_JOOMLA'), @@ -2146,10 +2151,11 @@ INSERT INTO "#__action_logs_tables_data" ("id", "type_title", "type_alias", "id_ (15, 'contact', 'com_contact.contact', 'id', 'name', '#__contact_details', 'PLG_ACTIONLOG_JOOMLA'), (16, 'module', 'com_modules.module', 'id' ,'title', '#__modules', 'PLG_ACTIONLOG_JOOMLA'), (17, 'access_level', 'com_users.level', 'id' , 'title', '#__viewlevels', 'PLG_ACTIONLOG_JOOMLA'), -(18, 'banner_client', 'com_banners.client', 'id', 'name', '#__banner_clients', 'PLG_ACTIONLOG_JOOMLA'); +(18, 'banner_client', 'com_banners.client', 'id', 'name', '#__banner_clients', 'PLG_ACTIONLOG_JOOMLA'), +(19, 'application_config', 'com_config.application', '', 'name', '', 'PLG_ACTIONLOG_JOOMLA'); -SELECT setval('#__action_logs_tables_data_id_seq', 18, false); +SELECT setval('#__action_log_config_id_seq', 18, false); -- -- Table structure for table `#__viewlevels` diff --git a/language/en-GB/en-GB.com_privacy.ini b/language/en-GB/en-GB.com_privacy.ini index af2b7bc52938e..2865eb7ae4323 100644 --- a/language/en-GB/en-GB.com_privacy.ini +++ b/language/en-GB/en-GB.com_privacy.ini @@ -21,7 +21,8 @@ COM_PRIVACY_CREATE_REQUEST_SUCCEEDED="Your information request has been created. ; \n Newline character. Use it to start a new line in the email. COM_PRIVACY_EMAIL_REQUEST_BODY_EXPORT_REQUEST="Someone has created a request to export all personal information related to this email address at [URL]. As a security measure, you must confirm that this is a valid request for your personal information from this website.\n\nIn order to confirm this request, you can complete one of the following tasks:\n\n1. Visit the following URL: [TOKENURL]\n\n2. Copy your token from this email, visit the referenced URL, and paste your token into the form.\nURL: [FORMURL]\nToken: [TOKEN]\n\nPlease note that this token is only valid for 24 hours from the time this email was sent." COM_PRIVACY_EMAIL_REQUEST_BODY_REMOVE_REQUEST="Someone has created a request to remove all personal information related to this email address at [URL]. As a security measure, you must confirm that this is a valid request for your personal information to be removed from this website.\n\nIn order to confirm this request, you can complete one of the following tasks:\n\n1. Visit the following URL: [TOKENURL]\n\n2. Copy your token from this email, visit the referenced URL, and paste your token into the form.\nURL: [FORMURL]\nToken: [TOKEN]\n\nPlease note that this token is only valid for 24 hours from the time this email was sent." -COM_PRIVACY_EMAIL_REQUEST_SUBJECT="Information Request Created at [SITENAME]" +COM_PRIVACY_EMAIL_REQUEST_SUBJECT_EXPORT_REQUEST="Information Request Created at [SITENAME]" +COM_PRIVACY_EMAIL_REQUEST_SUBJECT_REMOVE_REQUEST="Information Deletion Request Created at [SITENAME]" COM_PRIVACY_ERROR_CHECKING_FOR_EXISTING_REQUESTS="There was an error checking for existing information requests, please try submitting this request again." COM_PRIVACY_ERROR_CONFIRM_TOKEN_EXPIRED="The confirmation token for your information request has expired. You will need to submit a new request." COM_PRIVACY_ERROR_CONFIRMING_REMIND_FAILED="No expiration reminder was found." diff --git a/language/en-GB/en-GB.mod_articles_category.ini b/language/en-GB/en-GB.mod_articles_category.ini index a5fe3b9d6f8d9..68b8727322d1d 100644 --- a/language/en-GB/en-GB.mod_articles_category.ini +++ b/language/en-GB/en-GB.mod_articles_category.ini @@ -21,6 +21,8 @@ MOD_ARTICLES_CATEGORY_FIELD_DATEFIELD_LABEL="Date Field" MOD_ARTICLES_CATEGORY_FIELD_DATEFIELDFORMAT_DESC="Please enter in a valid date format. See: http://php.net/date for formatting information." MOD_ARTICLES_CATEGORY_FIELD_DATEFIELDFORMAT_LABEL="Date Format" MOD_ARTICLES_CATEGORY_FIELD_DATEFILTERING_LABEL="Date Filtering" +MOD_ARTICLES_CATEGORY_FIELD_DATEGROUPINGFIELD_DESC="Select which date field you want the date grouping to be applied to." +MOD_ARTICLES_CATEGORY_FIELD_DATEGROUPINGFIELD_LABEL="Date Grouping Field" MOD_ARTICLES_CATEGORY_FIELD_ENDDATE_LABEL="To Date" MOD_ARTICLES_CATEGORY_FIELD_EXCLUDEDARTICLES_LABEL="Article IDs to Exclude" MOD_ARTICLES_CATEGORY_FIELD_GROUP_DISPLAY_LABEL="Display Options" @@ -69,4 +71,4 @@ MOD_ARTICLES_CATEGORY_OPTION_YEAR_VALUE="Year" MOD_ARTICLES_CATEGORY_READ_MORE="Read more: " MOD_ARTICLES_CATEGORY_READ_MORE_TITLE="Read More ..." MOD_ARTICLES_CATEGORY_REGISTER_TO_READ_MORE="Register to read more" -MOD_ARTICLES_CATEGORY_XML_DESCRIPTION="This module displays a list of articles from one or more categories." \ No newline at end of file +MOD_ARTICLES_CATEGORY_XML_DESCRIPTION="This module displays a list of articles from one or more categories." diff --git a/libraries/src/Extension/ExtensionHelper.php b/libraries/src/Extension/ExtensionHelper.php index 1bb05492b53b4..a25ebe9871f3f 100644 --- a/libraries/src/Extension/ExtensionHelper.php +++ b/libraries/src/Extension/ExtensionHelper.php @@ -38,6 +38,7 @@ class ExtensionHelper // Format: `type`, `element`, `folder`, `client_id` // Core component extensions + array('component', 'com_actionlogs', '', 1), array('component', 'com_admin', '', 1), array('component', 'com_ajax', '', 1), array('component', 'com_associations', '', 1), @@ -71,7 +72,6 @@ class ExtensionHelper array('component', 'com_tags', '', 1), array('component', 'com_templates', '', 1), array('component', 'com_users', '', 1), - array('component', 'com_userslogs', '', 1), array('component', 'com_workflow', '', 1), array('component', 'com_wrapper', '', 0), @@ -137,8 +137,8 @@ class ExtensionHelper // Core package extensions array('package', 'pkg_en-GB', '', 0), - // Core plugin extensions - actionlogs - array('plugin', 'joomla', 'actionlogs', 0), + // Core plugin extensions - actionlog + array('plugin', 'joomla', 'actionlog', 0), // Core plugin extensions - authentication array('plugin', 'cookie', 'authentication', 0), @@ -223,7 +223,13 @@ class ExtensionHelper array('plugin', 'resize', 'media-action', 0), array('plugin', 'rotate', 'media-action', 0), - // Core plugin extensions - quickicon + // Core plugin extensions - privacy + array('plugin', 'contact', 'privacy', 0), + array('plugin', 'content', 'privacy', 0), + array('plugin', 'message', 'privacy', 0), + array('plugin', 'user', 'privacy', 0), + + // Core plugin extensions - quick icon array('plugin', 'extensionupdate', 'quickicon', 0), array('plugin', 'joomlaupdate', 'quickicon', 0), array('plugin', 'overridecheck', 'quickicon', 0), diff --git a/libraries/src/Form/Field/EditorField.php b/libraries/src/Form/Field/EditorField.php index 68cd44e2e282e..c0a725c9a76e0 100644 --- a/libraries/src/Form/Field/EditorField.php +++ b/libraries/src/Form/Field/EditorField.php @@ -326,7 +326,9 @@ protected function getEditor() * * @return string The JEditor object output. * - * @since 1.6 + * @since 1.6 + * @deprecated 4.0 Will be removed without replacement + * @see Editor::save() */ public function save() { diff --git a/libraries/src/Form/Form.php b/libraries/src/Form/Form.php index b58ba4c330815..4080d8ed6d619 100644 --- a/libraries/src/Form/Form.php +++ b/libraries/src/Form/Form.php @@ -271,7 +271,7 @@ public function getFieldAttribute($name, $attribute, $default = null, $group = n * * @param string $set The optional name of the fieldset. * - * @return array The array of JFormField objects in the fieldset. + * @return \JFormField[] The array of JFormField objects in the fieldset. * * @since 1.7.0 */ @@ -446,7 +446,7 @@ public function getFormControl() * @param boolean $nested True to also include fields in nested groups that are inside of the * group for which to find fields. * - * @return array The array of JFormField objects in the field group. + * @return \JFormField[] The array of JFormField objects in the field group. * * @since 1.7.0 */ diff --git a/modules/mod_articles_category/Helper/ArticlesCategoryHelper.php b/modules/mod_articles_category/Helper/ArticlesCategoryHelper.php index 1e19005587f84..48cb8d4a424ab 100644 --- a/modules/mod_articles_category/Helper/ArticlesCategoryHelper.php +++ b/modules/mod_articles_category/Helper/ArticlesCategoryHelper.php @@ -55,9 +55,7 @@ public static function getList(&$params) $articles->setState('list.start', 0); $articles->setState('list.limit', (int) $params->get('count', 0)); $articles->setState('filter.published', 1); - - // This module does not use tags data - $articles->setState('load_tags', $params->get('filter_tag', '') !== '' ? true : false); + $articles->setState('load_tags', $params->get('show_tags', 0)); // Access filter $access = !ComponentHelper::getParams('com_content')->get('show_noauth'); @@ -443,12 +441,13 @@ public static function groupBy($list, $fieldName, $article_grouping_direction, $ * @param string $article_grouping_direction ordering direction * @param string $type type of grouping * @param string $month_year_format date format to use + * @param string $field date field to group by * * @return array * * @since 1.6 */ - public static function groupByDate($list, $article_grouping_direction, $type = 'year', $month_year_format = 'F Y') + public static function groupByDate($list, $article_grouping_direction = 'ksort', $type = 'year', $month_year_format = 'F Y', $field = 'created') { $grouped = array(); @@ -467,7 +466,7 @@ public static function groupByDate($list, $article_grouping_direction, $type = ' switch ($type) { case 'month_year' : - $month_year = StringHelper::substr($item->created, 0, 7); + $month_year = StringHelper::substr($item->$field, 0, 7); if (!isset($grouped[$month_year])) { @@ -479,7 +478,7 @@ public static function groupByDate($list, $article_grouping_direction, $type = ' case 'year' : default: - $year = StringHelper::substr($item->created, 0, 4); + $year = StringHelper::substr($item->$field, 0, 4); if (!isset($grouped[$year])) { diff --git a/modules/mod_articles_category/mod_articles_category.php b/modules/mod_articles_category/mod_articles_category.php index 0fe2aae99b5ab..434740ab5b787 100644 --- a/modules/mod_articles_category/mod_articles_category.php +++ b/modules/mod_articles_category/mod_articles_category.php @@ -75,7 +75,13 @@ { case 'year' : case 'month_year' : - $list = ArticlesCategoryHelper::groupByDate($list, $article_grouping_direction, $article_grouping, $params->get('month_year_format', 'F Y')); + $list = ArticlesCategoryHelper::groupByDate( + $list, + $article_grouping_direction, + $article_grouping, + $params->get('month_year_format', 'F Y'), + $params->get('date_grouping_field', 'created') + ); break; case 'author' : case 'category_title' : diff --git a/modules/mod_articles_category/mod_articles_category.xml b/modules/mod_articles_category/mod_articles_category.xml index 860588f8c7de5..ce39632d65861 100644 --- a/modules/mod_articles_category/mod_articles_category.xml +++ b/modules/mod_articles_category/mod_articles_category.xml @@ -327,6 +327,19 @@ + + + + + + JSHOW + + + + + displayDate; ?> + get('show_tags', 0) && $item->tags->itemTags) : ?> +
+ tags->itemTags); ?> +
+ + get('show_introtext')) : ?>

displayIntrotext; ?> @@ -115,6 +121,12 @@ + get('show_tags', 0) && $item->tags->itemTags) : ?> +

+ tags->itemTags); ?> +
+ + get('show_introtext')) : ?>

displayIntrotext; ?> diff --git a/modules/mod_feed/mod_feed.xml b/modules/mod_feed/mod_feed.xml index 70cfdef75d435..1b9760cb29fd2 100644 --- a/modules/mod_feed/mod_feed.xml +++ b/modules/mod_feed/mod_feed.xml @@ -78,7 +78,7 @@ > - + diff --git a/modules/mod_feed/tmpl/default.php b/modules/mod_feed/tmpl/default.php index 9eff18e2a2382..46a026fca958d 100644 --- a/modules/mod_feed/tmpl/default.php +++ b/modules/mod_feed/tmpl/default.php @@ -120,7 +120,7 @@ title); ?> - get('rssitemdate')) : ?> + get('rssitemdate', 0)) : ?>

publishedDate, Text::_('DATE_FORMAT_LC3')); ?>
diff --git a/plugins/actionlog/joomla/joomla.php b/plugins/actionlog/joomla/joomla.php index f9afc6975fb40..072f1159ab0b4 100644 --- a/plugins/actionlog/joomla/joomla.php +++ b/plugins/actionlog/joomla/joomla.php @@ -47,7 +47,7 @@ class PlgActionlogJoomla extends JPlugin /** * Load plugin language file automatically so that it can be used inside component * - * @var bool + * @var boolean * @since __DEPLOY_VERSION__ */ protected $autoloadLanguage = true; @@ -66,14 +66,7 @@ public function __construct(&$subject, $config) $params = ComponentHelper::getComponent('com_actionlogs')->getParams(); - if (is_array($params->get('loggable_extensions'))) - { - $this->loggableExtensions = $params->get('loggable_extensions'); - } - else - { - $this->loggableExtensions = explode(',', $params->get('loggable_extensions')); - } + $this->loggableExtensions = $params->get('loggable_extensions', array()); } /** @@ -106,19 +99,20 @@ public function onContentAfterSave($context, $article, $isNew) return; } - $user = JFactory::getUser(); - $contentType = strtoupper($params->type_title); + $user = JFactory::getUser(); + $contentTypeTitle = strtoupper($params->type_title); + list(, $contentType) = explode('.', $params->type_alias); if ($isNew) { - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_ADDED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_ADDED'); $defaultLanguageKey = strtoupper('PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED'); $action = 'add'; } else { - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_UPDATED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_UPDATED'); $defaultLanguageKey = strtoupper('PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED'); $action = 'update'; @@ -134,16 +128,16 @@ public function onContentAfterSave($context, $article, $isNew) $message = array( 'action' => $action, - 'type' => strtoupper($params->text_prefix . '_TYPE_' . $contentType), + 'type' => strtoupper($params->text_prefix . '_TYPE_' . $contentTypeTitle), 'id' => $id, 'title' => $article->get($params->title_holder), - 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $params->type_title, $id), + 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $id), 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -175,14 +169,14 @@ public function onContentAfterDelete($context, $article) return; } - $language = JFactory::getLanguage(); - $user = JFactory::getUser(); - $contentType = strtoupper($params->type_title); + $language = JFactory::getLanguage(); + $user = JFactory::getUser(); + $contentTypeTitle = strtoupper($params->type_title); // If the content type has it own language key, use it, otherwise, use default language key - if ($language->hasKey(strtoupper($params->text_prefix . '_' . $contentType . '_DELETED'))) + if ($language->hasKey(strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_DELETED'))) { - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_DELETED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_DELETED'); } else { @@ -193,7 +187,7 @@ public function onContentAfterDelete($context, $article) $message = array( 'action' => 'delete', - 'type' => strtoupper($params->text_prefix . '_TYPE_' . $contentType), + 'type' => strtoupper($params->text_prefix . '_TYPE_' . $contentTypeTitle), 'id' => $id, 'title' => $article->get($params->title_holder), 'userid' => $user->id, @@ -201,7 +195,7 @@ public function onContentAfterDelete($context, $article) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -234,28 +228,29 @@ public function onContentChangeState($context, $pks, $value) return; } - $user = JFactory::getUser(); - $contentType = strtoupper($params->type_title); + $user = JFactory::getUser(); + $contentTypeTitle = strtoupper($params->type_title); + list(, $contentType) = explode('.', $params->type_alias); switch ($value) { case 0: - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_UNPUBLISHED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_UNPUBLISHED'); $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UNPUBLISHED'; $action = 'unpublish'; break; case 1: - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_PUBLISHED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_PUBLISHED'); $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_PUBLISHED'; $action = 'publish'; break; case 2: - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_ARCHIVED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_ARCHIVED'); $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ARCHIVED'; $action = 'archive'; break; case -2: - $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentType . '_TRASHED'); + $messageLanguageKey = strtoupper($params->text_prefix . '_' . $contentTypeTitle . '_TRASHED'); $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_TRASHED'; $action = 'trash'; break; @@ -283,7 +278,7 @@ public function onContentChangeState($context, $pks, $value) 'type' => strtoupper($params->text_prefix . '_TYPE_' . $params->type_title), 'id' => $pk, 'title' => $items[$pk]->{$params->title_holder}, - 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $params->type_title, $pk), + 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $pk), 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, @@ -292,7 +287,44 @@ public function onContentChangeState($context, $pks, $value) $messages[] = $message; } - $this->addLogsToDb($messages, $messageLanguageKey, $context); + $this->addLog($messages, $messageLanguageKey, $context); + } + + /** + * On Saving application configuration logging method + * Method is called when the application config is being saved + * + * @param JRegistry $config JRegistry object with the new config + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function onApplicationAfterSave($config) + { + $option = $this->app->input->getCmd('option'); + + if (!$this->checkLoggable($option)) + { + return; + } + + $messageLanguageKey = strtoupper('PLG_ACTIONLOG_JOOMLA_APPLICATION_CONFIG_UPDATED'); + $action = 'update'; + + $user = JFactory::getUser(); + + $message = array( + 'action' => $action, + 'type' => strtoupper('PLG_ACTIONLOG_JOOMLA_TYPE_APPLICATION_CONFIG'), + 'extension_name' => 'com_config.application', + 'itemlink' => 'index.php?option=com_config', + 'userid' => $user->id, + 'username' => $user->username, + 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, + ); + + $this->addLog(array($message), $messageLanguageKey, 'com_config.application'); } /** @@ -342,7 +374,7 @@ public function onExtensionAfterInstall($installer, $eid) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -399,7 +431,7 @@ public function onExtensionAfterUninstall($installer, $eid, $result) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -449,7 +481,7 @@ public function onExtensionAfterUpdate($installer, $eid) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -482,6 +514,7 @@ public function onExtensionAfterSave($context, $table, $isNew) } $extensionType = $params->type_title; + list(, $contentType) = explode('.', $params->type_alias); if ($isNew) { @@ -491,7 +524,6 @@ public function onExtensionAfterSave($context, $table, $isNew) } else { - $messageLanguageKey = strtoupper('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UPDATED'); $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED'; $action = 'update'; @@ -511,13 +543,13 @@ public function onExtensionAfterSave($context, $table, $isNew) 'id' => $table->get($params->id_holder), 'title' => $table->get($params->title_holder), 'extension_name' => $table->get($params->title_holder), - 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $params->type_title, $table->get($params->id_holder), $params->id_holder), + 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $table->get($params->id_holder), $params->id_holder), 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -558,7 +590,7 @@ public function onExtensionAfterDelete($context, $table) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -587,7 +619,12 @@ public function onUserAfterSave($user, $isnew, $success, $msg) $jUser = JFactory::getUser(); - if ($isnew) + if (!$jUser->id) + { + $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_REGISTERED'; + $action = 'register'; + } + elseif ($isnew) { $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED'; $action = 'add'; @@ -598,18 +635,21 @@ public function onUserAfterSave($user, $isnew, $success, $msg) $action = 'update'; } + $userId = $jUser->id ?: $user['id']; + $username = $jUser->username ?: $user['username']; + $message = array( 'action' => $action, 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user['id'], 'title' => $user['name'], 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user['id'], - 'userid' => $jUser->id, - 'username' => $jUser->username, - 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $jUser->id, + 'userid' => $userId, + 'username' => $username, + 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context, $userId); } /** @@ -647,7 +687,7 @@ public function onUserAfterDelete($user, $success, $msg) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $jUser->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -696,7 +736,7 @@ public function onUserAfterSaveGroup($context, $table, $isNew) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** @@ -735,20 +775,19 @@ public function onUserAfterDeleteGroup($group, $success, $msg) 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** - * Method to log user log-in action + * Method to log user login success action * - * @param array $user Holds the user data - * @param array $options Array holding options (remember, autoregister, group) + * @param array $options Array holding options (user, responseType) * * @return void * * @since __DEPLOY_VERSION__ */ - public function onUserLogin($user, $options = array()) + public function onUserAfterLogin($options) { $context = 'com_users'; @@ -757,9 +796,47 @@ public function onUserLogin($user, $options = array()) return; } - $loggedInUser = JUser::getInstance($user['username']); + $loggedInUser = $options['user']; $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGGED_IN'; + $message = array( + 'action' => 'login', + 'username' => $loggedInUser->username, + 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedInUser->id, + 'app' => strtoupper('PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName()), + ); + + $this->addLog(array($message), $messageLanguageKey, $context, $loggedInUser->id); + } + + /** + * Method to log user login failed action + * + * @param array $response Array of response data. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function onUserLoginFailure($response) + { + $context = 'com_users'; + + if (!$this->checkLoggable($context)) + { + return; + } + + $loggedInUser = JUser::getInstance($response['username']); + + // Not a valid user, return + if (!$loggedInUser->id) + { + return; + } + + $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGIN_FAILED'; + $message = array( 'action' => 'login', 'id' => $loggedInUser->id, @@ -768,7 +845,7 @@ public function onUserLogin($user, $options = array()) 'app' => strtoupper('PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName()), ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context, $loggedInUser->id); + $this->addLog(array($message), $messageLanguageKey, $context, $loggedInUser->id); } /** @@ -801,11 +878,11 @@ public function onUserLogout($user, $options = array()) 'app' => strtoupper('PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName()), ); - $this->addLogsToDb(array($message), $messageLanguageKey, $context); + $this->addLog(array($message), $messageLanguageKey, $context); } /** - * Proxy for ActionlogsModelUserlog addLogsToDb method + * Proxy for ActionlogsModelUserlog addLog method * * This method adds a record to #__action_logs contains (message_language_key, message, date, context, user) * @@ -818,13 +895,13 @@ public function onUserLogout($user, $options = array()) * * @since __DEPLOY_VERSION__ */ - protected function addLogsToDb($messages, $messageLanguageKey, $context, $userId = null) + protected function addLog($messages, $messageLanguageKey, $context, $userId = null) { JLoader::register('ActionlogsModelActionlog', JPATH_ADMINISTRATOR . '/components/com_actionlogs/models/actionlog.php'); /* @var ActionlogsModelActionlog $model */ $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); - $model->addLogsToDb($messages, $messageLanguageKey, $context, $userId); + $model->addLog($messages, $messageLanguageKey, $context, $userId); } /** diff --git a/plugins/actionlog/joomla/joomla.xml b/plugins/actionlog/joomla/joomla.xml index 580c56a381bb0..e38fa5ea1d973 100644 --- a/plugins/actionlog/joomla/joomla.xml +++ b/plugins/actionlog/joomla/joomla.xml @@ -10,7 +10,7 @@ __DEPLOY_VERSION__ PLG_ACTIONLOG_JOOMLA_XML_DESCRIPTION - joomla.php + joomla.php diff --git a/plugins/content/confirmconsent/confirmconsent.php b/plugins/content/confirmconsent/confirmconsent.php index 98fd6e50dfac4..c7e0688130cec 100644 --- a/plugins/content/confirmconsent/confirmconsent.php +++ b/plugins/content/confirmconsent/confirmconsent.php @@ -97,14 +97,13 @@ public function onContentPrepareForm(JForm $form, $data) name="consentbox" type="checkboxes" label="' . htmlspecialchars($consentboxLabel, ENT_COMPAT, 'UTF-8') . '" - required="true" - > + >
- - '); + ' + ); return true; } @@ -186,7 +185,7 @@ private function getAssignedArticleUrl($articleId, $consentboxLabel) ); } - // Association is enabled but this article is not associated + // Association is enabled but this article is not associated return HTMLHelper::_( 'link', Route::_( diff --git a/plugins/content/confirmconsent/confirmconsent.xml b/plugins/content/confirmconsent/confirmconsent.xml index ab9a7c03e52e7..961b08a164db8 100644 --- a/plugins/content/confirmconsent/confirmconsent.xml +++ b/plugins/content/confirmconsent/confirmconsent.xml @@ -15,15 +15,15 @@
- @@ -36,6 +36,7 @@ new="true" edit="true" clear="true" + filter="integer" />
diff --git a/plugins/privacy/actionlogs/actionlogs.php b/plugins/privacy/actionlogs/actionlogs.php new file mode 100644 index 0000000000000..6eee8afaf0654 --- /dev/null +++ b/plugins/privacy/actionlogs/actionlogs.php @@ -0,0 +1,84 @@ +user_id) + { + return array(); + } + + $domain = $this->createDomain('actionlog', 'Logged actions of the user'); + + $query = $this->db->getQuery(true) + ->select('a.*, u.name') + ->from('#__action_logs AS a') + ->innerJoin('#__users AS u ON a.user_id = u.id') + ->where($this->db->quoteName('a.user_id') . ' = ' . $request->user_id); + + $this->db->setQuery($query); + + $data = $this->db->loadObjectList(); + + if (!count($data)) + { + return array(); + } + + $data = ActionlogsHelper::getCsvData($data); + array_shift($data); + + foreach ($data as $item) + { + $domain->addItem($this->createItemFromArray($item)); + } + + return array($domain); + } +} diff --git a/plugins/privacy/actionlogs/actionlogs.xml b/plugins/privacy/actionlogs/actionlogs.xml new file mode 100644 index 0000000000000..f37879f35e81b --- /dev/null +++ b/plugins/privacy/actionlogs/actionlogs.xml @@ -0,0 +1,19 @@ + + + plg_privacy_actionlogs + Joomla! Project + July 2018 + (C) 2005 - 2018 Open Source Matters. All rights reserved. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 3.9.0 + PLG_PRIVACY_ACTIONLOGS_XML_DESCRIPTION + + actionlogs.php + + + en-GB.plg_privacy_actionlogs.ini + en-GB.plg_privacy_actionlogs.sys.ini + + diff --git a/plugins/privacy/contact/contact.php b/plugins/privacy/contact/contact.php new file mode 100644 index 0000000000000..1a5431af71d06 --- /dev/null +++ b/plugins/privacy/contact/contact.php @@ -0,0 +1,157 @@ +user_id) && (!$request->email)) + { + return array(); + } + + /** @var JTableUser $user */ + $user = JUser::getTable(); + $user->load($request->user_id); + + $domains = array(); + $domains[] = $this->createContactDomain($user); + + // An user may have more than 1 contact linked to them + foreach ($this->contacts as $contact) + { + $domains[] = $this->createContactCustomFieldsDomain($contact); + } + + return $domains; + } + + /** + * Create the domain for the user contact data + * + * @param JTableUser $user The JTableUser object to process + * + * @return PrivacyExportDomain + * + * @since __DEPLOY_VERSION__ + */ + private function createContactDomain(JTableUser $user) + { + $domain = $this->createDomain('user contact', 'Joomla! user contact data'); + + if (!$user->email) + { + $query = $this->db->getQuery(true) + ->select('*') + ->from($this->db->quoteName('#__contact_details')) + ->where($this->db->quoteName('user_id') . ' = ' . (int) $user->id) + ->order($this->db->quoteName('ordering') . ' ASC'); + } + else + { + $query = $this->db->getQuery(true) + ->select('*') + ->from($this->db->quoteName('#__contact_details')) + ->where($this->db->quoteName('email_to') . ' = ' . $this->db->quote($user->email)) + ->order($this->db->quoteName('ordering') . ' ASC'); + } + + $items = $this->db->setQuery($query)->loadAssocList(); + + foreach ($items as $item) + { + $domain->addItem($this->createItemFromArray($item)); + $this->contacts[] = (object) $item; + } + + return $domain; + } + + /** + * Create the domain for the contact custom fields + * + * @param Object $contact The contact to process + * + * @return PrivacyExportDomain + * + * @since __DEPLOY_VERSION__ + */ + private function createContactCustomFieldsDomain($contact) + { + $domain = $this->createDomain('contact custom fields', 'Joomla! contact custom fields data'); + + // Get item's fields, also preparing their value property for manual display + $fields = FieldsHelper::getFields('com_contact.contact', $contact); + + foreach ($fields as $field) + { + $fieldValue = is_array($field->value) ? implode(', ', $field->value) : $field->value; + + $data = array( + 'contact_id' => $contact->id, + 'field_name' => $field->name, + 'field_title' => $field->title, + 'field_value' => $fieldValue, + ); + + $domain->addItem($this->createItemFromArray($data)); + } + + return $domain; + } +} diff --git a/plugins/privacy/contact/contact.xml b/plugins/privacy/contact/contact.xml new file mode 100644 index 0000000000000..2de5eed47f655 --- /dev/null +++ b/plugins/privacy/contact/contact.xml @@ -0,0 +1,19 @@ + + + plg_privacy_contact + Joomla! Project + July 2018 + (C) 2005 - 2018 Open Source Matters. All rights reserved. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 3.9.0 + PLG_PRIVACY_CONTACT_XML_DESCRIPTION + + contact.php + + + en-GB.plg_privacy_contact.ini + en-GB.plg_privacy_contact.sys.ini + + diff --git a/plugins/privacy/content/content.php b/plugins/privacy/content/content.php new file mode 100644 index 0000000000000..358415557b2b0 --- /dev/null +++ b/plugins/privacy/content/content.php @@ -0,0 +1,145 @@ +user_id) + { + return array(); + } + + /** @var JTableUser $user */ + $user = JUser::getTable(); + $user->load($request->user_id); + + $domains = array(); + $domains[] = $this->createContentDomain($user); + + foreach ($this->contents as $content) + { + $domains[] = $this->createContentCustomFieldsDomain($content); + } + + return $domains; + } + + /** + * Create the domain for the user content data + * + * @param JTableUser $user The JTableUser object to process + * + * @return PrivacyExportDomain + * + * @since __DEPLOY_VERSION__ + */ + private function createContentDomain(JTableUser $user) + { + $domain = $this->createDomain('user content', 'Joomla! user content data'); + + $query = $this->db->getQuery(true) + ->select('*') + ->from($this->db->quoteName('#__content')) + ->where($this->db->quoteName('created_by') . ' = ' . $this->db->quote($user->id)) + ->order($this->db->quoteName('ordering') . ' ASC'); + + $items = $this->db->setQuery($query)->loadAssocList(); + + foreach ($items as $item) + { + $domain->addItem($this->createItemFromArray($item)); + $this->contents[] = (object) $item; + } + + return $domain; + } + + /** + * Create the domain for the content custom fields + * + * @param Object $content The content to process + * + * @return PrivacyExportDomain + * + * @since __DEPLOY_VERSION__ + */ + private function createContentCustomFieldsDomain($content) + { + $domain = $this->createDomain('content custom fields', 'Joomla! content custom fields data'); + + // Get item's fields, also preparing their value property for manual display + $fields = FieldsHelper::getFields('com_content.article', $content); + + foreach ($fields as $field) + { + $fieldValue = is_array($field->value) ? implode(', ', $field->value) : $field->value; + + $data = array( + 'content_id' => $content->id, + 'field_name' => $field->name, + 'field_title' => $field->title, + 'field_value' => $fieldValue, + ); + + $domain->addItem($this->createItemFromArray($data)); + } + + return $domain; + } +} diff --git a/plugins/privacy/content/content.xml b/plugins/privacy/content/content.xml new file mode 100644 index 0000000000000..a2114f106c31c --- /dev/null +++ b/plugins/privacy/content/content.xml @@ -0,0 +1,19 @@ + + + plg_privacy_content + Joomla! Project + July 2018 + (C) 2005 - 2018 Open Source Matters. All rights reserved. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 3.9.0 + PLG_PRIVACY_CONTENT_XML_DESCRIPTION + + content.php + + + en-GB.plg_privacy_content.ini + en-GB.plg_privacy_content.sys.ini + + diff --git a/plugins/privacy/message/message.php b/plugins/privacy/message/message.php new file mode 100644 index 0000000000000..2667a2d41ca72 --- /dev/null +++ b/plugins/privacy/message/message.php @@ -0,0 +1,97 @@ +user_id) + { + return array(); + } + + /** @var JTableUser $user */ + $user = JUser::getTable(); + $user->load($request->user_id); + + $domains = array(); + $domains[] = $this->createMessageDomain($user); + + return $domains; + } + + /** + * Create the domain for the user message data + * + * @param JTableUser $user The JTableUser object to process + * + * @return PrivacyExportDomain + * + * @since __DEPLOY_VERSION__ + */ + private function createMessageDomain(JTableUser $user) + { + $domain = $this->createDomain('user message', 'Joomla! user message data'); + + $query = $this->db->getQuery(true) + ->select('*') + ->from($this->db->quoteName('#__messages')) + ->where($this->db->quoteName('user_id_from') . ' = ' . $this->db->quote($user->id)) + ->orWhere($this->db->quoteName('user_id_to') . ' = ' . $this->db->quote($user->id)) + ->order($this->db->quoteName('date_time') . ' ASC'); + + $items = $this->db->setQuery($query)->loadAssocList(); + + foreach ($items as $item) + { + $domain->addItem($this->createItemFromArray($item)); + } + + return $domain; + } +} diff --git a/plugins/privacy/message/message.xml b/plugins/privacy/message/message.xml new file mode 100644 index 0000000000000..9a7f19f6f1548 --- /dev/null +++ b/plugins/privacy/message/message.xml @@ -0,0 +1,19 @@ + + + plg_privacy_message + Joomla! Project + July 2018 + (C) 2005 - 2018 Open Source Matters. All rights reserved. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 3.9.0 + PLG_PRIVACY_MESSAGE_XML_DESCRIPTION + + message.php + + + en-GB.plg_privacy_message.ini + en-GB.plg_privacy_message.sys.ini + + diff --git a/plugins/privacy/user/user.php b/plugins/privacy/user/user.php index 51d66c555519a..c5efa2b6b82f6 100644 --- a/plugins/privacy/user/user.php +++ b/plugins/privacy/user/user.php @@ -135,13 +135,44 @@ public function onPrivacyRemoveData(PrivacyTableRequest $request) $pseudoanonymisedData = array( 'name' => 'User ID ' . $user->id, 'username' => bin2hex(random_bytes(12)), - 'email' => 'UserID' . $user->id . 'removed@email.removed', + 'email' => 'UserID' . $user->id . 'removed@email.invalid', 'block' => true, ); $user->bind($pseudoanonymisedData); $user->save(); + + // Destroy all sessions for the user account + $sessionIds = $this->db->setQuery( + $this->db->getQuery(true) + ->select($this->db->quoteName('session_id')) + ->from($this->db->quoteName('#__session')) + ->where($this->db->quoteName('userid') . ' = ' . (int) $user->id) + )->loadColumn(); + + // If there aren't any active sessions then there's nothing to do here + if (empty($sessionIds)) + { + return; + } + + $storeName = JFactory::getConfig()->get('session_handler', 'none'); + $store = JSessionStorage::getInstance($storeName); + $quotedIds = array(); + + // Destroy the sessions and quote the IDs to purge the session table + foreach ($sessionIds as $sessionId) + { + $store->destroy($sessionId); + $quotedIds[] = $this->db->quote($sessionId); + } + + $this->db->setQuery( + $this->db->getQuery(true) + ->delete($this->db->quoteName('#__session')) + ->where($this->db->quoteName('session_id') . ' IN (' . implode(', ', $quotedIds) . ')') + )->execute(); } /** @@ -267,7 +298,7 @@ private function createUserCustomFieldsDomain(JTableUser $user) foreach ($fields as $field) { - $fieldValue = is_array($field->value) ? implode(', ', $field->value): $field->value; + $fieldValue = is_array($field->value) ? implode(', ', $field->value) : $field->value; $data = array( 'user_id' => $user->id, diff --git a/plugins/quickicon/privacycheck/privacycheck.php b/plugins/quickicon/privacycheck/privacycheck.php index 7feb644f0d01c..f78fabd4286de 100644 --- a/plugins/quickicon/privacycheck/privacycheck.php +++ b/plugins/quickicon/privacycheck/privacycheck.php @@ -73,7 +73,7 @@ public function onGetIcons($context) 'icon' => 'header/icon-48-user.png', 'text' => Text::_('PLG_QUICKICON_PRIVACYCHECK_CHECKING'), 'id' => 'plg_quickicon_privacycheck', - 'group' => 'MOD_QUICKICON_MAINTENANCE' + 'group' => 'MOD_QUICKICON_USERS' ) ); } diff --git a/plugins/system/actionlogs/actionlogs.php b/plugins/system/actionlogs/actionlogs.php index 4325a16798565..00b5e6ced8f56 100644 --- a/plugins/system/actionlogs/actionlogs.php +++ b/plugins/system/actionlogs/actionlogs.php @@ -88,14 +88,32 @@ public function onContentPrepareForm($form, $data) return true; } - $canView = false; + /** + * We only allow users who has Super User permission change this setting for himself or for other users + * who has same Super User permission + */ - if (isset($data->id)) + $user = JFactory::getUser(); + + if (!$user->authorise('core.admin')) + { + return true; + } + + // If we are on the save command, no data is passed to $data variable, we need to get it directly from request + $jformData = $this->app->input->get('jform', array(), 'array'); + + if ($jformData && !$data) + { + $data = $jformData; + } + + if (is_array($data)) { - $canView = JUser::getInstance($data->id)->authorise('core.admin'); + $data = (object) $data; } - if (!$canView) + if (!empty($data->id) && !JUser::getInstance($data->id)->authorise('core.admin')) { return true; } @@ -120,7 +138,8 @@ public function onAfterRespond() return; } - $deleteFrequency = 3600 * 24; // The delete frequency will be once per day + // The delete frequency will be once per day + $deleteFrequency = 3600 * 24; // Do we need to run? Compare the last run timestamp stored in the plugin's options with the current // timestamp. If the difference is greater than the cache timeout we shall not execute again. diff --git a/plugins/system/actionlogs/actionlogs.xml b/plugins/system/actionlogs/actionlogs.xml index effcae1c3ffba..d40bf67394489 100644 --- a/plugins/system/actionlogs/actionlogs.xml +++ b/plugins/system/actionlogs/actionlogs.xml @@ -32,7 +32,7 @@ name="lastrun" type="hidden" default="0" - size="15" + filter="integer" /> diff --git a/plugins/system/actionlogs/forms/actionlogs.xml b/plugins/system/actionlogs/forms/actionlogs.xml index 953fd58474e6a..1aef8b6157a56 100644 --- a/plugins/system/actionlogs/forms/actionlogs.xml +++ b/plugins/system/actionlogs/forms/actionlogs.xml @@ -9,6 +9,7 @@ description="PLG_SYSTEM_ACTIONLOGS_NOTIFICATIONS_DESC" class="btn-group btn-group-yesno" default="0" + filter="integer" required="true" > diff --git a/plugins/system/logrotation/logrotation.php b/plugins/system/logrotation/logrotation.php index f13c27407a210..542f13e17e23c 100644 --- a/plugins/system/logrotation/logrotation.php +++ b/plugins/system/logrotation/logrotation.php @@ -136,7 +136,6 @@ public function onAfterRender() $logFiles = $this->getLogFiles($logPath); - // Sort log files by version number in reserve order krsort($logFiles, SORT_NUMERIC); diff --git a/plugins/system/logrotation/logrotation.xml b/plugins/system/logrotation/logrotation.xml index bb962a20de05c..6b826a8d800f7 100644 --- a/plugins/system/logrotation/logrotation.xml +++ b/plugins/system/logrotation/logrotation.xml @@ -28,6 +28,8 @@ last="120" step="1" default="30" + filter="int" + validate="number" /> diff --git a/plugins/system/privacyconsent/field/privacy.php b/plugins/system/privacyconsent/field/privacy.php index 057eb3276d7ca..6a86c260a956a 100644 --- a/plugins/system/privacyconsent/field/privacy.php +++ b/plugins/system/privacyconsent/field/privacy.php @@ -69,7 +69,7 @@ protected function getLabel() JHtml::_('behavior.modal'); // Build the class for the label. - $class = !empty($this->description) ? 'hasTooltip' : ''; + $class = !empty($this->description) ? 'hasPopover' : ''; $class = $class . ' required'; $class = !empty($this->labelClass) ? $class . ' ' . $this->labelClass : $class; @@ -79,16 +79,22 @@ protected function getLabel() // If a description is specified, use it to build a tooltip. if (!empty($this->description)) { - $label .= ' title="' - . htmlspecialchars( - trim($text, ':') . '
' . ($this->translateDescription ? Text::_($this->description) : $this->description), - ENT_COMPAT, 'UTF-8' - ) . '"'; + $label .= ' title="' . htmlspecialchars(trim($text, ':'), ENT_COMPAT, 'UTF-8') . '"'; + $label .= ' data-content="' . htmlspecialchars( + $this->translateDescription ? Text::_($this->description) : $this->description, + ENT_COMPAT, + 'UTF-8' + ) . '"'; } - $privacyarticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0; + if (Factory::getLanguage()->isRtl()) + { + $label .= ' data-placement="left"'; + } + + $privacyArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0; - if ($privacyarticle && Factory::getApplication()->isClient('site')) + if ($privacyArticle && Factory::getApplication()->isClient('site')) { JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php'); @@ -100,13 +106,13 @@ protected function getLabel() $query = $db->getQuery(true) ->select($db->quoteName(array('id', 'alias', 'catid', 'language'))) ->from($db->quoteName('#__content')) - ->where($db->quoteName('id') . ' = ' . (int) $privacyarticle); + ->where($db->quoteName('id') . ' = ' . (int) $privacyArticle); $db->setQuery($query); $article = $db->loadObject(); $slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id; - $url = ContentHelperRoute::getArticleRoute($slug, $article->catid); - $link = JHtml::_('link', JRoute::_($url . '&tmpl=component&lang=' . $article->language), $text, $attribs); + $url = ContentHelperRoute::getArticleRoute($slug, $article->catid, $article->language); + $link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs); } else { diff --git a/plugins/system/privacyconsent/privacyconsent.php b/plugins/system/privacyconsent/privacyconsent.php index 0c2b42a663189..aedbe6241faa8 100644 --- a/plugins/system/privacyconsent/privacyconsent.php +++ b/plugins/system/privacyconsent/privacyconsent.php @@ -188,7 +188,6 @@ public function onUserAfterSave($data, $isNew, $result, $error) &&in_array($task, array('registration.register', 'profile.save')) && !empty($form['privacyconsent']['privacy'])) { - $userId = ArrayHelper::getValue($data, 'id', 0, 'int'); // Get the user's IP address @@ -367,7 +366,7 @@ private function getRedirectMessage() * * @param int $userId ID of uer to check * - * @return bool + * @return boolean * * @since __DEPLOY_VERSION__ */ @@ -386,7 +385,7 @@ private function isUserConsented($userId) * Get privacy article ID. If the site is a multilingual website and there is associated article for the * current language, ID of the associlated article will be returned * - * @return int + * @return integer */ private function getPrivacyArticleId() { @@ -419,7 +418,7 @@ public function onAfterRender() { return; } - + $cacheTimeout = (int) $this->params->get('cachetimeout', 30); $cacheTimeout = 24 * 3600 * $cacheTimeout; @@ -427,7 +426,7 @@ public function onAfterRender() // timestamp. If the difference is greater than the cache timeout we shall not execute again. $now = time(); $last = (int) $this->params->get('lastrun', 0); - + if ((abs($now - $last) < $cacheTimeout)) { return; @@ -442,6 +441,7 @@ public function onAfterRender() ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' = ' . $db->quote('system')) ->where($db->quoteName('element') . ' = ' . $db->quote('privacyconsent')); + try { // Lock the tables to prevent multiple plugin executions causing a race condition @@ -494,7 +494,7 @@ public function onAfterRender() /** * Method to send the remind for privacy consents renew * - * @return int + * @return integer * * @since __DEPLOY_VERSION__ */ @@ -597,7 +597,7 @@ private function remindExpiringConsents() /** * Method to delete the expired privacy consents * - * @return bool + * @return boolean * * @since __DEPLOY_VERSION__ */ diff --git a/plugins/system/privacyconsent/privacyconsent.xml b/plugins/system/privacyconsent/privacyconsent.xml index 572cafc47f5d1..f995ddc8686b2 100644 --- a/plugins/system/privacyconsent/privacyconsent.xml +++ b/plugins/system/privacyconsent/privacyconsent.xml @@ -21,17 +21,17 @@
- + /> -
@@ -110,7 +111,7 @@ name="lastrun" type="hidden" default="0" - size="15" + filter="integer" />
diff --git a/plugins/system/privacyconsent/privacyconsent/privacyconsent.xml b/plugins/system/privacyconsent/privacyconsent/privacyconsent.xml index d31edcbd7fa40..f86b54faaf58c 100644 --- a/plugins/system/privacyconsent/privacyconsent/privacyconsent.xml +++ b/plugins/system/privacyconsent/privacyconsent/privacyconsent.xml @@ -11,6 +11,7 @@ label="PLG_SYSTEM_PRIVACYCONSENT_FIELD_LABEL" description="PLG_SYSTEM_PRIVACYCONSENT_FIELD_DESC" default="0" + filter="integer" > diff --git a/plugins/user/terms/field/terms.php b/plugins/user/terms/field/terms.php index ca19f1bb587e8..e82996b800703 100644 --- a/plugins/user/terms/field/terms.php +++ b/plugins/user/terms/field/terms.php @@ -69,7 +69,7 @@ protected function getLabel() JHtml::_('behavior.modal'); // Build the class for the label. - $class = !empty($this->description) ? 'hasTooltip' : ''; + $class = !empty($this->description) ? 'hasPopover' : ''; $class = $class . ' required'; $class = !empty($this->labelClass) ? $class . ' ' . $this->labelClass : $class; @@ -79,16 +79,22 @@ protected function getLabel() // If a description is specified, use it to build a tooltip. if (!empty($this->description)) { - $label .= ' title="' - . htmlspecialchars( - trim($text, ':') . '
' . ($this->translateDescription ? Text::_($this->description) : $this->description), - ENT_COMPAT, 'UTF-8' - ) . '"'; + $label .= ' title="' . htmlspecialchars(trim($text, ':'), ENT_COMPAT, 'UTF-8') . '"'; + $label .= ' data-content="' . htmlspecialchars( + $this->translateDescription ? Text::_($this->description) : $this->description, + ENT_COMPAT, + 'UTF-8' + ) . '"'; } - $termsarticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0; + if (Factory::getLanguage()->isRtl()) + { + $label .= ' data-placement="left"'; + } + + $termsArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0; - if ($termsarticle && Factory::getApplication()->isClient('site')) + if ($termsArticle && Factory::getApplication()->isClient('site')) { JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php'); @@ -100,27 +106,31 @@ protected function getLabel() $query = $db->getQuery(true) ->select($db->quoteName(array('id', 'alias', 'catid', 'language'))) ->from($db->quoteName('#__content')) - ->where($db->quoteName('id') . ' = ' . (int) $termsarticle); + ->where($db->quoteName('id') . ' = ' . (int) $termsArticle); $db->setQuery($query); $article = $db->loadObject(); if (JLanguageAssociations::isEnabled()) { - $termsassociated = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $termsarticle); + $termsAssociated = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $termsArticle); } - $current_lang = Factory::getLanguage()->getTag(); + $currentLang = Factory::getLanguage()->getTag(); - if (isset($termsassociated) && $current_lang !== $article->language && array_key_exists($current_lang, $termsassociated)) + if (isset($termsAssociated) && $currentLang !== $article->language && array_key_exists($currentLang, $termsAssociated)) { - $url = ContentHelperRoute::getArticleRoute($termsassociated[$current_lang]->id, $termsassociated[$current_lang]->catid); - $link = JHtml::_('link', JRoute::_($url . '&tmpl=component&lang=' . $termsassociated[$current_lang]->language), $text, $attribs); + $url = ContentHelperRoute::getArticleRoute( + $termsAssociated[$currentLang]->id, + $termsAssociated[$currentLang]->catid, + $termsAssociated[$currentLang]->language + ); + $link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs); } else { $slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id; - $url = ContentHelperRoute::getArticleRoute($slug, $article->catid); - $link = JHtml::_('link', JRoute::_($url . '&tmpl=component&lang=' . $article->language), $text, $attribs); + $url = ContentHelperRoute::getArticleRoute($slug, $article->catid, $article->language); + $link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs); } } else diff --git a/plugins/user/terms/terms.php b/plugins/user/terms/terms.php index 9aa554ff2696a..c5f31207467b5 100644 --- a/plugins/user/terms/terms.php +++ b/plugins/user/terms/terms.php @@ -137,6 +137,40 @@ public function onUserBeforeSave($user, $isNew, $data) } return true; + } + + /** + * Saves user profile data + * + * @param array $data entered user data + * @param boolean $isNew true if this is a new user + * @param boolean $result true if saving the user worked + * @param string $error error message + * + * @return boolean + */ + public function onUserAfterSave($data, $isNew, $result, $error) + { + if (!$isNew || !$result) + { + return true; + } + JLoader::register('ActionlogsModelActionlog', JPATH_ADMINISTRATOR . '/components/com_actionlogs/models/actionlog.php'); + $userId = ArrayHelper::getValue($data, 'id', 0, 'int'); + + $message = array( + 'action' => 'consent', + 'id' => $userId, + 'title' => $data['name'], + 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId, + 'userid' => $userId, + 'username' => $data['username'], + 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId, + ); + + /* @var ActionlogsModelActionlog $model */ + $model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel'); + $model->addLog(array($message), 'PLG_USER_TERMS_LOGGING_CONSENT_TO_TERMS', 'plg_user_terms', $userId); } } diff --git a/plugins/user/terms/terms/terms.xml b/plugins/user/terms/terms/terms.xml index 5f65e815febe3..c654e3cc3e44a 100644 --- a/plugins/user/terms/terms/terms.xml +++ b/plugins/user/terms/terms/terms.xml @@ -11,6 +11,7 @@ label="PLG_USER_TERMS_FIELD_LABEL" description="PLG_USER_TERMS_FIELD_DESC" default="0" + filter="integer" >
- + + + + + + +
id); ?> + - escape($item->extension), '.'))); ?> + escape(JText::_($extension)); ?> - escape($item->log_date); ?> + + log_date); ?> + name; ?> @@ -101,7 +88,7 @@ escape($item->ip_address)); ?> + id; ?>
+ + username; ?> + user_id; ?> + subject; ?>
status == 1 && $item->request_type === 'export') : ?> - - + + status == 1 && $item->request_type === 'remove') : ?> - +