/[openfoncier]/trunk/obj/utils.class.php
ViewVC logotype

Diff of /trunk/obj/utils.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 12846 by softime, Mon Aug 1 16:58:31 2022 UTC revision 12847 by softime, Thu Sep 15 19:43:25 2022 UTC
# Line 30  if (file_exists("../dyn/include.inc.php" Line 30  if (file_exists("../dyn/include.inc.php"
30       */       */
31      define('K_TCPDF_EXTERNAL_CONFIG', true);      define('K_TCPDF_EXTERNAL_CONFIG', true);
32      define('K_TCPDF_CALLS_IN_HTML', true);      define('K_TCPDF_CALLS_IN_HTML', true);
33        define('K_PATH_FONTS', '../app/fonts/');
34    
35      /**      /**
36       * Dépendances PHP du framework       * Dépendances PHP du framework
# Line 374  class utils extends application { Line 375  class utils extends application {
375              // Récupération des infos utilisateur              // Récupération des infos utilisateur
376              $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".              $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
377              "FROM ".DB_PREFIXE."om_utilisateur WHERE login = '".$_SESSION['login']."'";              "FROM ".DB_PREFIXE."om_utilisateur WHERE login = '".$_SESSION['login']."'";
378              $resUser=$this->db->query($sqlUser);              $resUser = $this->db->query($sqlUser);
379              $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
380              if ( database::isError($resUser)){              $this->isDatabaseError($resUser);
                 die();  
             }  
381              $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);              $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
382    
383              // Récupère le profil et test si c'est un              // Récupère le profil et test si c'est un
384              $sqlProfil = "SELECT libelle FROM ".DB_PREFIXE."om_profil WHERE om_profil = ".$this->om_utilisateur['om_profil'];              $sqlProfil = "SELECT libelle FROM ".DB_PREFIXE."om_profil WHERE om_profil = ".$this->om_utilisateur['om_profil'];
385              $resProfil=$this->db->getOne($sqlProfil);              $resProfil = $this->db->getone($sqlProfil);
386              $this->addToLog("getUserInfos(): db->getOne(\"".$sqlProfil."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->getone(\"".$sqlProfil."\");", VERBOSE_MODE);
387              if (database::isError($resProfil)){              $this->isDatabaseError($resProfil);
                 die();  
             }  
388              // Sauvegarde le libelle du profil              // Sauvegarde le libelle du profil
389              $this->om_utilisateur["libelle_profil"] = $resProfil;              $this->om_utilisateur["libelle_profil"] = $resProfil;
390    
# Line 456  class utils extends application { Line 453  class utils extends application {
453              division.division, division.code, division.libelle ".              division.division, division.code, division.libelle ".
454              "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".              "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".
455              "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];              "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
456              $resInstr=$this->db->query($sqlInstr);              $resInstr = $this->db->query($sqlInstr);
457              $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
458              if ( database::isError($resInstr)){              $this->isDatabaseError($resInstr);
                 die();  
             }  
459              $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);              $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
460              // Si il y a un resultat c'est un instructeur              // Si il y a un resultat c'est un instructeur
461              if (is_array($tempInstr) === true && count($tempInstr) > 0) {              if (is_array($tempInstr) === true && count($tempInstr) > 0) {
# Line 486  class utils extends application { Line 481  class utils extends application {
481                  $this->om_utilisateur['om_utilisateur']                  $this->om_utilisateur['om_utilisateur']
482              );              );
483              $resServ = $this->db->query($sqlServ);              $resServ = $this->db->query($sqlServ);
484              $this->addToLog("getUserInfos(): db->query(\"".$sqlServ."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->query(\"".$sqlServ."\");", VERBOSE_MODE);
485              if ( database::isError($resServ)){              $this->isDatabaseError($resServ);
                 die();  
             }  
               
486              while ($tempServ =& $resServ->fetchRow(DB_FETCHMODE_ASSOC)) {              while ($tempServ =& $resServ->fetchRow(DB_FETCHMODE_ASSOC)) {
487                  $this->om_utilisateur['service'][]=$tempServ;                  $this->om_utilisateur['service'][]=$tempServ;
488              }              }
# Line 518  class utils extends application { Line 510  class utils extends application {
510                  $this->om_utilisateur['om_utilisateur']                  $this->om_utilisateur['om_utilisateur']
511              );              );
512              $resTiers = $this->db->query($sqlTiers);              $resTiers = $this->db->query($sqlTiers);
513              $this->addToLog("getUserInfos(): db->query(\"".$sqlTiers."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->query(\"".$sqlTiers."\");", VERBOSE_MODE);
514              $this->isDatabaseError($resTiers);              $this->isDatabaseError($resTiers);
515                            
516              while ($tempTiers = $resTiers->fetchRow(DB_FETCHMODE_ASSOC)) {              while ($tempTiers = $resTiers->fetchRow(DB_FETCHMODE_ASSOC)) {
# Line 702  class utils extends application { Line 694  class utils extends application {
694              __METHOD__."(): db->query(\"".$sql."\");",              __METHOD__."(): db->query(\"".$sql."\");",
695              VERBOSE_MODE              VERBOSE_MODE
696          );          );
697          if (database::isError($res)) {          $this->isDatabaseError($res);
             die();  
         }  
698          $row = $res->fetchrow(DB_FETCHMODE_ASSOC);          $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
699          // Enregistrement de la division en session          // Enregistrement de la division en session
700          if (isset($row["division"]) && $row["division"] != NULL) {          if (isset($row["division"]) && $row["division"] != NULL) {
# Line 726  class utils extends application { Line 716  class utils extends application {
716              __METHOD__."(): db->query(\"".$sqlGroupes."\");",              __METHOD__."(): db->query(\"".$sqlGroupes."\");",
717              VERBOSE_MODE              VERBOSE_MODE
718          );          );
719          if (database::isError($resGroupes)) {          $this->isDatabaseError($resGroupes);
             die();  
         }  
720          // Si aucun résultat alors récupération du paramétrage des groupes du profil          // Si aucun résultat alors récupération du paramétrage des groupes du profil
721          if ($resGroupes->numRows() === 0) {          if ($resGroupes->numRows() === 0) {
722              $sqlGroupes = "SELECT groupe.code, lien_om_profil_groupe.confidentiel, lien_om_profil_groupe.enregistrement_demande, groupe.libelle              $sqlGroupes = "SELECT groupe.code, lien_om_profil_groupe.confidentiel, lien_om_profil_groupe.enregistrement_demande, groupe.libelle
# Line 742  class utils extends application { Line 730  class utils extends application {
730                  __METHOD__."(): db->query(\"".$sqlGroupes."\");",                  __METHOD__."(): db->query(\"".$sqlGroupes."\");",
731                  VERBOSE_MODE                  VERBOSE_MODE
732              );              );
733              if (database::isError($resGroupes)) {              $this->isDatabaseError($resGroupes);
                 die();  
             }  
734          }          }
735          $_SESSION["groupe"] = array();          $_SESSION["groupe"] = array();
736          // Enregistrement des groupe en session          // Enregistrement des groupe en session
# Line 820  class utils extends application { Line 806  class utils extends application {
806                      ON                      ON
807                          dossier.etat = etat.etat                          dossier.etat = etat.etat
808                  WHERE dossier ='".$idx."'";                  WHERE dossier ='".$idx."'";
809              $statut = $this->db->getOne($sql);              $statut = $this->db->getone($sql);
810              $this->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
811              if ( database::isError($statut)){              $this->isDatabaseError($statut);
                 die();  
             }  
812          }          }
813          return $statut;          return $statut;
814      }      }
# Line 1178  class utils extends application { Line 1162  class utils extends application {
1162                  ".DB_PREFIXE."evenement                  ".DB_PREFIXE."evenement
1163              WHERE              WHERE
1164                  evenement = $evenement";                  evenement = $evenement";
               
         $this->addToLog("getLettreType() : db->query(\"".$sql."\")", VERBOSE_MODE);  
1165          $res = $this->db->query($sql);          $res = $this->db->query($sql);
1166          if ( database::isError($res)){          $this->addToLog(
1167              die();              __METHOD__."(): db->query(\"".$sql."\");",
1168          }              VERBOSE_MODE
1169                    );
1170            $this->isDatabaseError($res);
1171          if ( $res->numrows() > 0 ){          if ( $res->numrows() > 0 ){
1172                                    
1173              $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);              $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
# Line 1207  class utils extends application { Line 1190  class utils extends application {
1190                         dossier_autorisation.dossier_autorisation_type_detaille                         dossier_autorisation.dossier_autorisation_type_detaille
1191                  INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation                  INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1192                  WHERE dossier.dossier = '".$idxDossier."'";                  WHERE dossier.dossier = '".$idxDossier."'";
1193          $res = $this->db->getOne($sql);          $res = $this->db->getone($sql);
1194          $this->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);          $this->addToLog(
1195          if ( database::isError($res)){              __METHOD__."(): db->getone(\"".$sql."\");",
1196              die();              VERBOSE_MODE
1197          }          );
1198            $this->isDatabaseError($res);
1199          return $res;          return $res;
1200      }      }
1201    
# Line 1235  class utils extends application { Line 1219  class utils extends application {
1219          WHERE          WHERE
1220              dossier.dossier = '".$idxDossier."'              dossier.dossier = '".$idxDossier."'
1221          ";          ";
1222          $res = $this->db->getOne($sql);          $res = $this->db->getone($sql);
1223          $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\")", VERBOSE_MODE);          $this->addToLog(
1224          if ( database::isError($res)){              __METHOD__."(): db->getone(\"".$sql."\");",
1225              die();              VERBOSE_MODE
1226          }          );
1227            $this->isDatabaseError($res);
1228          return $res;          return $res;
1229      }      }
1230    
# Line 2905  class utils extends application { Line 2890  class utils extends application {
2890              // La méthode de récupération du dossier diffère selon le contexte              // La méthode de récupération du dossier diffère selon le contexte
2891              // du formulaire              // du formulaire
2892              if ($retourformulaire === "dossier"              if ($retourformulaire === "dossier"
2893                  || $retourformulaire === "dossier_instruction"                  || $this->contexte_dossier_instruction()) {
                 || $retourformulaire === "dossier_instruction_mes_encours"  
                 || $retourformulaire === "dossier_instruction_tous_encours"  
                 || $retourformulaire === "dossier_instruction_mes_clotures"  
                 || $retourformulaire === "dossier_instruction_tous_clotures"  
                 || $retourformulaire === "dossier_contentieux_mes_infractions"  
                 || $retourformulaire === "dossier_contentieux_toutes_infractions"  
                 || $retourformulaire === "dossier_contentieux_mes_recours"  
                 || $retourformulaire === "dossier_contentieux_tous_recours") {  
2894    
2895                  // Récupère le numéro du dossier depuis le paramètre                  // Récupère le numéro du dossier depuis le paramètre
2896                  // idxformulaire présent dans l'URL                  // idxformulaire présent dans l'URL
# Line 3057  class utils extends application { Line 3034  class utils extends application {
3034          $footer[] = array(          $footer[] = array(
3035              "title" => __("Documentation"),              "title" => __("Documentation"),
3036              "description" => __("Acceder a l'espace documentation de l'application"),              "description" => __("Acceder a l'espace documentation de l'application"),
3037              "href" => "http://docs.openmairie.org/?project=openads&version=5.12&format=html&path=manuel_utilisateur",              "href" => "http://docs.openmairie.org/?project=openads&version=5.13&format=html&path=manuel_utilisateur",
3038              "target" => "_blank",              "target" => "_blank",
3039              "class" => "footer-documentation",              "class" => "footer-documentation",
3040          );          );
# Line 5888  class utils extends application { Line 5865  class utils extends application {
5865    
5866          return $result;          return $result;
5867      }      }
5868    
5869        /**
5870         * Vérifie si un formulaire est ouvert dans le contexte d'un
5871         * dossier d'instruction. Pour cela vérifiesi le paramètre retourformulaire
5872         * prend une de ces valeurs :
5873         *  - dossier_instruction
5874         *  - dossier_instruction_mes_encours
5875         *  - dossier_instruction_tous_encours
5876         *  - dossier_instruction_mes_clotures
5877         *  - dossier_instruction_tous_clotures
5878         *  - dossier_contentieux_mes_infractions
5879         *  - dossier_contentieux_toutes_infractions
5880         *  - dossier_contentieux_mes_recours
5881         *  - dossier_contentieux_tous_recours
5882         *  - sous_dossier
5883         *
5884         * /!\ Pour l'affichage des références cadastrales dans le formulaire de modification
5885         * d'un dossier d'instruction cette condition est aussi utilisée mais en javascript.
5886         * Si cette méthode est modifiée il faut également aller modifier les conditions
5887         * dans app/js/script.js (~l1580)
5888         *
5889         * @return boolean
5890         */
5891        public function contexte_dossier_instruction() {
5892            $retourformulaire = $this->get_submitted_get_value("retourformulaire");
5893    
5894            if ($retourformulaire == 'dossier_instruction' ||
5895                $retourformulaire == 'dossier_instruction_mes_encours' ||
5896                $retourformulaire == 'dossier_instruction_tous_encours' ||
5897                $retourformulaire == 'dossier_instruction_mes_clotures' ||
5898                $retourformulaire == 'dossier_instruction_tous_clotures' ||
5899                $retourformulaire == 'dossier_contentieux_mes_infractions' ||
5900                $retourformulaire == 'dossier_contentieux_toutes_infractions' ||
5901                $retourformulaire == "dossier_contentieux_mes_recours" ||
5902                $retourformulaire == "dossier_contentieux_tous_recours" ||
5903                $retourformulaire == "sous_dossier") {
5904                return true;
5905            }
5906            return false;
5907        }
5908    
5909        /**
5910         * Calcule l'id d'un sous-formulaire d'un objet donné. Pour cela
5911         * récupère le fichier de paramétrage de l'objet (.inc) pour accéder
5912         * à la variable de paramétrage des sous-formulaires.
5913         * Vérifie pour chacun des formulaires paramétrés si l'utilisateur à
5914         * les permissions nécessaires pour y accéder. A partir de ces
5915         * informations calcule l'identifiant du sous-onglet.
5916         *
5917         * @param string nom du formulaire auquel appartiens le sous-formulaire
5918         * @return integer identifiant du sus-formulaire
5919         */
5920        public function get_ui_tabs($obj, $direct_field, $direct_form, $direct_action, $direct_idx) {
5921            $tabs_id = 1;
5922            // Rétrocompatibilité : il est possible que dans les scripts inclus
5923            // par cette méthode, la variable $f soit attendue et utilisée.
5924            // @deprecated Cette variable ne doit plus être utilisée.
5925            $f = $this;
5926    
5927            // Initialisation des paramètres
5928            $params = array(
5929                // action sur l'objet parent
5930                "action" => array(
5931                    "default_value" => "",
5932                ),
5933                // (optionnel) soit idx soit direct_field : identifiant de
5934                // l'objet contexte
5935                "idx" => array(
5936                    "default_value" => "",
5937                )
5938            );
5939            foreach ($this->get_initialized_parameters($params) as $key => $value) {
5940                ${$key} = $value;
5941            }
5942            // Vérification des paramètres obligatoires
5943            if (empty($obj)
5944                || empty($action)
5945                || (empty($idx) && empty($direct_field))
5946                || empty($direct_form)
5947                || empty($direct_action)
5948                || empty($direct_idx)) {
5949    
5950                return $tabs_id;
5951            }
5952            // Inclusion du script [sql/<OM_DB_PHPTYPE>/<OBJ>.inc.php]
5953            // L'objectif est de récupéré la liste des onglets pour extraire
5954            // l'identifiant de l'onglet sélectionné
5955            // - Variable utilisée $sousformulaire
5956            $standard_script_path = "../sql/".OM_DB_PHPTYPE."/".$obj.".inc.php";
5957            $core_script_path = PATH_OPENMAIRIE."sql/".OM_DB_PHPTYPE."/".$obj.".inc.php";
5958            $gen_script_path = "../gen/sql/".OM_DB_PHPTYPE."/".$obj.".inc.php";
5959            $custom_script_path = $this->get_custom("tab", $obj);
5960    
5961            if ($custom_script_path !== null) {
5962                require_once $custom_script_path;
5963            } elseif (file_exists($standard_script_path) === false
5964                && file_exists($core_script_path) === true) {
5965                require_once $core_script_path;
5966            } elseif (file_exists($standard_script_path) === false
5967                && file_exists($gen_script_path) === true) {
5968                require_once $gen_script_path;
5969            } elseif (file_exists($standard_script_path) === true) {
5970                require $standard_script_path;
5971            }
5972    
5973            if (empty($sousformulaire)) {
5974                return $tabs_id;
5975            }
5976    
5977            foreach ($sousformulaire as $sousform) {
5978                $droit = array($sousform, $sousform."_tab");
5979    
5980                if ($this->isAccredited($droit, "OR")) {
5981                    if ($sousform == $direct_form) {
5982                        break;
5983                    }
5984                    $tabs_id++;
5985                }
5986            }
5987            return $tabs_id;
5988        }
5989    
5990    
5991        /**
5992         * Récupère une requête sql et renvoie les éléments nécessaires
5993         * pour ajouter le filtrage de des groupes à cette requête.
5994         * Renvoie ces éléments sous la forme d'un tableau associatif
5995         *  ex : array(
5996         *          ['FROM'] => 'LEFT JOIN ...',
5997         *          ['WHERE'] => '...'
5998         *      );
5999         *
6000         * @param string requête sql à faire évoluer
6001         * @return array
6002         */
6003        public function get_sql_filtre_groupe($sql = '') {
6004            $sqlCplmt = array(
6005                'FROM' => '',
6006                'WHERE' => ''
6007            );
6008    
6009            // Tableau temporaire contenant les clauses pour chaque groupe
6010            $group_clause = array();
6011            foreach ($_SESSION["groupe"] as $key => $value) {
6012                $group_clause[$key] = "(groupe.code = '".$key."'";
6013                if($value["confidentiel"] !== true) {
6014                    $group_clause[$key] .= " AND dossier_autorisation_type.confidentiel IS NOT TRUE";
6015                }
6016                $group_clause[$key] .= ")";
6017            }
6018            // Ajout du cas ou le code du groupe est null
6019            $group_clause['EMPTY'] = '(groupe.code IS NULL AND dossier_autorisation_type.confidentiel IS NOT TRUE)';
6020            // Mise en chaîne des clauses
6021            $conditions = implode(" OR ", $group_clause);
6022            if ($conditions !== "") {
6023                // On ajout le WHERE si il n'est pas présent
6024                if (stripos($sql, "WHERE") === false) {
6025                    $sqlCplmt['WHERE'] .= "WHERE ";
6026                } else {
6027                    $sqlCplmt['WHERE'] .= " AND ";
6028                }
6029            
6030                $sqlCplmt['WHERE'] .= "(".$conditions.")";
6031            }
6032            
6033            
6034            // Jointures manquantes dans la requête d'origine qui devront être ajouté
6035            // dans la requête complémentaire
6036            if (preg_match("/".DB_PREFIXE."dossier_autorisation(?!_)/i", $sql) === 0) {
6037                $sqlCplmt['FROM'] .= "
6038                LEFT JOIN ".DB_PREFIXE."dossier_autorisation
6039                    ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation";
6040            }
6041            if (preg_match("/".DB_PREFIXE."dossier_autorisation_type_detaille(?!_)/i", $sql) === 0) {
6042                $sqlCplmt['FROM'] .= "
6043                LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
6044                    ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille";
6045            }
6046            if (preg_match("/".DB_PREFIXE."dossier_autorisation_type(?!_)/i", $sql) === 0) {
6047                $sqlCplmt['FROM'] .= "
6048                LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
6049                    ON dossier_autorisation_type.dossier_autorisation_type = dossier_autorisation_type_detaille.dossier_autorisation_type";
6050            }
6051            if (preg_match("/".DB_PREFIXE."groupe(?!_)/i", $sql) === 0) {
6052                $sqlCplmt['FROM'] .= "
6053                LEFT JOIN ".DB_PREFIXE."groupe
6054                    ON dossier_autorisation_type.groupe = groupe.groupe";
6055            }
6056            
6057            return $sqlCplmt;
6058        }
6059    
6060        /**
6061         * Récupère une requête sql et renvoie les éléments nécessaires
6062         * pour ajouter le filtrage de des groupes à cette requête.
6063         * Renvoie ces éléments sous la forme d'un tableau associatif
6064         *  ex : array(
6065         *          ['FROM'] => 'LEFT JOIN ...',
6066         *          ['WHERE'] => '...'
6067         *      );
6068         *
6069         * @param string requête sql à faire évoluer
6070         * @return array
6071         */
6072        public function get_sql_filtre_sous_dossier($sql = '') {
6073            $sqlCplmt = array(
6074                'FROM' => '',
6075                'WHERE' => ''
6076            );
6077            // On ajout le WHERE si il n'est pas présent
6078            $sqlCplmt['WHERE'] = ' AND dossier_instruction_type.sous_dossier IS NOT TRUE';
6079            if (stripos($sql, "WHERE") === false) {
6080                $sqlCplmt['WHERE'] .= 'WHERE dossier_instruction_type.sous_dossier IS NOT TRUE';
6081            }
6082            // Jointures manquantes dans la requête d'origine qui devront être ajouté
6083            // dans la requête complémentaire
6084            if (preg_match("/".DB_PREFIXE."dossier_instruction_type(?!_)/i", $sql) === 0 ||
6085                preg_match("/".DB_PREFIXE."dossier_instruction_type(?!_)\s*(as|AS)/i", $sql) !== 0) {
6086                $sqlCplmt['FROM'] .= "
6087                LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
6088                    ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type";
6089            }
6090    
6091            return $sqlCplmt;
6092        }
6093        
6094  }  }

Legend:
Removed from v.12846  
changed lines
  Added in v.12847

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26