File manager - Edit - /home/jardides/www/Jardi-design/administrator/components/com_sliderck/helpers/source/folder.php
Back
<?php /** * @name Slider CK * @package com_sliderck * @copyright Copyright (C) 2016. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @author Cedric Keiflin - http://www.template-creator.com - http://www.joomlack.fr */ // No direct access defined('_JEXEC') or die; /** * Helper Class. */ class SliderckHelpersourceFolder { private static $folderLabels = array(); private static $imagesOrderByLabels = array(); private static $params; /* * Get the items from the source */ public static function getItems($params, $folder = null) { if (empty(self::$params)) { self:$params = $params; } $folder = $folder ? $folder : $params->get('folder', ''); if (! $folder) { return false; } // encode the folder path, needed if contains an accent // $foldern = iconv("UTF-8", "ISO-8859-1//TRANSLIT", urldecode($folder)); // pose probleme ! $foldern = $folder; // temporary workaround to the line above // encode the folder path, needed if contains an accent try { $translatedDirectory = iconv("UTF-8", "ISO-8859-1//TRANSLIT", urldecode($folder)); if ($translatedDirectory) $foldern = $translatedDirectory; } catch (Exception $e) { echo 'Slider CK Message : ', $e->getMessage(), "\n"; } // $files = JFolder::files(JPATH_SITE . '/' . $foldern, '.png|.jpg|.bmp|.tif|.tiff|.jpeg', false, false); $files = JFolder::files(JPATH_SITE . '/' . $foldern, '\.(?:png|jpe?g|bmp|tiff?)$', false, false); natsort($files); // load the labels from the folder self::$imagesOrderByLabels = array(); self::getImageLabelsFromFolder($foldern); // set the images order $order = $params->get('order', 'natural'); $order = 'labels'; if ($order == 'random') { shuffle($files); } else if($order == 'labels') { natsort($files); $files = array_map(array(__CLASS__, 'formatPath'), $files); $baseDir = self::formatPath($folder); $labelsOrder = array_reverse(self::$imagesOrderByLabels); foreach ($labelsOrder as $name) { if (in_array($name, $files)) array_unshift($files, $name); } // now make it unique $files = array_unique($files); } else { natsort($files); } $items = array(); foreach ($files as $file) { // get the data for the image $filedata = self::getImageDataFromfolder($file, $foldern); $file = str_replace("\\", "/", utf8_encode($file)); $item = new stdClass(); $item->path = trim(str_replace('\\', '/', $folder), '/') . '/' . $file; $item->link = $filedata->link ? $filedata->link : ($params->get('linkautoimage', '1') && $params->get('lightbox', 'mediabox') != 'none' ? JUri::root(true) . '/' . $item->path : '' ); $item->title = trim($filedata->title); $item->desc = trim($filedata->desc); $items[] = $item; } return $items; } /* * Load the data for the image (title and description) */ private static function getImageDataFromfolder($file, $folder) { $filename = explode('/', $file); $filename = end($filename); $dirindex = self::cleanName($folder); $fileindex = self::cleanName($filename); if (! empty(self::$folderLabels[$dirindex]) && ! empty(self::$folderLabels[$dirindex][$fileindex])) { $item = self::$folderLabels[$dirindex][$fileindex]; } else { $item = new stdClass(); $item->title = null; $item->desc = null; $item->link = null; } return $item; } /* * Load the data for the image (title and description) */ private static function getImageLabelsFromFolder($folder) { $dirindex = self::cleanName($folder); if (! empty(self::$folderLabels[$dirindex])) return; $items = array(); $item = new stdClass(); // get the language $lang = JFactory::getLanguage(); $langtag = $lang->getTag(); // returns fr-FR or en-GB // load the image data from txt if (file_exists(JPATH_ROOT . '/' . $folder . '/labels.' . $langtag . '.txt')) { $data = file_get_contents(JPATH_ROOT . '/' . $folder . '/labels.' . $langtag . '.txt'); } else if (file_exists(JPATH_ROOT . '/' . $folder . '/labels.txt')) { $data = file_get_contents(JPATH_ROOT . '/' . $folder . '/labels.txt'); } else { return null; } $doUTF8encode = true; // remove UTF-8 BOM and normalize line endings if (!strcmp("\xEF\xBB\xBF", substr($data,0,3))) { // file starts with UTF-8 BOM $data = substr($data, 3); // remove UTF-8 BOM $doUTF8encode = false; } $data = str_replace("\r", "\n", $data); // normalize line endings // if no data found, exit if(! $data) return null; // explode the file into rows // $imgdatatmp = explode("\n", $data); $imgdatatmp = preg_split("/\r\n|\n|\r/", $data, -1, PREG_SPLIT_NO_EMPTY); $parmsnumb = count($imgdatatmp); for ($i = 0; $i < $parmsnumb; $i++) { $imgdatatmp[$i] = trim($imgdatatmp[$i]); $line = explode('|', $imgdatatmp[$i]); // store the order or files from the TXT file self::$imagesOrderByLabels[] = $line[0]; $item = new stdClass(); $item->index = self::cleanName($line[0]); // $item->title = (isset($line[1])) ? ( $doUTF8encode ? htmlspecialchars(utf8_encode($line[1])) : ($line[1]) ) : ''; // $item->desc = (isset($line[2])) ? ( $doUTF8encode ? htmlspecialchars(utf8_encode($line[2])) : ($line[2]) ) : ''; // $item->link = (isset($line[3])) ? ( $doUTF8encode ? htmlspecialchars(utf8_encode($line[3])) : ($line[3]) ) : ''; $item->title = (isset($line[1])) ? $line[1] : ''; $item->desc = (isset($line[2])) ? $line[2] : ''; $item->link = (isset($line[3])) ? $line[3] : ''; $items[$item->index] = $item; } self::$folderLabels[$dirindex] = $items; } /* * Remove special character */ private static function cleanName($path) { return preg_replace('/[^a-z0-9]/i', '_', $path); } /* * Format the path to use only / */ public static function formatPath($p) { return trim(str_replace("\\", "/", $p), "/"); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings