Sindbad~EG File Manager

Current Path : /var/www/ispania.gr/components/com_rsdirectory/controllers/
Upload File :
Current File : /var/www/ispania.gr/components/com_rsdirectory/controllers/removedata.php

<?php
/**
 * @package	RSDirectory!
 * @copyright	(c) 2013 - 2021 RSJoomla!
 * @link		https://www.rsjoomla.com
 * @license	GNU General Public License http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die;

class RsdirectoryControllerRemovedata extends JControllerForm
{
    public function request()
    {
        $this->checkToken();

        try
        {
            $user = JFactory::getUser();
            if ($user->guest)
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_MUST_BE_LOGGED_IN'));
            }

            $config 	= RSDirectoryConfig::getInstance();

            if (!$config->get('allow_self_anonymisation', 0))
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_THIS_FEATURE_MUST_BE_ENABLED'));
            }

            if ($user->authorise('core.admin'))
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_THIS_FEATURE_IS_NOT_AVAILABLE_FOR_SUPER_USERS'));
            }

            // Get JConfig
            $config = JFactory::getConfig();

            // Create a token
            $token = JApplicationHelper::getHash(JUserHelper::genRandomPassword(10));
            $hashedToken = JUserHelper::hashPassword($token);

            // Save the token
            $db = JFactory::getDbo();
            $query = $db->getQuery(true)
                ->select('*')
                ->from($db->qn('#__rsdirectory_tokens'))
                ->where($db->qn('user_id') . ' = ' . $db->q($user->id));
            if ($db->setQuery($query)->loadObject())
            {
                $query->clear()
                    ->update($db->qn('#__rsdirectory_tokens'))
                    ->set($db->qn('token') . ' = ' . $db->q($hashedToken))
                    ->where($db->qn('user_id') . ' = ' . $db->q($user->id));
            }
            else
            {
                $query->clear()
                    ->insert($db->qn('#__rsdirectory_tokens'))
                    ->columns(array($db->qn('user_id'), $db->qn('token')))
                    ->values(implode(', ', array($db->q($user->id), $db->q($hashedToken))));
            }

            $db->setQuery($query)->execute();

            // Create the URL
            $uri 	= JUri::getInstance();
            $base	= $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
            $url    = $base . JRoute::_('index.php?option=com_rsdirectory&task=removedata.process&token=' . $token, false);

            JFactory::getMailer()->sendMail($config->get('mailfrom'), $config->get('fromname'), $user->email, JText::sprintf('COM_RSDIRECTORY_REMOVE_REQUEST_EMAIL_SUBJECT', $user->username, $config->get('sitename')), JText::sprintf('COM_RSDIRECTORY_REMOVE_REQUEST_EMAIL_BODY', $user->name, $url), true);
        }
        catch (Exception $e)
        {
            jexit($e->getMessage());
        }

        jexit(JText::_('COM_RSDIRECTORY_LINK_HAS_BEEN_SENT'));
    }

    public function process()
    {
        $app    = JFactory::getApplication();
        $user   = JFactory::getUser();

        try
        {
            if ($user->guest)
            {
                $link = base64_encode((string) JUri::getInstance());
                $app->redirect(JRoute::_('index.php?option=com_users&view=login&return=' . $link, false), JText::_('COM_RSDIRECTORY_MUST_BE_LOGGED_IN'));
            }

            $config 	= RSDirectoryConfig::getInstance();

            if (!$config->get('allow_self_anonymisation', 0))
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_THIS_FEATURE_MUST_BE_ENABLED'));
            }

            if ($user->authorise('core.admin'))
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_THIS_FEATURE_IS_NOT_AVAILABLE_FOR_SUPER_USERS'));
            }

            $token = $app->input->getCmd('token');
            if (!$token || strlen($token) != 32)
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_TOKEN_IS_INCORRECT'));
            }

            // Let's see if the token matches
            $db = JFactory::getDbo();
            $query = $db->getQuery(true)
                ->select($db->qn('token'))
                ->from($db->qn('#__rsdirectory_tokens'))
                ->where($db->qn('user_id') . ' = ' . $db->q($user->id));
            $dbToken = $db->setQuery($query)->loadResult();

            if (!$dbToken || !JUserHelper::verifyPassword($token, $dbToken))
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_TOKEN_IS_INCORRECT'));
            }

            // Delete the token
            $query->clear()
                ->delete($db->qn('#__rsdirectory_tokens'))
                ->where($db->qn('user_id') . ' = ' . $db->q($user->id));
            $db->setQuery($query)->execute();

            // Anonymise data
            RSDirectoryHelper::anonymise($user->id);

            $app->logout();
            $app->redirect(JRoute::_('index.php?option=com_rsdirectory&view=removedata', false));
        }
        catch (Exception $e)
        {
            $app->enqueueMessage($e->getMessage(), 'error');
            $this->setRedirect(JRoute::_('index.php', false));
        }
    }

    public function processreport() {
        $app    = JFactory::getApplication();
        try
        {

            $config 	= RSDirectoryConfig::getInstance();
            if (!$config->get('send_report_deletion_email', 1)) {
                throw new Exception(JText::_('COM_RSDIRECTORY_THIS_FEATURE_MUST_BE_ENABLED'));
            }

            $token = $app->input->getCmd('token');
            if (!$token || strlen($token) != 32)
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_TOKEN_IS_INCORRECT'));
            }

            // Get Dbo object
            $db = JFactory::getDbo();

            // Escape the token
            $token = $db->escape($token);

            // Let's see if the token matches
            $query = $db->getQuery(true)
                ->select($db->qn('token'))
                ->from($db->qn('#__rsdirectory_entries_reported'))
                ->where($db->qn('token') . ' = ' . $db->q($token));
            $dbToken = $db->setQuery($query)->loadResult();
            if (!$dbToken)
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_TOKEN_IS_INCORRECT'));
            }

            // Delete the report
            $query->clear()
                ->delete($db->qn('#__rsdirectory_entries_reported'))
                ->where($db->qn('token') . ' = ' . $db->q($token));
            $db->setQuery($query)->execute();

            $app->redirect(JRoute::_('index.php?option=com_rsdirectory&view=removedata&layout=report', false));
        }
        catch (Exception $e)
        {
            $app->enqueueMessage($e->getMessage(), 'error');
            $this->setRedirect(JRoute::_('index.php', false));
        }
    }

    public function processreview(){
        $app    = JFactory::getApplication();
        try
        {

            $config 	= RSDirectoryConfig::getInstance();
            if (!$config->get('send_report_deletion_email', 1)) {
                throw new Exception(JText::_('COM_RSDIRECTORY_THIS_FEATURE_MUST_BE_ENABLED'));
            }

            $token = $app->input->getCmd('token');
            if (!$token || strlen($token) != 32)
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_TOKEN_IS_INCORRECT'));
            }

            // Get Dbo object
            $db = JFactory::getDbo();

            // Escape the token
            $token = $db->escape($token);

            // Let's see if the token matches
            $query = $db->getQuery(true)
                ->select($db->qn('token'))
                ->from($db->qn('#__rsdirectory_reviews'))
                ->where($db->qn('token') . ' = ' . $db->q($token));
            $dbToken = $db->setQuery($query)->loadResult();
            if (!$dbToken)
            {
                throw new Exception(JText::_('COM_RSDIRECTORY_TOKEN_IS_INCORRECT'));
            }

            // Anonymise the review
            $fake_text      = JText::_('COM_RSDIRECTORY_DATA_HAS_BEEN_ANONYMISED');
            $fake_ip        = '0.0.0.0';
            $fake_email     = JUserHelper::genRandomPassword(mt_rand(10, 16)) . '@' . JUserHelper::genRandomPassword(mt_rand(10, 16));

            $query->clear()
                ->update($db->qn('#__rsdirectory_reviews'))
                ->set($db->qn('ip') . ' = ' . $db->q($fake_ip))
                ->set($db->qn('name') . ' = ' . $db->q($fake_text))
                ->set($db->qn('email') . ' = ' . $db->q($fake_email))
                ->set($db->qn('subject') . ' = ' . $db->q(''))
                ->set($db->qn('review') . ' = ' . $db->q(''))
                ->set($db->qn('token') . ' = ' . $db->q(''))
                ->set($db->qn('published') . ' = ' . $db->q(0))
                ->where($db->qn('token') . ' = ' . $db->q($token));
            $db->setQuery($query)->execute();

            $app->redirect(JRoute::_('index.php?option=com_rsdirectory&view=removedata&layout=review', false));
        }
        catch (Exception $e)
        {
            $app->enqueueMessage($e->getMessage(), 'error');
            $this->setRedirect(JRoute::_('index.php', false));
        }
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists