Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/components/com_extmanager/controllers/browse.php
<?php
/**
* @version        $Id: browse.php 1492 2014-04-28 17:02:29Z sannosi $
* @package        Elxis
* @subpackage    Component Extensions Manager
* @copyright    Copyright (c) 2006-2020 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
browseExtmanagerController extends extmanagerController {

    private
$edc = null;


   
/*********************/
    /* MAGIC CONSTRUCTOR */
    /*********************/
   
public function __construct($view=null, $task='', $model=null) {
       
parent::__construct($view, $task, $model);
       
$this->initEDC();
    }


   
/*************************************/
    /* INITIALIZE ELXIS DOWNLOADS CENTER */
    /*************************************/
   
private function initEDC() {
       
$elxisid = '';
       
$edcurl = '';
       
$str = $this->model->componentParams();
       
elxisLoader::loadFile('includes/libraries/elxis/parameters.class.php');
       
elxisLoader::loadFile('components/com_extmanager/includes/edc.class.php');
       
$params = new elxisParameters($str, '', 'component');
       
$this->edc = new elxisDC($params);
    }


   
/******************************************************/
    /* PREPARE TO DISPLAY EXTENSIONS BROWSER CENTRAL PAGE */
    /******************************************************/
   
public function central() {
       
$eLang = eFactory::getLang();
       
$pathway = eFactory::getPathway();
       
$elxis = eFactory::getElxis();
       
$eDoc = eFactory::getDocument();

       
$eDoc->addFontAwesome();
       
$eDoc->addFontElxis();
       
$eDoc->addStyleLink($elxis->secureBase().'/components/com_extmanager/css/extmanager'.$eLang->getinfo('RTLSFX').'.css');//TODO: RTL
       
$js = $this->getJSONLang();
       
$eDoc->addScript($js);
       
$eDoc->addScriptLink($elxis->secureBase().'/components/com_extmanager/js/extmanager.js');
       
$eDoc->addNativeDocReady('extMan5EDCConnect();');

       
$pathway->addNode($eLang->get('EXTENSIONS'), 'extmanager:/');
       
$pathway->addNode($eLang->get('BROWSE'));
       
$eDoc->setTitle($eLang->get('EXTENSIONS').' - '.$eLang->get('BROWSE'));

       
$this->view->extCentral($this->edc);
    }


   
/*************************************/
    /* GET REQUIRED JSON LANGUAGE STRING */
    /*************************************/
   
private function getJSONLang() {
       
$eLang = eFactory::getLang();
   
       
$strings = array('PLEASE_WAIT', 'CONNECTING_EDC', 'LOADING_EDC', 'INSTALL', 'CANCEL', 'UPDATE', 'ELXISDC', 'SYSTEM_WARNINGS',
       
'AREYOUSURE', 'ACTION_WAIT', 'NAMEMAIL_ELXIS', 'INFO_STAY_PRIVE', 'CONTINUE', 'EDIT');

       
$js = 'var edcLang = {'."\n";
        foreach (
$strings as $string) {
           
$js .= "\t".'\''.$string.'\':\''.addslashes($eLang->get($string)).'\','."\n";
        }
       
$special1 = sprintf($eLang->get('ABOUT_TO_INSTALL'), 'X1', 'X2');
       
$special2 = sprintf($eLang->get('ABOUT_TO_UPDATE_TO'), 'X1', 'X2');
       
$special3 = sprintf($eLang->get('EXT_INST_SUCCESS'), 'X1', 'X2');
       
$js .= "\t".'\'ABOUT_TO_INSTALL\':\''.addslashes($special1).'\','."\n";
       
$js .= "\t".'\'ABOUT_TO_UPDATE_TO\':\''.addslashes($special2).'\','."\n";
       
$js .= "\t".'\'EXT_INST_SUCCESS\':\''.addslashes($special3).'\''."\n";
       
$js .= '};';

        return
$js;
    }


   
/**********************/
    /* HANDLE EDC REQUEST */
    /**********************/
   
public function requestedc() {
       
$options = array();
       
$options['task'] = trim(filter_input(INPUT_POST, 'task', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH));
        if (
$options['task'] == '') { $options['task'] = 'nothing'; }
       
$options['catid'] = isset($_POST['catid']) ? (int)$_POST['catid'] : 0;
        if (
$options['catid'] < 0) { $options['catid'] = 0; }
       
$options['fid'] = 0;//not used anymore
       
$options['id'] = isset($_POST['id']) ? (int)$_POST['id'] : 0;
        if (
$options['id'] < 0) { $options['id'] = 0; }
       
$options['page'] = isset($_POST['page']) ? (int)$_POST['page'] : 1;
        if (
$options['page'] < 1) { $options['page'] = 1; }
       
$options['edcauth'] = trim(filter_input(INPUT_POST, 'edcauth', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH));

        if (
$options['task'] == 'auth') {
           
$response = $this->edc->connect();
           
$this->view->connectionResult($response);
            return;
        }

        if (
$options['task'] == 'frontpage') {
           
$lng = eFactory::getLang()->currentLang();
           
$response = $this->edc->getFrontpage($lng, $options['edcauth']);
           
$this->view->showFrontpage($response, $this->edc);
            return;
        }

        if (
$options['task'] == 'category') {
           
$response = $this->edc->getCategory($options);
           
$this->view->showCategory($response, $this->edc);
            return;
        }

        if (
$options['task'] == 'view') {
           
$response = $this->edc->getExtension($options);
           
$this->view->showExtension($response, $this->edc);
            return;
        }

        if (
$options['task'] == 'author') {
           
$options['uid'] = isset($_POST['uid']) ? (int)$_POST['uid'] : 0;
           
$response = $this->edc->getAuthorExtensions($options);
           
$this->view->showAuthorExtensions($response, $this->edc);
            return;
        }

        if (
$options['task'] == 'search') {
           
$options['keyword'] = strip_tags(filter_input(INPUT_POST, 'keyword', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW));
            if (
$options['keyword'] != '') {
               
$pat = "#([\']|[\"]|[\$]|[\#]|[\<]|[\>]|[\*]|[\%]|[\~]|[\`]|[\^]|[\|]|[\}]|[\\\])#u";
               
$options['keyword'] = eUTF::trim(preg_replace($pat, '', $options['keyword']));
            }
           
$response = $this->edc->searchExtensions($options);
           
$this->view->showSearchExtensions($response, $this->edc);
            return;
        }

       
$this->ajaxHeaders();
        exit;
    }

}
   
?>