stany.ferer 1 год назад
Родитель
Сommit
723ba903df

+ 44 - 0
core/class/core.class.php

@@ -442,4 +442,48 @@ class core
                     </div>
                 </div>';
     }
+
+    static public function printBadgeGeneral(bool $_alerte){
+        return $_alerte == TRUE ? '<span class="position-absolute start-100 translate-middle p-1 bg-danger border border-light rounded-circle"></span>' : NULL;
+    }
+
+    static public function ifbadge()
+    {
+        $return = [];
+        $return["MAJ"] = maj::ifMaj();
+        $return["DOC"] = document::badgeAlert();
+        
+        if ($return["MAJ"]) {
+            $return["ALERTE"] = TRUE;
+        } elseif ($return["DOC"] != NULL) {
+            $return["ALERTE"] = TRUE;
+        } else {
+            $return["ALERTE"] = FALSE;
+        }
+        return $return;
+    }
+
+    static public function menu(array $_navInfos){
+        $badge = self::ifbadge();
+        echo '<a href="/" style="box-shadow: none;" class="navbar-brand '. $_navInfos["color"] .'">' . $_navInfos["title"] . '</a>' . debug::getBadges();
+        echo '<div id="navbarCollapse" class="collapse navbar-collapse p-0">';
+        echo '<ul class="nav navbar-nav ms-auto">';
+        echo '<li class="nav-item dropdown">';
+        echo '<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">' . session::getName() . self::printBadgeGeneral($badge["ALERTE"]) . '</a>';
+        echo '<div class="dropdown-menu dropdown-menu-end">';
+        echo '<a href="/user.html" class="dropdown-item">Mon profil</a>';
+        if((access::ifAccesss("documents") AND session::getType() == 5) OR session::getType() == 1){ // Membre du bureau ou Admin
+            $nb = $badge["DOC"] > 0 ? '<span class="position-absolute badge rounded-pill bg-danger" style="right:-10px; margin-top:-10px;">' . $badge["DOC"] . '</span>' : NULL;
+            echo '<a href="/documents-my-assign.html" class="dropdown-item">Vos assignations' . $nb . '</a>';
+        }
+        if($badge["MAJ"] AND access::ifAccesss("parametres")){
+            echo '<div class="dropdown-divider"></div><a href="/parametres.html#parametres-maj" class="dropdown-item" style="color:green;">Mise à jour</a>';
+        }
+        echo '<div class="dropdown-divider"></div>';
+        echo '<a href="/submit.php?from=logout" class="dropdown-item">Se déconnecter</a>';
+        echo '</li>';
+        echo '</div>';
+        echo '</ul>';
+        echo '</div>';
+    }
 }

+ 6 - 7
core/class/debug.class.php

@@ -254,19 +254,18 @@ class debug
         echo (ENVIRONNEMENT != "PROD") ? " [" . ENVIRONNEMENT . "]" : NULL;
     }
 
-    public static function printBadges(){
-
+    public static function getBadges(){
+        $return = "";
         if(core::isMaintenance()){
-            echo "<a href=\"/parametsres.html\"><span class=\"badge\" style=\"background-color:red; margin:5px;\">SITE EN MODE MAINTENANCE</span></a>";
+            $return .= "<a href=\"/parametsres.html\"><span class=\"badge\" style=\"background-color:red; margin:5px;\">SITE EN MODE MAINTENANCE</span></a>";
         }
-    
         if(core::isDebug()){
-            echo "<a href=\"#\"><span class=\"badge toggle-logs\" style=\"background-color:orange; color:black; margin:5px;\">MODE DEBUG</span></a>";
+            $return .= "<a href=\"#\"><span class=\"badge toggle-logs\" style=\"background-color:orange; color:black; margin:5px;\">MODE DEBUG</span></a>";
         } 
-    
         if(self::isSubmit()){
-            echo "<a href=\"#\"><span class=\"badge toggle-logs\" style=\"background-color:orange; color:black; margin:5px;\">MODE DEBUG SUBMIT</span></a>";
+            $return .= "<a href=\"#\"><span class=\"badge toggle-logs\" style=\"background-color:orange; color:black; margin:5px;\">MODE DEBUG SUBMIT</span></a>";
         } 
+        return $return;
     }
 
     public static function setSession($_data){

+ 4 - 33
core/class/document.class.php

@@ -488,39 +488,10 @@ class document
             . $where);
         return db::single()["nb"];
     }
-
-    static public function menu(){
-        $tags = user::getIdTags(session::getId());
-        $nb = document::myAssign($tags);
-        if($tags != NULL){
-            $badge = "";
-            if($nb > 0){ 
-                $badge = '<span class="position-absolute badge rounded-pill bg-danger" style="right:-10px; margin-top:-10px;">' . $nb . '</span>';
-            }
-            echo '<a href="/documents-my-assign.html" class="dropdown-item">Vos assignations' . $badge . '</a>';
-        }
-        $maj = maj::compareHash();
-        if($maj == FALSE AND access::ifAccesss("parametres")){
-            echo '<div class="dropdown-divider"></div><a href="/parametres.html#parametres-maj" class="dropdown-item" style="color:green;">Mise à jour</a>';
-        }
-    }
-
-    static public function badge(){
-        $tags = user::getIdTags(session::getId());
-        $nb = document::myAssign($tags);
-        $maj = maj::compareHash();
-
-        if($maj == FALSE AND access::ifAccesss("parametres")){
-            $pastille = 1;
-        } elseif($tags != NULL AND $nb > 0){
-            $pastille = 1;
-        } else {
-            $pastille = 0; 
-        }
-
-        if($pastille == 1){
-            echo '<span class="position-absolute start-100 translate-middle p-1 bg-danger border border-light rounded-circle"></span>';
-        }
+    
+    static public function badgeAlert(){
+        $return = self::myAssign(user::getIdTags(session::getId()));
+        return $return > 0 ? $return : NULL;
     }
 
 }

+ 19 - 1
core/class/maj.class.php

@@ -225,11 +225,29 @@ class maj {
                 alert::recError("ERROR : " . $bash);
                 return FALSE;
             }
-            return ($error == 0)? TRUE : FALSE;
+            return $error == 0 ? TRUE : FALSE;
         } else {
             alert::recError("ERROR : " . $bash . " not found");
             return FALSE;
         }
     }
 
+    public static function initMaj(){
+        if(access::ifAccesss("parametres") AND empty($_SESSION["MAJ"]) OR $_SESSION["MAJ"] == FALSE){
+            self::setMaj(maj::compareHash() == TRUE ? FALSE : TRUE);
+        }
+    }
+
+    public static function setMaj(bool $_bool = NULL){
+        if($_bool == NULL){
+            unset($_SESSION["MAJ"]);
+        } else {
+            $_SESSION["MAJ"] = $_bool;
+        }
+    }
+
+    public static function ifMaj(){
+        return isset($_SESSION["MAJ"]) ? $_SESSION["MAJ"] : FALSE;
+    }
+
 }

+ 24 - 21
core/controllers/header.php

@@ -1,26 +1,29 @@
 <?php
-    setlocale(LC_TIME, 'fr_FR');
-    date_default_timezone_set(TIME_ZONE);
 
-    require DIR_PHP_LIBS.'PHPMailer/Exception.php';
-    require DIR_PHP_LIBS.'PHPMailer/PHPMailer.php';
-    require DIR_PHP_LIBS.'PHPMailer/SMTP.php';
+setlocale(LC_TIME, 'fr_FR');
+date_default_timezone_set(TIME_ZONE);
 
-    use PHPMailer\PHPMailer\PHPMailer;
-    use PHPMailer\PHPMailer\Exception;
-    
-    spl_autoload_register(function ($class_name) {
-        (file_exists(DIR_PHP_CLASS.'/'.$class_name.'.class.php'))?	
-        require_once DIR_PHP_CLASS.'/'.$class_name.'.class.php' : '';
-    });
+require DIR_PHP_LIBS.'PHPMailer/Exception.php';
+require DIR_PHP_LIBS.'PHPMailer/PHPMailer.php';
+require DIR_PHP_LIBS.'PHPMailer/SMTP.php';
 
-    if(core::isDebug()){
-        error_reporting(E_ALL);
-        ini_set("display_errors", 1);
-        debug::startTimer();
-    }
+use PHPMailer\PHPMailer\PHPMailer;
+use PHPMailer\PHPMailer\Exception;
 
-    if(core::isMaintenance() AND $_SERVER['HTTP_HOST'] != DOMAIN_CMS){
-        get::page("maintenance");
-        exit();
-    }
+spl_autoload_register(function ($class_name) {
+    (file_exists(DIR_PHP_CLASS.'/'.$class_name.'.class.php'))?	
+    require_once DIR_PHP_CLASS.'/'.$class_name.'.class.php' : '';
+});
+
+if(core::isDebug()){
+    error_reporting(E_ALL);
+    ini_set("display_errors", 1);
+    debug::startTimer();
+}
+
+if(core::isMaintenance() AND $_SERVER['HTTP_HOST'] != DOMAIN_CMS){
+    get::page("maintenance");
+    exit();
+}
+
+maj::initMaj();

+ 1 - 14
core/views/_cms.nav.php

@@ -15,19 +15,6 @@
 ?>
 <header class="navbar sticky-top <?php echo $navInfos["color"] ?> navbar-expand-sm navbar-dark flex-md-nowrap p-0 shadow">
     <div class="container-fluid">
-        <a href="/" style="box-shadow: none;" class="navbar-brand <?php echo $navInfos["color"] ?>"><?php echo $navInfos["title"] ?></a><?php debug::printBadges(); ?>
-        <div id="navbarCollapse" class="collapse navbar-collapse p-0">
-            <ul class="nav navbar-nav ms-auto">
-                <li class="nav-item dropdown">
-                    <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown"><?php echo session::getName(); document::badge(); ?></a>
-                    <div class="dropdown-menu dropdown-menu-end">
-                        <a href="/user.html" class="dropdown-item">Mon profil</a>
-                        <?php document::menu() ?>
-                        <div class="dropdown-divider"></div>
-                        <a href="/submit.php?from=logout" class="dropdown-item">Se déconnecter</a>
-                    </div>
-                </li>
-            </ul>
-        </div>
+        <?php core::menu($navInfos) ?>
     </div>
 </header>