Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/components/com_extmanager/views/browse.html.php
<?php
/**
* @version        $Id: browse.html.php 2422 2021-09-23 19:40:45Z IOS $
* @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
browseExtmanagerView extends extmanagerView {

   
/*********************/
    /* MAGIC CONSTRUCTOR */
    /*********************/
   
public function __construct() {
       
parent::__construct();
    }


   
/***********************************/
    /* EXTENSIONS BROWSER CENTRAL PAGE */
    /***********************************/
   
public function extCentral($edc) {
       
$this->ui($edc);
    }


   
/**************************/
    /* DISPLAY USER INTERFACE */
    /**************************/
   
private function ui($edc, $catid=0) {
       
$elxis = eFactory::getElxis();
       
$eLang = eFactory::getLang();
?>

        <?php $this->edcBrowserTop($edc, $catid, $elxis, $eLang); ?>

        <div id="extman5_edcauthmsg" class="elx5_invisible"></div>
        <div id="extman5_edcmain"></div>

        <div class="extman5_edc_copyright">
            <!-- created by Ioannis Sannos (datahell) -->
            Extensions provided by <a href="https://www.elxis.org/" target="_blank" title="Elxis CMS">elxis.org</a>.
            Visit <a href="https://forum.elxis.org/" target="_blank" title="Elxis official forum">Elxis forums</a> for support.
            Copyright &#0169; 2006 - <?php echo date('Y'); ?> elxis.org. All rights reserved.
        </div>

        <div class="elx5_invisible" id="extman5_edcdata" data-auth="" data-elxisid="<?php echo $edc->getElxisId(); ?>"></div>
        <div class="elx5_invisible" id="extman5_edcbase" dir="ltr"><?php echo $elxis->makeAURL('extmanager:/', 'inner.php'); ?></div>
        <div class="elx5_invisible" id="extman5_edcurl" dir="ltr"><?php echo $edc->getEdcUrl(); ?></div>
<?php
        $htmlHelper
= $elxis->obj('html');
        echo
$htmlHelper->startModalWindow('<i class="fas fa-download"></i> '.$eLang->get('INSTALL').'/'.$eLang->get('UPDATE'), 'edcinst');
        echo
'<div id="extman5_edc_imessage" class="elx5_center"></div>'."\n";
        echo
'<div id="extman5_edc_iresponse" class="elx5_invisible"></div>'."\n";
        echo
$htmlHelper->endModalWindow();
    }


   
/*********************************************/
    /* MENU OF EXTENSION CATEGORIES AND ELXIS ID */
    /*********************************************/
   
private function edcBrowserTop($edc, $curcatid, $elxis, $eLang) {
       
$categories = $edc->getCategories();

        echo
'<div class="extman5_edc_top">'."\n";
        echo
'<a href="javascript:void(null);" class="extman5_edc_elxid" title="'.$eLang->get('SEARCH').'" onclick="elx5ModalMessageHide(\'edcsm\'); elx5ModalOpen(\'edcsm\');">'."\n";
        echo
'<i class="fas fa-search"></i>';
        echo
"</a>\n";
        echo
'<div class="extman5_edc_topmain">'."\n";
        echo
'<a href="javascript:void(null);" onclick="extMan5EDCFrontpage();" title="'.$eLang->get('HOME').'" class="extman5_edc_topbtn"><i class="fas fa-home"></i></a>'."\n";
        echo
'<div class="extman5_edc_ctgbox">'."\n";
        echo
'<select class="extman5_edc_ctgsel" id="extman5_edc_ctgsel" onchange="extMan5EDCSwitchCtg();">'."\n";
       
$sel = ($curcatid == 0) ? ' selected="selected"' : '';
        echo
'<option value="0"'.$sel.'>'.$eLang->get('HOME')."</option>\n";
        if (
$categories) {
            foreach (
$categories as $catid => $category) {
               
$sel = ($curcatid == $catid) ? ' selected="selected"' : '';
                echo
'<option value="'.$catid.'"'.$sel.'>'.$category."</option>\n";
            }            
        }
        echo
"</select>\n";
        echo
'<div class="extman5_edc_selarrow"></div>'."\n";
        echo
"</div>\n";
        echo
"</div>\n";//extman5_edc_topmain
       
echo "</div>\n";//extman5_edc_top

       
elxisLoader::loadFile('includes/libraries/elxis/form5.class.php');
       
$inlink = $elxis->makeAURL('extmanager:/', 'inner.php');
       
$htmlHelper = $elxis->obj('html');
        echo
$htmlHelper->startModalWindow('<i class="fas fa-search"></i> '.$eLang->get('SEARCH_EXTENSIONS'), 'edcsm');
       
$form = new elxis5Form(array('idprefix' => 'edcsf'));
       
$form->openForm(array('name' => 'fmedcsearch', 'method' =>'post', 'action' => $inlink.'search', 'id' => 'fmedcsearch', 'autocomplete' => 'off', 'onsubmit' => 'return extman5EDCSearchSubmit();'));
       
$form->addText('keyword', '', $eLang->get('KEYWORD'), array('required' => 'required', 'dir' => 'ltr'));
       
$form->addHTML('<div class="elx5_vpad">');
       
$form->addButton('search', $eLang->get('SEARCH'), 'button', array('class' => 'elx5_btn elx5_sucbtn', 'onclick' => 'extman5EDCSearch();'));
       
$form->addHTML('</div>');
       
$form->closeForm();
        echo
$htmlHelper->endModalWindow();
    }


   
/******************************/
    /* DISPLAY CONNECTION RESULTS */
    /******************************/
   
public function connectionResult($response) {
        if (
$response['error'] != '') {
           
$json = array('error' => 1, 'errormsg' => addslashes($response['error']), 'edcauth' => $response['edcauth']);
        } else {
           
$json = array('error' => 0, 'errormsg' => '', 'edcauth' => $response['edcauth']);
        }

       
$this->ajaxHeaders('application/json');
        echo
json_encode($json);
        exit;
    }



   
/*********************************/
    /* DISPLAY CATEGORY'S EXTENSIONS */
    /*********************************/
   
public function showCategory($response, $edc) {
       
$elxis = eFactory::getElxis();
       
$eLang = eFactory::getLang();

        if (
$response['error'] != '') {
           
$this->ajaxHeaders();
            echo
'<div class="elx5_warning">'.$response['error']."</div>\n";
            exit;
        }
       
        if ((
$response['total'] == 0) || (count($response['rows']) == 0)) {
           
$this->ajaxHeaders();
            echo
'<p class="elx5_info">'.$eLang->get('NO_EXTS_FOUND')."</p>\n";
            exit;
        }

       
$is_ssl = eFactory::getURI()->detectSSL();
       
$perms = $edc->permissions();

       
$this->ajaxHeaders('text/plain');
        if (
$response['total'] == 1) {
            echo
'<p class="elx5_sminfo elx5_dspace">'.$eLang->get('EXTENSION_FOUND')."</p>\n";
        } else {
           
$txt = sprintf($eLang->get('EXTENSIONS_FOUND'), '<strong>'.$response['total'].'</strong>');
            if (
$response['maxpage'] > 1) {
               
$txt .= ' '.sprintf($eLang->get('PAGEOF'), '<strong>'.$response['page'].'</strong>', '<strong>'.$response['maxpage'].'</strong>');
            }
            echo
'<p class="elx5_sminfo elx5_dspace">'.$txt."</p>\n";
        }

        echo
'<div class="extman5_extensions">'."\n";
        foreach (
$response['rows'] as $row) {
           
$actions = $edc->extActions($row, $perms);
           
$this->extensionBox($row, $is_ssl, $response['ordering'], $actions, false, $edc, $elxis, $eLang);
        }
        echo
"</div>\n";

        if (
$response['maxpage'] > 1) {
           
$row = $response['rows'][0];
           
$txt = sprintf($eLang->get('PAGEOF'), $response['page'], $response['maxpage']);
            echo
'<div class="elx5_row elx5_vpad">'."\n";
            echo
'<div class="elx5_datainfo">'.$txt."</div>\n";
            echo
'<div class="elx5_datapagination">'."\n";
            echo
'<ul class="elx5_pagination">'."\n";
            for (
$i=1; $i <= $response['maxpage']; $i++) {
                if (
$i == $response['page']) {
                    echo
'<li class="elx5_pagactive"><a href="javascript:void(null);" title="'.$eLang->get('PAGE').' '.$i.'">'.$i.'</a></li>'."\n";
                } else {
                    echo
'<li><a href="javascript:void(null);" onclick="extMan5EDCLoadCategory('.$row['catid'].', '.$i.');" title="'.$eLang->get('PAGE').' '.$i.'">'.$i.'</a></li>'."\n";
                }
            }
            echo
"</ul>\n";
            echo
"</div>\n";
            echo
"</div>\n";
            unset(
$row);
        }

        exit;
    }


   
/*******************************/
    /* DISPLAY EXTENSION'S DETAILS */
    /*******************************/
   
public function showExtension($response, $edc) {
       
$elxis = eFactory::getElxis();
       
$eLang = eFactory::getLang();

        if (
$response['error'] != '') {
           
$this->ajaxHeaders();
            echo
'<div class="elx5_warning">'.$response['error']."</div>\n";
            exit;
        }

       
$row = $response['row'];
       
$is_ssl = eFactory::getURI()->detectSSL();
       
$perms = $edc->permissions();
       
$actions = $edc->extActions($row, $perms);

       
$this->ajaxHeaders('text/plain');

       
$this->extensionBox($row, $is_ssl, 'c', $actions, true, $edc, $elxis, $eLang);
       
$this->extensionMore($row, $is_ssl, $edc, $elxis, $eLang);
        exit;
    }


   
/***************************/
    /* DISPLAY EDC'S FRONTPAGE */
    /***************************/
   
public function showFrontpage($response, $edc) {
       
$elxis = eFactory::getElxis();
       
$eLang = eFactory::getLang();

        if (
$response['error'] != '') {
           
$this->ajaxHeaders();
            echo
'<div class="elx5_warning">'.$response['error']."</div>\n";
            exit;
        }
       
        if (
count($response['blocks']) == 0) {
           
$this->ajaxHeaders();
            echo
'<p class="elx5_info">Nothing to display!'."</p>\n";
            exit;
        }

       
$is_ssl = eFactory::getURI()->detectSSL();
       
$perms = $edc->permissions();

       
$this->ajaxHeaders();
        foreach (
$response['blocks'] as $block) {
            if (
in_array($block['type'], array('latest', 'popular', 'featured', 'lastupdated'))) {
                switch (
$block['type']) {
                    case
'latest': $block_title = $eLang->get('LATEST_LISTINGS'); break;
                    case
'lastupdated': $block_title = $eLang->get('NEW_UPDATED_EXTS'); break;
                    case
'featured': $block_title = $eLang->get('SUGGESTED'); break;
                    case
'popular': default: $block_title = $eLang->get('POPULAR_LISTINGS'); break;
                }

               
$ids = explode(',',$block['contents']);
                if (!
$ids) { continue; }
                echo
'<h3>'.$block_title."</h3>\n";
                echo
'<div class="extman5_extensions">'."\n";
                foreach (
$ids as $id) {
                   
$x = (int)$id;
                    if (isset(
$response['rows'][$x])) {
                       
$actions = $edc->extActions($response['rows'][$x], $perms);
                       
$this->extensionBox($response['rows'][$x], $is_ssl, 'c', $actions, false, $edc, $elxis, $eLang);
                    }
                }
                echo
"</div>\n";
                continue;
            }

            if (
$block['type'] == 'alert') {
                echo
'<div class="elx5_warning">'.stripslashes($block['contents'])."</div>\n";
            }
            if (
$block['type'] == 'advertisement') {
                echo
'<div class="extman5_edcadv"><span>'.$eLang->get('ADVERTISEMENT').':</span> '.stripslashes($block['contents'])."</div>\n";
            }
            if (
$block['type'] == 'notice') {
                echo
'<div class="extman5_edcnotice">'.stripslashes($block['contents'])."</div>\n";
            }
            if (
$block['type'] == 'announcement') {
                echo
'<div class="extman5_edcannouncement">'.stripslashes($block['contents'])."</div>\n";
            }
            if (
$block['type'] == 'message') {
                echo
'<div class="extman5_edcmsgcontents">'.stripslashes($block['contents'])."</div>\n";
            }
        }
        exit;
    }


   
/****************************/
    /* SHOW AUTHOR'S EXTENSIONS */
    /****************************/
   
public function showAuthorExtensions($response, $edc) {
       
$eLang = eFactory::getLang();
       
$elxis = eFactory::getElxis();
       
$eDate = eFactory::getDate();

        if (
$response['error'] != '') {
           
$this->ajaxHeaders();
            echo
'<div class="elx5_warning">'.$response['error']."</div>\n";
            exit;
        }
       
        if (
count($response['author']) == 0) {
           
$this->ajaxHeaders();
            echo
'<div class="elx5_warning">Invalid author!</div>'."\n";
            exit;
        }

       
$total = count($response['rows']);
       
$is_ssl = eFactory::getURI()->detectSSL();
       
$total_downloads = 0;

       
$img = $elxis->secureBase().'/components/com_user/images/noavatar.png';
        if (
$total > 0) {
            if (isset(
$response['rows'][0])) {
                if (
$response['rows'][0]['author']['avatar'] != '') {
                    if ((
$is_ssl == true) && !preg_match('#^(https\:\/\/)#i', $response['rows'][0]['author']['avatar'])) {//prevent breaking SSL with no SSL images
                       
$img = $elxis->secureBase().'/components/com_user/images/noavatar.png';
                    } else {
                       
$img = $response['rows'][0]['author']['avatar'];
                    }
                }
            }
        }

        if (
$response['author']['city'] != '') {
           
$location = $response['author']['city'];
            if (
$response['author']['country'] != '') {
               
$location .= ', '.$response['author']['country'];
            }
        } else if (
$response['author']['country'] != '') {
           
$location = $response['author']['country'];
        } else {
           
$location = '';
        }

        if (
$total > 0) {
            foreach (
$response['rows'] as $row) { $total_downloads += $row['downloads']; }
        }

       
$this->ajaxHeaders('text/plain');

        echo
'<div class="extman5_edc_authbox">'."\n";
        echo
'<div class="extman5_edc_authimg">'."\n";
        if (
$response['author']['website'] != '') {
            echo
'<a href="'.$response['author']['website'].'" title="'.$eLang->get('VISIT_AUTHOR_SITE').'" target="_blank"><img src="'.$img.'" alt="icon" /></a>'."\n";
        } else {
            echo
'<img src="'.$img.'" alt="icon" />'."\n";
        }
        echo
"</div>\n";//extman5_edc_authimg
       
echo '<div class="extman5_edc_authmain">'."\n";
        echo
'<div class="extman5_edc_authrow"><strong>'.$response['author']['name']."</strong></div>\n";
        echo
'<div class="extman5_edc_authrow" title="'.$eLang->get('LOCATION').'">'.$location."</div>\n";
        echo
'<div class="extman5_edc_authrow">'.$eLang->get('EXTENSIONS').' <strong>'.$total.'</strong> | '.$eLang->get('DOWNLOADS').' <strong>'.$total_downloads."</strong></div>\n";
        if (
$response['author']['website'] != '') {
            echo
'<div class="extman5_edc_authrow">';
            echo
'<a href="'.$response['author']['website'].'" title="'.$eLang->get('VISIT_AUTHOR_SITE').'" target="_blank">'.$response['author']['website'].'</a>';
            echo
"</div>\n";
        }

        echo
"</div>\n";//extman5_edc_authmain
       
echo "</div>\n";//extman5_edc_authbox

       
if ($total > 0) {
            echo
'<h2>'.$eLang->get('EXTENSIONS').' <span dir="ltr">('.$total.")</span></h2>\n";
            echo
'<p class="elx5_sminfo elx5_dspace">'.$eLang->get('ALL_EXTENSIONS_BY').' '.$response['author']['name']."</p>\n";

           
$is_ssl = eFactory::getURI()->detectSSL();
           
$perms = $edc->permissions();

            echo
'<div class="extman5_extensions">'."\n";
            foreach (
$response['rows'] as $row) {
               
$actions = $edc->extActions($row, $perms);
               
$this->extensionBox($row, $is_ssl, 'c', $actions, false, $edc, $elxis, $eLang);
            }
            echo
"</div>\n";
        }

        exit;
    }


   
/**********************************/
    /* SHOW SEARCH EXTENSIONS RESULTS */
    /**********************************/
   
public function showSearchExtensions($response, $edc) {
       
$eLang = eFactory::getLang();
       
$elxis = eFactory::getElxis();

        if (
$response['error'] != '') {
           
$this->ajaxHeaders();
            if (
$response['keyword'] != '') {
                echo
'<div class="elx5_vlspace"><h2>'.sprintf($eLang->get('SEARCH_RESULTS_FOR'), '<span>'.$response['keyword'].'</span>').'</h2></div>';
            }
            echo
'<div class="elx5_warning">'.$response['error']."</div>\n";
            exit;
        }

       
$total = count($response['rows']);
       
$is_ssl = eFactory::getURI()->detectSSL();

       
$this->ajaxHeaders('text/plain');

        echo
'<div class="elx5_vlspace"><h2>'.sprintf($eLang->get('SEARCH_RESULTS_FOR'), '<span>'.$response['keyword'].'</span>').'</h2></div>';
        if (
$total > 0) {
           
$perms = $edc->permissions();
            echo
'<div class="extman5_extensions">'."\n";
            foreach (
$response['rows'] as $row) {
               
$actions = $edc->extActions($row, $perms);
               
$this->extensionBox($row, $is_ssl, 'c', $actions, false, $edc, $elxis, $eLang);
            }
            echo
"</div>\n";
        } else {
            echo
'<div class="elx5_warning">'.$eLang->exist('NO_EXTS_FOUND')."</div>\n";
        }
        exit;
    }


   
/*******************************/
    /* GENERATE AN EXTENSION'S BOX */
    /*******************************/
   
private function extensionBox($row, $is_ssl, $ordering, $actions, $showdetails, $edc, $elxis, $eLang) {
       
$eDate = eFactory::getDate();

        if (
$row['icon'] != '') {
            if ((
$is_ssl == true) && !preg_match('#^(https\:\/\/)#i', $row['icon'])) {//prevent breaking SSL with no SSL images
               
$iconclass = $edc->getTypeIconClass($row['type']);
               
$exticon = '<i class="'.$iconclass.'" aria-hidden="false"></i>';
            } else {
               
$exticon = '<img src="'.$row['icon'].'" alt="icon" />';
            }
        } else {
           
$iconclass = $edc->getTypeIconClass($row['type']);
           
$exticon = '<i class="'.$iconclass.'" aria-hidden="false"></i>';
        }

       
$addon = $showdetails ? ' extman5_xboxlarge' : '';
        echo
'<div class="extman5_xbox'.$addon.'">'."\n";
        echo
'<div class="extman5_xbox_thumb">'."\n";
        if (
$showdetails) {
            echo
'<a href="javascript:void(null);" title="'.$row['title'].'">'.$exticon."</a>\n";
        } else {
            echo
'<a href="javascript:void(null);" onclick="extman5EDCLoadExtension('.$row['id'].', '.$row['catid'].');" title="'.$row['title'].'">'.$exticon."</a>\n";
        }
        echo
"</div>\n";

        echo
'<div class="extman5_xbox_main">'."\n";
        if (
$showdetails) {
            if (
$row['verified'] == 1) {
                echo
'<div class="extman5_xbox_verified" title="'.$eLang->get('VERIFIED_EXTENSION').'"><i class="fas fa-star"></i></div>'."\n";
            }
        }
        echo
'<h3 class="extman5_xbox_title">'."\n";
        if (
$showdetails) {
            echo
'<a href="javascript:void(null);" title="'.$row['title'].'">'.$row['title'].' <span>'.$row['version'].'</span></a>'."\n";
        } else {
           
$exttype = $edc->getTypeName($row['type']);
            echo
'<a href="javascript:void(null);" onclick="extman5EDCLoadExtension('.$row['id'].', '.$row['catid'].');" title="'.$row['title'].' - '.$exttype.'">'.$row['title'].' <span>'.$row['version'].'</span></a>'."\n";
        }
        echo
"</h3>\n";

        if (
$showdetails) {
           
$iconclass = $edc->getTypeIconClass($row['type']);
            echo
'<div class="extman5_xbox_xtype">'.$eLang->get('TYPE').' <span><i class="'.$iconclass.'"></i> '.$edc->getTypeName($row['type'])."</span></div>\n";
           
$altcatid = $row['altcatid'];
           
$altcat = '';
            if (
$altcatid > 0) {
               
$categories = $edc->getCategories();
                if (isset(
$categories[$altcatid])) { $altcat = $categories[$altcatid]; }
            }
            if (
$altcat != '') {
                echo
'<div class="extman5_xbox_iline2">';
                echo
'<a href="javascript:void(null);" onclick="extMan5EDCLoadCategory('.$row['catid'].', 1);" title="'.$row['category'].'" class="extman5_xbox_link"><i class="fas fa-folder"></i> '.$row['category'].'</a>';
                echo
'<span class="elx5_lmobhide"> | <a href="javascript:void(null);" onclick="extMan5EDCLoadCategory('.$altcatid.', 1);" title="'.$altcat.'"class="extman5_xbox_link">'.$altcat.'</a></span>';
                echo
"</div>\n";
            } else {
                echo
'<a href="javascript:void(null);" onclick="extMan5EDCLoadCategory('.$row['catid'].', 1)" title="'.$row['category'].'" class="extman5_xbox_ctg"><i class="fas fa-folder"></i> '.$row['category']."</a>\n";
            }
        } else {
            echo
'<a href="javascript:void(null);" onclick="extMan5EDCLoadCategory('.$row['catid'].', 1)" title="'.$row['category'].'" class="extman5_xbox_ctg"><i class="fas fa-folder"></i> '.$row['category']."</a>\n";
        }

        if (
$showdetails) {
            if (
$row['authorlink'] != '') {
               
$parsed = parse_url($row['authorlink']);
               
$domain = preg_replace('@^(www\.)@', '', $parsed['host']);
                echo
'<div class="extman5_xbox_iline2">';
                echo
'<a href="javascript:void(null);" onclick="extMan5EDCAuthor('.$row['uid'].');" title="'.$eLang->get('ALL_EXTENSIONS_BY').' '.$row['author'].'" class="extman5_xbox_link"><i class="fas fa-user"></i> '.$row['author'].'</a>';
                echo
'<span class="elx5_lmobhide"> | <a href="'.$row['authorlink'].'" title="'.$eLang->get('VISIT_AUTHOR_SITE').'" target="_blank" class="extman5_xbox_link">'.$domain.' <i class="fas fa-external-link-alt"></i></a></span>';
                echo
"</div>\n";
            } else {
                echo
'<a href="javascript:void(null);" onclick="extMan5EDCAuthor('.$row['uid'].')" title="'.$eLang->get('ALL_EXTENSIONS_BY').' '.$row['author'].'" class="extman5_xbox_author"><i class="fas fa-user"></i> '.$row['author']."</a>\n";
            }
        } else {
            echo
'<a href="javascript:void(null);" onclick="extMan5EDCAuthor('.$row['uid'].')" title="'.$eLang->get('ALL_EXTENSIONS_BY').' '.$row['author'].'" class="extman5_xbox_author"><i class="fas fa-user"></i> '.$row['author']."</a>\n";
        }

        if (
$row['short'] != '') {
            echo
'<div class="extman5_xbox_info">'.$row['short']."</div>\n";
        } else {
            echo
'<div class="extman5_xbox_info">'.$eLang->get('NO_AVAIL_DESC')."</div>\n";
        }

        if (
$showdetails) {
            if ((
$row['modified'] != '') && ($row['modified'] != $row['created'])) {
                echo
'<div class="extman5_xbox_date">'.$eLang->get('LAST_MODIFIED').' <span>'.$eDate->formatTS($row['modified'], $eLang->get('DATE_FORMAT_5'))."</span></div>\n";
            } else {
                echo
'<div class="extman5_xbox_date">'.$eLang->get('DATE').' <span>'.$eDate->formatTS($row['created'], $eLang->get('DATE_FORMAT_5'))."</span></div>\n";
            }            
        } else {
            if (
$ordering == 'm') {
                echo
'<div class="extman5_xbox_date" title="'.$eLang->get('LAST_MODIFIED').'">'.$eDate->formatTS($row['modified'], $eLang->get('DATE_FORMAT_5'))."</div>\n";
            } else if ((
$row['modified'] != '') && ($row['modified'] != $row['created'])) {
                echo
'<div class="extman5_xbox_date">'.$eDate->formatTS($row['modified'], $eLang->get('DATE_FORMAT_5'))."</div>\n";
            } else {
                echo
'<div class="extman5_xbox_date">'.$eDate->formatTS($row['created'], $eLang->get('DATE_FORMAT_5'))."</div>\n";
            }            
        }
        echo
"\n";

        if (!
$actions['buy']) {
            echo
'<div class="extman5_xbox_ratedl">'.$row['downloads'].' '.$eLang->get('DOWNLOADS')."</div>\n";
        }

        if (
$showdetails) {
            if (
$row['compatibility'] != '') {
                echo
'<div class="extman5_xbox_iline">'.$eLang->get('COMPATIBILITY').' <strong>Elxis '.$row['compatibility']."</strong></div>\n";
            }
            if (
$row['license'] != '') {
                if (
$row['licenseurl'] != '') {
                    echo
'<div class="extman5_xbox_iline">'.$eLang->get('LICENSE').' <a href="'.$row['licenseurl'].'" target="_blank" title="'.$row['license'].'" class="extman5_xbox_link">'.$row['license'].' <i class="fas fa-external-link-alt"></i></a></div>'."\n";
                } else {
                    echo
'<div class="extman5_xbox_iline">'.$eLang->get('LICENSE').' '.$row['license']."</div>\n";
                }
            }
            if (
$row['size'] > 0) {
               
$fsize = number_format($row['size'], 0, '', '').' kb';
                if (
$row['size'] > 800) {
                   
$s = $row['size'] / 1000;
                   
$fsize = number_format($s, 2, $eLang->get('DECIMALS_SEP'), $eLang->get('THOUSANDS_SEP')).' mb';
                }
                echo
'<div class="extman5_xbox_iline">'.$eLang->get('SIZE').' '.$fsize."</div>\n";
            }
        }
        echo
"</div>\n";

        echo
'<div class="extman5_xbox_buttons">'."\n";
        if (
$actions['download']) {
            echo
'<a class="elx5_smbtn elx5_sucbtn extman5_smbtn" href="javascript:void(null);" onclick="extman5EDCDownload(\''.$row['pcode'].'\');"><span class="elx5_lmobhide"><i class="fas fa-arrow-alt-circle-down"></i> </span>'.$eLang->get('DOWNLOAD').'</a>'." \n";
        }
        if (
$actions['is_installed']) {
            if (
$actions['update']) {
               
$exttitle = addslashes($row['title']);
                echo
'<a class="elx5_smbtn elx5_warnbtn extman5_smbtn" href="javascript:void(null);" onclick="extman5EDCPrompt(\'update\', \''.$row['pcode'].'\', \''.$exttitle.'\', \''.$row['version'].'\');"><span class="elx5_lmobhide"><i class="fas fa-sync"></i> </span>'.$eLang->get('UPDATE')."</a>\n";
            } else if (
$actions['is_updated']) {
                echo
'<a class="elx5_smbtn elx5_notallowedbtn extman5_smbtn" href="javascript:void(null);"><span class="elx5_lmobhide"><i class="fas fa-check"></i> </span>'.$eLang->get('UPDATED')."</a>\n";
            } else {
                echo
'<a class="elx5_smbtn elx5_notallowedbtn extman5_smbtn" href="javascript:void(null);"><span class="elx5_lmobhide"><i class="fas fa-check"></i> </span>'.$eLang->get('INSTALLED')."</a>\n";
            }
        } else {
            if (
$actions['install']) {
               
$exttitle = addslashes($row['title']);
                echo
'<a class="elx5_smbtn elx5_sucbtn extman5_smbtn" href="javascript:void(null);" onclick="extman5EDCPrompt(\'install\', \''.$row['pcode'].'\', \''.$exttitle.'\', \''.$row['version'].'\');"><i class="fas fa-download"></i> </span>'.$eLang->get('INSTALL')."</a>\n";
            }            
        }
        if (
$actions['buy']) {
            echo
'<a class="elx5_smbtn extman5_smbtn" href="'.$row['buylink'].'" title="'.$eLang->get('PRICE').' '.$row['price'].' - '.$eLang->get('BUY').'" target="_blank"><i class="fas fa-shopping-cart"></i> '.$row['price']."</a>\n";
        }

        if (
$showdetails === true) {
            if (
$row['demolink'] != '') {
                echo
'<a href="'.$row['demolink'].'" target="_blank" title="'.$eLang->get('DEMO').'" class="elx5_smbtn extman5_smbtn">'.$eLang->get('DEMO').' <i class="fas fa-external-link-alt"></i></a>'."\n";
            }
            if (
$row['doclink'] != '') {
                echo
'<a href="'.$row['doclink'].'" target="_blank" title="'.$eLang->get('DOCUMENTATION').'" class="elx5_smbtn extman5_smbtn">'.$eLang->get('DOCUMENTATION').' <i class="fas fa-external-link-alt"></i></a>'."\n";
            }
        }
        echo
"</div>\n";
        echo
"</div>\n";
    }


   
/***************************************/
    /* EXTENSION'S DETAILS IN THE SIDE BOX */
    /***************************************/
   
private function extensionMore($row, $is_ssl, $edc, $elxis, $eLang) {
        echo
'<h3><i class="fas fa-pen-fancy elx5_lmobhide"></i> '.$eLang->get('DESCRIPTION')."</h3>\n";

       
$desc = ($row['description'] != '') ? $row['description'] : $eLang->get('NO_AVAIL_DESC');
        echo
'<div class="extman5_edc_extdesc">'.$desc;
        if (
$row['link'] != '') { echo '<br /><a href="'.$row['link'].'" target="_blank">'.$eLang->get('EXTDET_PUBSITE')."</a>\n"; }
        echo
"</div>\n";

       
$screens = array();
       
$use_thumbs = true;
        for (
$i=1; $i<7; $i++) {
           
$idx = 'image'.$i;
            if (
$row[$idx] == '') { continue; }
            if ((
$is_ssl == true) && !preg_match('#^(https\:\/\/)#i', $row[$idx])) { $use_thumbs = false; }
           
$screens[] = $row[$idx];
        }
       
        if (
$screens) {
           
$deficon = $elxis->icon('media', 64);
            echo
'<h3><i class="fas fa-camera elx5_lmobhide"></i> '.$eLang->get('SCREENSHOTS')."</h3>\n";
            echo
'<div class="elx5_dlspace">'."\n";
            foreach (
$screens as $i => $screen) {
               
$icon = $use_thumbs ? $screen : $deficon;
                echo
'<a href="#edcimage'.$i.'"><img src="'.$icon.'" alt="thumbnail" class="extman5_edc_lbthumb"></a>'."\n";
                echo
'<a href="#" class="extman5_edc_lightbox" id="edcimage'.$i.'"><div><img src="'.$screen.'" alt="image" /></div></a>'."\n";
            }
            echo
"</div>\n";
        }
    }

}

?>