Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/components/com_user/controllers/base.php
<?php
/**
* @version        $Id: base.php 2361 2020-11-29 19:47:22Z IOS $
* @package        Elxis
* @subpackage    Component User
* @copyright    Copyright (c) 2006-2021 Elxis CMS (https://www.elxis.org). All rights reserved.
* @license        Elxis Public License ( https://www.elxis.org/elxis-public-license.html )
* @author        Elxis Team ( https://www.elxis.org )
* @description     Elxis CMS is free software. Read the license for copyright notices and details
*/

defined('_ELXIS_') or die ('Direct access to this location is not allowed');


class
userController {

    protected
$view = null;
    protected
$model = null;


    protected function
__construct($view=null, $task='', $model=null) {
       
$this->view = $view;
       
$this->model = $model;
        if (!
defined('ELXIS_ADMIN')) {
           
$this->makePathway($task);
        }
    }


   
/*****************************/
    /* SET FRONTEND PAGE PATHWAY */
    /*****************************/
   
protected function makePathway($task='') {
       
$pathway = eFactory::getPathway();
       
$eLang = eFactory::getLang();
       
$pathway->deleteAllNodes();
       
$pathway->addNode($eLang->get('USERSCENTRAL'), 'user:/', false);
        switch(
$task) {
            case
'changetimezone': case 'userscentral': case '': break;
            case
'login': $pathway->addNode($eLang->get('LOGIN')); break;
            case
'logout': $pathway->addNode($eLang->get('LOGOUT')); break;
            case
'register': $pathway->addNode($eLang->get('REGISTER')); break;
            case
'recoverpass': $pathway->addNode($eLang->get('RECOVERPASS')); break;
            case
'activate': $pathway->addNode($eLang->get('ACCOUNTACT')); break;
            case
'memberslist':
               
$page = isset($_GET['page']) ? (int)$_GET['page'] : 0;
                if (
$page > 1) {
                   
$pathway->addNode($eLang->get('MEMBERSLIST'), 'user:members/', false);
                   
$pathway->addNode($eLang->get('PAGE').' '.$page);
                } else {
                   
$pathway->addNode($eLang->get('MEMBERSLIST'));
                }
            break;
            case
'profile':
               
$pathway->addNode($eLang->get('MEMBERSLIST'), 'user:members/', false);
               
$pathway->addNode($eLang->get('PROFILE'));
            break;
            case
'editprofile':
            case
'saveprofile':
               
$pathway->addNode($eLang->get('MEMBERSLIST'), 'user:members/', false);
               
$pathway->addNode($eLang->get('EDITPROFILE'));
            break;
            case
'blockaccount':
               
$pathway->addNode($eLang->get('MEMBERSLIST'), 'user:members/', false);
               
$pathway->addNode($eLang->get('BLOCKUSER'));
            break;
            case
'deleteaccount':
               
$pathway->addNode($eLang->get('MEMBERSLIST'), 'user:members/', false);
               
$pathway->addNode($eLang->get('DELETEACCOUNT'));
            break;
            default: break;
        }
    }


   
/*****************/
    /* FORCE SSL/TLS */
    /*****************/
   
protected function base_forceSSL($elxisURI) {
       
$elxis = eFactory::getElxis();
        if (
$elxis->getConfig('SSL') == 0) { return; }
        if (
eFactory::getURI()->detectSSL() === true) { return; }
        if (
$elxis->getConfig('SSL') == 2) {
           
$link = $elxis->makeURL($elxisURI, '', true, false);
           
$elxis->redirect($link);
        } elseif ((
$elxis->getConfig('SSL') == 1) && defined('ELXIS_ADMIN')) {
           
$link = $elxis->makeURL($elxisURI, '', true, false);
           
$elxis->redirect($link);
        }
    }


   
/****************************/
    /* GET COMPONENT PARAMETERS */
    /****************************/
   
protected function base_getParams() {
       
$db = eFactory::getDB();
       
$sql = "SELECT ".$db->quoteId('params')." FROM ".$db->quoteId('#__components')." WHERE ".$db->quoteId('component')." = ".$db->quote('com_user');
       
$stmt = $db->prepareLimit($sql, 0, 1);
       
$stmt->execute();
       
$params_str = (string)$stmt->fetchResult();
       
elxisLoader::loadFile('includes/libraries/elxis/parameters.class.php');
       
$params = new elxisParameters($params_str, '', 'component');
        return
$params;
    }


   
/********************************/
    /* SEND NEW REGISTRATION EMAILS */
    /********************************/
   
protected function mailNewAccount($row) {
       
$eLang = eFactory::getLang();
       
$elxis = eFactory::getElxis();

       
$profile_page = $elxis->makeURL('user:members/'.$row->uid.'.html');

       
$subject = $eLang->get('THANKSYREG');
       
$body = $eLang->get('HI').' '.$row->firstname.' '.$row->lastname."\n";
       
$body .= sprintf($eLang->get('THANKREGAT'), $elxis->getConfig('SITENAME'))."\n\n";
        if (
$elxis->getConfig('REGISTRATION_ACTIVATION') === 0) {
           
$body .= sprintf($eLang->get('YOUMAYLOGIN'), $row->uname)."\n\n";
           
$body .= $eLang->get('LOGIN').": \t\t".$elxis->makeURL('user:login/', '', true)."\n";
           
$body .= $eLang->get('USERPROFILE').": \t\t".$profile_page."\n\n\n";
        } else if (
$elxis->getConfig('REGISTRATION_ACTIVATION') === 2) {
           
$body .= $eLang->get('REGINSPBEFLOG')."\n\n\n";
        } else {
           
$body .= $eLang->get('CLICKACTIVATE')."\n";
           
$body .= $elxis->makeURL('user:activate.html?c='.$row->activation, '', true)."\n\n\n";
        }
       
$body .= $eLang->get('REGARDS')."\n";
       
$body .= $elxis->getConfig('SITENAME')."\n";
       
$body .= $elxis->getConfig('URL')."\n\n\n\n";
       
$body .= "_______________________________________________________________\n";
       
$body .= $eLang->get('NOREPLYMSGINFO');

       
$to = $row->email.','.$row->firstname.' '.$row->lastname;
       
$elxis->sendmail($subject, $body, '', null, 'plain', $to);

       
$db = eFactory::getDB();
       
$sql = "SELECT ".$db->quoteId('firstname').",  ".$db->quoteId('lastname').",  ".$db->quoteId('email').",  ".$db->quoteId('preflang')
        .
"\n FROM  ".$db->quoteId('#__users')." WHERE  ".$db->quoteId('gid')." = 1 AND ".$db->quoteId('block')." = 0";
       
$stmt = $db->prepare($sql);
       
$stmt->execute();
       
$admins = $stmt->fetchAll(PDO::FETCH_OBJ);

       
$original_language = $eLang->currentLang();
       
$curlang = $original_language;
        if (
$admins && (count($admins) > 0)) {
            foreach (
$admins as $admin) {
               
$userlang = trim($admin->preflang);
                if ((
$userlang != '') && ($userlang != $curlang)) {
                   
$eLang->switchLanguage($userlang);
                   
$curlang = $userlang;
                }

               
$subject = $eLang->exist('NEWUSERREG') ? $eLang->get('NEWUSERREG') : 'A new user has registered';
               
$body = sprintf($eLang->get('NEWUSERREGAT'), $elxis->getConfig('SITENAME'))."\n\n";
               
$body .= $eLang->get('USERNAME').": \t\t".$row->uname."\n";
               
$body .= $eLang->get('FIRSTNAME').": \t\t".$row->firstname."\n";
               
$body .= $eLang->get('LASTNAME').": \t\t".$row->lastname."\n";
               
$body .= $eLang->get('EMAIL').": \t\t".$row->email."\n";
               
$body .= $eLang->get('USERPROFILE').": \t\t".$profile_page."\n\n\n";
                if (
$elxis->getConfig('REGISTRATION_ACTIVATION') === 2) {
                   
$body .= $eLang->get('YMUSTMANACTLOG')."\n\n\n";
                }
               
$body .= $eLang->get('REGARDS')."\n";
               
$body .= $elxis->getConfig('SITENAME')."\n";
               
$body .= $elxis->getConfig('URL')."\n\n\n\n";
               
$body .= "_______________________________________________________________\n";
               
$body .= $eLang->get('NOREPLYMSGINFO');
               
               
$to = $admin->email.','.$admin->firstname.' '.$admin->lastname;
               
$elxis->sendmail($subject, $body, '', null, 'plain', $to);
            }
        }
       
        if (
$curlang != $original_language) {
           
$eLang->switchLanguage($original_language);
        }
    }


   
/***************************/
    /* SEND NEW PASSWORD EMAIL */
    /***************************/
   
protected function mailPassRecover($firstname, $lastname, $email, $enc_act) {
       
$eLang = eFactory::getLang();
       
$elxis = eFactory::getElxis();

       
$parsed = parse_url($elxis->getConfig('URL'));
       
$reslink = $elxis->makeURL('user:resetpw.html', '', true).'?r='.$enc_act;

       
$subject = $eLang->get('RECOVERPASS');
       
$body = $eLang->get('HI').' '.$firstname.' '.$lastname."\n";
       
$body .= sprintf($eLang->get('RESETPASS_CLICKLINK'), $parsed['host'])."\n\n";        
       
$body .= $reslink."\n\n";    
       
$body .= $eLang->get('NOREQ_PASSRESET')."\n\n\n";
       
$body .= $eLang->get('REGARDS')."\n";
       
$body .= $elxis->getConfig('SITENAME')."\n";
       
$body .= $elxis->getConfig('URL')."\n\n\n\n";
       
$body .= "_______________________________________________________________\n";
       
$body .= $eLang->get('NOREPLYMSGINFO');

       
$to = $email.','.$firstname.' '.$lastname;
       
$elxis->sendmail($subject, $body, '', null, 'plain', $to);
    }


   
/**********************************/
    /* SEND ACCOUNT RE-ACTIVATE EMAIL */
    /**********************************/
   
protected function mailReactivateAccount($row, $type='user') {
       
$eLang = eFactory::getLang();
       
$elxis = eFactory::getElxis();

       
$original_language = $eLang->currentLang();
       
$curlang = $original_language;

        if (
$type == 'user') {
           
$userlang = trim($row->preflang);
            if ((
$userlang != '') && ($userlang != $curlang)) {
               
$eLang->switchLanguage($userlang);
               
$curlang = $userlang;
            }

           
$subject = $eLang->get('ACCOUNTACT');
           
$body = $eLang->get('HI').' '.$row->firstname.' '.$row->lastname."\n";
           
$body .= sprintf($eLang->get('EMAILATCHANGED'), $elxis->getConfig('SITENAME'))."\n\n";
           
$body .= $eLang->get('CLICKACTIVATE')."\n";
           
$body .= $elxis->makeURL('user:activate.html?c='.$row->activation, '', true)."\n\n\n";
           
$body .= $eLang->get('REGARDS')."\n";
           
$body .= $elxis->getConfig('SITENAME')."\n";
           
$body .= $elxis->getConfig('URL')."\n\n\n\n";
           
$body .= "_______________________________________________________________\n";
           
$body .= $eLang->get('NOREPLYMSGINFO');

           
$to = $row->email.','.$row->firstname.' '.$row->lastname;
           
$elxis->sendmail($subject, $body, '', null, 'plain', $to);
        } else {
//admins
           
$db = eFactory::getDB();
           
$sql = "SELECT ".$db->quoteId('firstname').",  ".$db->quoteId('lastname').",  ".$db->quoteId('email').",  ".$db->quoteId('preflang')
            .
"\n FROM  ".$db->quoteId('#__users')." WHERE  ".$db->quoteId('gid')." = 1 AND ".$db->quoteId('block')." = 0";
           
$stmt = $db->prepare($sql);
           
$stmt->execute();
           
$admins = $stmt->fetchAll(PDO::FETCH_OBJ);

            if (
$admins && (count($admins) > 0)) {
                foreach (
$admins as $admin) {
                   
$userlang = trim($admin->preflang);
                    if ((
$userlang != '') && ($userlang != $curlang)) {
                       
$eLang->switchLanguage($userlang);
                       
$curlang = $userlang;
                    }

                   
$subject = $eLang->get('ACCOUNTACT');
                   
$body = $eLang->get('HI').' '.$admin->firstname.' '.$admin->lastname."\n";
                   
$body = sprintf($eLang->get('UCHANGEDEMAIL'), $row->uname)."\n";
                   
$body .= $eLang->get('YMUSTMANACTLOG')."\n\n";
                   
$body .= $eLang->get('USERNAME').": \t\t".$row->uname."\n";
                   
$body .= $eLang->get('FIRSTNAME').": \t\t".$row->firstname."\n";
                   
$body .= $eLang->get('LASTNAME').": \t\t".$row->lastname."\n";
                   
$body .= $eLang->get('EMAIL').": \t\t".$row->email."\n\n\n\n";
                   
$body .= $eLang->get('REGARDS')."\n";
                   
$body .= $elxis->getConfig('SITENAME')."\n";
                   
$body .= $elxis->getConfig('URL')."\n\n\n\n";
                   
$body .= "_______________________________________________________________\n";
                   
$body .= $eLang->get('NOREPLYMSGINFO');
               
                   
$to = $admin->email.','.$admin->firstname.' '.$admin->lastname;
                   
$elxis->sendmail($subject, $body, '', null, 'plain', $to);
                }
            }
        }

        if (
$curlang != $original_language) {
           
$eLang->switchLanguage($original_language);
        }
    }


   
/***************************************/
    /* ECHO PAGE HEADERS FOR AJAX REQUESTS */
    /***************************************/
   
protected function ajaxHeaders($type='text/plain') {
        if(
ob_get_length() > 0) { ob_end_clean(); }
       
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
       
header('Last-Modified: '.gmdate('D, d M Y H:i:s').'GMT');
       
header('Cache-Control: no-cache, must-revalidate');
       
header('Pragma: no-cache');
       
header('Content-type: '.$type.'; charset=utf-8');
    }


   
/***************************/
    /* GET BOOKMARK CATEGORIES */
    /***************************/
   
public function bookmarkCategories() {
       
$eLang = eFactory::getLang();

       
//array: css class suffix, title, fontawesome icon
       
$categories = array(
           
1 => array('bookmark', $eLang->get('BOOKMARK'), 'fas fa-bookmark'),
           
2 => array('todo', $eLang->get('TODO'), 'fas fa-wrench'),
           
3 => array('important', $eLang->get('IMPORTANT'), 'fas fa-exclamation'),
           
4 => array('attention', $eLang->get('ATTENTION'), 'fas fa-exclamation-triangle'),
           
5 => array('reminder', $eLang->get('REMINDER'), 'fas fa-bell'),
           
6 => array('personal', $eLang->get('PERSONAL'), 'fas fa-user'),
           
7 => array('appointment', $eLang->get('APPOINTMENT'), 'far fa-clock'),
           
8 => array('note', $eLang->get('NOTE'), 'far fa-file-alt'),
           
9 => array('hotel', $eLang->get('HOTEL'), 'fas fa-concierge-bell'),
           
10 => array('intersection', $eLang->get('INTERSECTION'), 'fas fa-traffic-light'),
           
11 => array('product', $eLang->get('PRODUCT'), 'fas fa-gift')
        );

        return
$categories;
    }

}

?>