/** * fonction qui permet d'encrypter un mot de passe, une fois encrype, on save les params pour le retrouver en bdd * @param string|null $mdp * @param $id_identite * @return string */ public static function setEncryptMdp($mdp, $id_identite = null) { $encrypt_str = ChaineCaractere::random(154); //on cache le mdp $mdp = md5($mdp); //récupération de la logneur du mot de passe $longeur_mdp = strlen($mdp); //on va couper le mot de passe en 2 suivant un nombre aleatoire $nb_aleatoire_mdp = rand(3, $longeur_mdp - 2); $bout1_mdp = mb_substr($mdp, 0, $longeur_mdp / 2, "UTF-8"); $bout2_mdp = mb_substr($mdp, $longeur_mdp / 2, $longeur_mdp, "UTF-8"); //on stock la taille des bouts pour pouvoir les décrypter $taille_bout1 = strlen($bout1_mdp); $taille_bout2 = strlen($bout2_mdp); //on insere le premier bout aleatoirement dans le hashmdp //on calcul sa longeur total (celle duhash + la logneur du mdp que l'on va rajouter dedans) $longueur_hash = strlen($encrypt_str); $debut_bout1 = rand(0, $longueur_hash / 2); //on rajouter le premier bout dans le mot de passe + recalcule de la longeur du hash avec le mdp add $encrypt_str = mb_substr($encrypt_str, 0, $debut_bout1) . $bout1_mdp . mb_substr($encrypt_str, $debut_bout1, $longueur_hash); //on insere le second bout aleatoirement dans le hashmdp //on calcul sa longeur total (celle duhash + la logneur premier bout du mdp que l'on va rajouter dedans) $longueur_hash = strlen($encrypt_str); $debut_bout2 = rand($longueur_hash / 2, $longueur_hash); //on rajoute le deuxieme $mdp_encrypt = mb_substr($encrypt_str, 0, $debut_bout2) . $bout2_mdp . mb_substr($encrypt_str, $debut_bout2, $longueur_hash); if ($id_identite != null) { self::setSaveParams("{$taille_bout1}, {$debut_bout2}, {$nb_aleatoire_mdp}, {$taille_bout2}, {$debut_bout1}, " . ChaineCaractere::random(20), $id_identite); } else { self::$params = "{$taille_bout1}, {$debut_bout2}, {$nb_aleatoire_mdp}, {$taille_bout2}, {$debut_bout1}, " . ChaineCaractere::random(20); } return $mdp_encrypt; }
/** * fonction qui change le format heure 12:10 en 12h10 * @param $temps * @return mixed */ public static function ChangerFormatHeure($temps) { if (ChaineCaractere::FindInString($temps, ":") === true) { $chaine = str_replace(":", "h", $temps); return $chaine; } else { FlashMessage::setFlash("La valeur entrée n'est pas de type h:m"); FlashMessage::getFlash(); die; } }
/** * fonction qui permet de modifier une page en fonction de son id * @param $id_page * @param $balise_title * @param $url * @param $meta_description * @param $titre_page * @param $parent * @param $contenu */ public function setModifierPage($id_page, $balise_title, $url, $meta_description, $titre_page, $parent, $affiche = 1) { $dbc = \core\App::getDb(); //on trouve l'ancien fichier à parir de la fin de l'url $this->getHeadPage($id_page); $this->getContenuPage($id_page); $old_url = explode("/", $this->url); $filename = ROOT . "app/views/" . end($old_url) . ".php"; //si le fichier existe on modifie le tout if (file_exists($filename) || $id_page == 1) { $this->id_page = $id_page; $url = ChaineCaractere::setUrl($url); $err_balise_title_char = "Le titre pour le navigateur ne doit pas dépasser 70 caractères"; $err_balise_title_egalite = "Ce titre est déjà présent en base de données, merci d'en choisir un autre pour optimiser le référencement de votre site"; $err_balise_title = $this->getVerifChamp("page", "ID_page", "balise_title", $balise_title, 70, $err_balise_title_char, $err_balise_title_egalite, $this->id_page); $err_url_char = "L'url ne doit pas dépasser 92 caractères"; $err_url_egalite = "Cette url est déjà présent en base de données, merci d'en choisir une autre pour ne pas avoir de conflit entre vos pages"; $err_url = $this->getVerifChamp("page", "ID_page", "url", $url, 92, $err_url_char, $err_url_egalite, $this->id_page); $err_meta_description_char = "La description de cette page ne doit pas dépasser 158 caractères"; $err_meta_description_egalite = "Cette description est déjà présent en base de données, merci d'en choisir une autre pour optimiser le référencement de votre site"; $err_meta_description = $this->getVerifChamp("page", "ID_page", "meta_description", $meta_description, 158, $err_meta_description_char, $err_meta_description_egalite, $this->id_page); $err_titre_page_char = "Le titre de cette page ne doit pas dépasser 50 caractères"; $err_titre_page_egalite = "Cette titre de page est déjà présent en base de données, merci d'en choisir un autre pour ne pas avoir de conflit dans votre navigation"; $err_titre_page = $this->getVerifChamp("page", "ID_page", "titre", $titre_page, 50, $err_titre_page_char, $err_titre_page_egalite, $this->id_page); if (App::getErreur() !== true) { $new_url = explode("/", $url); $new_filename = ROOT . "app/views/" . end($new_url) . ".php"; rename($filename, $new_filename); $parent = intval($this->getParentId($parent)); $dbc->update("titre", $titre_page)->update("url", $url)->update("meta_description", $meta_description)->update("balise_title", $balise_title)->update("parent", $parent)->update("affiche", $affiche)->from("page")->where("ID_page", "=", $id_page, "", true)->set(); $this->setModifierLienNavigation("ID_page", $id_page, $this->getParentId($parent), $affiche); } else { $this->setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $err_balise_title, $err_url, $err_meta_description, $err_titre_page); } } else { FlashMessage::setFlash("Impossible de modifier cette page, veuillez contacter votre administrateur pour corriger ce problème"); $this->erreur = true; } }
} else { if ($module !== false) { $explode = explode("/", $lien, 3); require_once ROOT . $explode[0] . "/" . $explode[1] . "/admin/controller/" . $explode[2] . ".php"; } else { require_once "admin/controller/" . $lien . ".php"; } } } else { if ($page == "login") { require "admin/views/template/login_admin.php"; } else { if (!isset($_SESSION["idlogin" . CLEF_SITE])) { Connexion::setObgConnecte(WEBROOT . "administrator/login"); } else { if (\core\functions\ChaineCaractere::FindInString($page, "modules/") == true) { //utilisé pour initialiser les modules $page_module = $page; $explode = explode("/", $page, 3); $page = "../../" . $explode[0] . "/" . $explode[1] . "/admin/views/" . $explode[2]; } //pour les pages normales //pour l'acces a la gestion des comptes, si pas activée oin renvoi une erreur if ($droit_acces->getDroitAccesPage("gestion-comptes/index") == false && $page == "gestion-comptes") { FlashMessage::setFlash("L'accès à cette page n'est pas activé, veuillez contacter votre administrateur pour y avoir accès"); header("location:" . WEBROOT . "administrator"); } else { if ($droit_acces->getDroitAccesPage("gestion-droits-acces/index") == false && $page == "gestion-droits-acces") { FlashMessage::setFlash("L'accès à cette page n'est pas activé, veuillez contacter votre administrateur pour y avoir accès"); header("location:" . WEBROOT . "administrator"); }
private function getLienPage($url) { if (ChaineCaractere::FindInString($url, "http://")) { return $url; } else { return WEBROOT . $url; } }
/** * fonction qui permet de tester qu'une route existe bien * appellee dans redirectError.class.php * @param $url */ public function getRouteModuleExist($url) { $dbc = \core\App::getDb(); $query = $dbc->select()->from("module")->get(); if (is_array($query) && count($query) > 0) { foreach ($query as $obj) { $test_module = ChaineCaractere::FindInString($url, $obj->url); $test_module1 = ChaineCaractere::FindInString($url, str_replace("/", "", $obj->url)); $module_activer = \core\modules\GestionModule::getModuleActiver($obj->nom_module); if (($test_module === true || $test_module1 === true) && $module_activer === true) { return true; } } } }
/** * @param $nom_fichier * fonction qui permet de dire qu'il faut recharger le cache d'un fichier spécifique * appeler par des controller (dans des modules ou dans l'admin...) */ public static function setReloadCache($nom_fichier) { $dbc = App::getDb(); $nom_fichier = ChaineCaractere::setUrl($nom_fichier); $nom_fichier = str_replace("/", "-", $nom_fichier); $value = ["reload" => 1, "nom_fichier" => $nom_fichier]; $dbc->prepare("UPDATE cache SET reload_cache=:reload WHERE nom_fichier LIKE :nom_fichier", $value); }
/** * fonction quir genere un mot de passe aleatoire pour le compte spécifié en param * @param $id_identite */ public function setReinitialiserMdp($id_identite) { $dbc = \core\App::getDb(); $this->getunUser($id_identite); if ($this->mail != "" || $this->mail != null) { $mdp = ChaineCaractere::random(6); $mdp_encode = Encrypt::setEncryptMdp($mdp, $id_identite); FlashMessage::setFlash("Mot de passe réinitialisé avec succès ! L'utilisateur à reçu un E-mail avec son nouveau mot de passe", "success"); $dbc->update("mdp", $mdp_encode)->update("last_change_mdp", date("Y-m-d"))->from("identite")->where("ID_identite", "=", $id_identite)->set(); $mail = new Mail(); $mail->setEnvoyerMail("Réinitialisation de votre E-mail effectuée", "Votre mot de passe a été réinitialisé", $this->mail); } else { FlashMessage::setFlash("le mot de passe de {$this->pseudo} ne peu pas être réinitialisé car il ne possède pas d'E-mail"); $this->erreur = true; } }