/[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 8988 by softime, Wed Mar 27 11:49:05 2019 UTC revision 8989 by softime, Thu Oct 31 15:09:51 2019 UTC
# Line 579  class utils extends application { Line 579  class utils extends application {
579              WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";              WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
580          $res = $this->db->query($sql);          $res = $this->db->query($sql);
581          $this->addToLog(          $this->addToLog(
582              "triggerAfterLogin(): db->query(\"".$sql."\");",              __METHOD__."(): db->query(\"".$sql."\");",
583              VERBOSE_MODE              VERBOSE_MODE
584          );          );
585          if (database::isError($res)) {          if (database::isError($res)) {
# Line 603  class utils extends application { Line 603  class utils extends application {
603              ORDER BY libelle";              ORDER BY libelle";
604          $resGroupes = $this->db->query($sqlGroupes);          $resGroupes = $this->db->query($sqlGroupes);
605          $this->addToLog(          $this->addToLog(
606              "triggerAfterLogin(): db->query(\"".$sqlGroupes."\");",              __METHOD__."(): db->query(\"".$sqlGroupes."\");",
607              VERBOSE_MODE              VERBOSE_MODE
608          );          );
609          if (database::isError($resGroupes)) {          if (database::isError($resGroupes)) {
# Line 619  class utils extends application { Line 619  class utils extends application {
619                  ORDER BY libelle";                  ORDER BY libelle";
620              $resGroupes = $this->db->query($sqlGroupes);              $resGroupes = $this->db->query($sqlGroupes);
621              $this->addToLog(              $this->addToLog(
622                  "triggerAfterLogin(): db->query(\"".$sqlGroupes."\");",                  __METHOD__."(): db->query(\"".$sqlGroupes."\");",
623                  VERBOSE_MODE                  VERBOSE_MODE
624              );              );
625              if (database::isError($resGroupes)) {              if (database::isError($resGroupes)) {
# Line 711  class utils extends application { Line 711  class utils extends application {
711    
712      /**      /**
713       * Formate le champ pour le type Timestamp       * Formate le champ pour le type Timestamp
714       * @param  date  $date_str          Date       * @param  date  $date_str      Date
715       * @param  boolean $show            Format pour l'affichage       * @param  boolean $show        Format pour l'affichage
716       * @return mixed                    False si le traitement échoue ou la date formatée       * @return mixed                False si le traitement échoue ou la date formatée
717       */       */
718      function formatTimestamp ($date_str, $show = true) {      function formatTimestamp ($date_str, $show = true) {
719    
# Line 725  class utils extends application { Line 725  class utils extends application {
725    
726          // Date en BDD          // Date en BDD
727          $date_db = explode ('-', $date[0]);          $date_db = explode ('-', $date[0]);
728                  // Date en affichage          // Date en affichage
729          $date_show = explode ('/', $date[0]);          $date_show = explode ('/', $date[0]);
730    
731          // Contrôle la composition de la date          // Contrôle la composition de la date
# Line 1142  class utils extends application { Line 1142  class utils extends application {
1142              unset($valF['message']);              unset($valF['message']);
1143          }          }
1144          // Ajoute le duplicata          // Ajoute le duplicata
1145          $clone_obj->ajouter($valF, $this->db, DEBUG);          $clone_obj->ajouter($valF);
1146          // Si aucune erreur se produit dans la classe instanciée          // Si aucune erreur se produit dans la classe instanciée
1147          if ($clone_obj->correct === true) {          if ($clone_obj->correct === true) {
1148              // Récupère l'identifiant de l'objet créé              // Récupère l'identifiant de l'objet créé
# Line 1206  class utils extends application { Line 1206  class utils extends application {
1206                              unset($valF['message']);                              unset($valF['message']);
1207                          }                          }
1208                          // Ajoute le duplicata                          // Ajoute le duplicata
1209                          $clone_objsf->ajouter($valF, $this->db, DEBUG);                          $clone_objsf->ajouter($valF);
1210                          // Si aucune erreur se produit dans la classe instanciée                          // Si aucune erreur se produit dans la classe instanciée
1211                          if ($clone_objsf->correct === true) {                          if ($clone_objsf->correct === true) {
1212                              // Récupère l'identifiant de l'objet créé                              // Récupère l'identifiant de l'objet créé
# Line 1770  class utils extends application { Line 1770  class utils extends application {
1770      }      }
1771    
1772      /**      /**
1773         * Vérifie que l'option de saisie du numéro de dossier est activée.
1774         *
1775         * @param integer $om_collectivite Identifiant de la collectivité.
1776         *
1777         * @return boolean
1778         */
1779        public function is_option_dossier_saisie_numero_enabled($om_collectivite=null) {
1780            //
1781            $parameters = $this->getCollectivite($om_collectivite);
1782            //
1783            if (isset($parameters['option_dossier_saisie_numero']) === true
1784                && $parameters['option_dossier_saisie_numero'] === 'true') {
1785                //
1786                return true;
1787            }
1788    
1789            //
1790            return false;
1791        }
1792    
1793        /**
1794         * Vérifie que l'option de récupération de la division de l'instructeur
1795         * affecté pour la numérotation des dossiers est activée.
1796         *
1797         * @param integer $om_collectivite Identifiant de la collectivité.
1798         *
1799         * @return boolean
1800         */
1801        public function is_option_instructeur_division_numero_dossier_enabled($om_collectivite=null) {
1802            //
1803            $parameters = $this->getCollectivite($om_collectivite);
1804            //
1805            if (isset($parameters['option_instructeur_division_numero_dossier']) === true
1806                && $parameters['option_instructeur_division_numero_dossier'] === 'true') {
1807                //
1808                return true;
1809            }
1810    
1811            //
1812            return false;
1813        }
1814    
1815        /**
1816       * Vérifie le niveau de la collectivité de l'utilisateur connecté       * Vérifie le niveau de la collectivité de l'utilisateur connecté
1817       *       *
1818       * @return boolean       * @return boolean
# Line 2198  class utils extends application { Line 2241  class utils extends application {
2241          $footer[] = array(          $footer[] = array(
2242              "title" => __("Documentation"),              "title" => __("Documentation"),
2243              "description" => __("Acceder a l'espace documentation de l'application"),              "description" => __("Acceder a l'espace documentation de l'application"),
2244              "href" => "http://docs.openmairie.org/?project=openads&version=4.11&format=html&path=manuel_utilisateur",              "href" => "http://docs.openmairie.org/?project=openads&version=4.12&format=html&path=manuel_utilisateur",
2245              "target" => "_blank",              "target" => "_blank",
2246              "class" => "footer-documentation",              "class" => "footer-documentation",
2247          );          );
# Line 2953  class utils extends application { Line 2996  class utils extends application {
2996          $links[] = array(          $links[] = array(
2997              "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_envoi_lettre_rar&action=160&idx=0",              "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_envoi_lettre_rar&action=160&idx=0",
2998              "class" => "envoi_lettre_rar",              "class" => "envoi_lettre_rar",
2999              "title" => _("envoi lettre RAR"),              "title" => _("envoi lettre AR"),
3000              "right" => array("instruction_suivi_envoi_lettre_rar", "instruction_suivi_envoi_lettre_rar_consulter", ),              "right" => array("instruction_suivi_envoi_lettre_rar", "instruction_suivi_envoi_lettre_rar_consulter", ),
3001              "open" => array("index.php|instruction_suivi_envoi_lettre_rar[module=tab]", "index.php|instruction_suivi_envoi_lettre_rar[module=form]"),              "open" => array("index.php|instruction_suivi_envoi_lettre_rar[module=tab]", "index.php|instruction_suivi_envoi_lettre_rar[module=form]"),
3002          );          );
# Line 4076  class utils extends application { Line 4119  class utils extends application {
4119       * @param string  $query        Requête SQL       * @param string  $query        Requête SQL
4120       * @param boolean $force_return Force le retour d'un boolean en cas d'erreur       * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
4121       *       *
4122       * @return mixed       * @return array
4123       */       */
4124      function get_all_results_from_db_query($query = "", $force_return = false) {      function get_all_results_from_db_query($query = "", $force_return = false) {
4125          $res = $this->db->query($query);          $res = $this->db->query($query);
# Line 4101  class utils extends application { Line 4144  class utils extends application {
4144          $res->free();          $res->free();
4145          return $result;          return $result;
4146      }      }
 }  
4147    
4148        /**
4149         * Récupère un résultat d'une requête SQL.
4150         *
4151         * @param string  $query        Requête SQL
4152         * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
4153         *
4154         * @return array
4155         */
4156        function get_one_result_from_db_query($query = "", $force_return = false) {
4157            $res = $this->db->getone($query);
4158            $this->addToLog(
4159                __METHOD__."(): db->getone(\"".$query."\");",
4160                VERBOSE_MODE
4161            );
4162            $result = array(
4163                'code' => '',
4164                'message' => '',
4165                'result' => array(),
4166            );
4167            if ($this->isDatabaseError($res, $force_return) !== false) {
4168                $result['code'] = 'KO';
4169                $result['message'] = __("Erreur de base de donnees. Contactez votre administrateur.");
4170                return $result;
4171            }
4172            $result['code'] = 'OK';
4173            $result['result'] = $res;
4174            return $result;
4175        }
4176    
4177        /**
4178         * Instanciation de la classe 'edition'.
4179         * (surcharge de la fonction pour ajouter la prise en compte
4180         * de la surcharge locale de la classe om_edition).
4181         *
4182         * @param array $args Arguments à passer au constructeur.
4183         * @return edition
4184         */
4185        function get_inst__om_edition($args = array()) {
4186            if (file_exists("../obj/om_edition.class.php")) {
4187                require_once "../obj/om_edition.class.php";
4188                $class_name = "om_edition";
4189            } else {
4190                require_once PATH_OPENMAIRIE."om_edition.class.php";
4191                $class_name = "edition";
4192            }
4193            return new $class_name();
4194        }
4195    
4196        /**
4197         * Permet d'enregistrer un fichier dans la table 'storage'.
4198         *
4199         * @return mixed Identifiant du fichier dans la table storage ou false.
4200         */
4201        function store_file($filecontent, $filemetadata, $type, $info = null, $collectivite = null) {
4202            if ($collectivite === null) {
4203                $get_collectivite = $this->getCollectivite();
4204                $collectivite = $get_collectivite['om_collectivite_idx'];
4205            }
4206            $uid = $this->storage->create($filecontent, $filemetadata);
4207            if ($uid == 'OP_FAILURE') {
4208                return false;
4209            }
4210            $inst_storage = $this->get_inst__om_dbform(array(
4211                "obj" => "storage",
4212                "idx" => "]",
4213            ));
4214            $val = array(
4215                "storage" => '',
4216                "file" => "NEW",
4217                "creation_date" => date("Y-m-d"),
4218                "creation_time" => date("G:i:s"),
4219                "uid" => $uid,
4220                "filename" => $filemetadata["filename"],
4221                "size" => $filemetadata["size"],
4222                "mimetype" => $filemetadata["mimetype"],
4223                "type" => $type,
4224                "info" => $info,
4225                "om_collectivite" => $collectivite,
4226            );
4227            $ret = $inst_storage->ajouter($val);
4228            if ($ret !== true) {
4229                return false;
4230            }
4231            // Récupère l'identifiant dans le storage
4232            $id = $inst_storage->get_storage_id_by_uid($uid);
4233            //
4234            return $id;
4235        }
4236    
4237        /**
4238         * Surcharge de la fonction d'affichage pour ajouter
4239         * un détecteur de bloqueur de pub (cassant l'application).
4240         *
4241         * @return void
4242         */
4243        function displayHTMLFooter() {
4244            parent::displayHTMLFooter();
4245            if (in_array($this->flag, array("nohtml", "login", "logout", "anonym")) !== true) {
4246                $this->ad_blocker_detector();
4247            }
4248        }
4249    
4250        /**
4251         * Affiche un bloc de code Javascript
4252         * responsable de détecter les bloqueurs de pub
4253         * et d'afficher un message le cas échéant.
4254         */
4255        protected function ad_blocker_detector() {
4256    
4257            printf(
4258                '<script type="text/javascript">
4259                    var blocked = [];
4260                    // jquery has not loaded
4261                    if(typeof($) == "undefined" && typeof(jQuery) == "undefined") {
4262                        blocked.push("jquery");
4263                    }
4264                    // tinyMCE has not loaded
4265                    if(typeof(tinyMCE) == "undefined") {
4266                        blocked.push("tinyMCE");
4267                    }
4268                    // locale has not loaded
4269                    if(typeof(locale) == "undefined") {
4270                        blocked.push("locale");
4271                    }
4272                    // om_layout has not loaded
4273                    if(typeof(om_initialize_content) == "undefined") {
4274                        blocked.push("om_layout");
4275                    }
4276                    // app script has not loaded
4277                    if(typeof(app_script_t4Fv4a59uSU7MwpJ59Qp) == "undefined") {
4278                        blocked.push("app_script");
4279                    }
4280    
4281                    // something was blocked
4282                    if(blocked.length > 0) {
4283    
4284                        // removing every node in the body
4285                        while(document.body.firstChild) { document.body.removeChild(document.body.firstChild); }
4286    
4287                        // creating the message (node) and its style
4288                        var msgNode = document.createElement("p");
4289                        msgNode.id = "adblocker-detected";
4290                        msgNode.style.position = "relative";
4291                        msgNode.style.width = "calc(100%% - 60px)";
4292                        msgNode.style.margin = "20px auto";
4293                        msgNode.style.padding = "20px";
4294                        msgNode.style.background = "#FEF8F6";
4295                        msgNode.style.color = "#cd0a0a";
4296                        msgNode.style.border = "1px solid #cd0a0a";
4297                        msgNode.style.borderRadius = "4px";
4298                        msgNode.innerHTML = "%s";
4299    
4300                        // appending the message (node) to the body
4301                        document.body.insertBefore(msgNode, document.body.firstChild);
4302                    }
4303                </script>',
4304                sprintf(
4305                    '<span>%s</span><br/><br/><span>%s</span><br/><br/><span>%s</span>',
4306                    __("Un bloqueur de publicité a été détecté, et ceci empêche l'application de fonctionner normalement."),
4307                    __("Afin de rétablir le bon fonctionnement, il vous est nécessaire d'ajouter l'application à la liste blanche des applications autorisées (<small>pour cela, référez-vous à la documentation de votre extension bloqueuse de publicité</small>)."),
4308                    __("<em>Pour information, ceci ce produit parce que l'application se nomme openADS, or les bloqueurs de publicité ont tendance à bloquer tout ce qui contient la chaîne de caractères 'ads' (<small>publicité</small> en anglais) comme c'est le cas dans le nom open<strong>ADS</strong>.</em>")
4309                )
4310            );
4311        }
4312    
4313    }

Legend:
Removed from v.8988  
changed lines
  Added in v.8989

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26