Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/modules/mod_adminarticles/mod_adminarticles.php
<?php
/**
* @version        $Id: mod_adminarticles.php 2450 2022-05-08 10:26:02Z IOS $
* @package        Elxis
* @subpackage    Module Administration Articles
* @copyright    Copyright (c) 2006-2022 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');


if (!
class_exists('modadminArticles', false)) {
    class
modadminArticles {

        private
$poparticles = 0;
        private
$popmonths = 0;
        private
$moduleId = 0;


       
/*********************/
        /* MAGIC CONSTRUCTOR */
        /*********************/
       
public function __construct($params, $elxmod) {
           
$this->moduleId = $elxmod->id;
        }


       
/********************/
        /* RUN FOREST, RUN! */
        /********************/
       
public function run() {
           
$elxis = eFactory::getElxis();
           
$eLang = eFactory::getLang();
           
$eDate = eFactory::getDate();
           
$eDoc = eFactory::getDocument();

            if (!
defined('ELXIS_ADMIN')) {
                echo
'<div class="elx5_warning">This module is available only in Elxis administration area!'."</div>\n";
                return;
            }

            if (
ELXIS_INNER == 1) { return; }

           
$htmlHelper = $elxis->obj('html');

           
$rows = $this->getArticles();

           
$eDoc->addScrollbar();
           
$eDoc->addScriptLink($elxis->secureBase().'/modules/mod_adminarticles/js/adminarticles.js');

            if (
$elxis->acl()->check('component', 'com_content', 'manage') > 0) {
               
$can_edit_art = $elxis->acl()->check('com_content', 'article', 'edit');
               
$can_edit_ctg = $elxis->acl()->check('com_content', 'category', 'edit');
            } else {
               
$can_edit_art = 0;
               
$can_edit_ctg = 0;
            }
           
$edit_link_art = $elxis->makeAURL('content:articles/edit.html');
           
$edit_link_ctg = $elxis->makeAURL('content:categories/edit.html');

            echo
'<div class="elx5_box elx5_border_blue">'."\n";
            echo
'<div class="elx5_box_body">'."\n";

            echo
'<div class="elx5_dataactions elx5_spad">'."\n";
            echo
'<a href="javascript:void(null);" onclick="modAArtLoad(0);" id="modaart_latest" class="elx5_dataaction elx5_datahighlight" title="'.$eLang->get('LATEST_ARTICLES').'"><i class="fas fa-clock"></i><span class="elx5_lmobhide"> '.$eLang->get('LATEST').'</span></a>'."\n";
            echo
'<a href="javascript:void(null);" onclick="modAArtLoad(1);" id="modaart_popular" class="elx5_dataaction elx5_datanotcurrent" title="'.$eLang->get('POPULAR_ARTICLES').'"><i class="fas fa-fire"></i><span class="elx5_lmobhide"> '.$eLang->get('POPULAR').'</span></a>'."\n";
            echo
'<a href="javascript:void(null);" onclick="modAArtToggle();" id="modaart_selmonths" class="elx5_dataaction elx5_datanotcurrent elx5_lmobhide" title="'.$eLang->get('SEARCH_OPTIONS').'"><i class="fas fa-search"></i></a>'."\n";
            echo
'<h3 class="elx5_box_title" id="modaart_title">'.$eLang->get('LATEST_ARTICLES').'</h3>'."\n";
            echo
'<div class="elx5_invisible" id="modaart_options">'."\n";
            echo
'<div class="elx5_vsspace">'."\n";
            echo
'<select name="months" id="modaart_months" class="elx5_select" title="'.$eLang->get('POP_MONTHS').'" onchange="modAArtLoad(1);">'."\n";
            echo
'<option value="0" selected="selected">'.$eLang->get('ALL_TIME_POPULAR')."</option>\n";
            echo
'<option value="1">'.$eLang->get('LAST_MONTH')."</option>\n";
            echo
'<option value="2">'.$eLang->get('LAST_2MONTHS')."</option>\n";
            echo
'<option value="3">'.$eLang->get('LAST_3MONTHS')."</option>\n";
            echo
'<option value="6">'.$eLang->get('LAST_6MONTHS')."</option>\n";
            echo
'<option value="12">'.$eLang->get('LAST_YEAR')."</option>\n";
            echo
"</select>\n";
            echo
"</div>\n";
            echo
"</div>\n";//#modaart_options
           
echo "</div>\n";//elx5_dataactions

           
$inlink = $elxis->makeAURL('cpanel:ajax', 'inner.php');
            echo
'<div class="elx5_height300" data-simplebar="1">'."\n";
            echo
'<table id="modaart_tbl" class="elx5_datatable" data-inpage="'.$inlink.'" dir="'.$eLang->getinfo('DIR').'" data-lngin="'.$eLang->get('IN').'"  data-lngnores="'.$eLang->get('NO_RESULTS').'">'."\n";
            echo
"<thead>\n";
            echo
"<tr>\n";
            echo
$htmlHelper->tableHead($eLang->get('HITS'), 'elx5_nosorting elx5_center');
            echo
$htmlHelper->tableHead($eLang->get('TITLE'), 'elx5_nosorting');
            echo
$htmlHelper->tableHead($eLang->get('AUTHOR'), 'elx5_nosorting elx5_tabhide');
            echo
$htmlHelper->tableHead($eLang->get('DATE'), 'elx5_nosorting elx5_lmobhide');
            echo
"</tr>\n";
            echo
"</thead>\n";

            echo
'<tbody id="modaart_tbody">'."\n";
            if (
$rows) {
                foreach (
$rows as $row) {
                   
$iconclass = ($row->published == 0) ? 'fas fa-ban elx5_red' : 'fas fa-check elx5_green';
                   
$title = $row->title;
                    if (
eUTF::strlen($row->title) > 30) { $title = eUTF::substr($row->title, 0, 27).'...'; }

                    if (
$can_edit_art > 0) {
                       
$txt = '<i class="'.$iconclass.'"></i> <a href="'.$edit_link_art.'?id='.$row->id.'" title="'.$eLang->get('EDIT').' '.$row->title.'">'.$title.'</a>';
                    } else {
                       
$txt = '<span title="'.$row->title.'"><i class="'.$iconclass.'"></i> '.$title.'</span>';
                    }
                    if (
$row->catid > 0) {
                        if (
$can_edit_ctg > 0) {
                           
$txt .= '<div class="elx5_tip elx5_lmobhide">'.$eLang->get('IN').' <a href="'.$edit_link_ctg.'?catid='.$row->catid.'" title="'.$eLang->get('EDIT_CATEGORY').'">'.$row->cattitle.'</a></div>';
                        } else {
                           
$txt = '<div class="elx5_tip elx5_lmobhide">'.$eLang->get('IN').' '.$row->cattitle."</div>\n";
                        }
                    }

                   
$dt = $eDate->formatDate($row->created, $eLang->get('DATE_FORMAT_4'));

                    echo
'<tr id="datarow'.$row->id.'">'."\n";
                    echo
'<td class="elx5_center">'.$row->hits."</td>\n";
                    echo
'<td>'.$txt."</td>\n";
                    echo
'<td class="elx5_tabhide">'.$row->created_by_name."</td>\n";
                    echo
'<td class="elx5_lmobhide">'.$dt."</td>\n";
                    echo
"</tr>\n";
                }
            } else {
                echo
'<tr id="datarow0" class="elx5_rowwarn"><td class="elx5_center" colspan="4">'.$eLang->get('NO_RESULTS')."</td></tr>\n";
            }
            echo
"</tbody>\n";
            echo
"</table>\n";
            echo
'</div>';//elx5_height300

           
if ($this->poparticles == 1) {
                if (
$this->popmonths > 1) {
                   
$list_desc = sprintf($eLang->get('POPULAR_LAST_MONTHS'), $this->popmonths);
                } else if (
$this->popmonths == 1) {
                   
$list_desc = $eLang->get('POPULAR_LAST_MONTH');
                } else {
                   
$list_desc = $eLang->get('POPULAR_ALL_TIME');
                }
            } else {
               
$list_desc = $eLang->get('LATEST_ARTS_SITE');
            }
            echo
'<div class="elx5_table_note elx5_spad" id="modaart_listdesc">'.$list_desc."</div>\n";
            echo
"</div>\n";//elx5_box_body
           
echo "</div>\n";//elx5_box

           
echo '<div class="elx5_invisible" id="modaart_dataeditart" data-canedit="'.$can_edit_art.'">'.$edit_link_art."</div>\n";
            echo
'<div class="elx5_invisible" id="modaart_dataeditctg" data-canedit="'.$can_edit_ctg.'">'.$edit_link_ctg."</div>\n";
        }


       
/**********************************/
        /* GET ARTICLES FROM THE DATABASE */
        /**********************************/
       
private function getArticles() {
           
$db = eFactory::getDB();

           
$binds = array();
           
$sql = "SELECT a.id, a.catid, a.title, a.created, a.created_by, a.created_by_name, a.published, a.hits, c.title AS cattitle"
           
."\n FROM ".$db->quoteId('#__content')." a"
           
."\n LEFT JOIN ".$db->quoteId('#__categories')." c ON c.catid=a.catid";
            if (
$this->poparticles == 1) {
                if (
$this->popmonths > 0) {
                   
$ts = gmmktime(0, 0, 0, gmdate('m') - $this->popmonths, gmdate('d'), gmdate('Y'));
                   
$date = gmdate('Y-m-d H:i:s', $ts);
                   
$binds[] = array(':crdate', $date, PDO::PARAM_STR);
                   
$sql .= " WHERE a.created > :crdate ORDER BY a.hits DESC";
                } else {
                   
$sql .= "\n ORDER BY a.hits DESC";
                }
            } else {
               
$sql .= "\n ORDER BY a.created DESC";
            }

           
$stmt = $db->prepareLimit($sql, 0, 10);
            if (
count($binds) > 0) {
                foreach (
$binds as $bind) {
                   
$stmt->bindParam($bind[0], $bind[1], $bind[2]);
                }
            }
           
$stmt->execute();
           
$rows = $stmt->fetchAll(PDO::FETCH_OBJ);

            return
$rows;            
        }

    }
}


$admarticles = new modadminArticles($params, $elxmod);
$admarticles->run();
unset(
$admarticles);

?>