Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/components/com_content/controllers/base.php
<?php
/**
* @version        $Id: base.php 2329 2020-01-31 19:32:29Z IOS $
* @package        Elxis
* @subpackage    Component Content
* @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
contentController {

    protected
$view = null;
    protected
$model = null;
    protected
$lng = '';
    protected
$translate = false;
    protected
$format = 'html';


   
/*********************/
    /* MAGIC CONSTRUCTOR */
    /*********************/
   
protected function __construct($view=null, $model=null, $format='') {
       
$elxis = eFactory::getElxis();

       
$this->view = $view;
       
$this->model = $model;
        if (
$format != '') { $this->format = $format; }
        if (
$elxis->getConfig('MULTILINGUISM') == 1) {
           
$this->lng = eFactory::getURI()->getUriLang();
            if (
$this->lng != '') { $this->translate = true; }
        }
    }


   
/***************************************/
    /* 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');
    }


   
/*******************************************/
    /* LOAD CATEGORY INFORMATION FROM DATABASE */
    /*******************************************/
   
protected function loadCategory($seotitle, $onlypublic=false) {
       
$row = $this->model->fetchCategory($seotitle, $onlypublic);
        if (!
$this->translate) { return $row; }
        if (!
$row) { return false; }

       
$translations = $this->model->categoryTranslate($row->catid, $this->lng);
        if (!
$translations) { return $row; }

        foreach (
$translations as $element => $translation) {
            switch(
$element) {
                case
'category_title':
                   
$row->title = $translation;
                break;
                case
'category_description':
                   
$row->description = $translation;
                break;
                default: break;
            }
        }

        return
$row;
    }


   
/******************************************************************/
    /* MAKE A PATHWAY TREE TO CATEGORY (RETURN FALSE ON ACCESS ERROR) */
    /******************************************************************/
   
protected function loadCategoryTree($catid, $curctg=null, $onlypublic=false) {
       
$tree = $this->model->categoryTree($catid, $curctg, $onlypublic);
        if (!
$this->translate) { return $tree; }
        if (!
$tree) { return $tree; }

       
$elids = array();
        foreach (
$tree as $ctg) { $elids[] = $ctg->catid; }
       
$translations = $this->model->categoriesTranslate($elids, $this->lng);
        if (!
$translations) { return $tree; }

        foreach (
$tree as $idx => $ctg) {
           
$cid = $ctg->catid;
            if (isset(
$translations[$cid])) {
               
$tree[$idx]->title = $translations[$cid];
            }
        }

        return
$tree;
    }


   
/***********************************/
    /* GET A CATEGORY'S SUB-CATEGORIES */
    /***********************************/
   
protected function loadSubcategories($catid) {
       
$rows = $this->model->fetchSubCategories($catid);
        if (!
$this->translate) { return $rows; }
        if (!
$rows) { return $rows; }

       
$elids = array();
        foreach (
$rows as $row) { $elids[] = $row->catid; }
       
$translations = $this->model->categoriesTranslate($elids, $this->lng);
        if (!
$translations) { return $rows; }

        foreach (
$rows as $idx => $row) {
           
$cid = $row->catid;
            if (isset(
$translations[$cid])) {
               
$rows[$idx]->title = $translations[$cid];
            }
        }

        return
$rows;
    }


   
/*****************************/
    /* GET A CATEGORY'S ARTICLES */
    /*****************************/
   
protected function loadArticles($catid, $limitstart, $limit, $order, $onlypublic=false) {
       
$rows = $this->model->fetchArticles($catid, $limitstart, $limit, $order, $onlypublic);
        if (!
$this->translate) { return $rows; }
        if (!
$rows) { return $rows; }

       
$elids = array();
        foreach (
$rows as $row) { $elids[] = $row->id; }
       
$translations = $this->model->articlesTranslate($elids, $this->lng);
        if (!
$translations) { return $rows; }

        foreach (
$translations as $trans) {
           
$id = (int)$trans['elid'];
           
$element = $trans['element'];
            switch(
$element) {
                case
'title': $rows[$id]->title = $trans['translation']; break;
                case
'subtitle': $rows[$id]->subtitle = $trans['translation']; break;
                case
'introtext': $rows[$id]->introtext = $trans['translation']; break;
                case
'caption': $rows[$id]->caption = $trans['translation']; break;
                default: break;
            }
        }

        return
$rows;
    }


   
/**********************************/
    /* MAKE PATHWAY FROM A TREE ARRAY */
    /**********************************/
   
protected function makeTreePathway($tree) {
        if (!
is_array($tree)) { return; }
       
$c = count($tree);
        if (
$c == 0) { return; }
       
$pathway = eFactory::getPathway();
       
$k = 1;
       
$page = isset($_GET['page']) ? (int)$_GET['page'] : 0;
        foreach (
$tree as $element) {
            if (
$k == $c) {
                if (
$page > 1) {
                   
$pathway->addNode($element->title, $element->link);
                   
$pathway->addNode(eFactory::getLang()->get('PAGE').' '.$page);
                } else {
                   
$pathway->addNode($element->title);
                }
            } else {
               
$pathway->addNode($element->title, $element->link);
            }
           
$k++;
        }
    }


   
/************************************/
    /* CALCULATE CATEGORY META KEYWORDS */
    /************************************/
   
protected function categoryKeywords($title, $articles, $tree, $subcategories) {
       
$metaKeys = array();
       
$keystring = $title;
       
$c = count($tree);
        if (
$c > 1) {
           
$idx = $c - 2;
           
$keystring .= ' '.$tree[$idx]->title;
        }

       
$keystring = eUTF::str_replace('\'', '', $keystring);
       
$keystring = eUTF::str_replace('"', '', $keystring);
       
$keystring = eUTF::str_replace('?', '', $keystring);
       
$keystring = eUTF::str_replace(';', '', $keystring);
       
$keystring = eUTF::str_replace('!', '', $keystring);
       
$keystring = eUTF::str_replace(':', '', $keystring);
       
$keystring = eUTF::str_replace(',', '', $keystring);
       
$keystring = eUTF::str_replace('.', '', $keystring);
       
$parts = preg_split('/[\s]/', $keystring, -1, PREG_SPLIT_NO_EMPTY);
        foreach(
$parts as $part) {
            if (
eUTF::strlen($part) > 3) { $metaKeys[] = $part; }
        }

        if (
$articles) {
           
$c = count($articles);
            if (
$c > 0) {
               
$keys_per_article = ($c > 5) ? 2 : 3;
                foreach (
$articles as $article) {
                    if (
count($metaKeys) > 19) { break; }
                    if (
trim($article->metakeys) != '') {
                       
$parts = explode(',', $article->metakeys);
                        if (
$parts) {
                           
$i = 0;
                            foreach(
$parts as $part) {
                                if (
$i >= $keys_per_article) { break; }
                               
$metaKeys[] = $part;
                               
$i++;
                            }
                        }
                    }
                }
            }
        }

        if (
count($metaKeys) < 6) {
            if (
$subcategories && (count($subcategories) > 0)) {
               
$keystring = '';
                foreach (
$subcategories as $subcategory) {
                   
$keystring .= ' '.$subcategory->title;
                }

               
$keystring = eUTF::str_replace('\'', '', $keystring);
               
$keystring = eUTF::str_replace('"', '', $keystring);
               
$keystring = eUTF::str_replace('?', '', $keystring);
               
$keystring = eUTF::str_replace(';', '', $keystring);
               
$keystring = eUTF::str_replace('!', '', $keystring);
               
$keystring = eUTF::str_replace(':', '', $keystring);
               
$keystring = eUTF::str_replace(',', '', $keystring);
               
$keystring = eUTF::str_replace('.', '', $keystring);
               
$keystring = eUTF::strtolower($keystring);
               
$parts = preg_split('/[\s]/', $keystring, -1, PREG_SPLIT_NO_EMPTY);
                foreach(
$parts as $part) {
                    if (
count($metaKeys) > 19) { break; }
                    if (
eUTF::strlen($part) > 3) { $metaKeys[] = $part; }
                }
            }
        }

       
$metaKeys = array_unique($metaKeys);
        return
$metaKeys;
    }


   
/*********************************************/
    /* GET COMBINED CATEGORY PARAMETERS INSTANCE */
    /*********************************************/
   
protected function combinedCategoryParams($local_str='') {
       
$local_str = (string)$local_str;
       
$global_str = (string)$this->model->componentParams();

       
elxisLoader::loadFile('includes/libraries/elxis/parameters.class.php');
       
$params = new elxisParameters($global_str, '', 'component');
       
//make sure some params are defined
       
$params->def('popup_window', 0);
       
$params->def('live_bookmarks', 'rss');
       
$params->def('feed_items', 10);
       
$params->def('feed_cache', 6);
       
$params->def('comments', 0); //there is no global setting for the component
       
$params->def('comments_src', 0);
        if ((int)
$params->def('comments_src', 0) < 0) { $params->set('comments_src', 0); }
       
$params->def('disqus_shortname', '');
        if (
$params->get('disqus_shortname') == '') { $params->set('comments_src', 0); }
       
$params->def('disqus_developer', 0);
        if ((int)
$params->def('img_medium_width', 320) < 10) {
           
$params->set('img_medium_width', 320);
        }
        if ((int)
$params->def('img_thumb_width', 120) < 10) {
           
$params->set('img_thumb_width', 120);
        }
       
$params->def('ctg_subcategories', 2);
       
$params->def('ctg_print', 0);
       
$params->def('ctg_mods_pos', 'category');
       
$params->def('ctg_img_empty', 1);

        if (
$local_str == '') { return $params; }
       
//combine global and local parameters
       
$local = new elxisParameters($local_str, '', 'component');
       
$ikeys = array(
       
'ctg_show', 'ctg_layout', 'ctg_subcategories', 'ctg_subcategories_cols', 'ctg_print', 'ctg_img_empty',
       
'ctg_nextpages_style', 'ctg_featured_num', 'ctg_featured_img', 'ctg_featured_dateauthor', 'ctg_featured_more',
       
'ctg_short_num', 'ctg_short_cols', 'ctg_short_img', 'ctg_short_dateauthor', 'ctg_short_text', 'ctg_short_more',
       
'ctg_links_num', 'ctg_links_cols', 'ctg_links_header', 'ctg_links_dateauthor', 'ctg_pagination', 'comments'
       
);

        foreach (
$ikeys as $ikey) {
           
$v = (int)$local->get($ikey, -1);
            if (
$v  > -1) { $params->set($ikey, $v); }
        }

       
$v = trim($local->get('ctg_ordering', ''));
        if (
$v != '') { $params->set('ctg_ordering', $v); }
       
$v = trim($local->get('ctg_mods_pos', ''));
        if ((
$v != '') && ($v != '_global_')) {
           
$params->set('ctg_mods_pos', $v);
        }

        unset(
$local);
        return
$params;
    }


   
/***********************************/
    /* LOAD ARTICLE DATA FROM DATABASE */
    /***********************************/
   
protected function loadArticle($seotitle='', $id=0) {
       
$row = $this->model->fetchArticle($seotitle, $id);
        if (!
$this->translate) { return $row; }
        if (!
$row) { return false; }

       
$translations = $this->model->articleTranslate($row->id, $this->lng);
        if (!
$translations) { return $row; }

        foreach (
$translations as $element => $translation) {
            switch(
$element) {
                case
'title': $row->title = $translation; break;
                case
'subtitle': $row->subtitle = $translation; break;
                case
'introtext': $row->introtext = $translation; break;
                case
'maintext': $row->maintext = $translation; break;
                case
'caption': $row->caption = $translation; break;
                case
'metakeys': $row->metakeys = $translation; break;
                default: break;
            }
        }

        return
$row;
    }


   
/********************************************/
    /* GET COMBINED ARTICLE PARAMETERS INSTANCE */
    /********************************************/
   
protected function combinedArticleParams($local_str='', $catid=0) {
       
$local_str = (string)$local_str;
       
$global_str = (string)$this->model->componentParams();

       
elxisLoader::loadFile('includes/libraries/elxis/parameters.class.php');
       
$params = new elxisParameters($global_str, '', 'component');

       
//make sure some params are defined
       
$params->def('popup_window', 0);
       
$params->def('live_bookmarks', 'rss');
       
//$params->def('feed_items', 10); //not need in article page
        //$params->def('feed_cache', 6); //not need in article page
       
if ((int)$params->def('img_medium_width', 320) < 10) {
           
$params->set('img_medium_width', 320);
        }
        if ((int)
$params->def('img_thumb_width', 120) < 10) {
           
$params->set('img_thumb_width', 120);
        }
       
$params->def('art_img', 2);
       
$params->def('ctg_img_empty', 1);
       
$params->def('comments', 0);
       
$params->def('art_comments', 0);
       
$params->def('comments_src', 0);
        if ((int)
$params->def('comments_src', 0) < 0) { $params->set('comments_src', 0); }
       
$params->def('disqus_shortname', '');
        if (
$params->get('disqus_shortname') == '') { $params->set('comments_src', 0); }
       
$params->def('disqus_developer', 0);
       
$params->def('art_hideintro', 0);
       
$params->def('art_hidesubtitle', 0);
       
$params->def('art_hidetitle', 0);

        if (
$catid > 0) {
           
$local_ctg_str = $this->model->categoryParams($catid);
            if (
trim($local_ctg_str) != '') {
               
$ctgparams = new elxisParameters($local_ctg_str, '', 'component');
               
$c = (int)$ctgparams->get('comments', 0);
               
$v = trim($ctgparams->get('ctg_ordering', ''));
                unset(
$ctgparams);
               
$params->set('art_comments', $c);
               
$params->set('comments', $c);                
                if (
$v != '') { $params->set('ctg_ordering', $v); }
                unset(
$c, $v);
            }
        }

        if (
$local_str == '') { return $params; }

       
$local = new elxisParameters($local_str, '', 'component');
       
$ikeys = array('art_dateauthor', 'art_dateauthor_pos', 'art_img', 'art_tags', 'art_hits', 'art_chain', 'art_print', 'art_email', 'art_twitter', 'art_facebook', 'art_comments', 'art_hideintro', 'art_hidesubtitle', 'art_hidetitle', 'art_related');
        foreach (
$ikeys as $ikey) {
           
$v = (int)$local->get($ikey, -1);
            if (
$v > -1) {
               
$params->set($ikey, $v);
                if (
$ikey == 'art_comments') { $params->set('comments', $v); }
            }
        }

        unset(
$local);
        return
$params;
    }


   
/***********************************/
    /* CALCULATE ARTICLE META KEYWORDS */
    /***********************************/
   
protected function articleKeywords($row, $tree) {
       
$metaKeys = array(
           
'tags' => array(),
           
'extended' => array(),
           
'total' => array()
        );

        if (
trim($row->metakeys) != '') {
           
$keystring = eUTF::str_replace('\'', '', $row->metakeys);
           
$keystring = eUTF::str_replace('"', '', $keystring);
           
$keystring = eUTF::str_replace('?', '', $keystring);
           
$keystring = eUTF::str_replace(';', '', $keystring);
           
$keystring = eUTF::str_replace('!', '', $keystring);
           
$keystring = eUTF::str_replace(':', '', $keystring);
           
$keystring = eUTF::str_replace('.', '', $keystring);
            if (
$keystring != '') {
               
$parts = explode(',', $keystring);
                if (
$parts) {
                    foreach (
$parts as $part) {
                       
$p = eUTF::trim($part);
                       
$metaKeys['tags'][] = $p; $metaKeys['total'][] = $p;
                    }
                   
$metaKeys['tags'] = array_unique($metaKeys['tags']);
                }
            }
        }

       
$keystring = '';
       
$space = '';
        if (
$tree) {
           
$c = count($tree);
            if (
$c > 0) {
               
$idx = $c - 1;
               
$keystring .= $tree[$idx]->title;
               
$space = ' ';
            }
        }

       
$keystring .= $space.$row->title;
       
$keystring = eUTF::str_replace('\'', '', $keystring);
       
$keystring = eUTF::str_replace('"', '', $keystring);
       
$keystring = eUTF::str_replace('?', '', $keystring);
       
$keystring = eUTF::str_replace(';', '', $keystring);
       
$keystring = eUTF::str_replace('!', '', $keystring);
       
$keystring = eUTF::str_replace(':', '', $keystring);
       
$keystring = eUTF::str_replace(',', '', $keystring);
       
$keystring = eUTF::str_replace('.', '', $keystring);
       
$keystring = eUTF::strtolower($keystring);
       
$parts = preg_split('/[\s]/', $keystring, -1, PREG_SPLIT_NO_EMPTY);
        foreach(
$parts as $part) {
            if (
eUTF::strlen($part) > 3) { $metaKeys['extended'][] = $part; $metaKeys['total'][] = $part; }
        }

       
$metaKeys['extended'] = array_unique($metaKeys['extended']);
       
$metaKeys['total'] = array_unique($metaKeys['total']);
        return
$metaKeys;
    }


   
/************************/
    /* GET CHAINED ARTICLES */
    /************************/
   
protected function loadChainedArticles($row, $params) {
        if ((
$row->catid == 0) || ((int)$params->get('art_chain', 0) < 1)) { return null; }
       
$order = $params->get('ctg_ordering', 'cd');
       
$chained = $this->model->fetchChainedArticles($row, $order);
        if (!
$chained) { return $chained; }
        if (!
$this->translate) { return $chained; }
       
$elids = array();
        if (
$chained['previous'] !== null) { $elids[] = $chained['previous']->id; }
        if (
$chained['next'] !== null) { $elids[] = $chained['next']->id; }
        if (!
$elids) { return $chained; }

       
$translations = $this->model->articlesTitlesTranslate($elids, $this->lng);
        if (!
$translations) { return $chained; }
        if (
$chained['previous'] !== null) {
           
$id = $chained['previous']->id;
            if (isset(
$translations[$id])) { $chained['previous']->title = $translations[$id]; }
        }
        if (
$chained['next'] !== null) {
           
$id = $chained['next']->id;
            if (isset(
$translations[$id])) { $chained['next']->title = $translations[$id]; }
        }

        return
$chained;
    }


   
/***********************/
    /* GET TAGGED ARTICLES */
    /***********************/
   
protected function loadTagArticles($tag) {
       
$rows = $this->model->fetchTagArticles($tag, $this->translate, $this->lng);
        if (!
$this->translate) { return $rows; }
        if (!
$rows) { return $rows; }

       
$elids = array();
       
$cids = array();
        foreach (
$rows as $row) {
           
$elids[] = $row->id;
            if (
$row->catid > 0) { $cids[] = $row->catid; }
        }

       
$translations = $this->model->articlesTitleSubTranslate($elids, $this->lng);
        if (!
$translations) { return $rows; }
        foreach (
$translations as $trans) {
           
$id = (int)$trans['elid'];
           
$element = $trans['element'];
            switch(
$element) {
                case
'title': $rows[$id]->title = $trans['translation']; break;
                case
'subtitle': $rows[$id]->subtitle = $trans['translation']; break;
                default: break;
            }
        }
        unset(
$translations, $elids);

        if (
$cids) {
           
$cids = array_unique($cids);
           
$translations = $this->model->categoriesTranslate($cids, $this->lng);
            if (!
$translations) { return $rows; }
            foreach (
$rows as $id => $row) {
                if (
$row->catid == 0) { continue; }
                if (isset(
$translations[ $row->catid ])) {
                   
$rows[$id]->category = $translations[ $row->catid ];
                }
            }
        }

        return
$rows;
    }


   
/*********************************/
    /* GET CATEGORIES FOR FEEDS PAGE */
    /*********************************/
   
protected function loadFeedCategories() {
       
$result = $this->model->fetchFeedCategories();
        if (!
$result || !is_array($result)) { return null; }
       
$rows = $result[0];
       
$elids = $result[1];
        unset(
$result);
        if (!
$this->translate) { return $rows; }

       
$translations = $this->model->categoriesTranslate($elids, $this->lng);
        if (!
$translations) { return $rows; }

        foreach (
$rows as $idx => $ctg) {
           
$cid = $ctg->catid;
            if (isset(
$translations[$cid])) {
               
$rows[$idx]->title = $translations[$cid];
            }
           
            if (
count($ctg->categories) > 0) {
                foreach (
$ctg->categories as $idx2 => $ctg2) {
                   
$cid2 = $ctg2->catid;
                    if (isset(
$translations[$cid2])) {
                       
$rows[$idx]->categories[$idx2]->title = $translations[$cid2];
                    }
                }
            }
        }

        return
$rows;
    }


   
/**************************************/
    /* GET RSS/ATOM GENERIC FEED ARTICLES */
    /**************************************/
   
protected function loadFeedArticles($limit) {
       
$rows = $this->model->fetchFeedArticles($limit);
        if (!
$this->translate) { return $rows; }
        if (!
$rows) { return $rows; }

       
$elids = array();
       
$catids = array();
        foreach (
$rows as $row) {
           
$elids[] = $row->id;
            if (
$row->catid > 0) { $catids[] = $row->catid; }
        }
       
$translations = $this->model->articlesTranslate($elids, $this->lng);
        if (
$translations) {
            foreach (
$translations as $trans) {
               
$id = (int)$trans['elid'];
               
$element = $trans['element'];
                switch(
$element) {
                    case
'title': $rows[$id]->title = $trans['translation']; break;
                    case
'subtitle': $rows[$id]->subtitle = $trans['translation']; break;
                    case
'introtext': $rows[$id]->introtext = $trans['translation']; break;
                    default: break;
                }
            }
        }

        if (
$catids) {
           
$catids = array_unique($catids);
           
$translations = $this->model->categoriesTranslate($catids, $this->lng);
            if (
$translations) {
                foreach (
$translations as $elid => $trans) {
                   
$catid = (int)$elid;
                    foreach (
$rows as $id => $row) {
                        if (
$row->catid == $catid) {
                           
$rows[$id]->category =  $trans;
                        }
                    }
                }
            }
        }

        return
$rows;
    }


   
/*******************/
    /* MAKE LEVELS TIP */
    /*******************/
   
protected function makeLevelsTip() {
       
$eLang = eFactory::getLang();
       
$groups = $this->model->getGroups();
       
$elements = array();
        if (
$groups) {
            foreach (
$groups as $group) {
                switch (
$group['gid']) {
                    case
7: $name = $eLang->get('GUEST'); break;
                    case
6: $name = $eLang->get('EXTERNALUSER'); break;
                    case
5: $name = $eLang->get('USER'); break;
                    case
1: $name = $eLang->get('ADMINISTRATOR'); break;
                    default:
$name = $group['groupname']; break;
                }
               
$elements[] = (int)$group['level'].': '.$name;
            }
            return
implode(', ', $elements);
        }
        return
'';
    }


   
/*******************************************/
    /* SEND NOTIFICATION FOR PUBLISHED COMMENT */
    /*******************************************/
   
protected function notifyPublishComment($author_name, $author_email, $article_title, $article_link) {
       
$eLang = eFactory::getLang();
       
$elxis = eFactory::getElxis();

       
$subject = $eLang->get('YOUR_COMMENT_PUB');
       
$body = $eLang->get('HI').' '.$author_name.",\n";
       
$body .= sprintf($eLang->get('YOUR_COMMENT_ARTICLE_PUB'), '"'.$article_title.'"')."\n\n";
       
$body .= $article_link."\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 = $author_email.','.$author_email;
       
$ok = $elxis->sendmail($subject, $body, '', null, 'plain', $to);
        return
$ok;
    }


   
/************************************************/
    /* DETERMINE UPLOAD FOLDER FOR AN ARTICLE IMAGE */
    /************************************************/
   
protected function determineUploadFolder() {
       
$base = ELXIS_PATH.'/media/images/';
        if (
defined('ELXIS_MULTISITE')) {
            if (
ELXIS_MULTISITE > 1) { $base = ELXIS_PATH.'/media/images/site'.ELXIS_MULTISITE.'/'; }
        }

       
$start = 1;
       
$last = 20;
        if (
is_dir($base.'articles20/')) {
           
$nums = array(150, 100, 80, 60, 40, 20);
            foreach(
$nums as $num) {
                if (
is_dir($base.'articles'.$num.'/')) {
                   
$start = $num;
                   
$last = $num + 20;
                    if (
$num == 100) {
                       
$last = 150;
                    } else if (
$num == 150) {
                       
$last = 200;
                    }
                    break;
                }
            }
        }

       
$updir = '';
        for (
$i=$start; $i < $last; $i++) {
           
$dir = ($i == 1) ? 'articles' : 'articles'.$i;
            if (
is_dir($base.$dir.'/')) {
               
$n = count(scandir($base.$dir.'/'));
                if (
$n < 300) { $updir = $dir; break; }
            } else {
               
$updir = $dir; break;
            }
        }
        if (
$updir == '') { $updir = 'articles'.$last; }
        return
$updir;
    }


   
/**********************************************************/
    /* DELETE ARTICLE'S TRIPPLE IMAGE (NORMAL, MEDIUM, THUMB) */
    /**********************************************************/
   
protected function deleteArticleImage($relfile) {
       
$eFiles = eFactory::getFiles();

        if (
defined('ELXIS_MULTISITE')) {
            if (
ELXIS_MULTISITE > 1) {
               
$base = 'media/images/site'.ELXIS_MULTISITE.'/';
                if (
strpos($relfile, $base) !== 0) { return false; }
            }
        }

       
$ok = $eFiles->deleteFile($relfile);
        if (
$ok) {
           
$dir = dirname($relfile);
            if (
$dir == '.') {
               
$dir = '';
            } else {
               
$dir .= '/';
            }
           
$img_filename = basename($relfile);
           
$clean_filename = $eFiles->getFilename($img_filename);
           
$ext = $eFiles->getExtension($img_filename);
           
$eFiles->deleteFile($dir.$clean_filename.'_medium.'.$ext);
           
$eFiles->deleteFile($dir.$clean_filename.'_thumb.'.$ext);
        }
        return
$ok;
    }


   
/*********************************************/
    /* MAKE ARTICLE'S MEDIUM IMAGE AND THUMBNAIL */
    /*********************************************/
   
protected function makeMediumThumb($updir, $filename, $extension) {
       
$eFiles = eFactory::getFiles();

       
$global_str = (string)$this->model->componentParams();
       
elxisLoader::loadFile('includes/libraries/elxis/parameters.class.php');
       
$params = new elxisParameters($global_str, '', 'component');

        if ((int)
$params->def('img_medium_width', 320) < 10) { $params->set('img_medium_width', 320); }
        if ((int)
$params->def('img_medium_height', 0) < 0) { $params->set('img_medium_height', 0); }
        if ((int)
$params->def('img_thumb_width', 120) < 10) { $params->set('img_thumb_width', 120); }
        if ((int)
$params->def('img_thumb_height', 0) < 0) { $params->set('img_thumb_height', 0); }
       
$mw = (int)$params->get('img_medium_width', 320);
       
$mh = (int)$params->get('img_medium_height', 0);
       
$tw = (int)$params->get('img_thumb_width', 120);
       
$th = (int)$params->get('img_thumb_height', 0);
        unset(
$params, $global_str);

       
$imginfo = getimagesize(ELXIS_PATH.'/'.$updir.$filename.'.'.$extension);
        if (!
$imginfo) { return false; }
       
$mcrop = true;
        if (
$mh == 0) { $mh = intval($mw * ($imginfo[1] / $imginfo[0])); $mcrop = false; }
       
$tcrop = true;
        if (
$th == 0) { $th = intval($tw * ($imginfo[1] / $imginfo[0])); $tcrop = false; }

        if (!
$eFiles->copy($updir.$filename.'.'.$extension, $updir.$filename.'_medium.'.$extension)) { return false; }
        if (!
$eFiles->copy($updir.$filename.'.'.$extension, $updir.$filename.'_thumb.'.$extension)) { return false; }
       
$eFiles->resizeImage($updir.$filename.'_medium.'.$extension, $mw, $mh, $mcrop);
       
$eFiles->resizeImage($updir.$filename.'_thumb.'.$extension, $tw, $th, $tcrop);
        return
true;
    }

}

?>