diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php
new file mode 100644
index 0000000..efd7965
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php
@@ -0,0 +1,136 @@
+input->getCmd('view', 'login');
+ $vFormat = $document->getType();
+ $lName = $this->input->getCmd('layout', 'default');
+
+ if ($view = $this->getView($vName, $vFormat))
+ {
+ // Do any specific processing by view.
+ switch ($vName)
+ {
+ case 'registration':
+ // If the user is already logged in, redirect to the profile page.
+ $user = JFactory::getUser();
+
+ if ($user->get('guest') != 1)
+ {
+ // Redirect to profile page.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile', false));
+
+ return;
+ }
+
+ // Check if user registration is enabled
+ if (JComponentHelper::getParams('com_users')->get('allowUserRegistration') == 0)
+ {
+ // Registration is disabled - Redirect to login page.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
+
+ return;
+ }
+
+ // The user is a guest, load the registration model and show the registration page.
+ $model = $this->getModel('Registration');
+ break;
+
+ // Handle view specific models.
+ case 'profile':
+
+ // If the user is a guest, redirect to the login page.
+ $user = JFactory::getUser();
+
+ if ($user->get('guest') == 1)
+ {
+ // Redirect to login page.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
+
+ return;
+ }
+
+ $model = $this->getModel($vName);
+ break;
+
+ // Handle the default views.
+ case 'login':
+ $model = $this->getModel($vName);
+ break;
+
+ case 'reset':
+ // If the user is already logged in, redirect to the profile page.
+ $user = JFactory::getUser();
+
+ if ($user->get('guest') != 1)
+ {
+ // Redirect to profile page.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile', false));
+
+ return;
+ }
+
+ $model = $this->getModel($vName);
+ break;
+
+ case 'remind':
+ // If the user is already logged in, redirect to the profile page.
+ $user = JFactory::getUser();
+
+ if ($user->get('guest') != 1)
+ {
+ // Redirect to profile page.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile', false));
+
+ return;
+ }
+
+ $model = $this->getModel($vName);
+ break;
+
+ default:
+ $model = $this->getModel('Login');
+ break;
+ }
+
+ // Push the model into the view (as default).
+ $view->setModel($model, true);
+ $view->setLayout($lName);
+
+ // Push document object into the view.
+ $view->document = $document;
+
+ $view->display();
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php.evidence.json
new file mode 100644
index 0000000..3c70200
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7252",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/controller.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controller.php)",
+ "original_sha256": "2d0e5a25333180fc0976159ba409b32506d458b3239daa930474d8140a95bb92",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1552901205,
+ "size": 3467,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controller.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.json.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.json.php
new file mode 100644
index 0000000..fc29aa1
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.json.php
@@ -0,0 +1,21 @@
+ quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.json.php)",
+ "original_sha256": "14089aed5d01c80be03a7ff13f0b8f5b6a5fb5c37b7f8e72bf9ab98e5bbb976b",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 498,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controllers/profile.json.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php
new file mode 100644
index 0000000..3175402
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php
@@ -0,0 +1,260 @@
+get('id');
+
+ // Get the previous user id (if any) and the current user id.
+ $previousId = (int) $app->getUserState('com_users.edit.profile.id');
+ $userId = $this->input->getInt('user_id');
+
+ // Check if the user is trying to edit another users profile.
+ if ($userId != $loginUserId)
+ {
+ $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error');
+ $app->setHeader('status', 403, true);
+
+ return false;
+ }
+
+ $cookieLogin = $user->get('cookieLogin');
+
+ // Check if the user logged in with a cookie
+ if (!empty($cookieLogin))
+ {
+ // If so, the user must login to edit the password and other data.
+ $app->enqueueMessage(JText::_('JGLOBAL_REMEMBER_MUST_LOGIN'), 'message');
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
+
+ return false;
+ }
+
+ // Set the user id for the user to edit in the session.
+ $app->setUserState('com_users.edit.profile.id', $userId);
+
+ // Get the model.
+ $model = $this->getModel('Profile', 'UsersModel');
+
+ // Check out the user.
+ if ($userId)
+ {
+ $model->checkout($userId);
+ }
+
+ // Check in the previous user.
+ if ($previousId)
+ {
+ $model->checkin($previousId);
+ }
+
+ // Redirect to the edit screen.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit', false));
+
+ return true;
+ }
+
+ /**
+ * Method to save a user's profile data.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ public function save()
+ {
+ // Check for request forgeries.
+ $this->checkToken();
+
+ $app = JFactory::getApplication();
+ $model = $this->getModel('Profile', 'UsersModel');
+ $user = JFactory::getUser();
+ $userId = (int) $user->get('id');
+
+ // Get the user data.
+ $requestData = $app->input->post->get('jform', array(), 'array');
+
+ // Force the ID to this user.
+ $requestData['id'] = $userId;
+
+ // Validate the posted data.
+ $form = $model->getForm();
+
+ if (!$form)
+ {
+ JError::raiseError(500, $model->getError());
+
+ return false;
+ }
+
+ // Send an object which can be modified through the plugin event
+ $objData = (object) $requestData;
+ $app->triggerEvent(
+ 'onContentNormaliseRequestData',
+ array('com_users.user', $objData, $form)
+ );
+ $requestData = (array) $objData;
+
+ // Validate the posted data.
+ $data = $model->validate($form, $requestData);
+
+ // Check for errors.
+ if ($data === false)
+ {
+ // Get the validation messages.
+ $errors = $model->getErrors();
+
+ // Push up to three validation messages out to the user.
+ for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++)
+ {
+ if ($errors[$i] instanceof Exception)
+ {
+ $app->enqueueMessage($errors[$i]->getMessage(), 'warning');
+ }
+ else
+ {
+ $app->enqueueMessage($errors[$i], 'warning');
+ }
+ }
+
+ // Unset the passwords.
+ unset($requestData['password1'], $requestData['password2']);
+
+ // Save the data in the session.
+ $app->setUserState('com_users.edit.profile.data', $requestData);
+
+ // Redirect back to the edit screen.
+ $userId = (int) $app->getUserState('com_users.edit.profile.id');
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit&user_id=' . $userId, false));
+
+ return false;
+ }
+
+ // Attempt to save the data.
+ $return = $model->save($data);
+
+ // Check for errors.
+ if ($return === false)
+ {
+ // Save the data in the session.
+ $app->setUserState('com_users.edit.profile.data', $data);
+
+ // Redirect back to the edit screen.
+ $userId = (int) $app->getUserState('com_users.edit.profile.id');
+ $this->setMessage(JText::sprintf('COM_USERS_PROFILE_SAVE_FAILED', $model->getError()), 'warning');
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit&user_id=' . $userId, false));
+
+ return false;
+ }
+
+ // Redirect the user and adjust session state based on the chosen task.
+ switch ($this->getTask())
+ {
+ case 'apply':
+ // Check out the profile.
+ $app->setUserState('com_users.edit.profile.id', $return);
+ $model->checkout($return);
+
+ // Redirect back to the edit screen.
+ $this->setMessage(JText::_('COM_USERS_PROFILE_SAVE_SUCCESS'));
+
+ $redirect = $app->getUserState('com_users.edit.profile.redirect');
+
+ // Don't redirect to an external URL.
+ if (!JUri::isInternal($redirect))
+ {
+ $redirect = null;
+ }
+
+ if (!$redirect)
+ {
+ $redirect = 'index.php?option=com_users&view=profile&layout=edit&hidemainmenu=1';
+ }
+
+ $this->setRedirect(JRoute::_($redirect, false));
+ break;
+
+ default:
+ // Check in the profile.
+ $userId = (int) $app->getUserState('com_users.edit.profile.id');
+
+ if ($userId)
+ {
+ $model->checkin($userId);
+ }
+
+ // Clear the profile id from the session.
+ $app->setUserState('com_users.edit.profile.id', null);
+
+ $redirect = $app->getUserState('com_users.edit.profile.redirect');
+
+ // Don't redirect to an external URL.
+ if (!JUri::isInternal($redirect))
+ {
+ $redirect = null;
+ }
+
+ if (!$redirect)
+ {
+ $redirect = 'index.php?option=com_users&view=profile&user_id=' . $return;
+ }
+
+ // Redirect to the list screen.
+ $this->setMessage(JText::_('COM_USERS_PROFILE_SAVE_SUCCESS'));
+ $this->setRedirect(JRoute::_($redirect, false));
+ break;
+ }
+
+ // Flush the data from the session.
+ $app->setUserState('com_users.edit.profile.data', null);
+ }
+
+ /**
+ * Function that allows child controller access to model data after the data has been saved.
+ *
+ * @param JModelLegacy $model The data model object.
+ * @param array $validData The validated data.
+ *
+ * @return void
+ *
+ * @since 3.1
+ */
+ protected function postSaveHook(JModelLegacy $model, $validData = array())
+ {
+ $item = $model->getData();
+ $tags = $validData['tags'];
+
+ if ($tags)
+ {
+ $item->tags = new JHelperTags;
+ $item->tags->getTagIds($item->id, 'com_users.user');
+ $item->metadata['tags'] = $item->tags;
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php.evidence.json
new file mode 100644
index 0000000..ed2dc03
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7258",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/controllers/profile.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile.php)",
+ "original_sha256": "0cef6b3e5fc0304afdb0005711b02d9a39d01fee0ce14903d4312f31a2fa540b",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 6630,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controllers/profile.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php
new file mode 100644
index 0000000..f1b5f9a
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php
@@ -0,0 +1,53 @@
+close();
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php.evidence.json
new file mode 100644
index 0000000..bb81bbd
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7259",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/controllers/profile_base_json.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/profile_base_json.php)",
+ "original_sha256": "11ec9184dddb0f201b18ec05c6a279f1d4b387813b80ed01dfe5040e00c93d4a",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 1301,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controllers/profile_base_json.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php
new file mode 100644
index 0000000..740c468
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php
@@ -0,0 +1,59 @@
+checkToken('post');
+
+ $model = $this->getModel('Remind', 'UsersModel');
+ $data = $this->input->post->get('jform', array(), 'array');
+
+ // Submit the password reset request.
+ $return = $model->processRemindRequest($data);
+
+ // Check for a hard error.
+ if ($return == false)
+ {
+ // The request failed.
+ // Go back to the request form.
+ $message = JText::sprintf('COM_USERS_REMIND_REQUEST_FAILED', $model->getError());
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=remind', false), $message, 'notice');
+
+ return false;
+ }
+ else
+ {
+ // The request succeeded.
+ // Proceed to step two.
+ $message = JText::_('COM_USERS_REMIND_REQUEST_SUCCESS');
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false), $message);
+
+ return true;
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php.evidence.json
new file mode 100644
index 0000000..2f629c7
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7255",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/controllers/remind.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/remind.php)",
+ "original_sha256": "a6ef6d7b60043fa180e39c8efce1dcff804c8c2bbfa11d4e5e4d2ca36601972d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 1427,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controllers/remind.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php
new file mode 100644
index 0000000..081be66
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php
@@ -0,0 +1,190 @@
+checkToken('post');
+
+ $app = JFactory::getApplication();
+ $model = $this->getModel('Reset', 'UsersModel');
+ $data = $this->input->post->get('jform', array(), 'array');
+
+ // Submit the password reset request.
+ $return = $model->processResetRequest($data);
+
+ // Check for a hard error.
+ if ($return instanceof Exception)
+ {
+ // Get the error message to display.
+ if ($app->get('error_reporting'))
+ {
+ $message = $return->getMessage();
+ }
+ else
+ {
+ $message = JText::_('COM_USERS_RESET_REQUEST_ERROR');
+ }
+
+ // Go back to the request form.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset', false), $message, 'error');
+
+ return false;
+ }
+ elseif ($return === false)
+ {
+ // The request failed.
+ // Go back to the request form.
+ $message = JText::sprintf('COM_USERS_RESET_REQUEST_FAILED', $model->getError());
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset', false), $message, 'notice');
+
+ return false;
+ }
+ else
+ {
+ // The request succeeded.
+ // Proceed to step two.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset&layout=confirm', false));
+
+ return true;
+ }
+ }
+
+ /**
+ * Method to confirm the password request.
+ *
+ * @return boolean
+ *
+ * @access public
+ * @since 1.6
+ */
+ public function confirm()
+ {
+ // Check the request token.
+ $this->checkToken('request');
+
+ $app = JFactory::getApplication();
+ $model = $this->getModel('Reset', 'UsersModel');
+ $data = $this->input->get('jform', array(), 'array');
+
+ // Confirm the password reset request.
+ $return = $model->processResetConfirm($data);
+
+ // Check for a hard error.
+ if ($return instanceof Exception)
+ {
+ // Get the error message to display.
+ if ($app->get('error_reporting'))
+ {
+ $message = $return->getMessage();
+ }
+ else
+ {
+ $message = JText::_('COM_USERS_RESET_CONFIRM_ERROR');
+ }
+
+ // Go back to the confirm form.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset&layout=confirm', false), $message, 'error');
+
+ return false;
+ }
+ elseif ($return === false)
+ {
+ // Confirm failed.
+ // Go back to the confirm form.
+ $message = JText::sprintf('COM_USERS_RESET_CONFIRM_FAILED', $model->getError());
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset&layout=confirm', false), $message, 'notice');
+
+ return false;
+ }
+ else
+ {
+ // Confirm succeeded.
+ // Proceed to step three.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset&layout=complete', false));
+
+ return true;
+ }
+ }
+
+ /**
+ * Method to complete the password reset process.
+ *
+ * @return boolean
+ *
+ * @since 1.6
+ */
+ public function complete()
+ {
+ // Check for request forgeries
+ $this->checkToken('post');
+
+ $app = JFactory::getApplication();
+ $model = $this->getModel('Reset', 'UsersModel');
+ $data = $this->input->post->get('jform', array(), 'array');
+
+ // Complete the password reset request.
+ $return = $model->processResetComplete($data);
+
+ // Check for a hard error.
+ if ($return instanceof Exception)
+ {
+ // Get the error message to display.
+ if ($app->get('error_reporting'))
+ {
+ $message = $return->getMessage();
+ }
+ else
+ {
+ $message = JText::_('COM_USERS_RESET_COMPLETE_ERROR');
+ }
+
+ // Go back to the complete form.
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset&layout=complete', false), $message, 'error');
+
+ return false;
+ }
+ elseif ($return === false)
+ {
+ // Complete failed.
+ // Go back to the complete form.
+ $message = JText::sprintf('COM_USERS_RESET_COMPLETE_FAILED', $model->getError());
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=reset&layout=complete', false), $message, 'notice');
+
+ return false;
+ }
+ else
+ {
+ // Complete succeeded.
+ // Proceed to the login form.
+ $message = JText::_('COM_USERS_RESET_COMPLETE_SUCCESS');
+ $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false), $message);
+
+ return true;
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php.evidence.json
new file mode 100644
index 0000000..c077fff
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7256",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/controllers/reset.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/reset.php)",
+ "original_sha256": "224404ff37d78b3baf18f77b89e51e7599304b44b51fe6e4bf1ff9abf354ac0c",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 4662,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controllers/reset.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php
new file mode 100644
index 0000000..2efa8bd
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php
@@ -0,0 +1,374 @@
+checkToken('post');
+
+ $app = JFactory::getApplication();
+ $input = $app->input->getInputForRequestMethod();
+
+ // Populate the data array:
+ $data = array();
+
+ $data['return'] = base64_decode($input->get('return', '', 'BASE64'));
+ $data['username'] = $input->get('username', '', 'USERNAME');
+ $data['password'] = $input->get('password', '', 'RAW');
+ $data['secretkey'] = $input->get('secretkey', '', 'RAW');
+
+ // Check for a simple menu item id
+ if (is_numeric($data['return']))
+ {
+ if (JLanguageMultilang::isEnabled())
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true)
+ ->select('language')
+ ->from($db->quoteName('#__menu'))
+ ->where('client_id = 0')
+ ->where('id =' . $data['return']);
+
+ $db->setQuery($query);
+
+ try
+ {
+ $language = $db->loadResult();
+ }
+ catch (RuntimeException $e)
+ {
+ return;
+ }
+
+ if ($language !== '*')
+ {
+ $lang = '&lang=' . $language;
+ }
+ else
+ {
+ $lang = '';
+ }
+ }
+ else
+ {
+ $lang = '';
+ }
+
+ $data['return'] = 'index.php?Itemid=' . $data['return'] . $lang;
+ }
+ else
+ {
+ // Don't redirect to an external URL.
+ if (!JUri::isInternal($data['return']))
+ {
+ $data['return'] = '';
+ }
+ }
+
+ // Set the return URL if empty.
+ if (empty($data['return']))
+ {
+ $data['return'] = 'index.php?option=com_users&view=profile';
+ }
+
+ // Set the return URL in the user state to allow modification by plugins
+ $app->setUserState('users.login.form.return', $data['return']);
+
+ // Get the log in options.
+ $options = array();
+ $options['remember'] = $this->input->getBool('remember', false);
+ $options['return'] = $data['return'];
+
+ // Get the log in credentials.
+ $credentials = array();
+ $credentials['username'] = $data['username'];
+ $credentials['password'] = $data['password'];
+ $credentials['secretkey'] = $data['secretkey'];
+
+ // Perform the log in.
+ if (true !== $app->login($credentials, $options))
+ {
+ // Login failed !
+ // Clear user name, password and secret key before sending the login form back to the user.
+ $data['remember'] = (int) $options['remember'];
+ $data['username'] = '';
+ $data['password'] = '';
+ $data['secretkey'] = '';
+ $app->setUserState('users.login.form.data', $data);
+ $uri = JFactory::getURI();
+ $url = $uri->toString();
+ $app->redirect(JRoute::_($url, false));
+ //$app->redirect(JRoute::_('index.php?option=com_users&view=login', false)); //Eredeti
+ }
+
+ // Success
+ if ($options['remember'] == true)
+ {
+ $app->setUserState('rememberLogin', true);
+ }
+
+ $app->setUserState('users.login.form.data', array());
+ $app->redirect(JRoute::_($app->getUserState('users.login.form.return'), false));
+ }
+
+ /**
+ * Method to log out a user.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ public function logout()
+ {
+ $this->checkToken('request');
+
+ $app = JFactory::getApplication();
+
+ // Prepare the logout options.
+ $options = array(
+ 'clientid' => $app->get('shared_session', '0') ? null : 0,
+ );
+
+ // Perform the log out.
+ $error = $app->logout(null, $options);
+ $input = $app->input->getInputForRequestMethod();
+
+ // Check if the log out succeeded.
+ if ($error instanceof Exception)
+ {
+ $app->redirect(JRoute::_('index.php?option=com_users&view=login', false));
+ }
+
+ // Get the return URL from the request and validate that it is internal.
+ $return = $input->get('return', '', 'BASE64');
+ $return = base64_decode($return);
+
+ // Check for a simple menu item id
+ if (is_numeric($return))
+ {
+ if (JLanguageMultilang::isEnabled())
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true)
+ ->select('language')
+ ->from($db->quoteName('#__menu'))
+ ->where('client_id = 0')
+ ->where('id =' . $return);
+
+ $db->setQuery($query);
+
+ try
+ {
+ $language = $db->loadResult();
+ }
+ catch (RuntimeException $e)
+ {
+ return;
+ }
+
+ if ($language !== '*')
+ {
+ $lang = '&lang=' . $language;
+ }
+ else
+ {
+ $lang = '';
+ }
+ }
+ else
+ {
+ $lang = '';
+ }
+
+ $return = 'index.php?Itemid=' . $return . $lang;
+ }
+ else
+ {
+ // Don't redirect to an external URL.
+ if (!JUri::isInternal($return))
+ {
+ $return = '';
+ }
+ }
+
+ // In case redirect url is not set, redirect user to homepage
+ if (empty($return))
+ {
+ $return = JUri::root();
+ }
+
+ // Redirect the user.
+ $app->redirect(JRoute::_($return, false));
+ }
+
+ /**
+ * Method to logout directly and redirect to page.
+ *
+ * @return void
+ *
+ * @since 3.5
+ */
+ public function menulogout()
+ {
+ // Get the ItemID of the page to redirect after logout
+ $app = JFactory::getApplication();
+ $itemid = $app->getMenu()->getActive()->params->get('logout');
+
+ // Get the language of the page when multilang is on
+ if (JLanguageMultilang::isEnabled())
+ {
+ if ($itemid)
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true)
+ ->select('language')
+ ->from($db->quoteName('#__menu'))
+ ->where('client_id = 0')
+ ->where('id =' . $itemid);
+
+ $db->setQuery($query);
+
+ try
+ {
+ $language = $db->loadResult();
+ }
+ catch (RuntimeException $e)
+ {
+ return;
+ }
+
+ if ($language !== '*')
+ {
+ $lang = '&lang=' . $language;
+ }
+ else
+ {
+ $lang = '';
+ }
+
+ // URL to redirect after logout
+ $url = 'index.php?Itemid=' . $itemid . $lang;
+ }
+ else
+ {
+ // Logout is set to default. Get the home page ItemID
+ $lang_code = $app->input->cookie->getString(JApplicationHelper::getHash('language'));
+ $item = $app->getMenu()->getDefault($lang_code);
+ $itemid = $item->id;
+
+ // Redirect to Home page after logout
+ $url = 'index.php?Itemid=' . $itemid;
+ }
+ }
+ else
+ {
+ // URL to redirect after logout, default page if no ItemID is set
+ $url = $itemid ? 'index.php?Itemid=' . $itemid : JUri::root();
+ }
+
+ // Logout and redirect
+ $this->setRedirect('index.php?option=com_users&task=user.logout&' . JSession::getFormToken() . '=1&return=' . base64_encode($url));
+ }
+
+ /**
+ * Method to request a username reminder.
+ *
+ * @return boolean
+ *
+ * @since 1.6
+ */
+ public function remind()
+ {
+ // Check the request token.
+ $this->checkToken('post');
+
+ $app = JFactory::getApplication();
+ $model = $this->getModel('User', 'UsersModel');
+ $data = $this->input->post->get('jform', array(), 'array');
+
+ // Submit the username remind request.
+ $return = $model->processRemindRequest($data);
+
+ // Check for a hard error.
+ if ($return instanceof Exception)
+ {
+ // Get the error message to display.
+ $message = $app->get('error_reporting')
+ ? $return->getMessage()
+ : JText::_('COM_USERS_REMIND_REQUEST_ERROR');
+
+ // Get the route to the next page.
+ $itemid = UsersHelperRoute::getRemindRoute();
+ $itemid = $itemid !== null ? '&Itemid=' . $itemid : '';
+ $route = 'index.php?option=com_users&view=remind' . $itemid;
+
+ // Go back to the complete form.
+ $this->setRedirect(JRoute::_($route, false), $message, 'error');
+
+ return false;
+ }
+
+ if ($return === false)
+ {
+ // Complete failed.
+ // Get the route to the next page.
+ $itemid = UsersHelperRoute::getRemindRoute();
+ $itemid = $itemid !== null ? '&Itemid=' . $itemid : '';
+ $route = 'index.php?option=com_users&view=remind' . $itemid;
+
+ // Go back to the complete form.
+ $message = JText::sprintf('COM_USERS_REMIND_REQUEST_FAILED', $model->getError());
+ $this->setRedirect(JRoute::_($route, false), $message, 'notice');
+
+ return false;
+ }
+
+ // Complete succeeded.
+ // Get the route to the next page.
+ $itemid = UsersHelperRoute::getLoginRoute();
+ $itemid = $itemid !== null ? '&Itemid=' . $itemid : '';
+ $route = 'index.php?option=com_users&view=login' . $itemid;
+
+ // Proceed to the login form.
+ $message = JText::_('COM_USERS_REMIND_REQUEST_SUCCESS');
+ $this->setRedirect(JRoute::_($route, false), $message);
+
+ return true;
+ }
+
+ /**
+ * Method to resend a user.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ public function resend()
+ {
+ // Check for request forgeries
+ // $this->checkToken('post');
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php.evidence.json
new file mode 100644
index 0000000..6468cfd
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7254",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/controllers/user.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/controllers/user.php)",
+ "original_sha256": "d7472a9cb222592b7799229831d00ed6e728d082fd5ed5be616404edb8ad275c",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1557908559,
+ "size": 8730,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/controllers/user.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php
new file mode 100644
index 0000000..6dbe477
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php
@@ -0,0 +1,251 @@
+sites->site as $site)
+ {
+ if ((string) $site->attributes()->url == $value)
+ {
+ $text = (string) $site;
+ break;
+ }
+ }
+ }
+
+ $value = htmlspecialchars($value, ENT_COMPAT, 'UTF-8');
+
+ if (strpos($value, 'http') === 0)
+ {
+ return '' . $text . '';
+ }
+
+ return '' . $text . '';
+ }
+
+ /**
+ * Get the sanitized template style
+ *
+ * @param mixed $value Value of the field
+ *
+ * @return mixed String/void
+ *
+ * @since 1.6
+ */
+ public static function templatestyle($value)
+ {
+ if (empty($value))
+ {
+ return static::value($value);
+ }
+ else
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true)
+ ->select('title')
+ ->from('#__template_styles')
+ ->where('id = ' . $db->quote($value));
+ $db->setQuery($query);
+ $title = $db->loadResult();
+
+ if ($title)
+ {
+ return htmlspecialchars($title, ENT_COMPAT, 'UTF-8');
+ }
+ else
+ {
+ return static::value('');
+ }
+ }
+ }
+
+ /**
+ * Get the sanitized language
+ *
+ * @param mixed $value Value of the field
+ *
+ * @return mixed String/void
+ *
+ * @since 1.6
+ */
+ public static function admin_language($value)
+ {
+ if (empty($value))
+ {
+ return static::value($value);
+ }
+ else
+ {
+ $file = JLanguageHelper::getLanguagePath(JPATH_ADMINISTRATOR, $value) . '/' . $value . '.xml';
+
+ $result = null;
+
+ if (is_file($file))
+ {
+ $result = JLanguageHelper::parseXMLLanguageFile($file);
+ }
+
+ if ($result)
+ {
+ return htmlspecialchars($result['name'], ENT_COMPAT, 'UTF-8');
+ }
+ else
+ {
+ return static::value('');
+ }
+ }
+ }
+
+ /**
+ * Get the sanitized language
+ *
+ * @param mixed $value Value of the field
+ *
+ * @return mixed String/void
+ *
+ * @since 1.6
+ */
+ public static function language($value)
+ {
+ if (empty($value))
+ {
+ return static::value($value);
+ }
+ else
+ {
+ $file = JLanguageHelper::getLanguagePath(JPATH_SITE, $value) . '/' . $value . '.xml';
+
+ $result = null;
+
+ if (is_file($file))
+ {
+ $result = JLanguageHelper::parseXMLLanguageFile($file);
+ }
+
+ if ($result)
+ {
+ return htmlspecialchars($result['name'], ENT_COMPAT, 'UTF-8');
+ }
+ else
+ {
+ return static::value('');
+ }
+ }
+ }
+
+ /**
+ * Get the sanitized editor name
+ *
+ * @param mixed $value Value of the field
+ *
+ * @return mixed String/void
+ *
+ * @since 1.6
+ */
+ public static function editor($value)
+ {
+ if (empty($value))
+ {
+ return static::value($value);
+ }
+ else
+ {
+ $db = JFactory::getDbo();
+ $lang = JFactory::getLanguage();
+ $query = $db->getQuery(true)
+ ->select('name')
+ ->from('#__extensions')
+ ->where('element = ' . $db->quote($value))
+ ->where('folder = ' . $db->quote('editors'));
+ $db->setQuery($query);
+ $title = $db->loadResult();
+
+ if ($title)
+ {
+ $lang->load("plg_editors_$value.sys", JPATH_ADMINISTRATOR, null, false, true)
+ || $lang->load("plg_editors_$value.sys", JPATH_PLUGINS . '/editors/' . $value, null, false, true);
+ $lang->load($title . '.sys');
+
+ return JText::_($title);
+ }
+ else
+ {
+ return static::value('');
+ }
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php.evidence.json
new file mode 100644
index 0000000..16d383b
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7283",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/helpers/html/users.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/html/users.php)",
+ "original_sha256": "cb229ad16ba915a20aa22c49f2b5863cb4079cb5ce5fb3975b07b5caa161e786",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 4500,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/helpers/html/users.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php
new file mode 100644
index 0000000..18f89b3
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php
@@ -0,0 +1,309 @@
+router = $router;
+ }
+
+ /**
+ * Preprocess the route for the com_users component
+ *
+ * @param array &$query An array of URL arguments
+ *
+ * @return void
+ *
+ * @since 3.6
+ * @deprecated 4.0
+ */
+ public function preprocess(&$query)
+ {
+ }
+
+ /**
+ * Build the route for the com_users component
+ *
+ * @param array &$query An array of URL arguments
+ * @param array &$segments The URL arguments to use to assemble the subsequent URL.
+ *
+ * @return void
+ *
+ * @since 3.6
+ * @deprecated 4.0
+ */
+ public function build(&$query, &$segments)
+ {
+ // Declare static variables.
+ static $items;
+ static $default;
+ static $registration;
+ static $profile;
+ static $login;
+ static $remind;
+ static $resend;
+ static $reset;
+
+ // Get the relevant menu items if not loaded.
+ if (empty($items))
+ {
+ // Get all relevant menu items.
+ $items = $this->router->menu->getItems('component', 'com_users');
+
+ // Build an array of serialized query strings to menu item id mappings.
+ foreach ($items as $item)
+ {
+ if (empty($item->query['view']))
+ {
+ continue;
+ }
+
+ // Check to see if we have found the resend menu item.
+ if (empty($resend) && $item->query['view'] === 'resend')
+ {
+ $resend = $item->id;
+
+ continue;
+ }
+
+ // Check to see if we have found the reset menu item.
+ if (empty($reset) && $item->query['view'] === 'reset')
+ {
+ $reset = $item->id;
+
+ continue;
+ }
+
+ // Check to see if we have found the remind menu item.
+ if (empty($remind) && $item->query['view'] === 'remind')
+ {
+ $remind = $item->id;
+
+ continue;
+ }
+
+ // Check to see if we have found the login menu item.
+ if (empty($login) && $item->query['view'] === 'login')
+ {
+ $login = $item->id;
+
+ continue;
+ }
+
+ // Check to see if we have found the registration menu item.
+ if (empty($registration) && $item->query['view'] === 'registration')
+ {
+ $registration = $item->id;
+
+ continue;
+ }
+
+ // Check to see if we have found the profile menu item.
+ if (empty($profile) && $item->query['view'] === 'profile')
+ {
+ $profile = $item->id;
+ }
+ }
+
+ // Set the default menu item to use for com_users if possible.
+ if ($profile)
+ {
+ $default = $profile;
+ }
+ elseif ($registration)
+ {
+ $default = $registration;
+ }
+ elseif ($login)
+ {
+ $default = $login;
+ }
+ }
+
+ if (!empty($query['view']))
+ {
+ switch ($query['view'])
+ {
+ case 'reset':
+ if ($query['Itemid'] = $reset)
+ {
+ unset($query['view']);
+ }
+ else
+ {
+ $query['Itemid'] = $default;
+ }
+ break;
+
+ case 'resend':
+ if ($query['Itemid'] = $resend)
+ {
+ unset($query['view']);
+ }
+ else
+ {
+ $query['Itemid'] = $default;
+ }
+ break;
+
+ case 'remind':
+ if ($query['Itemid'] = $remind)
+ {
+ unset($query['view']);
+ }
+ else
+ {
+ $query['Itemid'] = $default;
+ }
+ break;
+
+ case 'login':
+ if ($query['Itemid'] = $login)
+ {
+ unset($query['view']);
+ }
+ else
+ {
+ $query['Itemid'] = $default;
+ }
+ break;
+
+ case 'registration':
+ if ($query['Itemid'] = $registration)
+ {
+ unset($query['view']);
+ }
+ else
+ {
+ $query['Itemid'] = $default;
+ }
+ break;
+
+ default:
+ case 'profile':
+ if (!empty($query['view']))
+ {
+ $segments[] = $query['view'];
+ }
+
+ unset($query['view']);
+
+ if ($query['Itemid'] = $profile)
+ {
+ unset($query['view']);
+ }
+ else
+ {
+ $query['Itemid'] = $default;
+ }
+
+ // Only append the user id if not "me".
+ $user = JFactory::getUser();
+
+ if (!empty($query['user_id']) && ($query['user_id'] != $user->id))
+ {
+ $segments[] = $query['user_id'];
+ }
+
+ unset($query['user_id']);
+
+ break;
+ }
+ }
+
+ $total = count($segments);
+
+ for ($i = 0; $i < $total; $i++)
+ {
+ $segments[$i] = str_replace(':', '-', $segments[$i]);
+ }
+ }
+
+ /**
+ * Parse the segments of a URL.
+ *
+ * @param array &$segments The segments of the URL to parse.
+ * @param array &$vars The URL attributes to be used by the application.
+ *
+ * @return void
+ *
+ * @since 3.6
+ * @deprecated 4.0
+ */
+ public function parse(&$segments, &$vars)
+ {
+ $total = count($segments);
+
+ for ($i = 0; $i < $total; $i++)
+ {
+ $segments[$i] = preg_replace('/-/', ':', $segments[$i], 1);
+ }
+
+ // Only run routine if there are segments to parse.
+ if (count($segments) < 1)
+ {
+ return;
+ }
+
+ // Get the package from the route segments.
+ $userId = array_pop($segments);
+
+ if (!is_numeric($userId))
+ {
+ $vars['view'] = 'profile';
+
+ return;
+ }
+
+ if (is_numeric($userId))
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true)
+ ->select($db->quoteName('id'))
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('id') . ' = ' . (int) $userId);
+ $db->setQuery($query);
+ $userId = $db->loadResult();
+ }
+
+ // Set the package id if present.
+ if ($userId)
+ {
+ // Set the package id.
+ $vars['user_id'] = (int) $userId;
+
+ // Set the view to package if not already set.
+ if (empty($vars['view']))
+ {
+ $vars['view'] = 'profile';
+ }
+ }
+ else
+ {
+ JError::raiseError(404, JText::_('JGLOBAL_RESOURCE_NOT_FOUND'));
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php.evidence.json
new file mode 100644
index 0000000..5bf4c99
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7281",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/helpers/legacyrouter.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/legacyrouter.php)",
+ "original_sha256": "e25f6683f53657c5f1f0f03e80126eb3acbc3b270dd26f3bcd8e16fc72f72343",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 6013,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/helpers/legacyrouter.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php
new file mode 100644
index 0000000..3fe0322
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php
@@ -0,0 +1,199 @@
+getMenu()->getItems('component_id', $component->id);
+
+ // If no items found, set to empty array.
+ if (!$items)
+ {
+ $items = array();
+ }
+ }
+
+ return $items;
+ }
+
+ /**
+ * Method to get a route configuration for the login view.
+ *
+ * @return mixed Integer menu id on success, null on failure.
+ *
+ * @since 1.6
+ * @deprecated 4.0
+ */
+ public static function getLoginRoute()
+ {
+ // Get the items.
+ $items = self::getItems();
+
+ // Search for a suitable menu id.
+ foreach ($items as $item)
+ {
+ if (isset($item->query['view']) && $item->query['view'] === 'login')
+ {
+ return $item->id;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Method to get a route configuration for the profile view.
+ *
+ * @return mixed Integer menu id on success, null on failure.
+ *
+ * @since 1.6
+ * @deprecated 4.0
+ */
+ public static function getProfileRoute()
+ {
+ // Get the items.
+ $items = self::getItems();
+
+ // Search for a suitable menu id.
+ // Menu link can only go to users own profile.
+
+ foreach ($items as $item)
+ {
+ if (isset($item->query['view']) && $item->query['view'] === 'profile')
+ {
+ return $item->id;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Method to get a route configuration for the registration view.
+ *
+ * @return mixed Integer menu id on success, null on failure.
+ *
+ * @since 1.6
+ * @deprecated 4.0
+ */
+ public static function getRegistrationRoute()
+ {
+ // Get the items.
+ $items = self::getItems();
+
+ // Search for a suitable menu id.
+ foreach ($items as $item)
+ {
+ if (isset($item->query['view']) && $item->query['view'] === 'registration')
+ {
+ return $item->id;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Method to get a route configuration for the remind view.
+ *
+ * @return mixed Integer menu id on success, null on failure.
+ *
+ * @since 1.6
+ * @deprecated 4.0
+ */
+ public static function getRemindRoute()
+ {
+ // Get the items.
+ $items = self::getItems();
+
+ // Search for a suitable menu id.
+ foreach ($items as $item)
+ {
+ if (isset($item->query['view']) && $item->query['view'] === 'remind')
+ {
+ return $item->id;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Method to get a route configuration for the resend view.
+ *
+ * @return mixed Integer menu id on success, null on failure.
+ *
+ * @since 1.6
+ * @deprecated 4.0
+ */
+ public static function getResendRoute()
+ {
+ // Get the items.
+ $items = self::getItems();
+
+ // Search for a suitable menu id.
+ foreach ($items as $item)
+ {
+ if (isset($item->query['view']) && $item->query['view'] === 'resend')
+ {
+ return $item->id;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Method to get a route configuration for the reset view.
+ *
+ * @return mixed Integer menu id on success, null on failure.
+ *
+ * @since 1.6
+ * @deprecated 4.0
+ */
+ public static function getResetRoute()
+ {
+ // Get the items.
+ $items = self::getItems();
+
+ // Search for a suitable menu id.
+ foreach ($items as $item)
+ {
+ if (isset($item->query['view']) && $item->query['view'] === 'reset')
+ {
+ return $item->id;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php.evidence.json
new file mode 100644
index 0000000..ae2cfa2
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7282",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/helpers/route.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/helpers/route.php)",
+ "original_sha256": "2f2d92b287b854fc6ad31c8168badc5938e39bec1f8b6202d4df348cd23a23f0",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 3867,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/helpers/route.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php b/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php
new file mode 100644
index 0000000..765f5bf
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php
@@ -0,0 +1,60 @@
+ 'auto', 'relative' => true));
+}
+
+$class = empty($options['class']) ? '' : ' ' . $options['class'];
+$rel = empty($options['rel']) ? '' : ' ' . $options['rel'];
+
+/**
+ * @TODO:
+ *
+ * As mentioned in #8473 (https://github.com/joomla/joomla-cms/pull/8473), ...
+ * as long as we cannot access the field properties properly, this seems to
+ * be the way to go for now.
+ *
+ * On a side note: Parsing html is seldom a good idea.
+ * https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454
+ */
+preg_match('/class=\"([^\"]+)\"/i', $input, $match);
+
+$required = (strpos($input, 'aria-required="true"') !== false || (!empty($match[1]) && strpos($match[1], 'required') !== false));
+$typeOfSpacer = (strpos($label, 'spacer-lbl') !== false);
+
+?>
+
+
>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php.evidence.json
new file mode 100644
index 0000000..2e4d205
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7284",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/layouts/joomla/form/renderfield.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/layouts/joomla/form/renderfield.php)",
+ "original_sha256": "767cc86103a71d15914e028fc231d5b48ffb5cdc5bf6ab8ecc3e22bb73d9190b",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1642534578,
+ "size": 1957,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/layouts/joomla/form/renderfield.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml
new file mode 100644
index 0000000..eae3bb7
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml
@@ -0,0 +1,92 @@
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml.evidence.json
new file mode 100644
index 0000000..7f249fe
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7278",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/forms/profile.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/profile.xml)",
+ "original_sha256": "6f217de7628ab4c162bef301a62851bd90557bc43062783410df850901f536ba",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 1914,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/forms/profile.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml
new file mode 100644
index 0000000..8cf8c2a
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml
@@ -0,0 +1,99 @@
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml.evidence.json
new file mode 100644
index 0000000..16589f1
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7277",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/forms/registration.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/forms/registration.xml)",
+ "original_sha256": "d8d90d9badd444b08bd7243d3621f6af3feaee137523c212b5b883883f805b7e",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1541586989,
+ "size": 2079,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/forms/registration.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php
new file mode 100644
index 0000000..a916e4b
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php
@@ -0,0 +1,112 @@
+loadForm('com_users.login', 'login', array('load_data' => $loadData));
+
+ if (empty($form))
+ {
+ return false;
+ }
+
+ return $form;
+ }
+
+ /**
+ * Method to get the data that should be injected in the form.
+ *
+ * @return array The default data is an empty array.
+ *
+ * @since 1.6
+ */
+ protected function loadFormData()
+ {
+ // Check the session for previously entered login form data.
+ $app = JFactory::getApplication();
+ $data = $app->getUserState('users.login.form.data', array());
+
+ $input = $app->input->getInputForRequestMethod();
+
+ // Check for return URL from the request first
+ if ($return = $input->get('return', '', 'BASE64'))
+ {
+ $data['return'] = base64_decode($return);
+
+ if (!JUri::isInternal($data['return']))
+ {
+ $data['return'] = '';
+ }
+ }
+
+ $app->setUserState('users.login.form.data', $data);
+
+ $this->preprocessData('com_users.login', $data);
+
+ return $data;
+ }
+
+ /**
+ * Method to auto-populate the model state.
+ *
+ * Calling getState in this method will result in recursion.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ protected function populateState()
+ {
+ // Get the application object.
+ $params = JFactory::getApplication()->getParams('com_users');
+
+ // Load the parameters.
+ $this->setState('params', $params);
+ }
+
+ /**
+ * Override JModelAdmin::preprocessForm to ensure the correct plugin group is loaded.
+ *
+ * @param JForm $form A JForm object.
+ * @param mixed $data The data expected for the form.
+ * @param string $group The name of the plugin group to import (defaults to "content").
+ *
+ * @return void
+ *
+ * @since 1.6
+ * @throws Exception if there is an error in the form event.
+ */
+ protected function preprocessForm(JForm $form, $data, $group = 'user')
+ {
+ parent::preprocessForm($form, $data, $group);
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php.evidence.json
new file mode 100644
index 0000000..5a4d6a6
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7272",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/login.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/login.php)",
+ "original_sha256": "1bd545c9d69235efbd0ca01aa8e3fee5c0416f9d7e57647314f029d01c7bcb75",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 2737,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/login.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php
new file mode 100644
index 0000000..a987b61
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php
@@ -0,0 +1,445 @@
+ array('validate' => 'user')
+ ), $config
+ );
+
+ parent::__construct($config);
+
+ // Load the helper and model used for two factor authentication
+ JLoader::register('UsersModelUser', JPATH_ADMINISTRATOR . '/components/com_users/models/user.php');
+ JLoader::register('UsersHelper', JPATH_ADMINISTRATOR . '/components/com_users/helpers/users.php');
+ }
+
+ /**
+ * Method to check in a user.
+ *
+ * @param integer $userId The id of the row to check out.
+ *
+ * @return boolean True on success, false on failure.
+ *
+ * @since 1.6
+ */
+ public function checkin($userId = null)
+ {
+ // Get the user id.
+ $userId = (!empty($userId)) ? $userId : (int) $this->getState('user.id');
+
+ if ($userId)
+ {
+ // Initialise the table with JUser.
+ $table = JTable::getInstance('User');
+
+ // Attempt to check the row in.
+ if (!$table->checkin($userId))
+ {
+ $this->setError($table->getError());
+
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Method to check out a user for editing.
+ *
+ * @param integer $userId The id of the row to check out.
+ *
+ * @return boolean True on success, false on failure.
+ *
+ * @since 1.6
+ */
+ public function checkout($userId = null)
+ {
+ // Get the user id.
+ $userId = (!empty($userId)) ? $userId : (int) $this->getState('user.id');
+
+ if ($userId)
+ {
+ // Initialise the table with JUser.
+ $table = JTable::getInstance('User');
+
+ // Get the current user object.
+ $user = JFactory::getUser();
+
+ // Attempt to check the row out.
+ if (!$table->checkout($user->get('id'), $userId))
+ {
+ $this->setError($table->getError());
+
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Method to get the profile form data.
+ *
+ * The base form data is loaded and then an event is fired
+ * for users plugins to extend the data.
+ *
+ * @return mixed Data object on success, false on failure.
+ *
+ * @since 1.6
+ */
+ public function getData()
+ {
+ if ($this->data === null)
+ {
+ $userId = $this->getState('user.id');
+
+ // Initialise the table with JUser.
+ $this->data = new JUser($userId);
+
+ // Set the base user data.
+ $this->data->email1 = $this->data->get('email');
+ $this->data->email2 = $this->data->get('email');
+
+ // Override the base user data with any data in the session.
+ $temp = (array) JFactory::getApplication()->getUserState('com_users.edit.profile.data', array());
+
+ foreach ($temp as $k => $v)
+ {
+ $this->data->$k = $v;
+ }
+
+ // Unset the passwords.
+ unset($this->data->password1, $this->data->password2);
+
+ $registry = new Registry($this->data->params);
+ $this->data->params = $registry->toArray();
+ }
+
+ return $this->data;
+ }
+
+ /**
+ * Method to get the profile form.
+ *
+ * The base form is loaded from XML and then an event is fired
+ * for users plugins to extend the form with extra fields.
+ *
+ * @param array $data An optional array of data for the form to interogate.
+ * @param boolean $loadData True if the form is to load its own data (default case), false if not.
+ *
+ * @return JForm A JForm object on success, false on failure
+ *
+ * @since 1.6
+ */
+ public function getForm($data = array(), $loadData = true)
+ {
+ // Get the form.
+ $form = $this->loadForm('com_users.profile', 'profile', array('control' => 'jform', 'load_data' => $loadData));
+
+ if (empty($form))
+ {
+ return false;
+ }
+
+ // Check for username compliance and parameter set
+ $isUsernameCompliant = true;
+ $username = $loadData ? $form->getValue('username') : $this->loadFormData()->username;
+
+ if ($username)
+ {
+ $isUsernameCompliant = !(preg_match('#[<>"\'%;()&\\\\]|\\.\\./#', $username) || strlen(utf8_decode($username)) < 2
+ || trim($username) !== $username);
+ }
+
+ $this->setState('user.username.compliant', $isUsernameCompliant);
+
+ if ($isUsernameCompliant && !JComponentHelper::getParams('com_users')->get('change_login_name'))
+ {
+ $form->setFieldAttribute('username', 'class', '');
+ $form->setFieldAttribute('username', 'filter', '');
+ $form->setFieldAttribute('username', 'description', 'COM_USERS_PROFILE_NOCHANGE_USERNAME_DESC');
+ $form->setFieldAttribute('username', 'validate', '');
+ $form->setFieldAttribute('username', 'message', '');
+ $form->setFieldAttribute('username', 'readonly', 'true');
+ $form->setFieldAttribute('username', 'required', 'false');
+ }
+
+ // When multilanguage is set, a user's default site language should also be a Content Language
+ if (JLanguageMultilang::isEnabled())
+ {
+ $form->setFieldAttribute('language', 'type', 'frontend_language', 'params');
+ }
+
+ // If the user needs to change their password, mark the password fields as required
+ if (JFactory::getUser()->requireReset)
+ {
+ $form->setFieldAttribute('password1', 'required', 'true');
+ $form->setFieldAttribute('password2', 'required', 'true');
+ }
+
+ return $form;
+ }
+
+ /**
+ * Method to get the data that should be injected in the form.
+ *
+ * @return mixed The data for the form.
+ *
+ * @since 1.6
+ */
+ protected function loadFormData()
+ {
+ $data = $this->getData();
+
+ $this->preprocessData('com_users.profile', $data, 'user');
+
+ return $data;
+ }
+
+ /**
+ * Override preprocessForm to load the user plugin group instead of content.
+ *
+ * @param JForm $form A JForm object.
+ * @param mixed $data The data expected for the form.
+ * @param string $group The name of the plugin group to import (defaults to "content").
+ *
+ * @return void
+ *
+ * @throws Exception if there is an error in the form event.
+ *
+ * @since 1.6
+ */
+ protected function preprocessForm(JForm $form, $data, $group = 'user')
+ {
+ if (JComponentHelper::getParams('com_users')->get('frontend_userparams'))
+ {
+ $form->loadFile('frontend', false);
+
+ if (JFactory::getUser()->authorise('core.login.admin'))
+ {
+ $form->loadFile('frontend_admin', false);
+ }
+ }
+
+ parent::preprocessForm($form, $data, $group);
+ }
+
+ /**
+ * Method to auto-populate the model state.
+ *
+ * Note. Calling getState in this method will result in recursion.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ protected function populateState()
+ {
+ // Get the application object.
+ $params = JFactory::getApplication()->getParams('com_users');
+
+ // Get the user id.
+ $userId = JFactory::getApplication()->getUserState('com_users.edit.profile.id');
+ $userId = !empty($userId) ? $userId : (int) JFactory::getUser()->get('id');
+
+ // Set the user id.
+ $this->setState('user.id', $userId);
+
+ // Load the parameters.
+ $this->setState('params', $params);
+ }
+
+ /**
+ * Method to save the form data.
+ *
+ * @param array $data The form data.
+ *
+ * @return mixed The user id on success, false on failure.
+ *
+ * @since 1.6
+ */
+ public function save($data)
+ {
+ $userId = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('user.id');
+
+ $user = new JUser($userId);
+
+ // Prepare the data for the user object.
+ $data['email'] = JStringPunycode::emailToPunycode($data['email1']);
+ $data['password'] = $data['password1'];
+
+ // Unset the username if it should not be overwritten
+ $isUsernameCompliant = $this->getState('user.username.compliant');
+
+ if ($isUsernameCompliant && !JComponentHelper::getParams('com_users')->get('change_login_name'))
+ {
+ unset($data['username']);
+ }
+
+ // Unset block and sendEmail so they do not get overwritten
+ unset($data['block'], $data['sendEmail']);
+
+ // Handle the two factor authentication setup
+ if (array_key_exists('twofactor', $data))
+ {
+ $model = new UsersModelUser;
+
+ $twoFactorMethod = $data['twofactor']['method'];
+
+ // Get the current One Time Password (two factor auth) configuration
+ $otpConfig = $model->getOtpConfig($userId);
+
+ if ($twoFactorMethod !== 'none')
+ {
+ // Run the plugins
+ FOFPlatform::getInstance()->importPlugin('twofactorauth');
+ $otpConfigReplies = FOFPlatform::getInstance()->runPlugins('onUserTwofactorApplyConfiguration', array($twoFactorMethod));
+
+ // Look for a valid reply
+ foreach ($otpConfigReplies as $reply)
+ {
+ if (!is_object($reply) || empty($reply->method) || ($reply->method != $twoFactorMethod))
+ {
+ continue;
+ }
+
+ $otpConfig->method = $reply->method;
+ $otpConfig->config = $reply->config;
+
+ break;
+ }
+
+ // Save OTP configuration.
+ $model->setOtpConfig($userId, $otpConfig);
+
+ // Generate one time emergency passwords if required (depleted or not set)
+ if (empty($otpConfig->otep))
+ {
+ $model->generateOteps($userId);
+ }
+ }
+ else
+ {
+ $otpConfig->method = 'none';
+ $otpConfig->config = array();
+ $model->setOtpConfig($userId, $otpConfig);
+ }
+
+ // Unset the raw data
+ unset($data['twofactor']);
+
+ // Reload the user record with the updated OTP configuration
+ $user->load($userId);
+ }
+
+ // Bind the data.
+ if (!$user->bind($data))
+ {
+ $this->setError(JText::sprintf('COM_USERS_PROFILE_BIND_FAILED', $user->getError()));
+
+ return false;
+ }
+
+ // Load the users plugin group.
+ JPluginHelper::importPlugin('user');
+
+ // Retrieve the user groups so they don't get overwritten
+ unset($user->groups);
+ $user->groups = JAccess::getGroupsByUser($user->id, false);
+
+ // Store the data.
+ if (!$user->save())
+ {
+ $this->setError($user->getError());
+
+ return false;
+ }
+
+ // Some contexts may not use tags data at all, so we allow callers to disable loading tag data
+ if ($this->getState('load_tags', true))
+ {
+ $user->tags = new JHelperTags;
+ $user->tags->getTagIds($user->id, 'com_users.user');
+ }
+
+ return $user->id;
+ }
+
+ /**
+ * Gets the configuration forms for all two-factor authentication methods
+ * in an array.
+ *
+ * @param integer $user_id The user ID to load the forms for (optional)
+ *
+ * @return array
+ *
+ * @since 3.2
+ */
+ public function getTwofactorform($user_id = null)
+ {
+ $user_id = (!empty($user_id)) ? $user_id : (int) $this->getState('user.id');
+
+ $model = new UsersModelUser;
+
+ $otpConfig = $model->getOtpConfig($user_id);
+
+ FOFPlatform::getInstance()->importPlugin('twofactorauth');
+
+ return FOFPlatform::getInstance()->runPlugins('onUserTwofactorShowConfiguration', array($otpConfig, $user_id));
+ }
+
+ /**
+ * Returns the one time password (OTP) – a.k.a. two factor authentication –
+ * configuration for a particular user.
+ *
+ * @param integer $user_id The numeric ID of the user
+ *
+ * @return stdClass An object holding the OTP configuration for this user
+ *
+ * @since 3.2
+ */
+ public function getOtpConfig($user_id = null)
+ {
+ $user_id = (!empty($user_id)) ? $user_id : (int) $this->getState('user.id');
+
+ $model = new UsersModelUser;
+
+ return $model->getOtpConfig($user_id);
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php.evidence.json
new file mode 100644
index 0000000..e22702e
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7276",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/profile.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/profile.php)",
+ "original_sha256": "9120583bc9b1fc6d5c5b7a81fdd14c2d18250715cc89c672b743038cd62f7682",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 11442,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/profile.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php
new file mode 100644
index 0000000..bf522c0
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php
@@ -0,0 +1,773 @@
+ array('validate' => 'user')
+ ),
+ $config
+ );
+
+ parent::__construct($config);
+ }
+
+ /**
+ * Method to activate a user account.
+ *
+ * @param string $token The activation token.
+ *
+ * @return mixed False on failure, user object on success.
+ *
+ * @since 1.6
+ */
+ public function activate($token)
+ {
+ $config = JFactory::getConfig();
+ $userParams = JComponentHelper::getParams('com_users');
+ $db = $this->getDbo();
+
+ // Get the user id based on the token.
+ $query = $db->getQuery(true);
+ $query->select($db->quoteName('id'))
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('activation') . ' = ' . $db->quote($token))
+ ->where($db->quoteName('block') . ' = ' . 1)
+ ->where($db->quoteName('lastvisitDate') . ' = ' . $db->quote($db->getNullDate()));
+ $db->setQuery($query);
+
+ try {
+ $userId = (int) $db->loadResult();
+ } catch (RuntimeException $e) {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+
+ // Check for a valid user id.
+ if (!$userId) {
+ $this->setError(JText::_('COM_USERS_ACTIVATION_TOKEN_NOT_FOUND'));
+
+ return false;
+ }
+
+ // Load the users plugin group.
+ JPluginHelper::importPlugin('user');
+
+ // Activate the user.
+ $user = JFactory::getUser($userId);
+
+ // Admin activation is on and user is verifying their email
+ if (($userParams->get('useractivation') == 2) && !$user->getParam('activate', 0)) {
+ $uri = JUri::getInstance();
+
+ // Compile the admin notification mail values.
+ $data = $user->getProperties();
+ $data['activation'] = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
+ $user->set('activation', $data['activation']);
+ $data['siteurl'] = JUri::base();
+ $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
+ $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
+
+ // Remove administrator/ from activate URL in case this method is called from admin
+ if (JFactory::getApplication()->isClient('administrator')) {
+ $adminPos = strrpos($data['activate'], 'administrator/');
+ $data['activate'] = substr_replace($data['activate'], '', $adminPos, 14);
+ }
+
+ $data['fromname'] = $config->get('fromname');
+ $data['mailfrom'] = $config->get('mailfrom');
+ $data['sitename'] = $config->get('sitename');
+ $user->setParam('activate', 1);
+ $emailSubject = JText::sprintf(
+ 'COM_USERS_EMAIL_ACTIVATE_WITH_ADMIN_ACTIVATION_SUBJECT',
+ $data['name'],
+ $data['sitename']
+ );
+
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_ACTIVATE_WITH_ADMIN_ACTIVATION_BODY',
+ $data['sitename'],
+ $data['name'],
+ $data['email'],
+ $data['username'],
+ $data['activate']
+ );
+
+ // Get all admin users
+ $query->clear()
+ ->select($db->quoteName(array('name', 'email', 'sendEmail', 'id')))
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('sendEmail') . ' = 1')
+ ->where($db->quoteName('block') . ' = 0');
+
+ $db->setQuery($query);
+
+ try {
+ $rows = $db->loadObjectList();
+ } catch (RuntimeException $e) {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+
+ // Send mail to all users with users creating permissions and receiving system emails
+ foreach ($rows as $row) {
+ $usercreator = JFactory::getUser($row->id);
+
+ if ($usercreator->authorise('core.create', 'com_users')) {
+ $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $row->email, $emailSubject, $emailBody);
+
+ // Check for an error.
+ if ($return !== true) {
+ $this->setError(JText::_('COM_USERS_REGISTRATION_ACTIVATION_NOTIFY_SEND_MAIL_FAILED'));
+
+ return false;
+ }
+ }
+ }
+ }
+ // Admin activation is on and admin is activating the account
+ elseif (($userParams->get('useractivation') == 2) && $user->getParam('activate', 0)) {
+ $user->set('activation', '');
+ $user->set('block', '0');
+
+ // Compile the user activated notification mail values.
+ $data = $user->getProperties();
+ $user->setParam('activate', 0);
+ $data['fromname'] = $config->get('fromname');
+ $data['mailfrom'] = $config->get('mailfrom');
+ $data['sitename'] = $config->get('sitename');
+ $data['siteurl'] = JUri::base();
+ $emailSubject = JText::sprintf(
+ 'COM_USERS_EMAIL_ACTIVATED_BY_ADMIN_ACTIVATION_SUBJECT',
+ $data['name'],
+ $data['sitename']
+ );
+
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_ACTIVATED_BY_ADMIN_ACTIVATION_BODY',
+ $data['name'],
+ $data['siteurl'],
+ $data['username']
+ );
+
+ $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
+
+ // Check for an error.
+ if ($return !== true) {
+ $this->setError(JText::_('COM_USERS_REGISTRATION_ACTIVATION_NOTIFY_SEND_MAIL_FAILED'));
+
+ return false;
+ }
+ } else {
+ $user->set('activation', '');
+ $user->set('block', '0');
+ }
+
+ // Store the user object.
+ if (!$user->save()) {
+ $this->setError(JText::sprintf('COM_USERS_REGISTRATION_ACTIVATION_SAVE_FAILED', $user->getError()));
+
+ return false;
+ }
+
+ return $user;
+ }
+
+ /**
+ * Method to get the registration form data.
+ *
+ * The base form data is loaded and then an event is fired
+ * for users plugins to extend the data.
+ *
+ * @return mixed Data object on success, false on failure.
+ *
+ * @since 1.6
+ */
+ public function getData()
+ {
+ if ($this->data === null) {
+ $this->data = new stdClass;
+ $app = JFactory::getApplication();
+ $params = JComponentHelper::getParams('com_users');
+
+ // Override the base user data with any data in the session.
+ $temp = (array) $app->getUserState('com_users.registration.data', array());
+
+ // Don't load the data in this getForm call, or we'll call ourself
+ $form = $this->getForm(array(), false);
+
+ foreach ($temp as $k => $v) {
+ // Here we could have a grouped field, let's check it
+ if (is_array($v)) {
+ $this->data->$k = new stdClass;
+
+ foreach ($v as $key => $val) {
+ if ($form->getField($key, $k) !== false) {
+ $this->data->$k->$key = $val;
+ }
+ }
+ }
+ // Only merge the field if it exists in the form.
+ elseif ($form->getField($k) !== false) {
+ $this->data->$k = $v;
+ }
+ }
+
+ // Get the groups the user should be added to after registration.
+ $this->data->groups = array();
+
+ // Get the default new user group, Registered if not specified.
+ $system = $params->get('new_usertype', 2);
+
+ $this->data->groups[] = $system;
+
+ // Unset the passwords.
+ unset($this->data->password1, $this->data->password2);
+
+ // Get the dispatcher and load the users plugins.
+ $dispatcher = JEventDispatcher::getInstance();
+ JPluginHelper::importPlugin('user');
+
+ // Trigger the data preparation event.
+ $results = $dispatcher->trigger('onContentPrepareData', array('com_users.registration', $this->data));
+
+ // Check for errors encountered while preparing the data.
+ if (count($results) && in_array(false, $results, true)) {
+ $this->setError($dispatcher->getError());
+ $this->data = false;
+ }
+ }
+
+ return $this->data;
+ }
+
+ /**
+ * Method to get the registration form.
+ *
+ * The base form is loaded from XML and then an event is fired
+ * for users plugins to extend the form with extra fields.
+ *
+ * @param array $data An optional array of data for the form to interogate.
+ * @param boolean $loadData True if the form is to load its own data (default case), false if not.
+ *
+ * @return JForm A JForm object on success, false on failure
+ *
+ * @since 1.6
+ */
+ public function getForm($data = array(), $loadData = true)
+ {
+ // Get the form.
+ $form = $this->loadForm('com_users.registration', 'registration', array('control' => 'jform', 'load_data' => $loadData));
+
+ if (empty($form)) {
+ return false;
+ }
+
+ // When multilanguage is set, a user's default site language should also be a Content Language
+ if (JLanguageMultilang::isEnabled()) {
+ $form->setFieldAttribute('language', 'type', 'frontend_language', 'params');
+ }
+
+ return $form;
+ }
+
+ /**
+ * Method to get the data that should be injected in the form.
+ *
+ * @return mixed The data for the form.
+ *
+ * @since 1.6
+ */
+ protected function loadFormData()
+ {
+ $data = $this->getData();
+
+ if (JLanguageMultilang::isEnabled() && empty($data->language)) {
+ $data->language = JFactory::getLanguage()->getTag();
+ }
+
+ $this->preprocessData('com_users.registration', $data);
+
+ return $data;
+ }
+
+ /**
+ * Override preprocessForm to load the user plugin group instead of content.
+ *
+ * @param JForm $form A JForm object.
+ * @param mixed $data The data expected for the form.
+ * @param string $group The name of the plugin group to import (defaults to "content").
+ *
+ * @return void
+ *
+ * @since 1.6
+ * @throws Exception if there is an error in the form event.
+ */
+ protected function preprocessForm(JForm $form, $data, $group = 'user')
+ {
+ $userParams = JComponentHelper::getParams('com_users');
+
+ // Add the choice for site language at registration time
+ if ($userParams->get('site_language') == 1 && $userParams->get('frontend_userparams') == 1) {
+ $form->loadFile('sitelang', false);
+ }
+
+ parent::preprocessForm($form, $data, $group);
+ }
+
+ /**
+ * Method to auto-populate the model state.
+ *
+ * Note. Calling getState in this method will result in recursion.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ protected function populateState()
+ {
+ // Get the application object.
+ $app = JFactory::getApplication();
+ $params = $app->getParams('com_users');
+
+ // Load the parameters.
+ $this->setState('params', $params);
+ }
+
+ /**
+ * Method to save the form data.
+ *
+ * @param array $temp The form data.
+ *
+ * @return mixed The user id on success, false on failure.
+ *
+ * @since 1.6
+ */
+ public function register($temp)
+ {
+ $params = JComponentHelper::getParams('com_users');
+
+ // Initialise the table with JUser.
+ $user = new JUser;
+ $data = (array) $this->getData();
+
+ // Merge in the registration data.
+ foreach ($temp as $k => $v) {
+ $data[$k] = $v;
+ }
+
+ // Prepare the data for the user object.
+ $data['email'] = JStringPunycode::emailToPunycode($data['email1']);
+ $data['name'] = $data['firstname']; // N.M. Az új registration form miatt kellett. Az emailben kiküldött név nem úgy jelent meg, ahogy kéne
+ $data['name'] .= ' ';
+ $data['name'] .= $data['lastname'];
+ $data['password'] = $data['password1'];
+ $useractivation = $params->get('useractivation');
+ $sendpassword = $params->get('sendpassword', 1);
+
+ // Check if the user needs to activate their account.
+ if (($useractivation == 1) || ($useractivation == 2)) {
+ $data['activation'] = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
+ $data['block'] = 1;
+ }
+
+ // Bind the data.
+ if (!$user->bind($data)) {
+ $this->setError(JText::sprintf('COM_USERS_REGISTRATION_BIND_FAILED', $user->getError()));
+
+ return false;
+ }
+
+ // Load the users plugin group.
+ JPluginHelper::importPlugin('user');
+
+ // Store the data.
+ if (!$user->save()) {
+ $this->setError(JText::sprintf('COM_USERS_REGISTRATION_SAVE_FAILED', $user->getError()));
+
+ return false;
+ }
+
+ $config = JFactory::getConfig();
+ $db = $this->getDbo();
+ $query = $db->getQuery(true);
+
+ // Compile the notification mail values.
+ $data = $user->getProperties();
+ $data['fromname'] = $config->get('fromname');
+ $data['mailfrom'] = $config->get('mailfrom');
+ $data['sitename'] = $config->get('sitename');
+ $data['siteurl'] = JUri::root();
+
+ // Handle account activation/confirmation emails.
+ if ($useractivation == 2) {
+ // Set the link to confirm the user email.
+ $uri = JUri::getInstance();
+ $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
+ $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
+
+ // Remove administrator/ from activate URL in case this method is called from admin
+ if (JFactory::getApplication()->isClient('administrator')) {
+ $adminPos = strrpos($data['activate'], 'administrator/');
+ $data['activate'] = substr_replace($data['activate'], '', $adminPos, 14);
+ }
+
+ $emailSubject = JText::sprintf(
+ 'COM_USERS_EMAIL_ACCOUNT_DETAILS',
+ $data['name'],
+ $data['sitename']
+ );
+
+ if ($sendpassword) {
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY',
+ $data['name'],
+ $data['sitename'],
+ $data['activate'],
+ $data['siteurl'],
+ $data['username'],
+ $data['password_clear']
+ );
+ } else {
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY_NOPW',
+ $data['name'],
+ $data['sitename'],
+ $data['activate'],
+ $data['siteurl'],
+ $data['username']
+ );
+ }
+ } elseif ($useractivation == 1) {
+ // Set the link to activate the user account.
+ $uri = JUri::getInstance();
+ $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
+ $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
+
+ // Remove administrator/ from activate URL in case this method is called from admin
+ if (JFactory::getApplication()->isClient('administrator')) {
+ $adminPos = strrpos($data['activate'], 'administrator/');
+ $data['activate'] = substr_replace($data['activate'], '', $adminPos, 14);
+ }
+
+ $emailSubject = JText::sprintf(
+ 'COM_USERS_EMAIL_ACCOUNT_DETAILS',
+ $data['name'],
+ $data['sitename']
+ );
+
+ if ($sendpassword) {
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY',
+ $data['name'],
+ $data['sitename'],
+ $data['activate'],
+ $data['siteurl'],
+ $data['username'],
+ $data['password_clear']
+ );
+ } else {
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY_NOPW',
+ $data['name'],
+ $data['sitename'],
+ $data['activate'],
+ $data['siteurl'],
+ $data['username']
+ );
+ }
+ } else {
+ $emailSubject = JText::sprintf(
+ 'COM_USERS_EMAIL_ACCOUNT_DETAILS',
+ $data['name'],
+ $data['sitename']
+ );
+
+ if ($sendpassword) {
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_BODY',
+ $data['name'],
+ $data['sitename'],
+ $data['siteurl'],
+ $data['username'],
+ $data['password_clear']
+ );
+ } else {
+ $emailBody = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_BODY_NOPW',
+ $data['name'],
+ $data['sitename'],
+ $data['siteurl']
+ );
+ }
+ }
+
+ // Send the registration email.
+ $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
+
+ // Send Notification mail to administrators
+ if (($params->get('useractivation') < 2) && ($params->get('mail_to_admin') == 1)) {
+ $emailSubject = JText::sprintf(
+ 'COM_USERS_EMAIL_ACCOUNT_DETAILS',
+ $data['name'],
+ $data['sitename']
+ );
+
+ $emailBodyAdmin = JText::sprintf(
+ 'COM_USERS_EMAIL_REGISTERED_NOTIFICATION_TO_ADMIN_BODY',
+ $data['name'],
+ $data['username'],
+ $data['siteurl']
+ );
+
+ // Get all admin users
+ $query->clear()
+ ->select($db->quoteName(array('name', 'email', 'sendEmail')))
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('sendEmail') . ' = 1')
+ ->where($db->quoteName('block') . ' = 0');
+
+ $db->setQuery($query);
+
+ try {
+ $rows = $db->loadObjectList();
+ } catch (RuntimeException $e) {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+
+ // Send mail to all superadministrators id
+ foreach ($rows as $row) {
+ $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $row->email, $emailSubject, $emailBodyAdmin);
+
+ // Check for an error.
+ if ($return !== true) {
+ $this->setError(JText::_('COM_USERS_REGISTRATION_ACTIVATION_NOTIFY_SEND_MAIL_FAILED'));
+
+ return false;
+ }
+ }
+ }
+
+ // Check for an error.
+ if ($return !== true) {
+ $this->setError(JText::_('COM_USERS_REGISTRATION_SEND_MAIL_FAILED'));
+
+ // Send a system message to administrators receiving system mails
+ $db = $this->getDbo();
+ $query->clear()
+ ->select($db->quoteName('id'))
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('block') . ' = ' . (int) 0)
+ ->where($db->quoteName('sendEmail') . ' = ' . (int) 1);
+ $db->setQuery($query);
+
+ try {
+ $userids = $db->loadColumn();
+ } catch (RuntimeException $e) {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+
+ if (count($userids) > 0) {
+ $jdate = new JDate;
+
+ // Build the query to add the messages
+ foreach ($userids as $userid) {
+ $values = array(
+ $db->quote($userid),
+ $db->quote($userid),
+ $db->quote($jdate->toSql()),
+ $db->quote(JText::_('COM_USERS_MAIL_SEND_FAILURE_SUBJECT')),
+ $db->quote(JText::sprintf('COM_USERS_MAIL_SEND_FAILURE_BODY', $return, $data['username']))
+ );
+ $query->clear()
+ ->insert($db->quoteName('#__messages'))
+ ->columns($db->quoteName(array('user_id_from', 'user_id_to', 'date_time', 'subject', 'message')))
+ ->values(implode(',', $values));
+ $db->setQuery($query);
+
+ try {
+ $db->execute();
+ } catch (RuntimeException $e) {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ if ($useractivation == 1) {
+ return 'useractivate';
+ } elseif ($useractivation == 2) {
+ return 'adminactivate';
+ } else {
+ return $user->id;
+ }
+ }
+
+ private function checkCaptcha($response)
+ {
+ $secret = '';
+
+ if ($_SERVER['SERVER_NAME'] == 'www.archline.hu')
+ $secret = '6Lc8nh8TAAAAALeRGLDbjsr7Rh1qpQJkYXYO-P50';
+ else
+ $secret = '6LeqnB8TAAAAAJTatP1dt8npqwDfJLz4_i9-rbNg';
+
+ $post_data = http_build_query(
+ array(
+ 'secret' => $secret,
+ 'response' => $response,
+ 'remoteip' => $_SERVER['REMOTE_ADDR']
+ )
+ );
+
+ $opts = array(
+ 'http' =>
+ array(
+ 'method' => 'POST',
+ 'header' => 'Content-type: application/x-www-form-urlencoded',
+ 'content' => $post_data
+ )
+ );
+
+ $context = stream_context_create($opts);
+
+ $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context);
+ $result = json_decode($response);
+
+ return $result->success;
+ }
+
+ private function phoneCorrect(&$phone)
+ {
+ $phone = str_replace('-', '', $phone);
+ $phone = str_replace(' ', '', $phone);
+ $phone = str_replace('+', '', $phone);
+ $phone = str_replace('/', '', $phone);
+ $phone = str_replace('.', '', $phone);
+ $phone = str_replace(' ', '', $phone);
+
+ return $phone;
+ }
+
+ public function registerWithARCHLine($temp, &$message)
+ {
+ if (!class_exists('crm_hardlock')) require_once(JPATH_BASE . "/common_cadline_libraries/crm_hardlock.class.php");
+
+ $resource = new Resource($temp['country']);
+
+ $captchaResult = $this->checkCaptcha($temp['captcha']);
+
+ if (!$captchaResult) {
+ $message = $resource->getDlgString('10947');
+ return false;
+ }
+
+ $query = "SELECT * FROM www_archline_hu.jml_users WHERE username = ? OR email = ?";
+ Database::getInstance()->query($query, array('ss', $temp['email'], $temp['email']));
+ $res = Database::getInstance()->fetchNext();
+
+ if (!empty($res)) {
+ $message = $resource->getDlgString('10789');
+ return false;
+ }
+
+ if ($temp['password'] != $temp['password2']) {
+ $message = $resource->getDlgString('10792');
+ return false;
+ }
+
+ // Initialise the table with JUser.
+ $user = new JUser;
+ $data = (array) $this->getData();
+
+ // Merge in the registration data.
+ foreach ($temp as $k => $v) {
+ $data[$k] = $v;
+ }
+
+ $user->bind($data);
+
+ if (!$user->save()) {
+ $message = JText::sprintf('COM_USERS_REGISTRATION_SAVE_FAILED', $user->getError());
+ return false;
+ }
+
+ $profile_phone = array(
+ 'user_id' => $user->id,
+ 'profile_key' => 'profile.phone',
+ 'profile_value' => $temp['phone'],
+ 'ordering' => 7
+ );
+
+ $profile_country = array(
+ 'user_id' => $user->id,
+ 'profile_key' => 'profile.country',
+ 'profile_value' => $temp['country'],
+ 'ordering' => 5
+ );
+
+ Database::getInstance()->insert('www_archline_hu.jml_user_profiles', $profile_phone, 'issi');
+ Database::getInstance()->insert('www_archline_hu.jml_user_profiles', $profile_country, 'issi');
+
+ $this->phoneCorrect($temp['phone']);
+
+ $query = "SELECT * FROM www_archline_hu.jml_users WHERE id = ?";
+ Database::getInstance()->query($query, array('i', $user->id));
+ $jmlUser = Database::getInstance()->fetchNext();
+
+ Database::getInstance()->update(
+ 'cl_hlusers.users',
+ array(
+ 'strTel' => $temp['phone'],
+ 'nCtrID' => $temp['country']
+ ),
+ array('nUserID' => $jmlUser['nUserID']),
+ 'sii'
+ );
+
+ $message = $resource->getDlgString('10793');
+ return $user->id;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php.evidence.json
new file mode 100644
index 0000000..b17cafe
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7275",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/registration.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/registration.php)",
+ "original_sha256": "36f98683f5d734fd65acabfd638da4bff54196ce0f4fc2574c23ab9ef9b66ba6",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1658220713,
+ "size": 22646,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/registration.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php
new file mode 100644
index 0000000..b0dfe86
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php
@@ -0,0 +1,198 @@
+loadForm('com_users.remind', 'remind', array('control' => 'jform', 'load_data' => $loadData));
+
+ if (empty($form))
+ {
+ return false;
+ }
+
+ return $form;
+ }
+
+ /**
+ * Override preprocessForm to load the user plugin group instead of content.
+ *
+ * @param JForm $form A JForm object.
+ * @param mixed $data The data expected for the form.
+ * @param string $group The name of the plugin group to import (defaults to "content").
+ *
+ * @return void
+ *
+ * @throws Exception if there is an error in the form event.
+ *
+ * @since 1.6
+ */
+ protected function preprocessForm(JForm $form, $data, $group = 'user')
+ {
+ parent::preprocessForm($form, $data, 'user');
+ }
+
+ /**
+ * Method to auto-populate the model state.
+ *
+ * Note. Calling getState in this method will result in recursion.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ protected function populateState()
+ {
+ // Get the application object.
+ $app = JFactory::getApplication();
+ $params = $app->getParams('com_users');
+
+ // Load the parameters.
+ $this->setState('params', $params);
+ }
+
+ /**
+ * Send the remind username email
+ *
+ * @param array $data Array with the data received from the form
+ *
+ * @return boolean
+ *
+ * @since 1.6
+ */
+ public function processRemindRequest($data)
+ {
+ // Get the form.
+ $form = $this->getForm();
+ $data['email'] = JStringPunycode::emailToPunycode($data['email']);
+
+ // Check for an error.
+ if (empty($form))
+ {
+ return false;
+ }
+
+ // Validate the data.
+ $data = $this->validate($form, $data);
+
+ // Check for an error.
+ if ($data instanceof Exception)
+ {
+ return false;
+ }
+
+ // Check the validation results.
+ if ($data === false)
+ {
+ // Get the validation messages from the form.
+ foreach ($form->getErrors() as $formError)
+ {
+ $this->setError($formError->getMessage());
+ }
+
+ return false;
+ }
+
+ // Find the user id for the given email address.
+ $db = $this->getDbo();
+ $query = $db->getQuery(true)
+ ->select('*')
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('email') . ' = ' . $db->quote($data['email']));
+
+ // Get the user id.
+ $db->setQuery($query);
+
+ try
+ {
+ $user = $db->loadObject();
+ }
+ catch (RuntimeException $e)
+ {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+
+ // Check for a user.
+ if (empty($user))
+ {
+ $this->setError(JText::_('COM_USERS_USER_NOT_FOUND'));
+
+ return false;
+ }
+
+ // Make sure the user isn't blocked.
+ if ($user->block)
+ {
+ $this->setError(JText::_('COM_USERS_USER_BLOCKED'));
+
+ return false;
+ }
+
+ $config = JFactory::getConfig();
+
+ // Assemble the login link.
+ $link = 'index.php?option=com_users&view=login';
+ $mode = $config->get('force_ssl', 0) == 2 ? 1 : (-1);
+
+ // Put together the email template data.
+ $data = ArrayHelper::fromObject($user);
+ $data['fromname'] = $config->get('fromname');
+ $data['mailfrom'] = $config->get('mailfrom');
+ $data['sitename'] = $config->get('sitename');
+ $data['link_text'] = JRoute::_($link, false, $mode);
+ $data['link_html'] = JRoute::_($link, true, $mode);
+
+ $subject = JText::sprintf(
+ 'COM_USERS_EMAIL_USERNAME_REMINDER_SUBJECT',
+ $data['sitename']
+ );
+ $body = JText::sprintf(
+ 'COM_USERS_EMAIL_USERNAME_REMINDER_BODY',
+ $data['sitename'],
+ $data['username'],
+ $data['link_text']
+ );
+
+ // Send the password reset request email.
+ $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $user->email, $subject, $body);
+
+ // Check for an error.
+ if ($return !== true)
+ {
+ $this->setError(JText::_('COM_USERS_MAIL_FAILED'), 500);
+
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php.evidence.json
new file mode 100644
index 0000000..d7b31c0
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7273",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/remind.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/remind.php)",
+ "original_sha256": "25d8b3522b7b6fc0456dda7a2cc346c94e9b3889f4180d32f3e3101998791f1a",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 4537,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/remind.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php
new file mode 100644
index 0000000..a67ab66
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php
@@ -0,0 +1,523 @@
+loadForm('com_users.reset_request', 'reset_request', array('control' => 'jform', 'load_data' => $loadData));
+
+ if (empty($form))
+ {
+ return false;
+ }
+
+ return $form;
+ }
+
+ /**
+ * Method to get the password reset complete form.
+ *
+ * @param array $data Data for the form.
+ * @param boolean $loadData True if the form is to load its own data (default case), false if not.
+ *
+ * @return JForm A JForm object on success, false on failure
+ *
+ * @since 1.6
+ */
+ public function getResetCompleteForm($data = array(), $loadData = true)
+ {
+ // Get the form.
+ $form = $this->loadForm('com_users.reset_complete', 'reset_complete', $options = array('control' => 'jform'));
+
+ if (empty($form))
+ {
+ return false;
+ }
+
+ return $form;
+ }
+
+ /**
+ * Method to get the password reset confirm form.
+ *
+ * @param array $data Data for the form.
+ * @param boolean $loadData True if the form is to load its own data (default case), false if not.
+ *
+ * @return JForm A JForm object on success, false on failure
+ *
+ * @since 1.6
+ */
+ public function getResetConfirmForm($data = array(), $loadData = true)
+ {
+ // Get the form.
+ $form = $this->loadForm('com_users.reset_confirm', 'reset_confirm', $options = array('control' => 'jform'));
+
+ if (empty($form))
+ {
+ return false;
+ }
+ else
+ {
+ $form->setValue('token', '', JFactory::getApplication()->input->get('token'));
+ }
+
+ return $form;
+ }
+
+ /**
+ * Override preprocessForm to load the user plugin group instead of content.
+ *
+ * @param JForm $form A JForm object.
+ * @param mixed $data The data expected for the form.
+ * @param string $group The name of the plugin group to import (defaults to "content").
+ *
+ * @return void
+ *
+ * @throws Exception if there is an error in the form event.
+ *
+ * @since 1.6
+ */
+ protected function preprocessForm(JForm $form, $data, $group = 'user')
+ {
+ parent::preprocessForm($form, $data, $group);
+ }
+
+ /**
+ * Method to auto-populate the model state.
+ *
+ * Note. Calling getState in this method will result in recursion.
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ protected function populateState()
+ {
+ // Get the application object.
+ $params = JFactory::getApplication()->getParams('com_users');
+
+ // Load the parameters.
+ $this->setState('params', $params);
+ }
+
+ /**
+ * Save the new password after reset is done
+ *
+ * @param array $data The data expected for the form.
+ *
+ * @return mixed Exception | JException | boolean
+ *
+ * @since 1.6
+ */
+ public function processResetComplete($data)
+ {
+ // Get the form.
+ $form = $this->getResetCompleteForm();
+ $data['email'] = JStringPunycode::emailToPunycode($data['email']);
+
+ // Check for an error.
+ if ($form instanceof Exception)
+ {
+ return $form;
+ }
+
+ // Filter and validate the form data.
+ $data = $form->filter($data);
+ $return = $form->validate($data);
+
+ // Check for an error.
+ if ($return instanceof Exception)
+ {
+ return $return;
+ }
+
+ // Check the validation results.
+ if ($return === false)
+ {
+ // Get the validation messages from the form.
+ foreach ($form->getErrors() as $formError)
+ {
+ $this->setError($formError->getMessage());
+ }
+
+ return false;
+ }
+
+ // Get the token and user id from the confirmation process.
+ $app = JFactory::getApplication();
+ $token = $app->getUserState('com_users.reset.token', null);
+ $userId = $app->getUserState('com_users.reset.user', null);
+
+ // Check the token and user id.
+ if (empty($token) || empty($userId))
+ {
+ return new JException(JText::_('COM_USERS_RESET_COMPLETE_TOKENS_MISSING'), 403);
+ }
+
+ // Get the user object.
+ $user = JUser::getInstance($userId);
+
+ // Check for a user and that the tokens match.
+ if (empty($user) || $user->activation !== $token)
+ {
+ $this->setError(JText::_('COM_USERS_USER_NOT_FOUND'));
+
+ return false;
+ }
+
+ // Make sure the user isn't blocked.
+ if ($user->block)
+ {
+ $this->setError(JText::_('COM_USERS_USER_BLOCKED'));
+
+ return false;
+ }
+
+ // Check if the user is reusing the current password if required to reset their password
+ if ($user->requireReset == 1 && JUserHelper::verifyPassword($data['password1'], $user->password))
+ {
+ $this->setError(JText::_('JLIB_USER_ERROR_CANNOT_REUSE_PASSWORD'));
+
+ return false;
+ }
+
+ // Update the user object.
+ $user->password = JUserHelper::hashPassword($data['password1']);
+ $user->activation = '';
+ $user->password_clear = $data['password1'];
+
+ // Save the user to the database.
+ if (!$user->save(true))
+ {
+ return new JException(JText::sprintf('COM_USERS_USER_SAVE_FAILED', $user->getError()), 500);
+ }
+
+ // Flush the user data from the session.
+ $app->setUserState('com_users.reset.token', null);
+ $app->setUserState('com_users.reset.user', null);
+
+ return true;
+ }
+
+ /**
+ * Receive the reset password request
+ *
+ * @param array $data The data expected for the form.
+ *
+ * @return mixed Exception | JException | boolean
+ *
+ * @since 1.6
+ */
+ public function processResetConfirm($data)
+ {
+ // Get the form.
+ $form = $this->getResetConfirmForm();
+ $data['email'] = JStringPunycode::emailToPunycode($data['email']);
+
+ // Check for an error.
+ if ($form instanceof Exception)
+ {
+ return $form;
+ }
+
+ // Filter and validate the form data.
+ $data = $form->filter($data);
+ $return = $form->validate($data);
+
+ // Check for an error.
+ if ($return instanceof Exception)
+ {
+ return $return;
+ }
+
+ // Check the validation results.
+ if ($return === false)
+ {
+ // Get the validation messages from the form.
+ foreach ($form->getErrors() as $formError)
+ {
+ $this->setError($formError->getMessage());
+ }
+
+ return false;
+ }
+
+ // Find the user id for the given token.
+ $db = $this->getDbo();
+ $query = $db->getQuery(true)
+ ->select('activation')
+ ->select('id')
+ ->select('block')
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('username') . ' = ' . $db->quote($data['username']));
+
+ // Get the user id.
+ $db->setQuery($query);
+
+ try
+ {
+ $user = $db->loadObject();
+ }
+ catch (RuntimeException $e)
+ {
+ return new JException(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+ }
+
+ // Check for a user.
+ if (empty($user))
+ {
+ $this->setError(JText::_('COM_USERS_USER_NOT_FOUND'));
+
+ return false;
+ }
+
+ if (!$user->activation)
+ {
+ $this->setError(JText::_('COM_USERS_USER_NOT_FOUND'));
+
+ return false;
+ }
+
+ // Verify the token
+ if (!JUserHelper::verifyPassword($data['token'], $user->activation))
+ {
+ $this->setError(JText::_('COM_USERS_USER_NOT_FOUND'));
+
+ return false;
+ }
+
+ // Make sure the user isn't blocked.
+ if ($user->block)
+ {
+ $this->setError(JText::_('COM_USERS_USER_BLOCKED'));
+
+ return false;
+ }
+
+ // Push the user data into the session.
+ $app = JFactory::getApplication();
+ $app->setUserState('com_users.reset.token', $user->activation);
+ $app->setUserState('com_users.reset.user', $user->id);
+
+ return true;
+ }
+
+ /**
+ * Method to start the password reset process.
+ *
+ * @param array $data The data expected for the form.
+ *
+ * @return mixed Exception | JException | boolean
+ *
+ * @since 1.6
+ */
+ public function processResetRequest($data)
+ {
+ $config = JFactory::getConfig();
+
+ // Get the form.
+ $form = $this->getForm();
+
+ $data['email'] = JStringPunycode::emailToPunycode($data['email']);
+
+ // Check for an error.
+ if ($form instanceof Exception)
+ {
+ return $form;
+ }
+
+ // Filter and validate the form data.
+ $data = $form->filter($data);
+ $return = $form->validate($data);
+
+ // Check for an error.
+ if ($return instanceof Exception)
+ {
+ return $return;
+ }
+
+ // Check the validation results.
+ if ($return === false)
+ {
+ // Get the validation messages from the form.
+ foreach ($form->getErrors() as $formError)
+ {
+ $this->setError($formError->getMessage());
+ }
+
+ return false;
+ }
+
+ // Find the user id for the given email address.
+ $db = $this->getDbo();
+ $query = $db->getQuery(true)
+ ->select('id')
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('email') . ' = ' . $db->quote($data['email']));
+
+ // Get the user object.
+ $db->setQuery($query);
+
+ try
+ {
+ $userId = $db->loadResult();
+ }
+ catch (RuntimeException $e)
+ {
+ $this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);
+
+ return false;
+ }
+
+ // Check for a user.
+ if (empty($userId))
+ {
+ $this->setError(JText::_('COM_USERS_INVALID_EMAIL'));
+
+ return false;
+ }
+
+ // Get the user object.
+ $user = JUser::getInstance($userId);
+
+ // Make sure the user isn't blocked.
+ if ($user->block)
+ {
+ $this->setError(JText::_('COM_USERS_USER_BLOCKED'));
+
+ return false;
+ }
+
+ // Make sure the user isn't a Super Admin.
+ if ($user->authorise('core.admin'))
+ {
+ $this->setError(JText::_('COM_USERS_REMIND_SUPERADMIN_ERROR'));
+
+ return false;
+ }
+
+ // Make sure the user has not exceeded the reset limit
+ if (!$this->checkResetLimit($user))
+ {
+ $resetLimit = (int) JFactory::getApplication()->getParams()->get('reset_time');
+ $this->setError(JText::plural('COM_USERS_REMIND_LIMIT_ERROR_N_HOURS', $resetLimit));
+
+ return false;
+ }
+
+ // Set the confirmation token.
+ $token = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
+ $hashedToken = JUserHelper::hashPassword($token);
+
+ $user->activation = $hashedToken;
+
+ // Save the user to the database.
+ if (!$user->save(true))
+ {
+ return new JException(JText::sprintf('COM_USERS_USER_SAVE_FAILED', $user->getError()), 500);
+ }
+
+ // Assemble the password reset confirmation link.
+ $mode = $config->get('force_ssl', 0) == 2 ? 1 : (-1);
+ $link = 'index.php?option=com_users&view=reset&layout=confirm&token=' . $token;
+
+ // Put together the email template data.
+ $data = $user->getProperties();
+ $data['fromname'] = $config->get('fromname');
+ $data['mailfrom'] = $config->get('mailfrom');
+ $data['sitename'] = $config->get('sitename');
+ $data['link_text'] = JRoute::_($link, false, $mode);
+ $data['link_html'] = JRoute::_($link, true, $mode);
+ $data['token'] = $token;
+
+ $subject = JText::sprintf(
+ 'COM_USERS_EMAIL_PASSWORD_RESET_SUBJECT',
+ $data['sitename']
+ );
+
+ $body = JText::sprintf(
+ 'COM_USERS_EMAIL_PASSWORD_RESET_BODY',
+ $data['sitename'],
+ $data['token'],
+ $data['link_text']
+ );
+
+ // Send the password reset request email.
+ $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $user->email, $subject, $body);
+
+ // Check for an error.
+ if ($return !== true)
+ {
+ return new JException(JText::_('COM_USERS_MAIL_FAILED'), 500);
+ }
+
+ return true;
+ }
+
+ /**
+ * Method to check if user reset limit has been exceeded within the allowed time period.
+ *
+ * @param JUser $user User doing the password reset
+ *
+ * @return boolean true if user can do the reset, false if limit exceeded
+ *
+ * @since 2.5
+ */
+ public function checkResetLimit($user)
+ {
+ $params = JFactory::getApplication()->getParams();
+ $maxCount = (int) $params->get('reset_count');
+ $resetHours = (int) $params->get('reset_time');
+ $result = true;
+
+ $lastResetTime = strtotime($user->lastResetTime) ?: 0;
+ $hoursSinceLastReset = (strtotime(JFactory::getDate()->toSql()) - $lastResetTime) / 3600;
+
+ if ($hoursSinceLastReset > $resetHours)
+ {
+ // If it's been long enough, start a new reset count
+ $user->lastResetTime = JFactory::getDate()->toSql();
+ $user->resetCount = 1;
+ }
+ elseif ($user->resetCount < $maxCount)
+ {
+ // If we are under the max count, just increment the counter
+ ++$user->resetCount;
+ }
+ else
+ {
+ // At this point, we know we have exceeded the maximum resets for the time period
+ $result = false;
+ }
+
+ return $result;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php.evidence.json
new file mode 100644
index 0000000..7073388
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7274",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/reset.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/reset.php)",
+ "original_sha256": "f948b6a494c8fe051b43bff9f12801d462e4d22f37607da2c5b3b6a7886dcd72",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 12692,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/reset.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php
new file mode 100644
index 0000000..45b6b21
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php
@@ -0,0 +1,56 @@
+` tag for the form field object.
+ * @param mixed $value The form field value to validate.
+ * @param string $group The field name group control value. This acts as an array container for the field.
+ * For example if the field has name="foo" and the group value is set to "bar" then the
+ * full field name would end up being "bar[foo]".
+ * @param Registry $input An optional Registry object with the entire data set to validate against the entire form.
+ * @param JForm $form The form object for which the field is being tested.
+ *
+ * @return boolean True if the value is valid, false otherwise.
+ *
+ * @since 3.6
+ */
+ public function test(SimpleXMLElement $element, $value, $group = null, Registry $input = null, JForm $form = null)
+ {
+ $loginRedirectUrl = $input['params']->login_redirect_url;
+ $loginRedirectMenuitem = $input['params']->login_redirect_menuitem;
+
+ if ($form === null)
+ {
+ throw new InvalidArgumentException(sprintf('The value for $form must not be null in %s', get_class($this)));
+ }
+
+ if ($input === null)
+ {
+ throw new InvalidArgumentException(sprintf('The value for $input must not be null in %s', get_class($this)));
+ }
+
+ return true;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php.evidence.json
new file mode 100644
index 0000000..9fab0e2
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7279",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/rules/loginuniquefield.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/loginuniquefield.php)",
+ "original_sha256": "70dfe2a0662c32f12e612c1d5785006673319ec19766651ab15aefb880a2c5f2",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 2134,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/rules/loginuniquefield.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php
new file mode 100644
index 0000000..6a9eaf4
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php
@@ -0,0 +1,56 @@
+` tag for the form field object.
+ * @param mixed $value The form field value to validate.
+ * @param string $group The field name group control value. This acts as an array container for the field.
+ * For example if the field has name="foo" and the group value is set to "bar" then the
+ * full field name would end up being "bar[foo]".
+ * @param Registry $input An optional Registry object with the entire data set to validate against the entire form.
+ * @param JForm $form The form object for which the field is being tested.
+ *
+ * @return boolean True if the value is valid, false otherwise.
+ *
+ * @since 3.6
+ */
+ public function test(SimpleXMLElement $element, $value, $group = null, Registry $input = null, JForm $form = null)
+ {
+ $logoutRedirectUrl = $input['params']->logout_redirect_url;
+ $logoutRedirectMenuitem = $input['params']->logout_redirect_menuitem;
+
+ if ($form === null)
+ {
+ throw new InvalidArgumentException(sprintf('The value for $form must not be null in %s', get_class($this)));
+ }
+
+ if ($input === null)
+ {
+ throw new InvalidArgumentException(sprintf('The value for $input must not be null in %s', get_class($this)));
+ }
+
+ return true;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php.evidence.json
new file mode 100644
index 0000000..d774ad8
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7280",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/models/rules/logoutuniquefield.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/models/rules/logoutuniquefield.php)",
+ "original_sha256": "9bc602cb398ce792eafb70d3cba2fa732d6bffeb2bf88afc05de9e507334c095",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 2139,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/models/rules/logoutuniquefield.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/router.php b/var/www/hosting/archlinexp.eu/www/components/com_users/router.php
new file mode 100644
index 0000000..7e9e02d
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/router.php
@@ -0,0 +1,89 @@
+registerView(new JComponentRouterViewconfiguration('login'));
+ $profile = new JComponentRouterViewconfiguration('profile');
+ $profile->addLayout('edit');
+ $this->registerView($profile);
+ $this->registerView(new JComponentRouterViewconfiguration('registration'));
+ $this->registerView(new JComponentRouterViewconfiguration('remind'));
+ $this->registerView(new JComponentRouterViewconfiguration('reset'));
+
+ parent::__construct($app, $menu);
+
+ $this->attachRule(new JComponentRouterRulesMenu($this));
+
+ $params = JComponentHelper::getParams('com_users');
+
+ if ($params->get('sef_advanced', 0))
+ {
+ $this->attachRule(new JComponentRouterRulesStandard($this));
+ $this->attachRule(new JComponentRouterRulesNomenu($this));
+ }
+ else
+ {
+ JLoader::register('UsersRouterRulesLegacy', __DIR__ . '/helpers/legacyrouter.php');
+ $this->attachRule(new UsersRouterRulesLegacy($this));
+ }
+ }
+}
+
+/**
+ * Users router functions
+ *
+ * These functions are proxys for the new router interface
+ * for old SEF extensions.
+ *
+ * @param array &$query REQUEST query
+ *
+ * @return array Segments of the SEF url
+ *
+ * @deprecated 4.0 Use Class based routers instead
+ */
+function usersBuildRoute(&$query)
+{
+ $app = JFactory::getApplication();
+ $router = new UsersRouter($app, $app->getMenu());
+
+ return $router->build($query);
+}
+
+/**
+ * Convert SEF URL segments into query variables
+ *
+ * @param array $segments Segments in the current URL
+ *
+ * @return array Query variables
+ *
+ * @deprecated 4.0 Use Class based routers instead
+ */
+function usersParseRoute($segments)
+{
+ $app = JFactory::getApplication();
+ $router = new UsersRouter($app, $app->getMenu());
+
+ return $router->parse($segments);
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/router.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/router.php.evidence.json
new file mode 100644
index 0000000..473a34e
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/router.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7253",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/router.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/router.php)",
+ "original_sha256": "2b9acf14b84908cd85f8ffface816d5c7124f3226088696dccec501054773253",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 2326,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/router.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/users.php b/var/www/hosting/archlinexp.eu/www/components/com_users/users.php
new file mode 100644
index 0000000..1213c3a
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/users.php
@@ -0,0 +1,16 @@
+execute(JFactory::getApplication()->input->get('task', 'display'));
+$controller->redirect();
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/users.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/users.php.evidence.json
new file mode 100644
index 0000000..eed4ef3
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/users.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7251",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/users.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/users.php)",
+ "original_sha256": "6ed1fd07fc85fc4f09fd85926ce729ad711577f7cc3ceaf551c748b07dd2ae5c",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 508,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/users.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php
new file mode 100644
index 0000000..7db00b2
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php
@@ -0,0 +1,23 @@
+user->get('cookieLogin');
+
+if (!empty($cookieLogin) || $this->user->get('guest'))
+{
+ // The user is not logged in or needs to provide a password.
+ echo $this->loadTemplate('login');
+}
+else
+{
+ // The user is already logged in.
+ echo $this->loadTemplate('logout');
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..88ed122
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7269",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/login/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.php)",
+ "original_sha256": "8dac9ace51133f1eea7a524ca6dd8de9fc5effedd7c5bb2b5f5562ccd2257efc",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1552900021,
+ "size": 554,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/login/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml
new file mode 100644
index 0000000..92ca4b4
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml.evidence.json
new file mode 100644
index 0000000..58cb3e3
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7270",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/login/tmpl/default.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default.xml)",
+ "original_sha256": "1e40888b8d147a0130bca03085edf7f94e97da2ed09e2aa4b6dfe41282162ecc",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 4166,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/login/tmpl/default.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php
new file mode 100644
index 0000000..cd774aa
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php
@@ -0,0 +1,106 @@
+
+
+ params->get('show_page_heading')) : ?>
+
+
+ params->get('logindescription_show') == 1 && str_replace(' ', '', $this->params->get('login_description')) != '') || $this->params->get('login_image') != '') : ?>
+
+
+ params->get('logindescription_show') == 1) : ?>
+ params->get('login_description'); ?>
+
+ params->get('login_image') != '') : ?>
+
); ?>)
+
+ params->get('logindescription_show') == 1 && str_replace(' ', '', $this->params->get('login_description')) != '') || $this->params->get('login_image') != '') : ?>
+
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+
+ get('allowUserRegistration')) : ?>
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php.evidence.json
new file mode 100644
index 0000000..a940a21
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7271",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/login/tmpl/default_login.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_login.php)",
+ "original_sha256": "f619bd9d8abc8c0b2766659057d744280be80ff87f1705b5c23c9e74a8f6d6ed",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1565006708,
+ "size": 3818,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/login/tmpl/default_login.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php
new file mode 100644
index 0000000..afec2b4
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php
@@ -0,0 +1,49 @@
+
+
+ params->get('show_page_heading')) : ?>
+
+
+ params->get('logoutdescription_show') == 1 && str_replace(' ', '', $this->params->get('logout_description')) != '')|| $this->params->get('logout_image') != '') : ?>
+
+
+ params->get('logoutdescription_show') == 1) : ?>
+ params->get('logout_description'); ?>
+
+ params->get('logout_image') != '') : ?>
+
); ?>)
+
+ params->get('logoutdescription_show') == 1 && str_replace(' ', '', $this->params->get('logout_description')) != '')|| $this->params->get('logout_image') != '') : ?>
+
+
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php.evidence.json
new file mode 100644
index 0000000..2795708
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7268",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/login/tmpl/default_logout.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/tmpl/default_logout.php)",
+ "original_sha256": "17b5b52ed420d182ca4d96cdc494e204f3dfe024955ae4d91eaf68537daf1f52",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 2199,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/login/tmpl/default_logout.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php
new file mode 100644
index 0000000..c7d071e
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php
@@ -0,0 +1,131 @@
+user = JFactory::getUser();
+ $this->form = $this->get('Form');
+ $this->state = $this->get('State');
+ $this->params = $this->state->get('params');
+
+ // Check for errors.
+ if (count($errors = $this->get('Errors')))
+ {
+ JError::raiseError(500, implode('
', $errors));
+
+ return false;
+ }
+
+ // Check for layout override
+ $active = JFactory::getApplication()->getMenu()->getActive();
+
+ if (isset($active->query['layout']))
+ {
+ $this->setLayout($active->query['layout']);
+ }
+
+ $tfa = JAuthenticationHelper::getTwoFactorMethods();
+ $this->tfa = is_array($tfa) && count($tfa) > 1;
+
+ // Escape strings for HTML output
+ $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx'), ENT_COMPAT, 'UTF-8');
+
+ $this->prepareDocument();
+
+ parent::display($tpl);
+ }
+
+ /**
+ * Prepares the document
+ *
+ * @return void
+ *
+ * @since 1.6
+ */
+ protected function prepareDocument()
+ {
+ $app = JFactory::getApplication();
+ $menus = $app->getMenu();
+ $user = JFactory::getUser();
+ $login = $user->get('guest') ? true : false;
+ $title = null;
+
+ // Because the application sets a default page title,
+ // we need to get it from the menu item itself
+ $menu = $menus->getActive();
+
+ if ($menu)
+ {
+ $this->params->def('page_heading', $this->params->get('page_title', $menu->title));
+ }
+ else
+ {
+ $this->params->def('page_heading', $login ? JText::_('JLOGIN') : JText::_('JLOGOUT'));
+ }
+
+ $title = $this->params->get('page_title', '');
+
+ if (empty($title))
+ {
+ $title = $app->get('sitename');
+ }
+ elseif ($app->get('sitename_pagetitles', 0) == 1)
+ {
+ $title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title);
+ }
+ elseif ($app->get('sitename_pagetitles', 0) == 2)
+ {
+ $title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename'));
+ }
+
+ $this->document->setTitle($title);
+
+ if ($this->params->get('menu-meta_description'))
+ {
+ $this->document->setDescription($this->params->get('menu-meta_description'));
+ }
+
+ if ($this->params->get('menu-meta_keywords'))
+ {
+ $this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords'));
+ }
+
+ if ($this->params->get('robots'))
+ {
+ $this->document->setMetadata('robots', $this->params->get('robots'));
+ }
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php.evidence.json
new file mode 100644
index 0000000..77eedce
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7267",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/login/view.html.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/login/view.html.php)",
+ "original_sha256": "81388b133b1d59d485333ab97724d1a1d3616606f055d863da72bc0a9f0fbea3",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 3040,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/login/view.html.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php
new file mode 100644
index 0000000..7532151
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php
@@ -0,0 +1,34 @@
+
+
+ params->get('show_page_heading')) : ?>
+
+
+ id == $this->data->id) : ?>
+
+
+ loadTemplate('core'); ?>
+ loadTemplate('params'); ?>
+ loadTemplate('custom'); ?>
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..94fea58
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7260",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/profile/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default.php)",
+ "original_sha256": "d4133100827716d2da1eb9c60343fb744f2183367c917139a1767681ac200b17",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 1059,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/profile/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php
new file mode 100644
index 0000000..a5bbd19
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php
@@ -0,0 +1,49 @@
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php.evidence.json
new file mode 100644
index 0000000..adb74f3
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7263",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/profile/tmpl/default_core.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_core.php)",
+ "original_sha256": "dc8e27c5cf90263c3221ac79542f92ac1e7571cedaa42e6d2a9ad8d99f288765",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 1306,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/profile/tmpl/default_core.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php
new file mode 100644
index 0000000..92d1a54
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php
@@ -0,0 +1,70 @@
+form->getFieldsets();
+
+if (isset($fieldsets['core']))
+{
+ unset($fieldsets['core']);
+}
+
+if (isset($fieldsets['params']))
+{
+ unset($fieldsets['params']);
+}
+
+$tmp = isset($this->data->jcfields) ? $this->data->jcfields : array();
+$customFields = array();
+
+foreach ($tmp as $customField)
+{
+ $customFields[$customField->name] = $customField;
+}
+
+?>
+ $fieldset) : ?>
+ form->getFieldset($group); ?>
+
+
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php.evidence.json
new file mode 100644
index 0000000..2793747
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7261",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/profile/tmpl/default_custom.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_custom.php)",
+ "original_sha256": "9f2af47de5012a4c1fd0b79ff93f806b85c9c96ba7ea7132f1fb0004a1cf751f",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 2452,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/profile/tmpl/default_custom.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php
new file mode 100644
index 0000000..cf11a1f
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php
@@ -0,0 +1,40 @@
+
+form->getFieldset('params'); ?>
+
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php.evidence.json
new file mode 100644
index 0000000..de4badc
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7264",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/profile/tmpl/default_params.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/profile/tmpl/default_params.php)",
+ "original_sha256": "b206251975c81b9896dabbdbd16f56225ed1fb582d1ae8053ce397dcbd3381f3",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1533967367,
+ "size": 1331,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/profile/tmpl/default_params.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php
new file mode 100644
index 0000000..5bf4bde
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php
@@ -0,0 +1,448 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
= JText::_('COM_USERS_LOGIN_LABEL') ?>
+ = JModuleHelper::renderModule(JModuleHelper::getModule('login', 'Login Form')) ?>
+
+
+
+
+
+
+
+ params->get('show_page_heading')) : ?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..fdff371
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7265",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:components/com_users/views/registration/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/components/com_users/views/registration/tmpl/default.php)",
+ "original_sha256": "c362b87f0b31a19b551012f06fcde8b00d0eacda164c95a95b87f3f467426b6f",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1682582236,
+ "size": 19437,
+ "uid": 12425
+ },
+ "rel_path": "components/com_users/views/registration/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php b/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php
new file mode 100644
index 0000000..a30c7c5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php
@@ -0,0 +1,1002 @@
+ 'auto', 'relative' => true, 'detectDebug' => $debug));
+ }
+
+ //JHtml::_('script', 'system/mootools-' . $type . '.js', array('version' => 'auto', 'relative' => true, 'detectDebug' => $debug));
+
+ // Keep loading core.js for BC reasons
+ static::core();
+
+ static::$loaded[__METHOD__][$type] = true;
+
+ return;
+ }
+
+ /**
+ * Method to load core.js into the document head.
+ *
+ * Core.js defines the 'Joomla' namespace and contains functions which are used across extensions
+ *
+ * @return void
+ *
+ * @since 3.3
+ */
+ public static function core()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ JHtml::_('form.csrf');
+ JHtml::_('script', 'system/core.js', array('version' => 'auto', 'relative' => true));
+
+ // Add core and base uri paths so javascript scripts can use them.
+ JFactory::getDocument()->addScriptOptions('system.paths', array('root' => JUri::root(true), 'base' => JUri::base(true)));
+
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for image captions.
+ *
+ * @param string $selector The selector for which a caption behaviour is to be applied.
+ *
+ * @return void
+ *
+ * @since 1.5
+ *
+ * @Deprecated 4.0 Use native HTML figure tags.
+ */
+ public static function caption($selector = 'img.caption')
+ {
+ JLog::add('JHtmlBehavior::caption is deprecated. Use native HTML figure tags.', JLog::WARNING, 'deprecated');
+
+ // Only load once
+ if (isset(static::$loaded[__METHOD__][$selector])) {
+ return;
+ }
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ JHtml::_('script', 'system/caption.js', array('version' => 'auto', 'relative' => true));
+
+ // Attach caption to document
+ JFactory::getDocument()->addScriptDeclaration(
+ "jQuery(window).on('load', function() {
+ new JCaption('" . $selector . "');
+ });"
+ );
+
+ // Set static array
+ static::$loaded[__METHOD__][$selector] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for form validation.
+ *
+ * To enable form validation the form tag must have class="form-validate".
+ * Each field that needs to be validated needs to have class="validate".
+ * Additional handlers can be added to the handler for username, password,
+ * numeric and email. To use these add class="validate-email" and so on.
+ *
+ * @return void
+ *
+ * @since 1.5
+ *
+ * @Deprecated 3.4 Use formvalidator instead
+ */
+ public static function formvalidation()
+ {
+ JLog::add('The use of formvalidation is deprecated use formvalidator instead.', JLog::WARNING, 'deprecated');
+
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ // Include MooTools framework
+ static::framework();
+
+ // Load the new jQuery code
+ static::formvalidator();
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for form validation.
+ *
+ * To enable form validation the form tag must have class="form-validate".
+ * Each field that needs to be validated needs to have class="validate".
+ * Additional handlers can be added to the handler for username, password,
+ * numeric and email. To use these add class="validate-email" and so on.
+ *
+ * @return void
+ *
+ * @since 3.4
+ */
+ public static function formvalidator()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ // Include core
+ static::core();
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ // Add validate.js language strings
+ JText::script('JLIB_FORM_FIELD_INVALID');
+
+ JHtml::_('script', 'system/punycode.js', array('version' => 'auto', 'relative' => true));
+ JHtml::_('script', 'system/validate.js', array('version' => 'auto', 'relative' => true));
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for submenu switcher support
+ *
+ * @return void
+ *
+ * @since 1.5
+ */
+ public static function switcher()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ JHtml::_('script', 'system/switcher.js', array('framework' => true, 'version' => 'auto', 'relative' => true));
+
+ $script = "
+ document.switcher = null;
+ jQuery(function($){
+ var toggler = document.getElementById('submenu');
+ var element = document.getElementById('config-document');
+ if (element) {
+ document.switcher = new JSwitcher(toggler, element);
+ }
+ });";
+
+ JFactory::getDocument()->addScriptDeclaration($script);
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for a combobox effect.
+ *
+ * Note that this control is only reliable in absolutely positioned elements.
+ * Avoid using a combobox in a slider or dynamic pane.
+ *
+ * @return void
+ *
+ * @since 1.5
+ */
+ public static function combobox()
+ {
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+ // Include core
+ static::core();
+
+ JHtml::_('script', 'system/combobox.js', array('version' => 'auto', 'relative' => true));
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for a hover tooltips.
+ *
+ * Add a title attribute to any element in the form
+ * title="title::text"
+ *
+ * Uses the core Tips class in MooTools.
+ *
+ * @param string $selector The class selector for the tooltip.
+ * @param array $params An array of options for the tooltip.
+ * Options for the tooltip can be:
+ * - maxTitleChars integer The maximum number of characters in the tooltip title (defaults to 50).
+ * - offsets object The distance of your tooltip from the mouse (defaults to {'x': 16, 'y': 16}).
+ * - showDelay integer The millisecond delay the show event is fired (defaults to 100).
+ * - hideDelay integer The millisecond delay the hide hide is fired (defaults to 100).
+ * - className string The className your tooltip container will get.
+ * - fixed boolean If set to true, the toolTip will not follow the mouse.
+ * - onShow function The default function for the show event, passes the tip element
+ * and the currently hovered element.
+ * - onHide function The default function for the hide event, passes the currently
+ * hovered element.
+ *
+ * @return void
+ *
+ * @since 1.5
+ */
+ public static function tooltip($selector = '.hasTip', $params = array())
+ {
+ $sig = md5(serialize(array($selector, $params)));
+
+ if (isset(static::$loaded[__METHOD__][$sig])) {
+ return;
+ }
+
+ // Include MooTools framework
+ static::framework(true);
+
+ // Setup options object
+ $opt['maxTitleChars'] = isset($params['maxTitleChars']) && $params['maxTitleChars'] ? (int) $params['maxTitleChars'] : 50;
+
+ // Offsets needs an array in the format: array('x'=>20, 'y'=>30)
+ $opt['offset'] = isset($params['offset']) && is_array($params['offset']) ? $params['offset'] : null;
+ $opt['showDelay'] = isset($params['showDelay']) ? (int) $params['showDelay'] : null;
+ $opt['hideDelay'] = isset($params['hideDelay']) ? (int) $params['hideDelay'] : null;
+ $opt['className'] = isset($params['className']) ? $params['className'] : null;
+ $opt['fixed'] = isset($params['fixed']) && $params['fixed'];
+ $opt['onShow'] = isset($params['onShow']) ? '\\' . $params['onShow'] : null;
+ $opt['onHide'] = isset($params['onHide']) ? '\\' . $params['onHide'] : null;
+
+ $options = JHtml::getJSObject($opt);
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ // Attach tooltips to document
+ JFactory::getDocument()->addScriptDeclaration(
+ "jQuery(function($) {
+ $('$selector').each(function() {
+ var title = $(this).attr('title');
+ if (title) {
+ var parts = title.split('::', 2);
+ var mtelement = document.id(this);
+ mtelement.store('tip:title', parts[0]);
+ mtelement.store('tip:text', parts[1]);
+ }
+ });
+ var JTooltips = new Tips($('$selector').get(), $options);
+ });"
+ );
+
+ // Set static array
+ static::$loaded[__METHOD__][$sig] = true;
+
+ return;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for modal links.
+ *
+ * @param string $selector The selector for which a modal behaviour is to be applied.
+ * @param array $params An array of parameters for the modal behaviour.
+ * Options for the modal behaviour can be:
+ * - ajaxOptions
+ * - size
+ * - shadow
+ * - overlay
+ * - onOpen
+ * - onClose
+ * - onUpdate
+ * - onResize
+ * - onShow
+ * - onHide
+ *
+ * @return void
+ *
+ * @since 1.5
+ * @deprecated 4.0 Use the modal equivalent from bootstrap
+ */
+ public static function modal($selector = 'a.modal', $params = array())
+ {
+ $document = JFactory::getDocument();
+
+ // Load the necessary files if they haven't yet been loaded
+ if (!isset(static::$loaded[__METHOD__])) {
+ // Include MooTools framework
+ static::framework(true);
+
+ // Load the JavaScript and css
+ JHtml::_('script', 'system/modal.js', array('framework' => true, 'version' => 'auto', 'relative' => true));
+ JHtml::_('stylesheet', 'system/modal.css', array('version' => 'auto', 'relative' => true));
+ }
+
+ $sig = md5(serialize(array($selector, $params)));
+
+ if (isset(static::$loaded[__METHOD__][$sig])) {
+ return;
+ }
+
+ JLog::add('JHtmlBehavior::modal is deprecated. Use the modal equivalent from bootstrap.', JLog::WARNING, 'deprecated');
+
+ // Setup options object
+ $opt['ajaxOptions'] = isset($params['ajaxOptions']) && is_array($params['ajaxOptions']) ? $params['ajaxOptions'] : null;
+ $opt['handler'] = isset($params['handler']) ? $params['handler'] : null;
+ $opt['parseSecure'] = isset($params['parseSecure']) ? (bool) $params['parseSecure'] : null;
+ $opt['closable'] = isset($params['closable']) ? (bool) $params['closable'] : null;
+ $opt['closeBtn'] = isset($params['closeBtn']) ? (bool) $params['closeBtn'] : null;
+ $opt['iframePreload'] = isset($params['iframePreload']) ? (bool) $params['iframePreload'] : null;
+ $opt['iframeOptions'] = isset($params['iframeOptions']) && is_array($params['iframeOptions']) ? $params['iframeOptions'] : null;
+ $opt['size'] = isset($params['size']) && is_array($params['size']) ? $params['size'] : null;
+ $opt['shadow'] = isset($params['shadow']) ? $params['shadow'] : null;
+ $opt['overlay'] = isset($params['overlay']) ? $params['overlay'] : null;
+ $opt['onOpen'] = isset($params['onOpen']) ? $params['onOpen'] : null;
+ $opt['onClose'] = isset($params['onClose']) ? $params['onClose'] : null;
+ $opt['onUpdate'] = isset($params['onUpdate']) ? $params['onUpdate'] : null;
+ $opt['onResize'] = isset($params['onResize']) ? $params['onResize'] : null;
+ $opt['onMove'] = isset($params['onMove']) ? $params['onMove'] : null;
+ $opt['onShow'] = isset($params['onShow']) ? $params['onShow'] : null;
+ $opt['onHide'] = isset($params['onHide']) ? $params['onHide'] : null;
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ if (isset($params['fullScreen']) && (bool) $params['fullScreen']) {
+ $opt['size'] = array('x' => '\\jQuery(window).width() - 80', 'y' => '\\jQuery(window).height() - 80');
+ }
+
+ $options = JHtml::getJSObject($opt);
+
+ // Attach modal behavior to document
+ $document
+ ->addScriptDeclaration(
+ "
+ jQuery(function($) {
+ SqueezeBox.initialize(" . $options . ");
+ SqueezeBox.assign($('" . $selector . "').get(), {
+ parse: 'rel'
+ });
+ });
+
+ window.jModalClose = function () {
+ SqueezeBox.close();
+ };
+
+ // Add extra modal close functionality for tinyMCE-based editors
+ document.onreadystatechange = function () {
+ if (document.readyState == 'interactive' && typeof tinyMCE != 'undefined' && tinyMCE)
+ {
+ if (typeof window.jModalClose_no_tinyMCE === 'undefined')
+ {
+ window.jModalClose_no_tinyMCE = typeof(jModalClose) == 'function' ? jModalClose : false;
+
+ jModalClose = function () {
+ if (window.jModalClose_no_tinyMCE) window.jModalClose_no_tinyMCE.apply(this, arguments);
+ tinyMCE.activeEditor.windowManager.close();
+ };
+ }
+
+ if (typeof window.SqueezeBoxClose_no_tinyMCE === 'undefined')
+ {
+ if (typeof(SqueezeBox) == 'undefined') SqueezeBox = {};
+ window.SqueezeBoxClose_no_tinyMCE = typeof(SqueezeBox.close) == 'function' ? SqueezeBox.close : false;
+
+ SqueezeBox.close = function () {
+ if (window.SqueezeBoxClose_no_tinyMCE) window.SqueezeBoxClose_no_tinyMCE.apply(this, arguments);
+ tinyMCE.activeEditor.windowManager.close();
+ };
+ }
+ }
+ };
+ "
+ );
+
+ // Set static array
+ static::$loaded[__METHOD__][$sig] = true;
+
+ return;
+ }
+
+ /**
+ * JavaScript behavior to allow shift select in grids
+ *
+ * @param string $id The id of the form for which a multiselect behaviour is to be applied.
+ *
+ * @return void
+ *
+ * @since 1.7
+ */
+ public static function multiselect($id = 'adminForm')
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__][$id])) {
+ return;
+ }
+
+ // Include core
+ static::core();
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ JHtml::_('script', 'system/multiselect.js', array('version' => 'auto', 'relative' => true));
+
+ // Attach multiselect to document
+ JFactory::getDocument()->addScriptDeclaration(
+ "jQuery(document).ready(function() {
+ Joomla.JMultiSelect('" . $id . "');
+ });"
+ );
+
+ // Set static array
+ static::$loaded[__METHOD__][$id] = true;
+
+ return;
+ }
+
+ /**
+ * Add unobtrusive javascript support for a collapsible tree.
+ *
+ * @param string $id An index
+ * @param array $params An array of options.
+ * @param array $root The root node
+ *
+ * @return void
+ *
+ * @since 1.5
+ */
+ public static function tree($id, $params = array(), $root = array())
+ {
+ // Include MooTools framework
+ static::framework();
+
+ JHtml::_('script', 'system/mootree.js', array('framework' => true, 'version' => 'auto', 'relative' => true));
+ JHtml::_('stylesheet', 'system/mootree.css', array('version' => 'auto', 'relative' => true));
+
+ if (isset(static::$loaded[__METHOD__][$id])) {
+ return;
+ }
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ // Setup options object
+ $opt['div'] = array_key_exists('div', $params) ? $params['div'] : $id . '_tree';
+ $opt['mode'] = array_key_exists('mode', $params) ? $params['mode'] : 'folders';
+ $opt['grid'] = array_key_exists('grid', $params) ? '\\' . $params['grid'] : true;
+ $opt['theme'] = array_key_exists('theme', $params) ? $params['theme'] : JHtml::_('image', 'system/mootree.gif', '', array(), true, true);
+
+ // Event handlers
+ $opt['onExpand'] = array_key_exists('onExpand', $params) ? '\\' . $params['onExpand'] : null;
+ $opt['onSelect'] = array_key_exists('onSelect', $params) ? '\\' . $params['onSelect'] : null;
+ $opt['onClick'] = array_key_exists('onClick', $params) ? '\\' . $params['onClick']
+ : '\\function(node){ window.open(node.data.url, node.data.target != null ? node.data.target : \'_self\'); }';
+
+ $options = JHtml::getJSObject($opt);
+
+ // Setup root node
+ $rt['text'] = array_key_exists('text', $root) ? $root['text'] : 'Root';
+ $rt['id'] = array_key_exists('id', $root) ? $root['id'] : null;
+ $rt['color'] = array_key_exists('color', $root) ? $root['color'] : null;
+ $rt['open'] = array_key_exists('open', $root) ? '\\' . $root['open'] : true;
+ $rt['icon'] = array_key_exists('icon', $root) ? $root['icon'] : null;
+ $rt['openicon'] = array_key_exists('openicon', $root) ? $root['openicon'] : null;
+ $rt['data'] = array_key_exists('data', $root) ? $root['data'] : null;
+ $rootNode = JHtml::getJSObject($rt);
+
+ $treeName = array_key_exists('treeName', $params) ? $params['treeName'] : '';
+
+ $js = ' jQuery(function(){
+ tree' . $treeName . ' = new MooTreeControl(' . $options . ',' . $rootNode . ');
+ tree' . $treeName . '.adopt(\'' . $id . '\');})';
+
+ // Attach tooltips to document
+ $document = JFactory::getDocument();
+ $document->addScriptDeclaration($js);
+
+ // Set static array
+ static::$loaded[__METHOD__][$id] = true;
+
+ return;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for a calendar control.
+ *
+ * @return void
+ *
+ * @since 1.5
+ *
+ * @deprecated 4.0
+ */
+ public static function calendar()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ JLog::add('JHtmlBehavior::calendar is deprecated as the static assets are being loaded in the relative layout.', JLog::WARNING, 'deprecated');
+
+ $document = JFactory::getDocument();
+ $tag = JFactory::getLanguage()->getTag();
+ $attribs = array('title' => JText::_('JLIB_HTML_BEHAVIOR_GREEN'), 'media' => 'all');
+
+ JHtml::_('stylesheet', 'system/calendar-jos.css', array('version' => 'auto', 'relative' => true), $attribs);
+ JHtml::_('script', $tag . '/calendar.js', array('version' => 'auto', 'relative' => true));
+ JHtml::_('script', $tag . '/calendar-setup.js', array('version' => 'auto', 'relative' => true));
+
+ $translation = static::calendartranslation();
+
+ if ($translation) {
+ $document->addScriptDeclaration($translation);
+ }
+
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for a color picker.
+ *
+ * @return void
+ *
+ * @since 1.7
+ *
+ * @deprecated 4.0 Use directly the field or the layout
+ */
+ public static function colorpicker()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ JHtml::_('script', 'jui/jquery.minicolors.min.js', array('version' => 'auto', 'relative' => true));
+ JHtml::_('stylesheet', 'jui/jquery.minicolors.css', array('version' => 'auto', 'relative' => true));
+ JFactory::getDocument()->addScriptDeclaration(
+ "
+ jQuery(document).ready(function (){
+ jQuery('.minicolors').each(function() {
+ jQuery(this).minicolors({
+ control: jQuery(this).attr('data-control') || 'hue',
+ format: jQuery(this).attr('data-validate') === 'color'
+ ? 'hex'
+ : (jQuery(this).attr('data-format') === 'rgba'
+ ? 'rgb'
+ : jQuery(this).attr('data-format'))
+ || 'hex',
+ keywords: jQuery(this).attr('data-keywords') || '',
+ opacity: jQuery(this).attr('data-format') === 'rgba' ? true : false || false,
+ position: jQuery(this).attr('data-position') || 'default',
+ theme: 'bootstrap'
+ });
+ });
+ });
+ "
+ );
+
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add unobtrusive JavaScript support for a simple color picker.
+ *
+ * @return void
+ *
+ * @since 3.1
+ *
+ * @deprecated 4.0 Use directly the field or the layout
+ */
+ public static function simplecolorpicker()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ JHtml::_('script', 'jui/jquery.simplecolors.min.js', array('version' => 'auto', 'relative' => true));
+ JHtml::_('stylesheet', 'jui/jquery.simplecolors.css', array('version' => 'auto', 'relative' => true));
+ JFactory::getDocument()->addScriptDeclaration(
+ "
+ jQuery(document).ready(function (){
+ jQuery('select.simplecolors').simplecolors();
+ });
+ "
+ );
+
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Keep session alive, for example, while editing or creating an article.
+ *
+ * @return void
+ *
+ * @since 1.5
+ */
+ public static function keepalive()
+ {
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ $session = JFactory::getSession();
+
+ // If the handler is not 'Database', we set a fixed, small refresh value (here: 5 min)
+ $refreshTime = 300;
+
+ if ($session->storeName === 'database') {
+ $lifeTime = $session->getExpire();
+ $refreshTime = $lifeTime <= 60 ? 45 : $lifeTime - 60;
+
+ // The longest refresh period is one hour to prevent integer overflow.
+ if ($refreshTime > 3600 || $refreshTime <= 0) {
+ $refreshTime = 3600;
+ }
+ }
+
+ // If we are in the frontend or logged in as a user, we can use the ajax component to reduce the load
+ $uri = 'index.php' . (JFactory::getApplication()->isClient('site') || !JFactory::getUser()->guest ? '?option=com_ajax&format=json' : '');
+
+ // Include core and polyfill for browsers lower than IE 9.
+ static::core();
+ static::polyfill('event', 'lt IE 9');
+
+ // Add keepalive script options.
+ JFactory::getDocument()->addScriptOptions('system.keepalive', array('interval' => $refreshTime * 1000, 'uri' => JRoute::_($uri)));
+
+ // Add script.
+ JHtml::_('script', 'system/keepalive.js', array('version' => 'auto', 'relative' => true));
+
+ static::$loaded[__METHOD__] = true;
+
+ return;
+ }
+
+ /**
+ * Highlight some words via Javascript.
+ *
+ * @param array $terms Array of words that should be highlighted.
+ * @param string $start ID of the element that marks the begin of the section in which words
+ * should be highlighted. Note this element will be removed from the DOM.
+ * @param string $end ID of the element that end this section.
+ * Note this element will be removed from the DOM.
+ * @param string $className Class name of the element highlights are wrapped in.
+ * @param string $tag Tag that will be used to wrap the highlighted words.
+ *
+ * @return void
+ *
+ * @since 2.5
+ */
+ public static function highlighter(array $terms, $start = 'highlighter-start', $end = 'highlighter-end', $className = 'highlight', $tag = 'span')
+ {
+ $sig = md5(serialize(array($terms, $start, $end)));
+
+ if (isset(static::$loaded[__METHOD__][$sig])) {
+ return;
+ }
+
+ $terms = array_filter($terms, 'strlen');
+
+ // Nothing to Highlight
+ if (empty($terms)) {
+ static::$loaded[__METHOD__][$sig] = true;
+
+ return;
+ }
+
+ // Include core
+ static::core();
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ JHtml::_('script', 'system/highlighter.js', array('version' => 'auto', 'relative' => true));
+
+ foreach ($terms as $i => $term) {
+ $terms[$i] = JFilterOutput::stringJSSafe($term);
+ }
+
+ $document = JFactory::getDocument();
+ $document->addScriptDeclaration("
+ jQuery(function ($) {
+ var start = document.getElementById('" . $start . "');
+ var end = document.getElementById('" . $end . "');
+ if (!start || !end || !Joomla.Highlighter) {
+ return true;
+ }
+ highlighter = new Joomla.Highlighter({
+ startElement: start,
+ endElement: end,
+ className: '" . $className . "',
+ onlyWords: false,
+ tag: '" . $tag . "'
+ }).highlight([\"" . implode('","', $terms) . "\"]);
+ $(start).remove();
+ $(end).remove();
+ });
+ ");
+
+ static::$loaded[__METHOD__][$sig] = true;
+
+ return;
+ }
+
+ /**
+ * Break us out of any containing iframes
+ *
+ * @return void
+ *
+ * @since 1.5
+ *
+ * @deprecated 4.0 Add a X-Frame-Options HTTP Header with the SAMEORIGIN value instead.
+ */
+ public static function noframes()
+ {
+ JLog::add(__METHOD__ . ' is deprecated, add a X-Frame-Options HTTP Header with the SAMEORIGIN value instead.', JLog::WARNING, 'deprecated');
+
+ // Only load once
+ if (isset(static::$loaded[__METHOD__])) {
+ return;
+ }
+
+ // Include core
+ static::core();
+
+ // Include jQuery
+ JHtml::_('jquery.framework');
+
+ $js = 'jQuery(function () {
+ if (top == self) {
+ document.documentElement.style.display = "block";
+ }
+ else
+ {
+ top.location = self.location;
+ }
+
+ // Firefox fix
+ jQuery("input[autofocus]").focus();
+ })';
+ $document = JFactory::getDocument();
+ $document->addStyleDeclaration('html { display:none }');
+ $document->addScriptDeclaration($js);
+
+ JFactory::getApplication()->setHeader('X-Frame-Options', 'SAMEORIGIN');
+
+ static::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Internal method to get a JavaScript object notation string from an array
+ *
+ * @param array $array The array to convert to JavaScript object notation
+ *
+ * @return string JavaScript object notation representation of the array
+ *
+ * @since 1.5
+ * @deprecated 4.0 - Use JHtml::getJSObject() instead.
+ */
+ protected static function _getJSObject($array = array())
+ {
+ JLog::add('JHtmlBehavior::_getJSObject() is deprecated. JHtml::getJSObject() instead..', JLog::WARNING, 'deprecated');
+
+ return JHtml::getJSObject($array);
+ }
+
+ /**
+ * Add unobtrusive JavaScript support to keep a tab state.
+ *
+ * Note that keeping tab state only works for inner tabs if in accordance with the following example:
+ *
+ * ```
+ * parent tab = permissions
+ * child tab = permission-
+ * ```
+ *
+ * Each tab header `` tag also should have a unique href attribute
+ *
+ * @return void
+ *
+ * @since 3.2
+ */
+ public static function tabstate()
+ {
+ if (isset(self::$loaded[__METHOD__])) {
+ return;
+ }
+ // Include jQuery
+ JHtml::_('jquery.framework');
+ JHtml::_('behavior.polyfill', array('filter', 'xpath'));
+ JHtml::_('script', 'system/tabs-state.js', array('version' => 'auto', 'relative' => true));
+ self::$loaded[__METHOD__] = true;
+ }
+
+ /**
+ * Add javascript polyfills.
+ *
+ * @param string|array $polyfillTypes The polyfill type(s). Examples: event, array('event', 'classlist').
+ * @param string $conditionalBrowser An IE conditional expression. Example: lt IE 9 (lower than IE 9).
+ *
+ * @return void
+ *
+ * @since 3.7.0
+ */
+ public static function polyfill($polyfillTypes = null, $conditionalBrowser = null)
+ {
+ if ($polyfillTypes === null) {
+ return;
+ }
+
+ foreach ((array) $polyfillTypes as $polyfillType) {
+ $sig = md5(serialize(array($polyfillType, $conditionalBrowser)));
+
+ // Only load once
+ if (isset(static::$loaded[__METHOD__][$sig])) {
+ continue;
+ }
+
+ // If include according to browser.
+ $scriptOptions = array('version' => 'auto', 'relative' => true);
+ $scriptOptions = $conditionalBrowser !== null ? array_replace($scriptOptions, array('conditional' => $conditionalBrowser)) : $scriptOptions;
+
+ JHtml::_('script', 'system/polyfill.' . $polyfillType . '.js', $scriptOptions);
+
+ // Set static array
+ static::$loaded[__METHOD__][$sig] = true;
+ }
+ }
+
+ /**
+ * Internal method to translate the JavaScript Calendar
+ *
+ * @return string JavaScript that translates the object
+ *
+ * @since 1.5
+ */
+ protected static function calendartranslation()
+ {
+ static $jsscript = 0;
+
+ // Guard clause, avoids unnecessary nesting
+ if ($jsscript) {
+ return false;
+ }
+
+ $jsscript = 1;
+
+ // To keep the code simple here, run strings through JText::_() using array_map()
+ $callback = array('JText', '_');
+ $weekdays_full = array_map(
+ $callback,
+ array(
+ 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY',
+ )
+ );
+ $weekdays_short = array_map(
+ $callback,
+ array(
+ 'SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN',
+ )
+ );
+ $months_long = array_map(
+ $callback,
+ array(
+ 'JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE',
+ 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER',
+ )
+ );
+ $months_short = array_map(
+ $callback,
+ array(
+ 'JANUARY_SHORT', 'FEBRUARY_SHORT', 'MARCH_SHORT', 'APRIL_SHORT', 'MAY_SHORT', 'JUNE_SHORT',
+ 'JULY_SHORT', 'AUGUST_SHORT', 'SEPTEMBER_SHORT', 'OCTOBER_SHORT', 'NOVEMBER_SHORT', 'DECEMBER_SHORT',
+ )
+ );
+
+ // This will become an object in Javascript but define it first in PHP for readability
+ $today = " " . JText::_('JLIB_HTML_BEHAVIOR_TODAY') . " ";
+ $text = array(
+ 'INFO' => JText::_('JLIB_HTML_BEHAVIOR_ABOUT_THE_CALENDAR'),
+ 'ABOUT' => "DHTML Date/Time Selector\n"
+ . "(c) dynarch.com 20022005 / Author: Mihai Bazon\n"
+ . "For latest version visit: http://www.dynarch.com/projects/calendar/\n"
+ . "Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details."
+ . "\n\n"
+ . JText::_('JLIB_HTML_BEHAVIOR_DATE_SELECTION')
+ . JText::_('JLIB_HTML_BEHAVIOR_YEAR_SELECT')
+ . JText::_('JLIB_HTML_BEHAVIOR_MONTH_SELECT')
+ . JText::_('JLIB_HTML_BEHAVIOR_HOLD_MOUSE'),
+ 'ABOUT_TIME' => "\n\n"
+ . "Time selection:\n"
+ . " Click on any of the time parts to increase it\n"
+ . " or Shiftclick to decrease it\n"
+ . " or click and drag for faster selection.",
+ 'PREV_YEAR' => JText::_('JLIB_HTML_BEHAVIOR_PREV_YEAR_HOLD_FOR_MENU'),
+ 'PREV_MONTH' => JText::_('JLIB_HTML_BEHAVIOR_PREV_MONTH_HOLD_FOR_MENU'),
+ 'GO_TODAY' => JText::_('JLIB_HTML_BEHAVIOR_GO_TODAY'),
+ 'NEXT_MONTH' => JText::_('JLIB_HTML_BEHAVIOR_NEXT_MONTH_HOLD_FOR_MENU'),
+ 'SEL_DATE' => JText::_('JLIB_HTML_BEHAVIOR_SELECT_DATE'),
+ 'DRAG_TO_MOVE' => JText::_('JLIB_HTML_BEHAVIOR_DRAG_TO_MOVE'),
+ 'PART_TODAY' => $today,
+ 'DAY_FIRST' => JText::_('JLIB_HTML_BEHAVIOR_DISPLAY_S_FIRST'),
+ 'WEEKEND' => JFactory::getLanguage()->getWeekEnd(),
+ 'CLOSE' => JText::_('JLIB_HTML_BEHAVIOR_CLOSE'),
+ 'TODAY' => JText::_('JLIB_HTML_BEHAVIOR_TODAY'),
+ 'TIME_PART' => JText::_('JLIB_HTML_BEHAVIOR_SHIFT_CLICK_OR_DRAG_TO_CHANGE_VALUE'),
+ 'DEF_DATE_FORMAT' => "%Y%m%d",
+ 'TT_DATE_FORMAT' => JText::_('JLIB_HTML_BEHAVIOR_TT_DATE_FORMAT'),
+ 'WK' => JText::_('JLIB_HTML_BEHAVIOR_WK'),
+ 'TIME' => JText::_('JLIB_HTML_BEHAVIOR_TIME'),
+ );
+
+ return 'Calendar._DN = ' . json_encode($weekdays_full) . ';'
+ . ' Calendar._SDN = ' . json_encode($weekdays_short) . ';'
+ . ' Calendar._FD = 0;'
+ . ' Calendar._MN = ' . json_encode($months_long) . ';'
+ . ' Calendar._SMN = ' . json_encode($months_short) . ';'
+ . ' Calendar._TT = ' . json_encode($text) . ';';
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php.evidence.json b/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php.evidence.json
new file mode 100644
index 0000000..18e21eb
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7201",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:libraries/cms/html/behavior.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/libraries/cms/html/behavior.php)",
+ "original_sha256": "b7e3e5f1cba9c986a3624ff1bd80216bc8ae36c853cbe5c2f443499db4502951",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1707919845,
+ "size": 31861,
+ "uid": 12425
+ },
+ "rel_path": "libraries/cms/html/behavior.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php
new file mode 100644
index 0000000..69bda31
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php
@@ -0,0 +1,67 @@
+setQuery($query);
+ $existingUser = $db->loadObject();
+
+ if (!empty($existingUser)) {
+ if ($existingUser->newsletter == 1)
+ return true;
+
+ $db->getQuery(true);
+ $query = "UPDATE cl_hlusers.u_emails SET newsletter = 1 WHERE u_emails_id = '{$existingUser->u_emails_id}'";
+ $db->setQuery($query);
+ $db->execute();
+
+ return true;
+ }
+
+ $old_db = (JFactory::getLanguage()->getTag() == 'hu-HU' ? "clusers" : "clusers_eng");
+ $ctrID = (JFactory::getLanguage()->getTag() == 'hu-HU' ? 36 : 0);
+
+ $user = new stdClass();
+ $user->strName = $name;
+ $user->strEMail = $email;
+ $user->nUserType = 0;
+ $user->nUserStatus = 0;
+ $user->nUserProf = 0;
+ $user->old_db = $old_db;
+ $user->nSchoolID = 0;
+ $user->nCtrID = $ctrID;
+
+ JFactory::getDbo()->insertObject('cl_hlusers.users', $user);
+
+ $nUserID = $db->insertid();
+
+ $history = new stdClass();
+ $history->nUserID = $nUserID;
+ $history->nTopicID = (JFactory::getLanguage()->getTag() == 'hu-HU' ? 38 : 150);
+ $history->dateEvent = date('Y-m-d');
+ $history->insertDate = date('Y-m-d H:i:s');
+ $history->strPlace = 'web';
+ $history->nManagerID = 36;
+
+ JFactory::getDbo()->insertObject('cl_hlusers.u_history', $history);
+
+ $emails = new stdClass();
+ $emails->email = $email;
+ $emails->nUserID = $nUserID;
+ $emails->default = 1;
+ $emails->active = 1;
+ $emails->deleted = 0;
+ $emails->newsletter = 1;
+
+ JFactory::getDbo()->insertObject('cl_hlusers.u_emails', $emails);
+
+ return true;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php.evidence.json
new file mode 100644
index 0000000..cfb0ce9
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7240",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/helper.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/helper.php)",
+ "original_sha256": "b7956607a80914f9937904e84970f2e1e67774f4aba36604c4be02572ed61818",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666076765,
+ "size": 2227,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/helper.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html.evidence.json
new file mode 100644
index 0000000..9dc0c3b
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7238",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini
new file mode 100644
index 0000000..1949ec4
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini
@@ -0,0 +1,8 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="Jetzt unseren wöchentlichen Newsletter abonnieren!"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Werden Sie Mitglied in unserer Community und erhalten Sie die neuesten Tutorials, Angebote und Nachrichten direkt per E-Mail."
+MOD_AL_NEWSLETTER_NAME="Name"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Your name"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="E-mail Adresse"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Abonnieren"
+MOD_AL_NEWSLETTER_DONE="Danke für Ihr Abonnement"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini.evidence.json
new file mode 100644
index 0000000..222be55
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7245",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini)",
+ "original_sha256": "b4c34415a7fef19b193d8f8cde917e276ca585c5fc43b0157c5428059a8a9796",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 514,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini
new file mode 100644
index 0000000..0ed85c5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini
@@ -0,0 +1,7 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="GET OUR NEWSLETTER"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Want the latest and greatest from our blog straight to your inbox? Chucks us your details and get a sweet weekly email."
+MOD_AL_NEWSLETTER_NAME="Name"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Your name"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Your email address"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Subscribe"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini.evidence.json
new file mode 100644
index 0000000..d1d17d5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7244",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini)",
+ "original_sha256": "6aa67b1e7671a2e12d9eceea4dd8a01c9b053208d565b20ba961e0bb8a4d8793",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 426,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/language/de-DE/de-DE.mod_al_newsletter.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini
new file mode 100644
index 0000000..fe9db88
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini
@@ -0,0 +1,8 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="Subscribe to our weekly newsletter!"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Join our community to get the latest tutorials, offers and news delivered directly in your inbox."
+MOD_AL_NEWSLETTER_NAME="Name"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Your name"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Your email address"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Subscribe"
+MOD_AL_NEWSLETTER_DONE="Thank you for subscribing"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini.evidence.json
new file mode 100644
index 0000000..1c8d848
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7247",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini)",
+ "original_sha256": "112d4cbd2f2bcc865926f7348639e346cb3d0fb8a5c3e4f005912ffa95c581d4",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 473,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini
new file mode 100644
index 0000000..0ed85c5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini
@@ -0,0 +1,7 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="GET OUR NEWSLETTER"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Want the latest and greatest from our blog straight to your inbox? Chucks us your details and get a sweet weekly email."
+MOD_AL_NEWSLETTER_NAME="Name"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Your name"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Your email address"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Subscribe"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini.evidence.json
new file mode 100644
index 0000000..b7b3ce9
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7246",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini)",
+ "original_sha256": "6aa67b1e7671a2e12d9eceea4dd8a01c9b053208d565b20ba961e0bb8a4d8793",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 426,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/language/en-GB/en-GB.mod_al_newsletter.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini
new file mode 100644
index 0000000..74f9a88
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini
@@ -0,0 +1,8 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="Iratkozz fel heti hírlevelünkre!"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Csatlakozz az ARCHLine.XP közösségéhez, értesülj elsők között oktatóvideóinkról, akcióinkről és híreinkről! "
+MOD_AL_NEWSLETTER_NAME="Név"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Név"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Email"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Feliratkozom"
+MOD_AL_NEWSLETTER_DONE="Köszönjük, hogy feliratkozott hírlevelünkre"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini.evidence.json
new file mode 100644
index 0000000..4584013
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7242",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini)",
+ "original_sha256": "1ee232c97d9600124baa334bd87c71b5103131e6ef29bf9aa145b28aeabb6e97",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 508,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini
new file mode 100644
index 0000000..243ea56
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini
@@ -0,0 +1,7 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="Iratkozzon fel hírlevelünkre"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Szeretné a legújabb és legjobb híreket blogunkról egyenesen a postaládájába? Elküldi nekünk az adatait, és kap egy kedves heti e-mailt."
+MOD_AL_NEWSLETTER_NAME="Név"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="A neve"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Az email címe"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Feliratkozás"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini.evidence.json
new file mode 100644
index 0000000..d212fff
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7243",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini)",
+ "original_sha256": "fe3e8aca75ff56194b30ab42b861b09a22a2ca313624d1ae62e18b10cfefd368",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 462,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/language/hu-HU/hu-HU.mod_al_newsletter.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php
new file mode 100644
index 0000000..f07ff2c
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php
@@ -0,0 +1,19 @@
+enqueueMessage(JText::_('MOD_AL_NEWSLETTER_DONE'));
+ }
+}
+
+require JModuleHelper::getLayoutPath('mod_al_newsletter', $params->get('layout', 'default'));
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php.evidence.json
new file mode 100644
index 0000000..9d2f321
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7241",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/mod_al_newsletter.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.php)",
+ "original_sha256": "9eaa9a68edd1e4498587bcb45e83748e0644206df67207146c15db9762edd19e",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 563,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/mod_al_newsletter.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml
new file mode 100644
index 0000000..9ab947f
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml
@@ -0,0 +1,44 @@
+
+
+ mod_al_newsletter
+ August 2022
+ Nagy Máté
+ mate.nagy@cadline.hu
+ Copyright © 2021 - All rights reserved.
+ 0.0.1
+ Create a newsletter subscription popup modal
+
+ mod_al_newsletter.php
+ mod_al_newsletter.xml
+ index.html
+ helper.php
+ language
+ tmpl
+
+
+
+
+
+
+
+
+ en-GB/en-GB.mod_al_newsletter.sys.ini
+ en-GB/en-GB.mod_al_newsletter.ini
+ hu-HU/hu-HU.mod_al_newsletter.sys.ini
+ hu-HU/hu-HU.mod_al_newsletter.ini
+ de-DE/de-DE.mod_al_newsletter.sys.ini
+ de-DE/de-DE.mod_al_newsletter.ini
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml.evidence.json
new file mode 100644
index 0000000..1a1f9a3
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7239",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/mod_al_newsletter.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/mod_al_newsletter.xml)",
+ "original_sha256": "63093cd4600619b21a0b611c46f598ec3074df45ec183860c0ff6119897ea0ce",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 2115,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/mod_al_newsletter.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php
new file mode 100644
index 0000000..9bc0cda
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
= JText::_('MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT') ?>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..27d93fa
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7249",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/default.php)",
+ "original_sha256": "647148d53fa91736b4f4e5afa5e5f90987320636c0e8dbf132e02af872714b6e",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1673448300,
+ "size": 2360,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html.evidence.json
new file mode 100644
index 0000000..1dc9bbc
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7248",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_newsletter/tmpl/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_newsletter/tmpl/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1666075362,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_newsletter/tmpl/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php
new file mode 100644
index 0000000..8b25897
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php
@@ -0,0 +1,149 @@
+getQuery(true)
+ ->select('a.*')
+ ->from('www_archline_hu.jml_speasyimagegallery_albums as a')
+ ->where('a.id = ' . (int) $albumId);
+
+ $query->select('l.title AS language_title')
+ ->leftJoin($db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language');
+
+ $query->select('ua.name AS author_name')
+ ->leftJoin('#__users AS ua ON ua.id = a.created_by');
+
+ // Filter by published state.
+ $query->where('a.published = 1');
+
+ $db->setQuery($query);
+ $data = $db->loadObject();
+
+ if (isset($data->id) && $data->id) {
+ $data->images = self::getImages($data->id);
+ }
+
+ if (empty($data)) {
+ return JError::raiseError(404, JText::_('COM_SPEASYIMAGEGALLERY_ERROR_ALBUM_NOT_FOUND'));
+ }
+
+ $user = JFactory::getUser();
+ $groups = $user->getAuthorisedViewLevels();
+ if (!in_array($data->access, $groups)) {
+ return JError::raiseError(404, JText::_('COM_SPEASYIMAGEGALLERY_ERROR_ALBUM_NOT_AUTHORISED'));
+ }
+
+ $result[$albumId] = $data;
+ } catch (Exception $e) {
+ if ($e->getCode() == 404) {
+ JError::raiseError(404, $e->getMessage());
+ } else {
+ $result[$albumId] = false;
+ }
+ }
+
+ return $result[$albumId];
+ }
+
+ public static function isVoted($pictureId, $albumId, $userId)
+ {
+ $db = JFactory::getDbo();
+
+ $query = "SELECT id FROM www_archline_hu.al_picture_vote
+ WHERE picture_id = {$pictureId} AND album_id = {$albumId} AND nUserID = {$userId}";
+ $db->setQuery($query);
+ $existingVote = $db->loadObject();
+
+ return !empty($existingVote);
+ }
+
+ public static function getImages($album_id)
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true);
+ $query->select(array('a.*', 'b.picture_id', 'count(b.userID) AS voteCount'));
+ $query->from($db->quoteName('www_archline_hu.jml_speasyimagegallery_images', 'a'));
+ $query->join('LEFT', $db->quoteName('www_archline_hu.al_picture_vote', 'b') . ' ON ' . $db->quoteName('a.id') . ' = ' . $db->quoteName('b.picture_id'));
+ $query->where($db->quoteName('a.album_id') . ' = ' . $db->quote($album_id));
+ $query->where($db->quoteName('a.state') . ' = ' . $db->quote(1));
+ $query->order('a.title ASC');
+ $query->group($db->quoteName('a.id'));
+ $db->setQuery($query);
+ return $db->loadObjectList();
+ }
+
+ public static function votePicture($pictureId, $albumId, $userId, $nUserID)
+ {
+ $db = JFactory::getDbo();
+
+ $query = "SELECT id FROM www_archline_hu.al_picture_vote
+ WHERE picture_id = {$pictureId} AND album_id = {$albumId} AND nUserID = {$nUserID}";
+ $db->setQuery($query);
+ $existingVote = $db->loadObject();
+
+ if (!empty($existingVote))
+ return false;
+
+ $vote = new stdClass();
+ $vote->picture_id = $pictureId;
+ $vote->album_id = $albumId;
+ $vote->userID = $userId;
+ $vote->nUserID = $nUserID;
+ JFactory::getDbo()->insertObject('www_archline_hu.al_picture_vote', $vote);
+
+ if ($nUserID != null && $nUserID != '') {
+ $topic = (JFactory::getLanguage()->getTag() == 'hu-HU' ? 322 : 153);
+
+ $query = "SELECT * FROM cl_hlusers.u_history
+ WHERE nUserID = {$nUserID} AND nTopicID = {$topic} AND strPlace = 'Rendering pályázat 2023 szavazás'";
+ $db->setQuery($query);
+ $existingVote = $db->loadObject();
+
+ if (empty($existingVote)) {
+ $history = new stdClass();
+ $history->nUserID = $nUserID;
+ $history->nTopicID = $topic;
+ $history->dateEvent = date('Y-m-d');
+ $history->strPlace = 'Rendering pályázat 2023 szavazás';
+ $history->strInfo = 'Rendering pályázat 2023 szavazás';
+ $history->nManagerID = 36;
+ JFactory::getDbo()->insertObject('cl_hlusers.u_history', $history);
+ }
+ }
+
+ return true;
+ }
+
+ public static function getWinnerPictures($album_id)
+ {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true);
+ $query->select(array('a.*', 'b.*', 'count(b.userID) AS voteCount'));
+ $query->from($db->quoteName('www_archline_hu.jml_speasyimagegallery_images', 'a'));
+ $query->join('LEFT', $db->quoteName('www_archline_hu.al_picture_vote', 'b') . ' ON ' . $db->quoteName('a.id') . ' = ' . $db->quoteName('b.picture_id'));
+ $query->where($db->quoteName('a.album_id') . ' = ' . $db->quote($album_id));
+ $query->where($db->quoteName('a.state') . ' = ' . $db->quote(1));
+ $query->order('count(b.userID) DESC');
+ $query->group($db->quoteName('a.id'));
+ $db->setQuery($query);
+ $winners = $db->loadObjectList();
+
+ for ($i = 0; $i < count($winners); $i++)
+ $winners[$i]->source = json_decode($winners[$i]->images);
+
+ return $winners;
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php.evidence.json
new file mode 100644
index 0000000..d4fe456
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7218",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/helper.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/helper.php)",
+ "original_sha256": "0b5c924a705ef20a151755d51cc1ec0f6a14259dc95fe8275999c9fd5ccef384",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676369734,
+ "size": 5750,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/helper.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html.evidence.json
new file mode 100644
index 0000000..00d8dc9
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7216",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini
new file mode 100644
index 0000000..12acdcb
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini
@@ -0,0 +1,4 @@
+MOD_AL_VOTE_SUCCESS="Thank you for participating in the poll, your vote was valid.
+Best regards, CadLine Kft."
+MOD_AL_VOTE_VOTE="Vote"
+MOD_AL_VOTE_VOTE_2="I vote"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini.evidence.json
new file mode 100644
index 0000000..cd594f1
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7223",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini)",
+ "original_sha256": "b14f757d445fe29447b213ad3834a6485924704e56e103c95a0ddcf6a5d86b9b",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 170,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini
new file mode 100644
index 0000000..0ed85c5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini
@@ -0,0 +1,7 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="GET OUR NEWSLETTER"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Want the latest and greatest from our blog straight to your inbox? Chucks us your details and get a sweet weekly email."
+MOD_AL_NEWSLETTER_NAME="Name"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Your name"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Your email address"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Subscribe"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini.evidence.json
new file mode 100644
index 0000000..1412544
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7222",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini)",
+ "original_sha256": "6aa67b1e7671a2e12d9eceea4dd8a01c9b053208d565b20ba961e0bb8a4d8793",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 426,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/language/de-DE/de-DE.mod_al_vote.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini
new file mode 100644
index 0000000..12acdcb
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini
@@ -0,0 +1,4 @@
+MOD_AL_VOTE_SUCCESS="Thank you for participating in the poll, your vote was valid.
+Best regards, CadLine Kft."
+MOD_AL_VOTE_VOTE="Vote"
+MOD_AL_VOTE_VOTE_2="I vote"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini.evidence.json
new file mode 100644
index 0000000..fb77880
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7225",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini)",
+ "original_sha256": "b14f757d445fe29447b213ad3834a6485924704e56e103c95a0ddcf6a5d86b9b",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 170,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini
new file mode 100644
index 0000000..0ed85c5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini
@@ -0,0 +1,7 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="GET OUR NEWSLETTER"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Want the latest and greatest from our blog straight to your inbox? Chucks us your details and get a sweet weekly email."
+MOD_AL_NEWSLETTER_NAME="Name"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="Your name"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Your email address"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Subscribe"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini.evidence.json
new file mode 100644
index 0000000..b0b901f
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7224",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini)",
+ "original_sha256": "6aa67b1e7671a2e12d9eceea4dd8a01c9b053208d565b20ba961e0bb8a4d8793",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 426,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/language/en-GB/en-GB.mod_al_vote.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini
new file mode 100644
index 0000000..618676a
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini
@@ -0,0 +1,4 @@
+MOD_AL_VOTE_SUCCESS="Köszönjük, hogy részt vettél a szavazáson, leadott szavazatod érvényes volt.
+Üdvözlettel, CadLine Kft."
+MOD_AL_VOTE_VOTE="Szavazat"
+MOD_AL_VOTE_VOTE_2="Szavazok"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini.evidence.json
new file mode 100644
index 0000000..fb013a7
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7221",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini)",
+ "original_sha256": "5d8093e15f311eb8a3e44cd1710baaa1d347c423b5e2c9ff07fb0ea1876cd0de",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 200,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini
new file mode 100644
index 0000000..243ea56
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini
@@ -0,0 +1,7 @@
+MOD_AL_NEWSLETTER_SUBSCRIBE_HEADER="Iratkozzon fel hírlevelünkre"
+MOD_AL_NEWSLETTER_SUBSCRIBE_TEXT="Szeretné a legújabb és legjobb híreket blogunkról egyenesen a postaládájába? Elküldi nekünk az adatait, és kap egy kedves heti e-mailt."
+MOD_AL_NEWSLETTER_NAME="Név"
+MOD_AL_NEWSLETTER_NAME_PLACEHOLDER="A neve"
+MOD_AL_NEWSLETTER_EMAIL="Email"
+MOD_AL_NEWSLETTER_EMAIL_PLACEHOLDER="Az email címe"
+MOD_AL_NEWSLETTER_SUBSCRIBE_BTN="Feliratkozás"
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini.evidence.json
new file mode 100644
index 0000000..5d0937c
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7220",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini)",
+ "original_sha256": "fe3e8aca75ff56194b30ab42b861b09a22a2ca313624d1ae62e18b10cfefd368",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 462,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/language/hu-HU/hu-HU.mod_al_vote.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php
new file mode 100644
index 0000000..ec1c963
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php
@@ -0,0 +1,18 @@
+id, $user->nUserID);
+
+ if ($vote)
+ JFactory::getApplication()->enqueueMessage(JText::_('MOD_AL_VOTE_SUCCESS'), 'message');*/
+}
+
+$album = ModAlVoteHelper::getItem();
+
+require JModuleHelper::getLayoutPath('mod_al_vote', $params->get('layout', 'default'));
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php.evidence.json
new file mode 100644
index 0000000..dca56ab
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7219",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/mod_al_vote.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.php)",
+ "original_sha256": "176fd1c778009daba61f1e1289363e5b657a9ac6f558f21f9bc3723c14659135",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1677656993,
+ "size": 586,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/mod_al_vote.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml
new file mode 100644
index 0000000..4c2d3d5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml
@@ -0,0 +1,42 @@
+
+
+ mod_al_vote
+ August 2022
+ Nagy Máté
+ mate.nagy@cadline.hu
+ Copyright © 2021 - All rights reserved.
+ 0.0.1
+ Create a picture vote modul
+
+ mod_al_vote.php
+ mod_al_vote.xml
+ index.html
+ helper.php
+ language
+ tmpl
+
+
+
+
+
+
+
+
+ en-GB/en-GB.mod_al_vote.sys.ini
+ en-GB/en-GB.mod_al_vote.ini
+ hu-HU/hu-HU.mod_al_vote.sys.ini
+ hu-HU/hu-HU.mod_al_vote.ini
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml.evidence.json
new file mode 100644
index 0000000..6f678b3
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7217",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/mod_al_vote.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/mod_al_vote.xml)",
+ "original_sha256": "1ed8c27095489f0a0011b846d9a5434f5d1900b1e445dd3af1e1ae84d67ee5b5",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 1906,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/mod_al_vote.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php
new file mode 100644
index 0000000..c7a1186
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php
@@ -0,0 +1,124 @@
+addScript(JURI::base(true) . '/public/js/lightbox_2.js');
+$doc->addStylesheet(JURI::base(true) . '/public/css/lightbox_2_1.css');
+?>
+
+
+
+
+
+ = '2023-02-29') : ?>
+
+
+
+
+
+ = JText::_('MOD_AL_VOTE_FIRST_PLACE') ?>
+
+

+
+ = JText::_('MOD_AL_VOTE_VOTE') ?>: = $winners[0]->voteCount ?>
+
+
+
+
+
+
+
+
+
+
+
+ = JText::_('MOD_AL_VOTE_SECOND_PLACE') ?>
+
+

+
+ = JText::_('MOD_AL_VOTE_VOTE') ?>: = $winners[1]->voteCount ?>
+
+
+
+
+ = JText::_('MOD_AL_VOTE_THIRD_PLACE') ?>
+
+

+
+ = JText::_('MOD_AL_VOTE_VOTE') ?>: = $winners[2]->voteCount ?>
+
+
+
+
+
+
+
+
+
+ = JText::_('MOD_AL_VOTE_MORE_PICTURES') ?>
+
+
+
+
+ images as $key => $item->image) : ?>
+ image->images); ?>
+
+
+

+
+ image->title; ?>
+
+ = JText::_('MOD_AL_VOTE_VOTE') ?>: = $item->image->voteCount ?>
+
+ id > 0 && !ModAlVoteHelper::isVoted($item->image->id, $album->id, $user->nUserID) && date('Y-m-d H:i:s') >= '2023-02-14 00:01:00'*/false) : ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..68e8794
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7227",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/default.php)",
+ "original_sha256": "5bff3f42b1a1627e018b8c2ca635a83435f8504e9ff43e995bbbccbc401b548e",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1677670025,
+ "size": 5054,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html.evidence.json
new file mode 100644
index 0000000..1b8b918
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7226",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_al_vote/tmpl/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_al_vote/tmpl/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1676012882,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_al_vote/tmpl/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html.evidence.json
new file mode 100644
index 0000000..f5a23be
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7214",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/assets/css/images/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/images/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/assets/css/images/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html.evidence.json
new file mode 100644
index 0000000..286b5d5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7211",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/assets/css/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/assets/css/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css
new file mode 100644
index 0000000..02eec31
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css
@@ -0,0 +1,6 @@
+.alusers .aktiv {color: #1E90FF;}
+.alusers .inaktiv {color: #FF0000;}
+.alusers dt {display:inline-block;margin-right:20px;min-width:150px;vertical-align:top;}
+.alusers dd {display:inline-block;vertical-align:top;}
+.btn-info, .btn-success, .btn-primary {background-color: #1E90FF !important; border-color: #1E90FF !important;}
+.btn-info:hover, .btn-success:hover, .btn-primary:hover {background-color: #6495ED !important; border-color: #6495ED !important;}
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css.evidence.json
new file mode 100644
index 0000000..7c4b89b
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7212",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/assets/css/newstyle.css -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/newstyle.css)",
+ "original_sha256": "d70abf50ed939eb2e298de25d32af4f33a54815c9b90c4d0118c20ba498ffa32",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 462,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/assets/css/newstyle.css",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css
new file mode 100644
index 0000000..97e125a
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css
@@ -0,0 +1,4 @@
+.alusers .aktiv {color: #009900;}
+.alusers .inaktiv {color: #FF0000;}
+.alusers dt {display:inline-block;margin-right:20px;min-width:150px;vertical-align:top;}
+.alusers dd {display:inline-block;vertical-align:top;}
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css.evidence.json
new file mode 100644
index 0000000..7b9de24
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7213",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/assets/css/style.css -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/css/style.css)",
+ "original_sha256": "34722adf5908c18835675b48bf1f7108c208216ce2ae7056455c1e160a86e887",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 218,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/assets/css/style.css",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html.evidence.json
new file mode 100644
index 0000000..b13f376
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7210",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/assets/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/assets/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html.evidence.json
new file mode 100644
index 0000000..5e2a085
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7215",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/assets/js/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/assets/js/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/assets/js/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php
new file mode 100644
index 0000000..9ae62ff
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php
@@ -0,0 +1,315 @@
+setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`users` WHERE `nUserID`='" . (int)$nUserID . "';");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result[0] : FALSE);
+ }
+
+ public static function isFloating($password = 0)
+ {
+ $hlNum = substr($password, 0, 6);
+
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT isFloating FROM `" . CRMADATBAZIS . "`.`hardlock` WHERE `hlNum`='" . $hlNum . "';");
+ $hardlock = $db->loadObject();
+
+ $db->setQuery("SELECT prID, prLogFilter, prVerID FROM `" . CRMADATBAZIS . "`.`h_programs` WHERE `prPass`='" . $password . "';");
+ $program = $db->loadObject();
+
+ return $hardlock->isFloating == 1 && $program->prVerID >= 23;
+ }
+
+ public static function getEmails($email = '')
+ {
+ if ($email == '') return (FALSE);
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE `email`='" . $email . "';");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public function getNewsletterEmails($nUserID = 0)
+ {
+ if ((int)$nUserID == 0) return (FALSE);
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE nUserID=" . $nUserID . ";");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public function getIdFromEmail($email = '')
+ {
+ if ($email == '') return (FALSE);
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE email='" . $email . "' ORDER BY u_emails_id LIMIT 1;");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result[0]->nUserID : FALSE);
+ }
+
+ public static function getKeys($ids = array())
+ {
+ if (empty($ids)) return (FALSE);
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT hlNum kulcs_kod FROM `" . CRMADATBAZIS . "`.`hardlock` WHERE `hlUser` IN (" . implode(',', $ids) . ") AND hlStat!=2;");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public static function getPrograms($key = '')
+ {
+ if ($key == '') return (FALSE);
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`h_programs` p
+ LEFT JOIN `" . CRMADATBAZIS . "`.`p_versions` v ON v.verID=p.prVerID
+ LEFT JOIN `" . CRMADATBAZIS . "`.`p_types` t ON t.typeCode=p.prTypeID
+ WHERE prHlNum = '" . $key . "'
+ ORDER BY prID DESC");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public static function getModules($prid = '')
+ {
+ if ((int)$prid == 0) return (FALSE);
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`p_modules` m
+ LEFT JOIN `" . CRMADATBAZIS . "`.`p_mtypes` mt ON m.mdID=mt.ID
+ WHERE m.mdPrID=" . $prid);
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public static function getAllKeyData($ids = array())
+ {
+ if (empty($ids)) return (FALSE);
+
+ $kulcsok = self::getKeys($ids);
+
+ if (is_array($kulcsok) && count($kulcsok)) {
+ foreach ($kulcsok as $key => $kulcs) {
+ $programs = self::getPrograms($kulcs->kulcs_kod);
+
+ if (count($programs) && is_array($programs)) {
+ foreach ($programs as $key_program => $program) {
+ $programs[$key_program]->modulok = ModAlusersHelper::getModules($program->prID);
+ }
+ }
+ $kulcsok[$key]->programok = $programs;
+ }
+ }
+
+ return (count($kulcsok) ? $kulcsok : FALSE);
+ }
+
+ public function savePersonalSettings($nUserID = 0, $tomb = array())
+ {
+ if ((int)$nUserID == 0 || !is_array($tomb) || empty($tomb)) return (FALSE);
+
+ $set = '';
+ $new = array();
+ $mezok = array('strName' => JText::_('MOD_ARCHLINE_NAME'), 'nCtrID' => JText::_('MOD_ARCHLINE_COUNTRY'), 'strZip' => JText::_('MOD_ARCHLINE_ZIP'), 'strCity' => JText::_('MOD_ARCHLINE_CITY'), 'strStreet' => JText::_('MOD_ARCHLINE_ADDRESS'), 'strTel' => JText::_('MOD_ARCHLINE_PHONE'), 'nUserProf' => JText::_('MOD_ARCHLINE_PROFESSION'));
+
+ foreach ($tomb as $k => $v) {
+ if (in_array($k, array_keys($mezok))) {
+ $new[$k] = $v;
+ $set .= ($set == '' ? '' : ', ') . "`" . $k . "`='" . $v . "'";
+ }
+ }
+
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true);
+
+ $db->setQuery("SELECT * FROM `" . JMLADATBAZIS . "`.`dtch_users` WHERE nUserID=" . $nUserID . " LIMIT 1;");
+ $jml = $db->loadObjectList();
+ $jml = $jml[0];
+
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`users` WHERE nUserID=" . $nUserID);
+ $old = $db->loadObjectList();
+ $old = $old[0];
+
+ $strValt = '';
+ $valt = array();
+ foreach ($mezok as $mezo => $str) {
+ if (!$old->$mezo || !$new[$mezo] || $old->$mezo != $new[$mezo]) {
+ $valt[] = $mezo;
+ $strValt .= $str . " " . JText::_('MOD_ARCHLINE_ORIG') . ": " . $old->$mezo . " " . JText::_('MOD_ARCHLINE_NEW') . ": " . $new[$mezo] . "
";
+ }
+ }
+
+ // crm user history-ba elmenti a változásokat
+ if (count($valt)) self::insertUserHistory($nUserID, $strValt);
+
+ //foreach (self::getCountries() as $k=>$v) { if ($new['nCtrID']==$k) { $country=$v;break;} }
+ //foreach (self::getProfessions() as $k=>$v) { if ($new['nUserProf']==$k) { $profession=$v;break;} }
+
+ // crm rekord felülírása
+ $db->setQuery("UPDATE `" . CRMADATBAZIS . "`.`users` SET " . $set . " WHERE nUserID=" . (int)$nUserID . " LIMIT 1;");
+ $db->execute();
+
+ $db->setQuery("UPDATE " . CRMADATBAZIS . ".users
+ SET strTel = REPLACE(strTel, '/', ''), strTel = REPLACE(strTel, '.', ''), strTel = REPLACE(strTel, ' ', ''), strTel = REPLACE(strTel, '-', ''),
+ strTel = REPLACE(strTel, '+', ''), strTel = REPLACE(strTel, ',', ';'), strTel = REPLACE(strTel, '(', ''), strTel = REPLACE(strTel, ')', ''),
+ strTel = REPLACE(strTel, '[', ''), strTel = REPLACE(strTel, ']', '')
+ WHERE nUserID = " . (int)$nUserID . " LIMIT 1;");
+ $db->execute();
+
+ // jml rekord felülírása
+ $db->setQuery("UPDATE `" . JMLADATBAZIS . "`.`dtch_users` SET `name`='" . $new['strName'] . "' WHERE nUserID=" . (int)$nUserID . " LIMIT 1;");
+ $db->execute();
+
+ // jml profile rekordok felülírása
+ $db->setQuery("UPDATE `" . JMLADATBAZIS . "`.`dtch_jsn_users` SET `country`='" . $new['nCtrID'] . "' WHERE id=" . (int)$jml->id . " LIMIT 1;");
+ $db->execute();
+ /*$db->setQuery("UPDATE `".JMLADATBAZIS."`.`dtch_jsn_users` SET `profile_value`='".$new['strZip']."' WHERE user_id=".(int)$jml->id." AND `profile_key`='profile.postal_code' LIMIT 1;");
+ $db->execute();
+ $db->setQuery("UPDATE `".JMLADATBAZIS."`.`dtch_jsn_users` SET `profile_value`='".$new['strCity']."' WHERE user_id=".(int)$jml->id." AND `profile_key`='profile.city' LIMIT 1;");
+ $db->execute();
+ $db->setQuery("UPDATE `".JMLADATBAZIS."`.`dtch_jsn_users` SET `profile_value`='".$new['strStreet']."' WHERE user_id=".(int)$jml->id." AND `profile_key`='profile.address1' LIMIT 1;");
+ $db->execute();*/
+ $db->setQuery("UPDATE `" . JMLADATBAZIS . "`.`dtch_jsn_users` SET `phone`='" . $new['strTel'] . "' WHERE id=" . (int)$jml->id . " LIMIT 1;");
+ $db->execute();
+ $db->setQuery("UPDATE `" . JMLADATBAZIS . "`.`dtch_jsn_users` SET `profession`='" . $new['nUserProf'] . "' WHERE id=" . (int)$jml->id . " LIMIT 1;");
+ $db->execute();
+ }
+
+ public function getCountries()
+ {
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`countries` WHERE ctrID != 37 AND ctrID != 95 AND ctrID != 99 AND ctrID != 94 AND ctrID != 96 AND ctrID != 92 AND ctrID != 91 ;");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public function getProfessions()
+ {
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_profs`;");
+ $result = $db->loadObjectList();
+ return (count($result) ? $result : FALSE);
+ }
+
+ public function savePassword($id, $pass)
+ {
+ if ((int)$id > 0) {
+ $db = JFactory::getDbo();
+ $db->setQuery("UPDATE `dtch_users` SET `password`='" . JUserHelper::hashPassword($pass) . "' WHERE id=" . (int)$id . " LIMIT 1;");
+ $db->execute();
+ }
+ }
+
+ public function newEmail($nUserID, $email)
+ {
+ if ((int)$nUserID > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE `email`='" . $email . "' LIMIT 1;");
+ $exist = $db->loadObjectList();
+ if (empty($exist)) {
+ $db->setQuery("INSERT INTO `" . CRMADATBAZIS . "`.`u_emails` (`email`,`nUserID`,`default`,`active`,`deleted`,`newsletter`) VALUES ('" . $email . "','" . $nUserID . "','0','1','0','1');");
+ $db->execute();
+ $db->setQuery("UPDATE `www_archline_hu`.`dtch_users` SET `email`='" . $email . "' WHERE nUserID=" . $nUserID . " LIMIT 1;");
+ $db->execute();
+ $db->setQuery("UPDATE `" . CRMADATBAZIS . "`.`users` SET `strEMail`='" . $email . "' WHERE nUserID=" . $nUserID . " LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID, JText::_('MOD_ARCHLINE_NEW_EMAIL') . ': ' . $email);
+ }
+ }
+ }
+
+ public function delEmail($nUserID, $u_emails_id)
+ {
+ if ((int)$nUserID > 0 && (int)$u_emails_id > 0) {
+ $db = JFactory::getDbo();
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE `nUserID`='" . $nUserID . "' AND `u_emails_id`='" . (int)$u_emails_id . "' LIMIT 1;");
+ $exist = $db->loadObjectList();
+ if (!empty($exist)) {
+ $db->setQuery("DELETE FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE `nUserID`='" . $nUserID . "' AND `u_emails_id`='" . (int)$u_emails_id . "' LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID, JText::_('MOD_ARCHLINE_DEL_EMAIL') . ': ' . $exist[0]->email);
+ }
+ }
+ }
+
+ public function saveNewsletters($nUserID = 0, $ids = array())
+ {
+ if ((int)$nUserID > 0) {
+ $db = JFactory::getDbo();
+
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`users` WHERE nUserID=" . (int)$nUserID . " LIMIT 1;");
+ $crmUser = $db->loadObjectList();
+ $crmUser = $crmUser[0];
+
+ /*
+ if ($crmUser->bNewsletter=='Y' && !isset($_POST['bNewsletter'])) // letiltas
+ {
+ $db->setQuery("UPDATE `".CRMADATBAZIS."`.`users` SET `bNewsletter`='N' WHERE nUserID=".(int)$nUserID." LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID,JText::_('MOD_ARCHLINE_NEWSLETTER_DISABLED'),array('nTopicID'=>(JFactory::getLanguage()->getTag()=='hu-HU'?54:166)));
+ }
+
+ if ( (is_null($crmUser->bNewsletter) || $crmUser->bNewsletter=='N') && isset($_POST['bNewsletter'])) // engedélyezés
+ {
+ $db->setQuery("UPDATE `".CRMADATBAZIS."`.`users` SET `bNewsletter`='Y' WHERE nUserID=".(int)$nUserID." LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID,JText::_('MOD_ARCHLINE_NEWSLETTER_ENABLED'),array('nTopicID'=>(JFactory::getLanguage()->getTag()=='hu-HU'?38:150)));
+ }
+*/
+
+ $db->setQuery("SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE nUserID=" . (int)$nUserID . ";");
+ $exist = $db->loadObjectList();
+ if (is_array($exist) && count($exist)) {
+ foreach ($exist as $row) {
+ if (is_null($ids) || (is_array($ids) && empty($ids))) {
+ $db->setQuery("UPDATE `" . CRMADATBAZIS . "`.`u_emails` SET `newsletter`=0 WHERE u_emails_id=" . $row->u_emails_id . " AND nUserID=" . (int)$nUserID . " LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID, JText::_('MOD_ARCHLINE_UNSUBSCRIBE_NEWSLETTER') . ': ' . $row->email);
+ } else {
+ if ($row->newsletter == 0 && in_array($row->u_emails_id, $ids)) /* elötte nem volt és utána be lett pipálva => FELIRATKOZOTT */ {
+ $db->setQuery("UPDATE `" . CRMADATBAZIS . "`.`u_emails` SET `newsletter`=1 WHERE u_emails_id=" . $row->u_emails_id . " AND nUserID=" . (int)$nUserID . " LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID, JText::_('MOD_ARCHLINE_SUBSCRIBE_NEWSLETTER') . ': ' . $row->email);
+ }
+ if ($row->newsletter == 1 && !in_array($row->u_emails_id, $ids)) /* elötte be volt és utána nem volt bepipálva => LEIRATKOZOTT */ {
+ $db->setQuery("UPDATE `" . CRMADATBAZIS . "`.`u_emails` SET `newsletter`=0 WHERE u_emails_id=" . $row->u_emails_id . " AND nUserID=" . (int)$nUserID . " LIMIT 1;");
+ $db->execute();
+ self::insertUserHistory($nUserID, JText::_('MOD_ARCHLINE_UNSUBSCRIBE_NEWSLETTER') . ': ' . $row->email);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public function insertUserHistory($nUserID = 0, $strInfo = "", $tomb = array())
+ {
+ if ((int)$nUserID > 0 && $strInfo > '') {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true);
+ $item = array(
+ 'nUserID' => $nUserID,
+ 'nTopicID' => (isset($tomb['nTopicID']) && (int)$tomb['nTopicID'] > 0 ? (int)$tomb['nTopicID'] : (JFactory::getLanguage()->getTag() == 'hu-HU' ? 364 : 365)),
+ 'dateEvent' => (isset($tomb['dateEvent']) && $tomb['dateEvent'] > '' ? $tomb['dateEvent'] : date('Y-m-d', time())),
+ 'strPlace' => (isset($tomb['strPlace']) && $tomb['strPlace'] > '' ? $tomb['strPlace'] : 'web'),
+ 'strInfo' => $strInfo,
+ 'nManagerID' => (isset($tomb['nManagerID']) && (int)$tomb['nManagerID'] > 0 ? $tomb['nManagerID'] : 36),
+ 'insertDate' => (isset($tomb['insertDate']) && $tomb['insertDate'] > '' ? $tomb['insertDate'] : date('Y-m-d H:i:s', time())),
+ );
+
+ foreach ($item as $v) $values[] = $db->quote($v);
+ $query->insert("`" . CRMADATBAZIS . "`.`u_history`")->columns($db->quoteName(array_keys($item)))->values(implode(',', $values));
+ $db->setQuery($query);
+ $db->execute();
+ }
+ }
+} // end of class
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php.evidence.json
new file mode 100644
index 0000000..142ec68
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7206",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/helper.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/helper.php)",
+ "original_sha256": "f32a272853a5e3b28097863308241216bf9ca011cf6dafe4ac4ccb63aeb8d7ae",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1684394374,
+ "size": 14517,
+ "uid": 12425
+ },
+ "rel_path": "modules/mod_alusers/helper.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html.evidence.json
new file mode 100644
index 0000000..b8b9d24
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7204",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php
new file mode 100644
index 0000000..304fceb
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php
@@ -0,0 +1,86 @@
+addStyleSheet("/modules/mod_alusers/assets/css/newstyle.css");
+$doc->addScript("/modules/mod_alusers/assets/js/script.js");
+
+$user=JFactory::getUser();
+$profile=JUserHelper::getProfile($user->id);
+$lang=JFactory::getLanguage()->getTag();
+$crmUser=ModAlusersHelper::getUserFromCRM((int)$user->nUserID);
+
+if ((int)$user->nUserID>0)
+{
+ $value = $app->input->cookie->get('alSessionID', null); // Get the cookie
+ if ($value == null) // If there's no cookie value, manually set it
+ {
+ $app->input->cookie->set('alSessionID', md5((int)$user->nUserID), (time()+30), $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); // Set the cookie
+ $app->input->cookie->set('alUserName', $user->name, (time()+30), $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); // Set the cookie
+ }
+}
+
+// ha még új a user, és nincs benne a crm rendszerben, akkor megpróbál egy user szinkronizációt
+if ($user->nUserID===NULL)
+{
+ file_get_contents("http://www.archline.hu/maintenance/sync_user.php");
+ $res=ModAlusersHelper::getIdFromEmail($user->username);
+ if ((int)$res>0) $user->nUserID=$res;
+}
+
+// hírlevél beállítások mentése
+if (isset($_POST) && !empty($_POST) && isset($_POST['nl']) )
+{
+ if ((int)$_POST['del_email']==0 && trim($_POST['new_email'])=='') ModAlusersHelper::saveNewsletters($user->nUserID,$_POST['newsletter']);
+ ModAlusersHelper::newEmail($user->nUserID,$_POST['new_email']);
+ ModAlusersHelper::delEmail($user->nUserID,(int)$_POST['del_email']);
+ $user=JFactory::getUser(); // újra beolvassa az adatbázisból a rekordot mentés után
+ $crmUser=ModAlusersHelper::getUserFromCRM((int)$user->nUserID); // újra beolvassa az adatbázisból a rekordot mentés után
+ JFactory::getApplication()->enqueueMessage(JText::_('MOD_ARCHLINE_NEWSLETTER_SETTINGS_SUCCESS'),'message');
+}
+
+// személyes adatok mentése
+if (isset($_POST) && !empty($_POST) && isset($_POST['ps']) )
+{
+ ModAlusersHelper::savePersonalSettings($user->nUserID,$_POST);
+ $user=JFactory::getUser(); // újra beolvassa az adatbázisból a rekordot mentés után
+ $crmUser=ModAlusersHelper::getUserFromCRM((int)$user->nUserID); // újra beolvassa az adatbázisból a rekordot mentés után
+ JFactory::getApplication()->enqueueMessage(JText::_('MOD_ARCHLINE_PERSONAL_DATA_SUCCESS'),'message');
+}
+
+// új jelszó mentése
+if (isset($_POST) && !empty($_POST) && isset($_POST['pw']) )
+{
+ $pass1=trim(addslashes($_POST['password1']));
+ $pass2=trim(addslashes($_POST['password2']));
+
+ if ($pass1!=$pass2) {JFactory::getApplication()->enqueueMessage(JText::_('MOD_ARCHLINE_PASSWORD_CHANGE_ERROR'),'error');}
+ elseif (strlen($pass1)<6 || strlen($pass1)>32) {JFactory::getApplication()->enqueueMessage(JText::_('MOD_ARCHLINE_PASSWORD_CHANGE_ERROR2'),'error');}
+ else
+ {
+ ModAlusersHelper::savePassword($user->id,$pass1);
+ JFactory::getApplication()->enqueueMessage(JText::_('MOD_ARCHLINE_PASSWORD_CHANGE_SUCCESS'),'message');
+ }
+}
+
+$newsletterEmails=ModAlusersHelper::getNewsletterEmails($user->nUserID);
+$countries=ModAlusersHelper::getCountries();
+$profs=ModAlusersHelper::getProfessions();
+
+$emails=ModAlusersHelper::getEmails($user->email);
+if ($emails && count($emails)>0)
+{
+ foreach ($emails as $tmp) {$ids[]=$tmp->nUserID;}
+ $kulcsok=ModAlusersHelper::getAllKeyData($ids);
+}
+
+require JModuleHelper::getLayoutPath('mod_alusers', $params->get('layout', 'default'));
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php.evidence.json
new file mode 100644
index 0000000..1225d57
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7207",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/mod_alusers.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.php)",
+ "original_sha256": "b3a03c1a602038b8d04ed872392111f716c34c5d602a192d4960aa9830ed95b5",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560339689,
+ "size": 3927,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/mod_alusers.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml
new file mode 100644
index 0000000..411eb45
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml
@@ -0,0 +1,151 @@
+
+
+ MOD_ARCHLINE_USERS
+ Apr 2017
+ Zsolt Fekete
+ zsolt.fekete@cadline.hu
+ https://www.facbook.com/mcleod78
+ Copyright © 2017 - All rights reserved.
+ GNU General Public License v2.0
+ 0.0.1
+ MOD__P___ARCHLINE_USERS___P_
+
+ mod_alusers.php
+ mod_alusers.xml
+ index.html
+ language
+ tmpl
+ assets
+
+
+
+
+
+
+
+
+
+ en-GB/en-GB.mod_alusers.sys.ini
+ en-GB/en-GB.mod_alusers.ini
+ hu-HU/hu-HU.mod_alusers.sys.ini
+ hu-HU/hu-HU.mod_alusers.ini
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml.evidence.json
new file mode 100644
index 0000000..ea4c515
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7205",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/mod_alusers.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/mod_alusers.xml)",
+ "original_sha256": "6c84ae2988438c5b40555e8862b72fce0d349b203dfcf54a58f3f9ba1ebf289e",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 6165,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/mod_alusers.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php
new file mode 100644
index 0000000..3a68231
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php
@@ -0,0 +1,268 @@
+
+
+id > 0) : ?>
+ = JText::_('MOD_ARCHLINE_NEWSLETTER_SETTINGS') ?>
+
+
+
+ = JText::_('MOD_ARCHLINE_NEWSLETTER_TEXT2') ?>
+
+
+
+ = JText::_('MOD_ARCHLINE_PERSONAL_DATA_SETTINGS') ?>
+
+
+
+ = JText::_('MOD_ARCHLINE_INVOICE_DATA_SETTINGS') ?>
+
+
+
= JText::_('MOD_ARCHLINE_NAME') ?>:
+
= $crmUser->strInvoiceName ?>
+
= JText::_('MOD_ARCHLINE_COUNTRY') ?>:
+
+ nInvoiceCtrID == $country->ctrID) {
+ echo $country->ctrNameEng;
+ break;
+ }
+ } ?>
+
+
+
+
= JText::_('MOD_ARCHLINE_EMAIL') ?>:
+
= $crmUser->strInvoiceEMail ?>
+
= JText::_('MOD_ARCHLINE_ZIP') ?>:
+
= $crmUser->strInvoiceZip ?>
+
+
+
= JText::_('MOD_ARCHLINE_TAXNUMBER') ?>:
+
= $crmUser->strTaxNumber ?>
+
= JText::_('MOD_ARCHLINE_CITY') ?>:
+
= $crmUser->strInvoiceCity ?>
+
+
+
= JText::_('MOD_ARCHLINE_EACCOUNT') ?>:
+
= ($crmUser->strInvoiceEAccount == 'Y' ? JText::_('JYES') : JText::_('JNO')) ?>
+
= JText::_('MOD_ARCHLINE_ADDRESS') ?>:
+
= $crmUser->strInvoiceAddress ?>
+
+
+
+
+
+ = JText::_('MOD_ARCHLINE_PASSWORD_CHANGE') ?>
+ = JText::_('MOD_ARCHLINE_PASSWORD_CHANGE_TEXT1') ?>
+
+
+ if (isset($kulcsok) && is_array($kulcsok) && count($kulcsok)) : ?>
+
+ = JText::_('MOD_ARCHLINE_PROGRAM_LEGEND') ?>
+
+
+
+
+ - = JText::_('MOD_ARCHLINE_KEY_NUMBER_LEGEND'); ?>
+ - = $kulcs->kulcs_kod; ?>
+
+ programok) && count($kulcs->programok)) {
+ foreach ($kulcs->programok as $program) {
+ if (strpos($program->prPass, 'L') !== false) {
+ $program->verName .= ' Live';
+ }
+ if (substr($program->prPass, 0, 2) == 99) {
+ $program->typeName = "Non-Profit";
+ }
+ $class = ($program->prStat == 0 ? "aktiv" : "inaktiv");
+
+ if ($program->prStat == 0) {
+ $aktiv .= '- ' . JText::_('MOD_ARCHLINE_VERSION_LEGEND') . '
+ - ' . $program->verName . '
+ - ' . JText::_('MOD_ARCHLINE_PROGRAM_TYPE_LEGEND') . '
+ - ' . $program->typeName . '
+ - ' . JText::_('MOD_ARCHLINE_SERIAL_NUMBER_LEGEND') . '
+ - ' . ($program->prSellDate != '0000-00-00' ? $program->prPass : '') . '
+ - ' . JText::_('MOD_ARCHLINE_ACTIVATION_NUMBER_LEGEND') . '
+ - ' . ($program->prSellDate != '0000-00-00' ? $program->prActCode : '') . '
';
+ if (!empty($program->modulok)) {
+ $aktiv .= '- ' . JText::_('MOD_ARCHLINE_MODULES_LEGEND') . '
';
+ $aktiv .= '- ';
+ foreach ($program->modulok as $modul) {
+ $aktiv .= ($lang == 'hu-HU' ? $modul->mdtName : $modul->mdtNameEng) . '
';
+ $aktiv .= ($program->prSellDate != '0000-00-00' ? $modul->mdCode : '') . '
';
+ }
+ $aktiv .= '
';
+ }
+ $aktiv .= '
';
+ } else {
+ $inaktiv .= '- ' . JText::_('MOD_ARCHLINE_VERSION_LEGEND') . '
+ - ' . $program->verName . '
+ - ' . JText::_('MOD_ARCHLINE_PROGRAM_TYPE_LEGEND') . '
+ - ' . $program->typeName . '
+ - ' . JText::_('MOD_ARCHLINE_SERIAL_NUMBER_LEGEND') . '
+ - ' . ($program->prSellDate != '0000-00-00' ? $program->prPass : '') . '
+ - ' . JText::_('MOD_ARCHLINE_ACTIVATION_NUMBER_LEGEND') . '
+ - ' . ($program->prSellDate != '0000-00-00' ? $program->prActCode : '') . '
';
+
+ if (!empty($program->modulok)) {
+ $inaktiv .= '- ' . JText::_('MOD_ARCHLINE_MODULES_LEGEND') . '
';
+ $inaktiv .= '- ';
+ foreach ($program->modulok as $modul) {
+ $inaktiv .= ($lang == 'hu-HU' ? $modul->mdtName : $modul->mdtNameEng) . '
';
+ $inaktiv .= ($program->prSellDate != '0000-00-00' ? $modul->mdCode : '') . '
';
+ }
+ $inaktiv .= '
';
+ }
+ $inaktiv .= '
';
+ }
+ }
+ }
+ ?>
+
+ = $aktiv ?>
+
+ '') : ?>
+
+
+ = $inaktiv ?>
+
+
+
+ endforeach; ?>
+
+
+
+ endif; ?>
+ endif; ?>
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..ffb8f44
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7209",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/default.php)",
+ "original_sha256": "1fa3716d8853febb7a6630ffa262cd2dd2e3c9cdbf04b7fa107b4fafe7afa990",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1684394500,
+ "size": 15571,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html.evidence.json
new file mode 100644
index 0000000..d06649e
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7208",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_alusers/tmpl/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_alusers/tmpl/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1560332148,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_alusers/tmpl/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php
new file mode 100644
index 0000000..9a1ba2b
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php
@@ -0,0 +1,77 @@
+getQuery(true);
+
+ $query->select(array('c.*'));
+ $query->from($db->quoteName('www_archline_hu.aleducation_courses', 'c'));
+ $query->where($db->quoteName('c.lang') . ' = ' . $db->quote($lang));
+ $query->where($db->quoteName('c.published') . ' = ' . $db->quote('Y'));
+
+ // Reset the query using our newly populated query object.
+ $db->setQuery($query);
+
+ return $db->loadObjectList();
+ }
+
+ public static function getApplicationPercentage($courseId, $userId)
+ {
+ $db = JFactory::getDbo();
+
+ $query = $db->getQuery(true);
+
+ $query->select(array('e.*'));
+ $query->from($db->quoteName('www_archline_hu.aleducation_applications', 'e'));
+ $query->where($db->quoteName('e.user_id') . ' = ' . $db->quote($userId));
+ $query->where($db->quoteName('e.course_id') . ' = ' . $db->quote($courseId));
+
+ $db->setQuery($query);
+
+ $result = $db->loadObject();
+
+ return empty($result) ? 0 : $result->percentage;
+ }
+
+ public static function getApplications($userId)
+ {
+ $db = JFactory::getDbo();
+
+ $query = $db->getQuery(true);
+
+ $query->select(array('e.*'));
+ $query->from($db->quoteName('www_archline_hu.aleducation_applications', 'e'));
+ $query->where($db->quoteName('e.user_id') . ' = ' . $db->quote($userId));
+
+ $db->setQuery($query);
+
+ return $db->loadObjectList();
+ }
+
+ public static function getColor()
+ {
+ return self::getLang() == "hun" ? "#e67e22" : "#3897d3";
+ }
+
+ public static function getLang()
+ {
+ $lang = JFactory::getLanguage()->getTag();
+
+ if ($lang == 'de-DE')
+ return 'de';
+
+ if ($lang == 'hu-HU')
+ return 'hun';
+
+ return 'eng';
+ }
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php.evidence.json
new file mode 100644
index 0000000..22d5f4f
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7230",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/helper.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/helper.php)",
+ "original_sha256": "7b74a823c28f5516bbc785b36d16beafb6d01d229db1af93561488d67911fd27",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693302543,
+ "size": 1848,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/helper.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html.evidence.json
new file mode 100644
index 0000000..47ca113
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7228",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini
new file mode 100644
index 0000000..ccf3660
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini
@@ -0,0 +1,4 @@
+MOD_ARCHLINE_USERS="ARCHLine users"
+MOD__P___ARCHLINE_USERS___P_="
+ ARCHLine users
+
"
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini.evidence.json
new file mode 100644
index 0000000..4649be5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7235",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini)",
+ "original_sha256": "4289718b100745f12113baff97d577817d0ad7fca3ed8a7d37360bd06b95d0ed",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 96,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/language/en-GB/en-GB.mod_course_list.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini
new file mode 100644
index 0000000..ccf3660
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini
@@ -0,0 +1,4 @@
+MOD_ARCHLINE_USERS="ARCHLine users"
+MOD__P___ARCHLINE_USERS___P_="
+ ARCHLine users
+
"
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini.evidence.json
new file mode 100644
index 0000000..9aea332
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7234",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini)",
+ "original_sha256": "4289718b100745f12113baff97d577817d0ad7fca3ed8a7d37360bd06b95d0ed",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 96,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/language/en-GB/en-GB.mod_course_list.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini
new file mode 100644
index 0000000..ccf3660
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini
@@ -0,0 +1,4 @@
+MOD_ARCHLINE_USERS="ARCHLine users"
+MOD__P___ARCHLINE_USERS___P_="
+ ARCHLine users
+
"
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini.evidence.json
new file mode 100644
index 0000000..ce94715
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7232",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini)",
+ "original_sha256": "4289718b100745f12113baff97d577817d0ad7fca3ed8a7d37360bd06b95d0ed",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 96,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini
new file mode 100644
index 0000000..ccf3660
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini
@@ -0,0 +1,4 @@
+MOD_ARCHLINE_USERS="ARCHLine users"
+MOD__P___ARCHLINE_USERS___P_="
+ ARCHLine users
+
"
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini.evidence.json
new file mode 100644
index 0000000..d7f580d
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7233",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini)",
+ "original_sha256": "4289718b100745f12113baff97d577817d0ad7fca3ed8a7d37360bd06b95d0ed",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 96,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/language/hu-HU/hu-HU.mod_course_list.sys.ini",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php
new file mode 100644
index 0000000..b6fe741
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php
@@ -0,0 +1,12 @@
+getTag();
+$user = JFactory::getUser();
+$courses = ModCourseListHelper::getCourses();
+$color = ModCourseListHelper::getColor();
+$applications = ModCourseListHelper::getApplications($user->id);
+
+require JModuleHelper::getLayoutPath('mod_course_list', $params->get('layout', 'default'));
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php.evidence.json
new file mode 100644
index 0000000..62f5f2d
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7229",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/mod_course_list.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.php)",
+ "original_sha256": "7ad520f80ac058de97c4942710890f49f62e7962bae0dc699694ddddc98961ac",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 450,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/mod_course_list.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml
new file mode 100644
index 0000000..e177236
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml
@@ -0,0 +1,42 @@
+
+
+ MOD_COURSE_LIST
+ August 2022
+ Nagy Máté
+ mate.nagy@cadline.hu
+ Copyright © 2021 - All rights reserved.
+ 0.0.1
+ Create a list for the actual courses
+
+ mod_course_list.php
+ mod_course_list.xml
+ index.html
+ helper.php
+ language
+ tmpl
+
+
+
+
+
+
+
+
+ en-GB/en-GB.mod_course_list.sys.ini
+ en-GB/en-GB.mod_course_list.ini
+ hu-HU/hu-HU.mod_course_list.sys.ini
+ hu-HU/hu-HU.mod_course_list.ini
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml.evidence.json
new file mode 100644
index 0000000..e5164e6
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7231",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/mod_course_list.xml -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/mod_course_list.xml)",
+ "original_sha256": "2de45f9fb95060b6131cfba8e5a46bbd3f6027cbd11a97026966fbf948c0c89a",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 1947,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/mod_course_list.xml",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php
new file mode 100644
index 0000000..7ebc095
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+ id, $user->id); ?>
+ -
+
+
+
+
\ No newline at end of file
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php.evidence.json
new file mode 100644
index 0000000..2712fc5
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7237",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/tmpl/default.php -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/default.php)",
+ "original_sha256": "7c7e3eec8538662acb59cbd9173f748aead4c052a1e10271c2216389983c83a2",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693388160,
+ "size": 10892,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/tmpl/default.php",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html
new file mode 100644
index 0000000..f28d9de
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Joomla Module Generator
+
+
diff --git a/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html.evidence.json b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html.evidence.json
new file mode 100644
index 0000000..5aa44d6
--- /dev/null
+++ b/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html.evidence.json
@@ -0,0 +1,15 @@
+{
+ "finding_ref": "7236",
+ "log_excerpt": "[quarantine] www.archlinexp.eu:modules/mod_course_list/tmpl/index.html -> quarantined (dest=/var/lib/web-hids/quarantine/var/www/hosting/archlinexp.eu/www/modules/mod_course_list/tmpl/index.html)",
+ "original_sha256": "647cde511844340d9fac1c8247d2ddbcb03c29471da015a4eaf34224a623815d",
+ "original_stat": {
+ "gid": 30037,
+ "mtime": 1693295792,
+ "size": 191,
+ "uid": 20043
+ },
+ "rel_path": "modules/mod_course_list/tmpl/index.html",
+ "result": "quarantined",
+ "timestamp": "20260718T160204Z",
+ "vhost": "www.archlinexp.eu"
+}