AnonSec Shell
Server IP : 46.105.57.169  /  Your IP : 216.73.216.144
Web Server : Apache
System : Linux webd003.cluster120.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : maitricfuz ( 93378)
PHP Version : 8.4.10
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/maitricfuz/www/saint-martin-lg/plugins/sliderck/flexicontent/helper/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/maitricfuz/www/saint-martin-lg/plugins/sliderck/flexicontent/helper/helper_flexicontent.php
<?php
/**
 * @name		Slider CK
 * @copyright	Copyright (C) 2019. All rights reserved.
 * @license		GNU General Public License version 2 or later; see LICENSE.txt
 * @author		Cedric Keiflin - https://www.template-creator.com - https://www.joomlack.fr
 */

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

use Joomla\CMS\Factory;
use Joomla\CMS\Router\Route;
use Joomla\Component\Content\Administrator\Extension\ContentComponent;
use Joomla\Component\Content\Site\Helper\RouteHelper;
use Joomla\Component\Content\Site\Helper\AssciationHelper;

/**
 * Helper Class.
 */
class SliderckHelpersourceFlexicontent {

	private static $params;

	/*
	 * Get the items from the source
	 */
	public static function getItems($params) {
		if (empty(self::$params)) {
			self:$params = $params;
		}

		/*
		table items_ext >> list articles par ID, avec params flexi comme type_id
		table fields_item_relations >> item_id = article, field_id, value = a:3:{s:12:"originalname";s:23:"away-3101302_1280-2.jpg";s:12:"existingname";s:0:"";s:4:"desc";s:0:"";}
		*/

		$db = \Joomla\CMS\Factory::getDBO();

		$filterByCustomField = ($params->get('flexicontent_imgsource', '')
			&& $params->get('flexicontent_imgsource', '') != 'introimage'
			&& $params->get('flexicontent_imgsource', '') != 'firstimage'
		);

		/*--------- Load items based on the Flexicontent field and type ----------*/

		$query = false;
		$fieldName = false;

		// use the Flexicontent image field only if selected
		// else the selection is based on the articles only
		if ($filterByCustomField) {
			$catids = $params->get('flexicontent_catid');

			// get the field name
			$query = "SELECT f.name"
					. " FROM #__flexicontent_fields AS f"
					. " WHERE f.id = " . $params->get('flexicontent_imgsource', '0')
					;

			$db->setQuery($query);

			if ($db->execute()) {
				$fieldName = $db->loadResult();
			} else {
				echo '<p style="color:red;font-weight:bold;">Error loading SQL data : loading the field name in Maximenu CK</p>';
				return false;
			}

			// get the list of articles that have the field id filled
			$query = "SELECT ffir.value, ffir.item_id as id, ffir.field_id, cir.catid"
					. " FROM #__flexicontent_fields_item_relations AS ffir"
					. " INNER JOIN #__flexicontent_cats_item_relations as cir on cir.itemid = ffir.item_id"
					. ((int)$params->get('flexicontent_type', '0') > 0 ? " INNER JOIN #__flexicontent_items_ext as fie on fie.item_id = ffir.item_id" : "")
					. " WHERE cir.catid IN (" . implode(',', $catids) . ")"
					. ($filterByCustomField ? " AND ffir.field_id = " . $params->get('flexicontent_imgsource', '0') : "")
					. ((int)$params->get('flexicontent_type', '0') > 0 ? " AND fie.type_id = " . $params->get('flexicontent_type', '0') : "")
					;
				
		}
		else if ((int)$params->get('flexicontent_type', '0') > 0) {
			// get the list of articles that have the field id filled
			$query = "SELECT fie.item_id as id"
					. " FROM #__flexicontent_items_ext AS fie"
					. " WHERE fie.type_id = " . $params->get('flexicontent_type', '0')
					;
		}

		if ($query) {
			$db->setQuery($query);

			if ($db->execute()) {
				$rows = $db->loadObjectList();
			} else {
				echo '<p style="color:red;font-weight:bold;">Error loading SQL data : loading the flexitontent fields in Maximenu CK</p>';
				return false;
			}
			$flexicontentItems = array();
			foreach($rows as $row) {
				$flexicontentItems[] = $row->id;
			}
		}
		else {
			$flexicontentItems = false;
		}

		/*-------------- Load articles based on the options --------------*/
		
		$app     = Factory::getApplication();
		if (version_compare(JVERSION, '4') >= 0) {
			$factory = $app->bootComponent('com_content')->getMVCFactory();

			// Get an instance of the generic articles model
			$articles = $factory->createModel('Articles', 'Site', ['ignore_request' => true]);
		} else {
			// load the content articles file
			$com_path = JPATH_SITE . '/components/com_content/';
			include_once $com_path . 'router.php';
			include_once $com_path . 'helpers/route.php';
			\Joomla\CMS\MVC\Model\BaseDatabaseModel::addIncludePath($com_path . '/models', 'ContentModel');

			// Get an instance of the generic articles model
			$articles = \Joomla\CMS\MVC\Model\BaseDatabaseModel::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
		}
		// Set application parameters in model
		$appParams = $app->getParams();
		$articles->setState('params', $appParams);


		$articles->setState('filter.article_id', $flexicontentItems);
		$articles->setState('filter.article_id.include', true); // Exclude

		// Set the filters based on the module params
		// $articles->setState('list.start', 0);
		// if ($params->get('articleimgsource', 'introimage') == 'text') {
			// $articles->setState('list.limit', $params->get('limitslides',0));
		// } else {
			// $articles->setState('list.limit', 0);
		// }
		$articles->setState('filter.published', 1);

		// Access filter
		$access = !\Joomla\CMS\Component\ComponentHelper::getParams('com_content')->get('show_noauth');
		$authorised = \Joomla\CMS\Access\Access::getAuthorisedViewLevels(\Joomla\CMS\Factory::getUser()->get('id'));
		$articles->setState('filter.access', $access);
/*
		// Prep for Normal or Dynamic Modes
		$mode = $params->get('flexicontent_mode', 'normal');
		$option = $app->input->get('option', '', 'cmd');
		$view = $app->input->get('view', '', 'cmd');
		switch ($mode)
		{
			case 'dynamic':
				if ($option === 'com_content') {
					switch($view)
					{
						case 'category':
							$catids = array($app->input->get('id', 0, 'int'));
							break;
						case 'categories':
							$catids = array($app->input->get('id', 0, 'int'));
							break;
						case 'article':
							if ($params->get('flexicontent_show_on_article_page', 1)) {
								$article_id = $app->input->get('id', 0, 'int');
								$catid = $app->input->get('catid', 0, 'int');

								if (!$catid) {
									// Get an instance of the generic article model
									$article = \Joomla\CMS\MVC\Model\BaseDatabaseModel::getInstance('Article', 'ContentModel', array('ignore_request' => true));

									$article->setState('params', $appParams);
									$article->setState('filter.published', 1);
									$article->setState('article.id', (int) $article_id);
									$item = $article->getItem();

									$catids = array($item->catid);
								}
								else {
									$catids = array($catid);
								}
							}
							else {
								// Return right away if show_on_article_page option is off
								return;
							}
							break;

						case 'featured':
						default:
							// Return right away if not on the category or article views
							return;
					}
				}
				else {
					// Return right away if not on a com_content page
					return;
				}

				break;

			case 'normal':
			default:
				$catids = $params->get('flexicontent_catid');
				$articles->setState('filter.category_id.include', (bool) $params->get('flexicontent_category_filtering_type', 1));
				break;
		}

		// Category filter
		if ($catids && !empty($catids) && isset($catids[0]) && $catids[0] !== '') {
			if ($params->get('flexicontent_show_child_category_articles', 0) && (int) $params->get('flexicontent_levels', 0) > 0) {
				// Get an instance of the generic categories model
				$categories = \Joomla\CMS\MVC\Model\BaseDatabaseModel::getInstance('Categories', 'ContentModel', array('ignore_request' => true));
				$categories->setState('params', $appParams);
				$levels = $params->get('flexicontent_levels', 1) ? $params->get('flexicontent_levels', 1) : 9999;
				$categories->setState('filter.get_children', $levels);
				$categories->setState('filter.published', 1);
				$categories->setState('filter.access', $access);
				$additional_catids = array();

				foreach($catids as $catid)
				{
					$categories->setState('filter.parentId', $catid);
					$recursive = true;
					$items = $categories->getItems($recursive);

					if ($items)
					{
						foreach($items as $category)
						{
							$condition = (($category->level - $categories->getParent()->level) <= $levels);
							if ($condition) {
								$additional_catids[] = $category->id;
							}

						}
					}
				}

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

			$articles->setState('filter.category_id', $catids);
		}
*/
		// Ordering
		$articles->setState('list.ordering', $params->get('flexicontent_article_ordering', 'a.ordering'));
		$articles->setState('list.direction', $params->get('flexicontent_article_ordering_direction', 'ASC'));

		// New Parameters
		$articles->setState('filter.featured', $params->get('flexicontent_show_front', 'show'));
//		$articles->setState('filter.author_id', $params->get('flexicontent_created_by', ""));
//		$articles->setState('filter.author_id.include', $params->get('flexicontent_author_filtering_type', 1));
//		$articles->setState('filter.author_alias', $params->get('flexicontent_created_by_alias', ""));
//		$articles->setState('filter.author_alias.include', $params->get('flexicontent_author_alias_filtering_type', 1));
		$excluded_articles = $params->get('flexicontent_excluded_articles', '');

		if ($excluded_articles) {
			$excluded_articles = explode("\r\n", $excluded_articles);
			$articles->setState('filter.article_id', $excluded_articles);
			$articles->setState('filter.article_id.include', false); // Exclude
		}

		$date_filtering = $params->get('flexicontent_date_filtering', 'off');
		if ($date_filtering !== 'off') {
			$articles->setState('filter.date_filtering', $date_filtering);
			$articles->setState('filter.date_field', $params->get('flexicontent_date_field', 'a.created'));
			$articles->setState('filter.start_date_range', $params->get('flexicontent_start_date_range', '1000-01-01 00:00:00'));
			$articles->setState('filter.end_date_range', $params->get('flexicontent_end_date_range', '9999-12-31 23:59:59'));
			$articles->setState('filter.relative_date', $params->get('flexicontent_relative_date', 30));
		}

		// Filter by language
		$articles->setState('filter.language', $app->getLanguageFilter());
		$articlesItems = Array();
		foreach ($articles->getItems() as $tmparticle) {
			$articlesItems[] = $tmparticle->id;
		}

		/*--------------- Load the resulting articles from Flexicontent ------------*/

		if ($flexicontentItems !== false) {
			$filteredItems = array_intersect($articlesItems, $flexicontentItems);
		} else {
			$filteredItems = $articlesItems;
		}

		//include constants file
		require_once (JPATH_ADMINISTRATOR.DS.'components/com_flexicontent/defineconstants.php');
		\Joomla\CMS\Table\Table::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_flexicontent'.DS.'tables');
		require_once(JPATH_SITE.DS."components/com_flexicontent/classes/flexicontent.fields.php");
		require_once(JPATH_SITE.DS."components/com_flexicontent/classes/flexicontent.helper.php");
		require_once(JPATH_SITE.DS."components/com_flexicontent/helpers/permission.php");
//		require_once(JPATH_SITE.DS."components/com_content/helpers/route.php");
		require_once(JPATH_SITE.DS."components/com_flexicontent/helpers/route.php");
		require_once(JPATH_SITE.DS."components/com_flexicontent/models/".FLEXI_ITEMVIEW.".php");

		$itemmodel_name = FLEXI_J16GE ? 'FlexicontentModelItem' : 'FlexicontentModelItems';
		$itemmodel = new $itemmodel_name();

		// load the articles/flexicontent items
		$slideItems = Array();
		foreach( $filteredItems as $item_id ) {
			$item = $itemmodel->getItem($item_id, $check_view_access=false);
			$item_link = \Joomla\CMS\Router\Route::_(FlexicontentHelperRoute::getItemRoute($item->slug, $item->categoryslug));

			// use the Flexicontent image field only if selected
			if ($flexicontentItems !== false && $fieldName) {
				$items = array(&$item);
				// Get fields values from the DB, 
				if (! isset($item->fields[$fieldName]->display_large_src)) {
					FlexicontentFields::getFields($items);
					FlexicontentFields::getFieldDisplay($item, $fieldName);
				}
				// if no image found, don't count
				// $item->fields[$fieldName]->display_original_src = original image, but protected by htaccess
				if (! isset($item->fields[$fieldName]->display_large_src) || ! $item->fields[$fieldName]->display_large_src) {
					continue;
				}

				$articleImage = $item->fields[$fieldName]->display_large_src;
				$articleImage = trim($articleImage, \Sliderck\CKUri::root(true));
				$articleText = $item->introtext;

			// else the selection is based on the articles only 
			} else {
				$articleImage = false;
				$articleText = '';
				$registry = new \Sliderck\CKRegistry;
				$registry->loadString($item->images);
				$item->images = $registry->toArray();
				switch ($params->get('flexicontent_imgsource', 'introimage')) {
					case 'firstimage':
						$search_images = preg_match('/<img(.*?)src="(.*?)"(.*?)\/>/is', $item->introtext, $imgresult);
						$articleImage = (isset($imgresult[2]) && $imgresult[2] != '') ? $imgresult[2] : false;
						$articleText = (isset($imgresult[2])) ? str_replace($imgresult[0], '', $item->introtext) : $item->introtext;
						break;
					case 'fullimage':
						$articleImage = (isset($item->images['image_fulltext']) && $item->images['image_fulltext']) ? $item->images['image_fulltext'] : false;
						$articleText = $item->introtext;
						break;
					case 'introimage':
					default:
						$articleImage = (isset($item->images['image_intro']) && $item->images['image_intro']) ? $item->images['image_intro'] : false;
						$articleText = $item->introtext;
						break;
				}
			}

			// do nothing if no image found
			if (! $articleImage) continue;

			if (count($slideItems) < (int) $params->get('limitslides', 0) 
				|| (int) $params->get('limitslides', 0) == 0
			) {
				$slideItem = SliderckHelper::initItem();
				$slideItem->image = SliderckHelper::setImageUrl($articleImage);
				$slideItem->link = $item_link;
				$slideItem->title = $item->title;
				$slideItem->text = $articleText;

				$slideItems[] = $slideItem;
			}
		}

		return $slideItems;
	}
}

Anon7 - 2022
AnonSec Team