diff --git a/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini b/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini index e6faefd882185..18feba13879ef 100644 --- a/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini +++ b/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini @@ -4,4 +4,6 @@ ; Note : All ini files need to be saved as UTF-8 PLG_PRIVACY_ACTIONLOGS="Privacy - Action Logs" +PLG_PRIVACY_ACTIONLOGS_DOMAIN_DESC="Logged actions of the user" +PLG_PRIVACY_ACTIONLOGS_DOMAIN_LABEL="Actionlog" 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 index 190cbd446351a..210844c38b95e 100644 --- a/administrator/language/en-GB/en-GB.plg_privacy_contact.ini +++ b/administrator/language/en-GB/en-GB.plg_privacy_contact.ini @@ -4,4 +4,8 @@ ; Note : All ini files need to be saved as UTF-8 PLG_PRIVACY_CONTACT="Privacy - Contacts" +PLG_PRIVACY_CONTACT_DOMAIN_CUSTOMFIELDS_DESC="Joomla! contact custom fields data" +PLG_PRIVACY_CONTACT_DOMAIN_CUSTOMFIELDS_LABEL="Contact custom fields" +PLG_PRIVACY_CONTACT_DOMAIN_DESC="Joomla! user contact data" +PLG_PRIVACY_CONTACT_DOMAIN_LABEL="User contact" 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 index 5d50613c7019e..0a1aeab97e579 100644 --- a/administrator/language/en-GB/en-GB.plg_privacy_content.ini +++ b/administrator/language/en-GB/en-GB.plg_privacy_content.ini @@ -4,4 +4,8 @@ ; Note : All ini files need to be saved as UTF-8 PLG_PRIVACY_CONTENT="Privacy - Content" +PLG_PRIVACY_CONTENT_DOMAIN_CUSTOMFIELDS_DESC="Joomla! content custom fields data" +PLG_PRIVACY_CONTENT_DOMAIN_CUSTOMFIELDS_LABEL="Content custom fields" +PLG_PRIVACY_CONTENT_DOMAIN_DESC="Joomla! user content data" +PLG_PRIVACY_CONTENT_DOMAIN_LABEL="User content" PLG_PRIVACY_CONTENT_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 index c67d1908f89aa..afe3c018589ba 100644 --- a/administrator/language/en-GB/en-GB.plg_privacy_message.ini +++ b/administrator/language/en-GB/en-GB.plg_privacy_message.ini @@ -4,4 +4,6 @@ ; Note : All ini files need to be saved as UTF-8 PLG_PRIVACY_MESSAGE="Privacy - User Messages" +PLG_PRIVACY_MESSAGE_DOMAIN_DESC="Joomla! user message data" +PLG_PRIVACY_MESSAGE_DOMAIN_LABEL="User message" 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_user.ini b/administrator/language/en-GB/en-GB.plg_privacy_user.ini index d1f733954efba..f2445bca364dc 100644 --- a/administrator/language/en-GB/en-GB.plg_privacy_user.ini +++ b/administrator/language/en-GB/en-GB.plg_privacy_user.ini @@ -4,5 +4,13 @@ ; Note : All ini files need to be saved as UTF-8 PLG_PRIVACY_USER="Privacy - User Accounts" +PLG_PRIVACY_USER_DOMAIN_CUSTOMFIELDS_DESC="Joomla! user custom fields data" +PLG_PRIVACY_USER_DOMAIN_CUSTOMFIELDS_LABEL="User custom fields" +PLG_PRIVACY_USER_DOMAIN_DESC="Joomla! users table data" +PLG_PRIVACY_USER_DOMAIN_LABEL="Users" +PLG_PRIVACY_USER_DOMAIN_NOTES_DESC="Joomla! user notes data" +PLG_PRIVACY_USER_DOMAIN_NOTES_LABEL="User notes" +PLG_PRIVACY_USER_DOMAIN_PROFILE_DESC="Joomla! user profile data" +PLG_PRIVACY_USER_DOMAIN_PROFILE_LABEL="User profile" PLG_PRIVACY_USER_ERROR_CANNOT_REMOVE_SUPER_USER="Cannot remove a super user account." PLG_PRIVACY_USER_XML_DESCRIPTION="Responsible for processing privacy related requests for the core Joomla user data." diff --git a/plugins/privacy/actionlogs/actionlogs.php b/plugins/privacy/actionlogs/actionlogs.php index 77b67dd46c79d..be0ac70e4ab57 100644 --- a/plugins/privacy/actionlogs/actionlogs.php +++ b/plugins/privacy/actionlogs/actionlogs.php @@ -55,7 +55,34 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user return array(); } - $domain = $this->createDomain('actionlog', 'Logged actions of the user'); + $lang = JFactory::getLanguage(); + + $langSiteDefault = JComponentHelper::getParams('com_languages')->get('site'); + + $receiver = JUser::getInstance($user->id); + + /* + * We don't know if the user has admin access, so we will check if they have an admin language in their parameters, + * falling back to the site language, falling back to the site default language. + */ + + $langCode = $receiver->getParam('admin_language', ''); + + if (!$langCode) + { + $langCode = $receiver->getParam('language', $langSiteDefault); + } + + $lang = JLanguage::getInstance($langCode, $lang->getDebug()); + + // Ensure the right language files have been loaded. + $lang->load('plg_privacy_actionlogs', JPATH_ADMINISTRATOR, null, false, true) + || $lang->load('plg_privacy_actionlogs', JPATH_PLUGINS . '/privacy/actionlogs', null, false, true); + + $domain = $this->createDomain( + $lang->_('PLG_PRIVACY_ACTIONLOGS_DOMAIN_LABEL'), + $lang->_('PLG_PRIVACY_ACTIONLOGS_DOMAIN_DESC') + ); $query = $this->db->getQuery(true) ->select('a.*, u.name') @@ -83,3 +110,4 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user return array($domain); } } + diff --git a/plugins/privacy/contact/contact.php b/plugins/privacy/contact/contact.php index f9cea257fbbfc..55bc213e8bce6 100644 --- a/plugins/privacy/contact/contact.php +++ b/plugins/privacy/contact/contact.php @@ -45,6 +45,14 @@ class PlgPrivacyContact extends PrivacyPlugin */ protected $contacts = array(); + /** + * The language to load. + * + * @var string + * @since 3.9.0 + */ + protected $lang; + /** * Processes an export request for Joomla core user contact data * @@ -66,6 +74,39 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user return array(); } + $lang = JFactory::getLanguage(); + + $langSiteDefault = JComponentHelper::getParams('com_languages')->get('site'); + + if ($user) + { + $receiver = JUser::getInstance($user->id); + + /* + * We don't know if the user has admin access, so we will check if they have an admin language in their parameters, + * falling back to the site language, falling back to the site default language. + */ + + $langCode = $receiver->getParam('admin_language', ''); + + if (!$langCode) + { + $langCode = $receiver->getParam('language', $langSiteDefault); + } + + $lang = JLanguage::getInstance($langCode, $lang->getDebug()); + } + else + { + $lang = JLanguage::getInstance($langSiteDefault, $lang->getDebug()); + } + + // Ensure the right language files have been loaded + $lang->load('plg_privacy_contact', JPATH_ADMINISTRATOR, null, false, true) + || $lang->load('plg_privacy_contact', JPATH_PLUGINS . '/privacy/contact', null, false, true); + + $this->lang = $lang; + $domains = array(); $domains[] = $this->createContactDomain($request, $user); @@ -90,7 +131,10 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user */ private function createContactDomain(PrivacyTableRequest $request, JUser $user = null) { - $domain = $this->createDomain('user contact', 'Joomla! user contact data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_CONTACT_DOMAIN_LABEL'), + $this->lang->_('PLG_PRIVACY_CONTACT_DOMAIN_DESC') + ); if ($user) { @@ -131,7 +175,10 @@ private function createContactDomain(PrivacyTableRequest $request, JUser $user = */ private function createContactCustomFieldsDomain($contact) { - $domain = $this->createDomain('contact custom fields', 'Joomla! contact custom fields data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_CONTACT_DOMAIN_CUSTOMFIELDS_LABEL'), + $this->lang->_('PLG_PRIVACY_CONTACT_DOMAIN_CUSTOMFIELDS_DESC') + ); // Get item's fields, also preparing their value property for manual display $fields = FieldsHelper::getFields('com_contact.contact', $contact); diff --git a/plugins/privacy/content/content.php b/plugins/privacy/content/content.php index cecf5f0e2d7ec..aeb17135e8982 100644 --- a/plugins/privacy/content/content.php +++ b/plugins/privacy/content/content.php @@ -45,6 +45,14 @@ class PlgPrivacyContent extends PrivacyPlugin */ protected $contents = array(); + /** + * The language to load. + * + * @var string + * @since 3.9.0 + */ + protected $lang; + /** * Processes an export request for Joomla core user content data * @@ -66,6 +74,32 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user return array(); } + $lang = JFactory::getLanguage(); + + $langSiteDefault = JComponentHelper::getParams('com_languages')->get('site'); + + $receiver = JUser::getInstance($user->id); + + /* + * We don't know if the user has admin access, so we will check if they have an admin language in their parameters, + * falling back to the site language, falling back to the site default language. + */ + + $langCode = $receiver->getParam('admin_language', ''); + + if (!$langCode) + { + $langCode = $receiver->getParam('language', $langSiteDefault); + } + + $lang = JLanguage::getInstance($langCode, $lang->getDebug()); + + // Ensure the right language files have been loaded + $lang->load('plg_privacy_content', JPATH_ADMINISTRATOR, null, false, true) + || $lang->load('plg_privacy_content', JPATH_PLUGINS . '/privacy/content', null, false, true); + + $this->lang = $lang; + $domains = array(); $domains[] = $this->createContentDomain($user); @@ -88,7 +122,10 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user */ private function createContentDomain(JUser $user) { - $domain = $this->createDomain('user content', 'Joomla! user content data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_CONTENT_DOMAIN_LABEL'), + $this->lang->_('PLG_PRIVACY_CONTENT_DOMAIN_DESC') + ); $query = $this->db->getQuery(true) ->select('*') @@ -118,7 +155,10 @@ private function createContentDomain(JUser $user) */ private function createContentCustomFieldsDomain($content) { - $domain = $this->createDomain('content custom fields', 'Joomla! content custom fields data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_CONTENT_DOMAIN_CUSTOMFIELDS_LABEL'), + $this->lang->_('PLG_PRIVACY_CONTENT_DOMAIN_CUSTOMFIELDS_DESC') + ); // Get item's fields, also preparing their value property for manual display $fields = FieldsHelper::getFields('com_content.article', $content); diff --git a/plugins/privacy/message/message.php b/plugins/privacy/message/message.php index 40808966249d8..e3fb3e5ab5ef2 100644 --- a/plugins/privacy/message/message.php +++ b/plugins/privacy/message/message.php @@ -73,7 +73,34 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user */ private function createMessageDomain(JUser $user) { - $domain = $this->createDomain('user message', 'Joomla! user message data'); + $lang = JFactory::getLanguage(); + + $langSiteDefault = JComponentHelper::getParams('com_languages')->get('site'); + + $receiver = JUser::getInstance($user->id); + + /* + * We don't know if the user has admin access, so we will check if they have an admin language in their parameters, + * falling back to the site language, falling back to the site default language. + */ + + $langCode = $receiver->getParam('admin_language', ''); + + if (!$langCode) + { + $langCode = $receiver->getParam('language', $langSiteDefault); + } + + $lang = JLanguage::getInstance($langCode, $lang->getDebug()); + + // Ensure the right language files have been loaded. + $lang->load('plg_privacy_message', JPATH_ADMINISTRATOR, null, false, true) + || $lang->load('plg_privacy_message', JPATH_PLUGINS . '/privacy/message', null, false, true); + + $domain = $this->createDomain( + $lang->_('PLG_PRIVACY_MESSAGE_DOMAIN_LABEL'), + $lang->_('PLG_PRIVACY_MESSAGE_DOMAIN_DESC') + ); $query = $this->db->getQuery(true) ->select('*') @@ -92,3 +119,4 @@ private function createMessageDomain(JUser $user) return $domain; } } + diff --git a/plugins/privacy/user/user.php b/plugins/privacy/user/user.php index 503daccf3dda9..c30b0dd0b9cc8 100644 --- a/plugins/privacy/user/user.php +++ b/plugins/privacy/user/user.php @@ -38,6 +38,14 @@ class PlgPrivacyUser extends PrivacyPlugin */ protected $autoloadLanguage = true; + /** + * The language to load. + * + * @var string + * @since 3.9.0 + */ + protected $lang; + /** * Performs validation to determine if the data associated with a remove information request can be processed * @@ -92,6 +100,32 @@ public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user return array(); } + $lang = JFactory::getLanguage(); + + $langSiteDefault = JComponentHelper::getParams('com_languages')->get('site'); + + $receiver = JUser::getInstance($user->id); + + /* + * We don't know if the user has admin access, so we will check if they have an admin language in their parameters, + * falling back to the site language, falling back to the site default language. + */ + + $langCode = $receiver->getParam('admin_language', ''); + + if (!$langCode) + { + $langCode = $receiver->getParam('language', $langSiteDefault); + } + + $lang = JLanguage::getInstance($langCode, $lang->getDebug()); + + // Ensure the right language files have been loaded + $lang->load('plg_privacy_user', JPATH_ADMINISTRATOR, null, false, true) + || $lang->load('plg_privacy_user', JPATH_PLUGINS . '/privacy/user', null, false, true); + + $this->lang = $lang; + /** @var JTableUser $userTable */ $userTable = JUser::getTable(); $userTable->load($user->id); @@ -179,7 +213,10 @@ public function onPrivacyRemoveData(PrivacyTableRequest $request, JUser $user = */ private function createNotesDomain(JTableUser $user) { - $domain = $this->createDomain('user notes', 'Joomla! user notes data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_NOTES_LABEL'), + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_NOTES_DESC') + ); $query = $this->db->getQuery(true) ->select('*') @@ -213,7 +250,10 @@ private function createNotesDomain(JTableUser $user) */ private function createProfileDomain(JTableUser $user) { - $domain = $this->createDomain('user profile', 'Joomla! user profile data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_PROFILE_LABEL'), + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_PROFILE_DESC') + ); $query = $this->db->getQuery(true) ->select('*') @@ -242,7 +282,10 @@ private function createProfileDomain(JTableUser $user) */ private function createUserDomain(JTableUser $user) { - $domain = $this->createDomain('users', 'Joomla! users table data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_LABEL'), + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_DESC') + ); $domain->addItem($this->createItemForUserTable($user)); return $domain; @@ -284,7 +327,10 @@ private function createItemForUserTable(JTableUser $user) */ private function createUserCustomFieldsDomain(JTableUser $user) { - $domain = $this->createDomain('user custom fields', 'Joomla! user custom fields data'); + $domain = $this->createDomain( + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_CUSTOMFIELDS_LABEL'), + $this->lang->_('PLG_PRIVACY_USER_DOMAIN_CUSTOMFIELDS_DESC') + ); // Get item's fields, also preparing their value property for manual display $fields = FieldsHelper::getFields('com_users.user', $user);