Sindbad~EG File Manager

Current Path : /home/escuelai/public_html/biblioteca.escuelaintegral.edu.uy/classes/
Upload File :
Current File : /home/escuelai/public_html/biblioteca.escuelaintegral.edu.uy/classes/html_helper.class.php

<?php
// +-------------------------------------------------+
// | 2002-2011 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: html_helper.class.php,v 1.3 2021/02/16 14:44:21 dbellamy Exp $

if (stristr($_SERVER['REQUEST_URI'], ".class.php"))
	die("no access");


class HtmlHelper {
	
	
	protected static $instance = null;
	protected $is_initialized = false;
	
	protected $styles_path = '';
	protected $show_rtl = 0;
	protected $css_content = null;
	protected $common_disabled_files = [];
	
	
	/**
	 * Constructeur prive 
	 * 
	 */
	private function __construct() 
	{
	}
	
	
	/**
	 * Retourne une instance 
	 * 
	 * @return object 
	 */
	public static function getInstance()
	{
		if(is_null(static::$instance)) {
			static::$instance = new static();
		}
		
		static::$instance->getDependencies();
		return static::$instance;
	}
	
	
	/**
	 * Recupere le contexte d'execution
	 * 
	 * @return void
	 */
	protected function getDependencies()
	{
		if(true === $this->is_initialized) {
			return;
		}
		
		global $styles_path;
		$this->styles_path = trim($styles_path);
		global $pmb_show_rtl;
		$this->show_rtl = $pmb_show_rtl;
				
		$this->is_initialized = true;
	}
	
	
	/**
	 * Lit les fichiers d'un repertoire en fonction de leur extension et les trie par ordre alpha
	 * 
	 * @param string $dir : repertoire a lire avec / final
	 * @param string $extension : extension du fichier
	 * 
	 * @return array|string[] : tableau de fichiers
	 */
	protected function readAndSortFiles(string $dir, string $extension) 
	{
		$handle = @opendir($dir);
		$files = [];
		if(!$handle) {
			return [];
		}
		$l = strlen($extension);
		if($handle) {
			while( false !== ($item = readdir($handle)) ) {
				if( !in_array($dir.$item, $this->common_disabled_files) && is_file($dir.$item) && substr($item, -$l) == $extension ) {
					$files[] = $dir.$item;
				}
			}
			closedir($handle);
		}
		sort($files);
		return $files;
	}
	
	
	/**
	 * Retourne les feuilles de style et fichiers js associes a inclure
	 * 
	 * @param string $style
	 * 
	 * @return string
	 */
	public function getStyle(string $style) 
	{
		if( !is_null($this->css_content) ) {
			return $this->css_content;
		}
				
		$dir = __DIR__.'/../styles';
		if($this->styles_path) {
			$dir = $this->styles_path;
		}
		
		$this->css_content = "";

		// Lecture fichier disable dans le repertoire common
		if(is_file($dir.'/common/disable') && is_readable($dir.'/common/disable')) {
			$s = file_get_contents($dir.'/common/disable');
			$t = explode(PHP_EOL, $s);
			if(is_array($t)) {
				foreach($t as $v) {
					if($v) {
						$this->common_disabled_files[] = $dir.'/common/'.trim($v);
					}
				}
			}
		}
		
		// inclusion des feuilles de style communes
		$css_files = static::readAndSortFiles($dir.'/common/', '.css');
		foreach($css_files as $css_file){
			$time = @filemtime($css_file);
			$this->css_content.= PHP_EOL."<link rel='stylesheet' type='text/css' href='".$css_file."?".$time."' title='lefttoright' />";
		}

		// inclusion des fichiers js communs	
		$js_files = static::readAndSortFiles($dir.'/common/javascript', '.js');
		foreach($js_files as $js_file) {
			$time = @filemtime($js_file);
			$this->css_content.= PHP_EOL."<script src='".$js_file."?".$time."' ></script>";
		}		
		
		// inclusion des feuilles de style issues du style demande
		$css_files = static::readAndSortFiles($dir.'/'.$style.'/', '.css');
		foreach($css_files as $css_file){
			$time = @filemtime($css_file);
			$this->css_content.= PHP_EOL."<link rel='stylesheet' type='text/css' href='".$css_file."?".$time."' title='lefttoright' />";
		}
	
		// inclusion des fichiers js issus du style demande
		$js_files = static::readAndSortFiles($dir.'/'.$style.'/javascript/', '.js');
		foreach($js_files as $js_file) {
			$time = @filemtime($js_file);
			$this->css_content.= PHP_EOL."<script src='".$js_file."?".$time."' ></script>";
		}		
		
		// Inclusion des feuilles de style RTL / LTR
		if ($this->show_rtl) {
			$css_files = static::readAndSortFiles($dir.'/'.$style.'/rtl', '.css');
			foreach($css_files as $css_file){
				$time = @filemtime($css_file);
				$this->css_content.= PHP_EOL."<link rel='stylesheet' type='text/css' href='".$css_file."?".$time."' title='lefttoright' />";
			}
		}
		
		return $this->css_content;
		
	}
	
}


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists