HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/backip-old-files/plugins/system/jdbuilder/elements/joomla-articles/helper.php
<?php

/**
 * @package    JD Builder
 * @author     Team Joomdev <info@joomdev.com>
 * @copyright  2020 www.joomdev.com
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;

use JDPageBuilder\ElementHelper as ElementHelper;

class JDBuilderJoomlaArticlesElementHelper extends ElementHelper
{
    public static function getArticles($categories = [], $limit = null, $ordering = '', $subcategories = null, $featured = '', $direction = '', $viewmore = '', $format = '')
    {
        $app = \JFactory::getApplication();

        $option = $app->input->get('option', '');
        $ajax = $option == 'com_ajax' ? true : false;
        if (empty($categories)) {
            $categories = $app->input->get('categories', []);
        }
        if (empty($limit)) {
            $limit = $app->input->get('count', 10);
        }
        if (empty($ordering)) {
            $ordering = $app->input->get('ordering', 'a.ordering', 'RAW');
        }
        if (empty($featured)) {
            $featured = $app->input->get('featured', 'show');
        }
        if (empty($direction)) {
            $direction = $app->input->get('direction', 'ASC');
        }
        if (empty($viewmore)) {
            $viewmore = $app->input->get('viewmore', 0, 'INT');
        }
        if (empty($format)) {
            $format = $app->input->get('dateFormat', 'd M, Y', 'RAW');
        }
        if (empty($format)) {
            $format = 'd M, Y';
        }

        if ($subcategories == null) {
            $subcategories = $app->input->get('subcategories', false, 'RAW');
            $subcategories = $subcategories === 'true' ? true : false;
        }

        // Get the dbo
        $db = \JFactory::getDbo();

        // Get an instance of the generic articles model
        $model = \JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

        // Set application parameters in model
        $appParams = new \JRegistry();
        $model->setState('params', $appParams);

        $model->setState('list.start', 0);
        $model->setState('filter.published', 1);

        // Set the filters based on the module params
        $model->setState('list.limit', $limit);

        // This module does not use tags data
        $model->setState('load_tags', false);

        // Access filter
        $access = !\JComponentHelper::getParams('com_content')->get('show_noauth');
        $authorised = \JAccess::getAuthorisedViewLevels(\JFactory::getUser()->get('id'));
        $model->setState('filter.access', $access);

        if (!empty($categories) && $subcategories) {
            // Get an instance of the generic categories model
            $categoriesModel = \JModelLegacy::getInstance('Categories', 'ContentModel', array('ignore_request' => true));
            $levels = 9999;
            $categoriesModel->setState('filter.get_children', $levels);
            $categoriesModel->setState('filter.published', 1);
            $categoriesModel->setState('filter.access', $access);
            $additional_catids = array();

            foreach ($categories as $catid) {
                $categoriesModel->setState('filter.parentId', $catid);
                $items = $categoriesModel->getItems(true);
                if ($items) {
                    foreach ($items as $category) {
                        $condition = (($category->level - $categoriesModel->getParent()->level) <= $levels);

                        if ($condition) {
                            $additional_catids[] = $category->id;
                        }
                    }
                }
            }

            $categories = array_unique(array_merge($categories, $additional_catids));
        }

        // Category filter
        $model->setState('filter.category_id', $categories);

        // Featured switch
        $model->setState('filter.featured', $featured);

        // Set ordering
        if ($ordering == 'random') {
            $model->setState('list.ordering', \JFactory::getDbo()->getQuery(true)->Rand());
        } else {
            $model->setState('list.ordering', $ordering);
            $model->setState('list.direction', $direction);
        }

        $items = $model->getItems();
        $dFormat  = $format;

        foreach ($items as &$item) {
            $item->readmore = strlen(trim($item->fulltext));
            $item->slug = $item->id . ':' . $item->alias;
            $item->created_formatted = date($format, strtotime($item->created));
            $item->modified_formatted = date($format, strtotime($item->modified));
            $item->published_formatted = date($format, strtotime($item->publish_up));

            /** @deprecated Catslug is deprecated, use catid instead. 4.0 */
            $item->catslug = $item->catid . ':' . $item->category_alias;
            $item->catlink  = \JRoute::_(\ContentHelperRoute::getCategoryRoute($item->catid));
            if ($access || in_array($item->access, $authorised)) {
                // We know that user has the privilege to view the article
                $item->link     = \JRoute::_(\ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language));
                $item->linkText = \JText::_('MOD_ARTICLES_NEWS_READMORE');
            } else {
                $item->link = new \JUri(\JRoute::_('index.php?option=com_users&view=login', false));
                $item->link->setVar('return', base64_encode(\ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language)));
                $item->linkText = \JText::_('MOD_ARTICLES_NEWS_READMORE_REGISTER');
            }

            $item->introtext = preg_replace('/<img[^>]*>/', '', $item->introtext);
            $item->introtext = strip_tags($item->introtext);


            $images = json_decode($item->images);
            $item->imageSrc = '';
            $item->imageAlt = '';
            $item->imageCaption = '';

            if (!empty($images->image_intro)) {
                $item->imageSrc = \JURI::root() . htmlspecialchars($images->image_intro, ENT_COMPAT, 'UTF-8');
                $item->imageAlt = htmlspecialchars($images->image_intro_alt, ENT_COMPAT, 'UTF-8');

                if ($images->image_intro_caption) {
                    $item->imageCaption = htmlspecialchars($images->image_intro_caption, ENT_COMPAT, 'UTF-8');
                }
            } elseif (!empty($images->image_fulltext)) {
                $item->imageSrc = \JURI::root() . htmlspecialchars($images->image_fulltext, ENT_COMPAT, 'UTF-8');
                $item->imageAlt = htmlspecialchars($images->image_fulltext_alt, ENT_COMPAT, 'UTF-8');

                if ($images->image_intro_caption) {
                    $item->imageCaption = htmlspecialchars($images->image_fulltext_caption, ENT_COMPAT, 'UTF-8');
                }
            }
        }
        return ['items' => $items, 'viewmore' => \JDPageBuilder\Helper::getMenuLinkByItemId($viewmore)];
    }
}