Exemple #1
0
 /**
  * Constructeur de la classe
  *
  * @param 	varchar $view 			Nom de la vue à charger
  * @param 	object 	$controller 	Contrôleur faisant appel à la vue
  * @access	public
  * @author	koéZionCMS
  * @version 0.1 - 13/06/2012 by FI
  * @version 0.2 - 05/06/2013 by FI - Mise en place du chargement des helpers template
  * @version 0.2 - 05/06/2013 by FI - Modification de la gestion des Helpers, par défaut on charge de façon distincte les helpers du backoffice et du frontoffice pour plus de souplesse dans la gestion des templates
  * @version 0.3 - 07/07/2014 by FI - Rajout de $this->request = new stdClass(); pour corriger l'erreur suivante Warning: Creating default object from empty value in /core/Koezion/view.php on line 342 
  * @version 0.4 - 08/01/2015 by FI - Mise en place des hooks pour les helpers 
  */
 public function __construct($view, $controller)
 {
     $this->view = $view;
     $this->controller = $controller;
     $this->layout = $controller->layout;
     $this->vars = $controller->get('vars');
     $this->vars['components'] = $controller->components;
     $this->params = $controller->params;
     $this->request = new stdClass();
     //Si on a des helpers à charger
     //Il s'agit ici de helpers commun à l'ensemble des templates backoffice et frontoffice uniquement
     //S'il s'agit de helpers spécifiques il faut mettre les fichiers dans les dossiers correspondants
     if ($this->helpers) {
         foreach ($this->helpers as $k => $v) {
             $helper = low($v);
             require_once HELPERS . DS . $helper . '_helper.php';
             unset($this->helpers[$k]);
             $helperObjectName = $v . 'Helper';
             $this->vars['helpers'][$v] = new $helperObjectName($this);
         }
     }
     //INSERTION DES EVENTUELS HELPERS DU TEMPLATE (BACK OU FRONT)//
     if (defined('LAYOUT_VIEWS')) {
         $moreHelpers = LAYOUT_VIEWS . DS . 'helpers';
     } else {
         $moreHelpers = HELPERS . DS . 'backoffice';
     }
     //Backoffice
     if (is_dir($moreHelpers)) {
         foreach (FileAndDir::directoryContent($moreHelpers) as $moreHelper) {
             $helperPath = $moreHelpers . DS . $moreHelper;
             //On va effectuer un contrôle pour vérifier si un hook n'est pas en place pour le helper concerné
             if (defined('LAYOUT_VIEWS')) {
                 $websiteHooks = $this->vars['websiteParams'];
                 $helpersHooks = $this->_load_hooks_files('HELPERS', $websiteHooks);
                 if (isset($helpersHooks[$moreHelper])) {
                     $helperPath = $helpersHooks[$moreHelper];
                 }
             }
             require_once $helperPath;
             $helperClass = Inflector::camelize(str_replace('_helper.php', '', $moreHelper));
             $helperObjectName = $helperClass . 'Helper';
             $this->vars['helpers'][$helperClass] = new $helperObjectName($this);
         }
     }
     $this->rendered = false;
 }
 /**
  * http://prendreuncafe.com/blog/post/2005/07/19/218-lister-recursivement-le-contenu-d-un-repertoire-en-php
  * @param unknown_type $path
  * @param unknown_type $full_list
  */
 static function recursive_dir_content($path = '.', $full_list = false, $datasFormat = null)
 {
     $out = array();
     $i = 0;
     $path = substr($path, strlen($path) - 1, strlen($path)) !== DS ? $path . DS : $path;
     if (!is_dir($path) || !($handle = @dir($path))) {
         trigger_error(DS . $path . DS . " doesn't exists or is not a valid directory", E_USER_ERROR);
     } else {
         while ($entry = $handle->read()) {
             if ($full_list == true || $entry !== "." && $entry !== "..") {
                 $path_to_entry = $path . $entry;
                 if ($entry !== '.' && $entry !== '..' && @is_dir($path_to_entry)) {
                     $out[$entry] = FileAndDir::recursive_dir_content($path_to_entry, $full_list, $datasFormat);
                 } else {
                     $rootPath = $path_to_entry;
                     $pathToWww = str_replace(ROOT, BASE_URL, $rootPath);
                     $wwwPath = str_replace(DS, '/', $pathToWww);
                     if (!isset($datasFormat)) {
                         $out[$entry]['root'] = $rootPath;
                         $out[$entry]['www'] = $wwwPath;
                     } else {
                         if ($datasFormat == 'root') {
                             $out[$entry] = $rootPath;
                         } else {
                             if ($datasFormat == 'www') {
                                 $out[$entry] = $wwwPath;
                             }
                         }
                     }
                 }
             }
         }
     }
     return $out;
 }
 /**
  * Cette fonction va insérer dans le fichier de log les différentes erreurs rencontrées
  * 
  * @param varchar $message Message à insérer dans les logs
  * @access	public
  * @author	koéZionCMS
  * @version 0.1 - 23/12/2011
  */
 public function error($message)
 {
     require_once LIBS . DS . 'config_magik.php';
     $cfg = new ConfigMagik(CONFIGS . DS . 'files' . DS . 'core.ini', true, false);
     $coreConfs = $cfg->keys_values();
     if ($coreConfs['log_php']) {
         //Rajout le 02/04/2013
         $date = date('Y-m-d');
         $traceSql = date('Y-m-d H:i:s') . "|#|" . $message . "|#|" . $this->request->url . "\n";
         FileAndDir::put(TMP . DS . 'logs' . DS . 'php' . DS . 'e404_' . $date . '.log', $traceSql, FILE_APPEND);
     }
     $url = Router::url('e404');
     $url .= "?e404=" . $this->request->url;
     Session::write('redirectMessage', $message);
     header("Location: " . $url);
     die;
 }
 /**
  * Cette fonction permet de contrôler les plugins qui ne sont pas encore insérés dans la base de données
  *
  * @access 	protected
  * @author 	koéZionCMS
  * @version 0.1 - 17/01/2012 by FI
  */
 protected function _check_plugins()
 {
     $pluginsDirectoryContent = FileAndDir::directoryContent(PLUGINS);
     foreach ($pluginsDirectoryContent as $pluginDirectory) {
         if (is_dir(PLUGINS . DS . $pluginDirectory) && $pluginDirectory != "_") {
             if (file_exists(PLUGINS . DS . $pluginDirectory . DS . 'description.xml')) {
                 $xParsedXml = simplexml_load_file(PLUGINS . DS . $pluginDirectory . DS . 'description.xml');
                 $xParsedXml = (array) $xParsedXml;
                 $this->load_model('Module');
                 //On charge le modèle permettant la gestion des modules
                 foreach ($xParsedXml as $k => $v) {
                     $conditions = array('conditions' => array('code' => $xParsedXml['code']));
                     $plugin = $this->Plugin->find($conditions);
                     if (count($plugin) == 0) {
                         //Insertion dans la base de données
                         $insertPlugin = array('code' => $xParsedXml['code'], 'name' => $xParsedXml['name'], 'description' => $xParsedXml['description'], 'author' => $xParsedXml['author'], 'online' => 0, 'installed' => 0);
                         $this->Plugin->save($insertPlugin);
                     }
                 }
             }
         }
     }
 }
Exemple #5
0
                ?>
</b> doit être supprimé.</div><?php 
            }
            break;
    }
}
if ($result) {
    ///////////////////////////////////////////////////
    //   CREATION DES DOSSIERS DANS WEBROOT/UPLOAD   //
    $foldersToCreate = array(WEBROOT_UPLOAD . DS . '_thumbs', WEBROOT_UPLOAD . DS . '_thumbs' . DS . 'Files', WEBROOT_UPLOAD . DS . '_thumbs' . DS . 'Flash', WEBROOT_UPLOAD . DS . '_thumbs' . DS . 'Images', WEBROOT_UPLOAD . DS . 'files', WEBROOT_UPLOAD . DS . 'flash', WEBROOT_UPLOAD . DS . 'images');
    foreach ($foldersToCreate as $folder) {
        FileAndDir::createPath($folder);
    }
    FileAndDir::fcopy(INSTALL_FILES . DS . 'core.ini', CONFIGS_FILES . DS . 'core.ini');
    FileAndDir::fcopy(INSTALL_FILES . DS . 'posts.ini', CONFIGS_FILES . DS . 'posts.ini');
    FileAndDir::fcopy(INSTALL_FILES . DS . 'routes.ini', CONFIGS_FILES . DS . 'routes.ini');
    $httpHost = $_SERVER["HTTP_HOST"];
    if ($httpHost == 'localhost' || $httpHost == '127.0.0.1') {
        $section = 'localhost';
    } else {
        $section = 'online';
    }
    ?>
					<form action="index.php?step=database_params" method="post">
						<input type="hidden" name="section" value="<?php 
    echo $section;
    ?>
" />
						<div class="row" style="text-align: right; padding-right: 0; padding-bottom: 0;"><button class="medium grey" type="submit"><span>Configurer la base de données</span></button></div>
					</form>
					<?php 
Exemple #6
0
$Errorsmessages['PostsComment']['email'] = _('Vous devez indiquer un email valide.');
$Errorsmessages['PostsComment']['cpostal'] = _('Vous devez indiquer votre code postal.');
$Errorsmessages['PostsComment']['message'] = _('Veuillez saisir votre message');
$Errorsmessages['PostsType']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['PostsType']['column_title'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['RightButton']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['Slider']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['User']['role'] = _('Vous devez sélectionner une valeur.');
$Errorsmessages['User']['group'] = _('Vous devez sélectionner une valeur.');
$Errorsmessages['User']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['User']['login'] = _('La valeur de ce champ est de 4 caractères minimum.');
$Errorsmessages['User']['password'] = _('La valeur de ce champ est de 4 caractères minimum.');
$Errorsmessages['User']['email'] = _('Vous devez indiquer un email valide.');
$Errorsmessages['UsersGroup']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['UsersGroup']['role_id'] = _('Vous devez sélectionner une valeur.');
$Errorsmessages['Website']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['Website']['url'] = _('Vous devez indiquer une url valide.');
//$Errorsmessages['Website']['url_alias'] = _('Vous devez indiquer une url valide pour les alias.');
$Errorsmessages['Website']['template'] = _('Vous devez indiquer sélectionner un template.');
$Errorsmessages['Template']['name'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['Template']['layout'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['Template']['version'] = _('La valeur de ce champ est de 2 caractères minimum.');
$Errorsmessages['Template']['code'] = _('La valeur de ce champ est de 2 caractères minimum.');
////////////////////////////////////////////
//   MESSAGES D'ERREURS SUPPLEMENTAIRES   //
$moreMessages = CONFIGS . DS . 'plugins' . DS . 'errors_messages';
if (is_dir($moreMessages)) {
    foreach (FileAndDir::directoryContent($moreMessages) as $moreMessage) {
        include $moreMessages . DS . $moreMessage;
    }
}
 /**
  * Cette fonction permet l'insertion de fichier CSS ou JS supplémentaire directement depuis le dossier upload
  * 
  * Appel : 
  * 	echo $helpers['Html']->upload_additional_files('CSS');
  * 	echo $helpers['Html']->upload_additional_files('JS');
  * 
  * @param	varchar $type 	CSS ou JS
  * @param	array 	$except Tableau contenant la liste des fichiers à ignorer
  * @access 	public
  * @author 	koéZionCMS
  * @version 0.1 - 19/03/2014 by FI
  * @deprecated - Since 31/10/2014 by FI - Suppression de cette fonctionnalité car trop lourde à gérer
  */
 public function upload_additional_files($type, $except = null)
 {
     $html = '';
     if ($type == 'CSS') {
         $moreCSSPath = UPLOAD . DS . 'files' . DS . 'css';
         if (is_dir($moreCSSPath)) {
             foreach (FileAndDir::directoryContent($moreCSSPath) as $moreCSS) {
                 if (!isset($except) || isset($except) && !in_array($moreCSS, $except)) {
                     //On génère la balise de chargement
                     $html .= "\t\t" . '<link href="' . Router::webroot('/upload/files/css/' . $moreCSS) . '" rel="stylesheet" type="text/css" />' . "\n";
                 }
             }
         }
     } else {
         if ($type == 'JS') {
             $moreJSPath = UPLOAD . DS . 'files' . DS . 'js';
             if (is_dir($moreJSPath)) {
                 foreach (FileAndDir::directoryContent($moreJSPath) as $moreJS) {
                     if (!isset($except[$moreJS])) {
                         //On génère la balise de chargement
                         $html .= "\t\t" . '<script src="' . Router::webroot('/upload/files/js/' . $moreJS) . '" type="text/javascript"></script>' . "\n";
                     }
                 }
             }
         }
     }
     return $html;
 }
						<?php 
    }
    ?>
	
					</table>
				<?php 
}
?>
		
			</div>
		</div>
	</div>
	
	<div class="half">	
		<?php 
if (!in_array($_SERVER["HTTP_HOST"], array('localhost', '127.0.0.1')) && FileAndDir::dexists(ROOT . DS . 'install')) {
    ?>
			<div class="box">
				<div class="title">
					<h2><?php 
    echo _("ATTENTION");
    ?>
</h2>
				</div>
				<div class="content">				
					<div class="system warning">
						<?php 
    echo _("Le dossier /install est toujours présent sur le serveur");
    ?>
.<br />
						<?php 
 /**
  * Cette fonction permet l'édition d'un élément
  *
  * @param 	integer $id Identifiant de l'élément à modifier
  * @access 	public
  * @author 	koéZionCMS
  * @version 0.1 - 17/01/2012 by FI
  * @version 0.2 - 21/06/2013 by FI - Rajout de la récupération des boutons colonnes de doite --> C'est le jour le plus long de l'année
  * @version 0.3 - 03/11/2013 by FI - Modification de la fonction de transformation des dates
  * @version 0.4 - 03/10/2014 by FI - Correction erreur surcharge de la fonction, rajout de tous les paramètres
  */
 public function backoffice_edit($id = null, $redirect = true)
 {
     $this->_transform_date('fr2Sql', 'publication_date');
     //Transformation de la date FR en date SQL
     $parentEdit = parent::backoffice_edit($id, false);
     //On fait appel à la fonction d'édition parente
     if ($this->request->data) {
         if ($parentEdit) {
             $this->_save_assoc_datas_posts_posts_type($this->Post->id, true);
             $this->_save_assoc_datas_posts_right_button($this->Post->id, true);
             $this->_check_send_mail($this->request->data);
             FileAndDir::remove(TMP . DS . 'cache' . DS . 'variables' . DS . 'Posts' . DS . 'home_page_website_' . CURRENT_WEBSITE_ID . '.cache');
             //On supprime le dossier cache
             FileAndDir::remove(TMP . DS . 'cache' . DS . 'variables' . DS . 'Posts' . DS . 'website_' . CURRENT_WEBSITE_ID . '.cache');
             //On supprime le dossier cache
             $this->redirect('backoffice/posts/index');
             //On retourne sur la page de listing
         }
     }
     $this->_transform_date('sql2Fr', 'publication_date');
     //Transformation de la date SQL en date FR
     $this->_init_categories();
     $this->_init_posts_types();
     $this->_init_right_buttons();
     $this->_get_assoc_datas($id);
 }
Exemple #10
0
//   REGLES FRONTOFFICE   //
Router::connect('', 'home/index');
//Page d'accueil du site
Router::connect('e404', 'home/e404');
//Erreur 404
Router::connect('newsletter', 'contacts/newsletter');
//Inscription à la newsletter
Router::connect('rechercher', 'searchs/rechercher');
//Préparation de l'url pour la recherche
Router::connect('recherche', 'searchs/index');
//Résultat de la recherche
////////////////////////////////////////////////
//   REGLES ADDITIONNELLES POUR LES PLUGINS   //
$moreRoutes = CONFIGS . DS . 'plugins' . DS . 'routes';
if (is_dir($moreRoutes)) {
    foreach (FileAndDir::directoryContent($moreRoutes) as $moreRoute) {
        require_once $moreRoutes . DS . $moreRoute;
    }
}
////////////////////////////////////////////////
Router::connect(':prefix/:slug-:id', 'posts/view/id:([0-9]+)/slug:([a-zA-Z0-9\\-]+)/prefix:([a-zA-Z0-9\\-]+)');
//Affichage du détail d'un post
Router::connect(':slug-:id', 'categories/view/id:([0-9]+)/slug:([a-zA-Z0-9\\-]+)');
//Affichage d'une page catégorie
////////////////////////////
///////////////////////////
//   REGLES BACKOFFICE   //
Router::connect('connexion', 'users/login');
//Connexion au backoffice
Router::connect($routesConfigs['backoffice_prefix'], $routesConfigs['backoffice_prefix'] . '/dashboard/index');
//Accueil backoffice
Exemple #11
0
function get_plugins_connectors()
{
    $pluginsConnectors = array();
    $pluginsConnectorsPath = CONFIGS . DS . 'plugins' . DS . 'connectors';
    if (is_dir($pluginsConnectorsPath)) {
        foreach (FileAndDir::directoryContent($pluginsConnectorsPath) as $pluginsConnectorsFile) {
            include $pluginsConnectorsPath . DS . $pluginsConnectorsFile;
        }
    }
    return $pluginsConnectors;
}
 /**
  * Cette fonction permet d'éffectuer la copie de l'ensemble des fichiers de configurations d'un plugin
  * 
  * @param 	array $filesCopy Liste des fichiers à copier
  * @return	boolean	Vrai si la copie s'est correctement déroulée, faux sinon 
  * @access	protected
  * @author	koéZionCMS
  * @version 0.1 - 09/05/2014 by FI
  * @version 0.2 - 04/11/2014 by FI - Mise en place de la récursivité dans la librairie FileAndDir pour la création des dossiers
  */
 protected function _files_copy($filesCopy)
 {
     $processResult = true;
     //Parcours des fichiers à copier
     foreach ($filesCopy as $fileCopy) {
         //Dans le cas ou on un seul fichier à copier
         if (isset($fileCopy['sourceName'])) {
             FileAndDir::createPath($fileCopy['destinationPath']);
             //Création du dossier de destination
             $sourceFile = $fileCopy['sourcePath'] . DS . $fileCopy['sourceName'];
             //Chemin du fichier source
             //On récupère le nom du fichier de destination (par défaut ce sera le même que la source)
             $destinationName = isset($fileCopy['destinationName']) ? $fileCopy['destinationName'] : $fileCopy['sourceName'];
             $destinationFile = $fileCopy['destinationPath'] . DS . $destinationName;
             //Chemin du fichier de destination
             $processResult = FileAndDir::fcopy($sourceFile, $destinationFile);
             //Copie du fichier
             //Dans le cas ou on a le contenu d'un dossier à copier on procède à une copie récursive
         } else {
             FileAndDir::recursive_copy($fileCopy['sourcePath'], $fileCopy['destinationPath']);
         }
     }
     return $processResult;
 }
Exemple #13
0
 /**
  * 
  * @param unknown_type $function
  * @param unknown_type $query
  * @param unknown_type $datasToSave
  */
 protected function _trace_sql($function, $query, $datasToSave = null)
 {
     require_once LIBS . DS . 'config_magik.php';
     $cfg = new ConfigMagik(CONFIGS . DS . 'files' . DS . 'core.ini', true, false);
     $coreConfs = $cfg->keys_values();
     if ($coreConfs['log_sql']) {
         $date = date('Y-m-d');
         $debug = debug_backtrace();
         $traceSql = "================================================================================" . "\n" . "[DATE] : \t\t\t" . date('Y-m-d H:i:s') . "\n" . "[CLASS] : \t\t\t" . get_class($this) . "\n" . "[REFERER] : \t\t" . $this->refererUrl . "\n" . "[DEBUG BACKTRACE] : " . "\n";
         foreach ($debug as $k => $v) {
             if (isset($v['file']) && !empty($v['file']) && isset($v['line']) && !empty($v['line'])) {
                 $traceSql .= "\t\t\t\t\t" . '[FILE] : ' . $v['file'] . ' --> [LINE] : ' . $v['line'] . "\n";
             }
         }
         $traceSql .= "[FUNCTION] : \t\t" . $function . "\n" . "[QUERY] : " . "\n" . $query . "\n";
         if (isset($datasToSave)) {
             $traceSql .= "[DATAS] : \n" . var_export($datasToSave, true) . "\n";
         }
         FileAndDir::put(TMP . DS . 'logs' . DS . 'models' . DS . $date . '.log', $traceSql, FILE_APPEND);
     }
 }
Exemple #14
0
require_once KOEZION . DS . 'router.php';
//Chargement de l'object Router (Analyse des Urls)
require_once CONFIGS . DS . 'configure.php';
//Classe de configuration
require_once CONFIGS . DS . 'routes.php';
//Fichier contenant la liste des réécritures d'url
require_once CAKEPHP . DS . 'string.php';
//Classe Object permettant la manipulation de chaîne de caractères
require_once CAKEPHP . DS . 'set.php';
//Classe Object permettant des manipulations sur les tableaux
require_once CAKEPHP . DS . 'sanitize.php';
//Classe Object permettant des manipulations de nettoyage
require_once KOEZION . DS . 'validation.php';
//Classe Object permettant la gestion des différentes règles de validation des modèles
require_once KOEZION . DS . 'request.php';
//Chargement de l'objet Request
require_once CONTROLLERS . DS . 'app_controller.php';
//Classe App
require_once KOEZION . DS . 'koezion_plugin.php';
//Classe Plugin
require_once KOEZION . DS . 'dispatcher.php';
//Chargement du Dispatcher
/////////////////////////////////////////////
//   FICHIERS BOOTSTRAP POUR LES PLUGINS   //
$moreBootstraps = CONFIGS . DS . 'plugins' . DS . 'bootstrap';
if (is_dir($moreBootstraps)) {
    foreach (FileAndDir::directoryContent($moreBootstraps) as $moreBootstrap) {
        require_once $moreBootstraps . DS . $moreBootstrap;
    }
}
/////////////////////////////////////////////
Exemple #15
0
 /**
  * 
  * Cette fonction permet de supprimer un dossier de cache
  * 
  * @param 	varchar $cacheFolder 	Dossier de stockage du fichier
  * @param 	varchar $cacheFile 		Nom du fichier
  * @return 	boolean vrai si la suppression s'est correctement déroulée
  * @access	static
  * @author	koéZionCMS
  * @version 0.1 - 19/12/2012 by FI
  */
 static function delete_cache_directory($cacheFolder)
 {
     return FileAndDir::remove_directory($cacheFolder);
 }
    $aUrlList[str_repeat('___', $v['level'] + 1) . $v['name']] = $url;
}
//Réorganisation de la liste des articles
foreach ($posts as $k => $v) {
    $aUrlList['[ ==== ' . _("Articles") . ' ==== ]'] = '';
    $url = Router::url('posts/view/id:' . $v['id'] . '/slug:' . $v['slug'] . '/prefix:' . $v['prefix']);
    if (isset($v['redirect_to']) && !empty($v['redirect_to'])) {
        $url = Router::url($v['redirect_to']);
    }
    $aUrlList['___' . $v['name']] = $url;
}
/////////////////////////////////////////////////////////////////////////////
//   REGLES ADDITIONNELLES POUR LA generation DES LIENS POUR LES PLUGINS   //
$moreLinks = CONFIGS . DS . 'plugins' . DS . 'ckeditor' . DS . 'generate_links';
if (is_dir($moreLinks)) {
    foreach (FileAndDir::directoryContent($moreLinks) as $moreLink) {
        require_once $moreLinks . DS . $moreLink;
    }
}
/////////////////////////////////////////////////////////////////////////////
/*if(isset($flipbooks) && !empty($flipbooks)) {
	
	foreach($flipbooks as $k => $v) {
	
		$aUrlList['[ ==== '._("Flipbooks").' ==== ]'] = '';
		$aUrlList['___'.$v['name']] = Router::url('flipbooks/index/id:'.$v['id'].'/slug:'.$v['slug']);
	}
}*/
/*
//Réorganisation de la liste des types d'articles
foreach($postsTypes as $k => $v) {
 protected function _delete_cache()
 {
     if (isset($this->cachingFiles)) {
         foreach ($this->cachingFiles as $file) {
             if (FileAndDir::dexists($file)) {
                 Cache::delete_cache_directory($file);
             } else {
                 if (FileAndDir::fexists($file)) {
                     FileAndDir::remove($file);
                 }
             }
         }
     }
 }