diff --git a/.gitattributes b/.gitattributes index 21256661..201aadbe 100755 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ -* text=auto \ No newline at end of file +* text=auto +CHANGELOG.md merge=union diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b6c7e82..6968e967 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## 2.5 Evolutions : +* Ajout de la synchronisation du calendrier Prévarisc +* Ajout du système d'alerte lors de la modification d'un établissement * Ajout de la prise en charge du cache filesystem * Ajout des champs de fusion du maire dans la génération de documents * Ajout de la périodicité calculée pour les sites @@ -16,6 +18,7 @@ Evolutions : * Ajout de la possibilité d'ajouter rapidement une couche WMS IGN * Standardisation du viewer cartographique cote backoffice * Ajout de la balise de {avisDossierCommission} pour les PV de maires +* Ajout de la balise {familleEtab} Corrections : * Corrections sur l'enregistrement des prescriptions types : NUM_PRESCRIPTION_DOSSIER cannot be null @@ -29,13 +32,23 @@ Corrections : * Correction du modèle de convocation des groupes de visites qui n'utilisaient pas le modèle de document de visite * Correction de l'affectation d'un dossier à une autre commission, les heures de début et de fin restaient en place ce qui pouvait causer des problèmes lorsque les horaires différaient * Correction de la {dateVisite} sur les ODJ qui était positionnée à la date du jour par défaut si vide +* Correction de l'unité en mètres sur la mesure de distance cartographiques * Correction du non vidage de cache ets sur la partie contact (cf dus) * Correction de l'impossibilité de programmer un dossier de visite sur plusieurs journées * Correction de la balise {avisLastVP} qui disfonctionne ainsi que le calcul de la dernière VP -* Correction de l'unité en mètres sur la mesure de distance cartographiques * Correction de l'impossibilité de faire du drag and drop sur le calendrier pour les weekends * Correction de la suppression d'un lien établissement - dossier qui ne changeait pas l'avis de l'établissement * Correction d'un problème d'escapiing des quotes sur la recherche des ets +* Correction d'un problème de géolocalisation si aucune couche WMS n'est paramétrée +* Correction d'un problème de géolocalisation avec nominatim et du manque de couche WMS sur le viewer d'ajout d'un établissement +* Correction de l'escaping des quotes sur les plans +* Correction de l'escaping des noms de fichiers de la gestion des documents +* Correction de la date du doc ajouté sur les levées d'avis défavorables +* Correction du calcul de la périodicité des IGH et KO à l'insert de nouveaux IGH +* Correction de la non-génération des documents consultés non manuels pour les dossiers de levées d'avis défavorables +* Correction d'une fatal error sur la suppression d'un texte applicable non existant sur l'établissement +* Correction de l'affichage des icônes des fichiers joints en cas d'extension en majuscule +* Correction de l'image du préventionniste qui était trop grande dans le cas d'une carte IGN ## 2.4 diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 3c03443d..0e1045b9 100755 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -139,5 +139,33 @@ public function _initDataStore() return new $className($options); } + + public function _initTranslator() { + $translator = new Zend_Translate( + array( + 'adapter' => 'array', + 'content' => implode(DS, array( + APPLICATION_PATH, + "..", + "vendor", + "zendframework", + 'zendframework1', + 'resources', + 'languages', + )), + 'locale' => "fr", + 'scan' => Zend_Translate::LOCALE_DIRECTORY + ) + ); + Zend_Validate_Abstract::setDefaultTranslator($translator); + } + + public function _initAuth() { + $options = $this->getOption('cache'); + $max_lifetime = isset($options['session_max_lifetime']) ? (int) $options['session_max_lifetime'] : 7200; + $namespace = new Zend_Session_Namespace('Zend_Auth'); + $namespace->setExpirationSeconds($max_lifetime); + return $namespace; + } } diff --git a/application/controllers/AdminController.php b/application/controllers/AdminController.php index 8ef79304..77be8d2b 100755 --- a/application/controllers/AdminController.php +++ b/application/controllers/AdminController.php @@ -7,7 +7,7 @@ public function indexAction() $cache_config = $this->getInvokeArg('bootstrap')->getOption('cache'); $this->_helper->layout->setLayout('menu_admin'); - + if (getenv('PREVARISC_BRANCH') == false) { try { $git = new SebastianBergmann\Git\Git(APPLICATION_PATH . DS . '..'); @@ -26,6 +26,15 @@ public function indexAction() $this->view->key_ign = getenv('PREVARISC_PLUGIN_IGNKEY'); $this->view->key_googlemap = getenv('PREVARISC_PLUGIN_GOOGLEMAPKEY'); + $this->view->geoconcept_url = getenv('PREVARISC_PLUGIN_GEOCONCEPT_URL'); + $this->view->geoconcept_infos = array( + 'Url' => $this->view->geoconcept_url, + 'Layer' => getenv('PREVARISC_PLUGIN_GEOCONCEPT_LAYER'), + 'App ID' => getenv('PREVARISC_PLUGIN_GEOCONCEPT_APP_ID'), + 'Projection' => getenv('PREVARISC_PLUGIN_GEOCONCEPT_PROJECTION') ? : "Non paramétrée", + 'Token' => getenv('PREVARISC_PLUGIN_GEOCONCEPT_TOKEN'), + 'Geocoder Url' => getenv('PREVARISC_PLUGIN_GEOCONCEPT_GEOCODER'), + ); $this->view->dbname = getenv('PREVARISC_DB_DBNAME'); $this->view->db_url = getenv('PREVARISC_DB_HOST').(getenv('PREVARISC_DB_PORT') ? ':'.getenv('PREVARISC_DB_PORT') : ''); $this->view->api_enabled = getenv('PREVARISC_SECURITY_KEY') != ""; @@ -39,7 +48,7 @@ public function indexAction() } else if (getenv('PREVARISC_LDAP_ENABLED')) { $this->view->authentification = sprintf("LDAP + BDD : %s:%d/%s", getenv("PREVARISC_LDAP_HOST"), - getenv("PREVARISC_LDAP_PORT"), + getenv("PREVARISC_LDAP_PORT") ? : '389', getenv("PREVARISC_LDAP_BASEDN")); } else { $this->view->authentification = "BDD"; @@ -49,6 +58,8 @@ public function indexAction() $this->view->cache_url = $cache_config['host']. ($cache_config['port'] ? ':'.$cache_config['port'] : ''); $this->view->cache_lifetime = $cache_config['lifetime']; $this->view->cache_enabled = $cache_config['enabled']; + + $this->view->enforce_security = getenv('PREVARISC_ENFORCE_SECURITY') == 1; $service_search = new Service_Search; $users = $service_search->users(null, null, null, true, 1000)['results']; diff --git a/application/controllers/CalendrierDesCommissionsController.php b/application/controllers/CalendrierDesCommissionsController.php index 7b281010..5dd5dfc7 100755 --- a/application/controllers/CalendrierDesCommissionsController.php +++ b/application/controllers/CalendrierDesCommissionsController.php @@ -38,23 +38,42 @@ public function indexAction() $array_results = $model_commission->fetchAll("ID_COMMISSIONTYPE = " . $row_typeDeCommission->ID_COMMISSIONTYPE )->toArray(); $array_results2 = array(); foreach($array_results as $item) { - $array_results2[] = array( - "ID_COMMISSION" => $item["ID_COMMISSION"], - "LIBELLE_COMMISSION" => $item["LIBELLE_COMMISSION"], - "DOCUMENT_CR" => $item["DOCUMENT_CR"], - "ID_COMMISSIONTYPE" => $item["ID_COMMISSIONTYPE"], - "LIBELLE_COMMISSIONTYPE" => $row_typeDeCommission->LIBELLE_COMMISSIONTYPE - ); + $array_results2[] = array( + "ID_COMMISSION" => $item["ID_COMMISSION"], + "LIBELLE_COMMISSION" => $item["LIBELLE_COMMISSION"], + "DOCUMENT_CR" => $item["DOCUMENT_CR"], + "ID_COMMISSIONTYPE" => $item["ID_COMMISSIONTYPE"], + "LIBELLE_COMMISSIONTYPE" => $row_typeDeCommission->LIBELLE_COMMISSIONTYPE + ); } $array_commissions[$row_typeDeCommission->ID_COMMISSIONTYPE] = array( "LIBELLE" => $row_typeDeCommission->LIBELLE_COMMISSIONTYPE, "ARRAY" => $array_results2 ); } + + $userId = Zend_Auth::getInstance()->getIdentity()['ID_UTILISATEUR']; + + $url = sprintf("/api/1.0/calendar?userid=%s&key=%s", + $userId, + getenv('PREVARISC_SECURITY_KEY')); + + if ($this->_getParam("idComm")) { + $url .= sprintf("&commission=%s", $this->_getParam("idComm")); + } + + $protocol = ( ! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'webcals': 'webcal'; + + $this->view->url_webcal = $protocol . '://' . $_SERVER["HTTP_HOST"] . $url; $this->view->array_commissions = $array_commissions; $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache'); $this->view->is_admin = unserialize($cache->load('acl'))->isAllowed(Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE'], "gestion_parametrages", "gestion_commissions"); + $this->view->is_view_all = unserialize($cache->load('acl'))->isAllowed( + Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE'], + "commission", + "calendar_view_all" + ); } public function recupdatelieeAction() @@ -64,7 +83,7 @@ public function recupdatelieeAction() $infosDateComm = $dbDateComm->find($this->_getParam('idDate'))->current(); //Une fois les infos de la date récupérées on peux aller chercher les date liées à cette commission pour les afficher - if (!$infosDateComm['DATECOMMISSION_LIEES']) { + if ( ! $infosDateComm['DATECOMMISSION_LIEES']) { $commPrincipale = $this->_getParam('idDate'); } else { $commPrincipale = $infosDateComm['DATECOMMISSION_LIEES']; @@ -95,7 +114,7 @@ public function gestionodjAction() $dbCommissionType = new Model_DbTable_CommissionType; $infosCommissionType = $dbCommissionType->find($infosCommission['ID_COMMISSIONTYPE'])->current(); - + //récuperation de tout les dossiers affectés à cette date de commission $dbDossierAffectation = new Model_DbTable_DossierAffectation; @@ -123,7 +142,7 @@ public function gestionodjAction() $listeDossiersNonAffect[$val]['preventionnistes'] = $DB_prev->getPrevDossier( $ue['ID_DOSSIER'] ); } } - + //Gestion de l'affichage de la date de la commission $date = new Zend_Date($infosDateComm['DATE_COMMISSION'],'yyyy-MM-dd'); $this->view->dateFr = $date->get(Zend_Date::WEEKDAY." ".Zend_Date::DAY_SHORT." ".Zend_Date::MONTH_NAME_SHORT." ".Zend_Date::YEAR,'fr'); @@ -206,7 +225,9 @@ public function recupevenementAction() $dbDateCommission = new Model_DbTable_DateCommission; $items = array(); - $requete = "COMMISSION_CONCERNE = '" . $this->_getParam('idComm') . "' AND DATE_COMMISSION BETWEEN '" . $dateDebut . "' AND '" . $dateFin . "'"; + $requete = ($this->_getParam('idComm')) + ? "COMMISSION_CONCERNE = '" . $this->_getParam('idComm') . "' AND DATE_COMMISSION BETWEEN '" . $dateDebut . "' AND '" . $dateFin . "'" + : "DATE_COMMISSION BETWEEN '" . $dateDebut . "' AND '" . $dateFin . "'"; if ($this->_getParam('type')) { $requete .= " AND ID_COMMISSIONTYPEEVENEMENT = '".$this->_getParam('type')."'"; @@ -267,7 +288,7 @@ public function recupevenementodjAction() $affichage .= $dossierAffect['infosEtab']['parents'][0]["LIBELLE_ETABLISSEMENTINFORMATIONS"]." - "; } $affichage = $dossierAffect['infosEtab']['informations']['LIBELLE_ETABLISSEMENTINFORMATIONS' ]; - + $nbAdresse = count($dossierAffect['infosEtab']['adresses']); if($nbAdresse != 0){ $affichage .= " ("; @@ -281,7 +302,7 @@ public function recupevenementodjAction() }else{ $affichage .= " ( adresse non renseignée )"; } - + if ($dossierAffect['LIBELLE_DOSSIERNATURE'] != "") { $affichage .= " - ".$dossierAffect['LIBELLE_DOSSIERNATURE']; } @@ -297,7 +318,7 @@ public function recupevenementodjAction() $affichage .= $ue['NUM_DOCURBA']." . "; } } - + $DB_prev = new Model_DbTable_DossierPreventionniste; $preventionnistes = $DB_prev->getPrevDossier( $dossierAffect['ID_DOSSIER'] ); if(count($preventionnistes) > 0){ @@ -361,10 +382,10 @@ public function dialogcommAction() $this->view->dateClick = $this->_getParam('idDateComm'); //Récupération du nom de la commission - $dbCommissions = new Model_DbTable_Commission; + /*$dbCommissions = new Model_DbTable_Commission; $commFind = $dbCommissions->find($this->_getParam('idComm')); $commSelect = $commFind->current(); - $this->view->libelleCom = $commSelect->LIBELLE_COMMISSION; + $this->view->libelleCom = $commSelect->LIBELLE_COMMISSION;*/ $dbDateCommission = new Model_DbTable_DateCommission; $commQtipInfo = $dbDateCommission->find($this->_getParam('idDateComm'))->current(); @@ -528,9 +549,9 @@ public function dialogcommAction() $updateDateComm->HEUREFIN_COMMISSION = $HeureF->get('HH:mm'); $updateDateComm->DATE_COMMISSION = $date->get(Zend_Date::YEAR."-".Zend_Date::MONTH."-".Zend_Date::DAY); $updateDateComm->save(); - + $dbDateCommission->updateDependingDossierDates($updateDateComm); - + $this->view->updateDateComm = $updateDateComm; $this->view->first = $this->_getParam('first'); break; @@ -724,7 +745,7 @@ public function adddatesAction() public function deplacecommissiondateAction() { - + try { $date = new Zend_Date($_POST['debut'],Zend_Date::DATES,'en'); @@ -742,7 +763,7 @@ public function deplacecommissiondateAction() $commUpdate->save(); $dbDateCommission->updateDependingDossierDates($commUpdate); - + $this->_helper->flashMessenger(array( 'context' => 'success', 'title' => 'L\'événement a bien été déplacé', @@ -853,7 +874,7 @@ public function changementordreAction() $stringUpdate = $this->_getParam('ordreDossier'); $dossierId = explode(",",$stringUpdate); - + $dbDossierAffectation = new Model_DbTable_DossierAffectation; $numDossier = 0; @@ -887,7 +908,7 @@ public function generationconvocAction() //On récupère la liste des dossiers //Suivant si l'on prend en compte les heures ou non on choisi la requete à effectuer $dbDateCommPj = new Model_DbTable_DateCommissionPj; - + if ($commissionInfo['GESTION_HEURES'] == 1) { //prise en compte heures $listeDossiers = $dbDateCommPj->getDossiersInfosByHour($dateCommId); @@ -964,7 +985,6 @@ public function generationconvocAction() if($existe == 0){ if(count($ue['infosEtab']["adresses"]) > 0){ - $libelleCommune = $ue['infosEtab']['adresses'][0]['LIBELLE_COMMUNE']; $adresseCommune = $model_adresseCommune->find($ue['infosEtab']['adresses'][0]['NUMINSEE_COMMUNE'])->toArray(); $communeInfo = $model_utilisateurInfo->find($adresseCommune[0]["ID_UTILISATEURINFORMATIONS"])->toArray(); @@ -981,7 +1001,7 @@ public function generationconvocAction() $this->view->nomComm = $listeDossiers[0]["LIBELLE_DATECOMMISSION"]; $this->view->dateComm = $listeDossiers[0]["DATE_COMMISSION"]; $this->view->heureDeb = $listeDossiers[0]["HEUREDEB_COMMISSION"]; - + $this->_helper->flashMessenger(array( 'context' => 'success', 'title' => 'Le document a bien été généré', @@ -1035,12 +1055,15 @@ public function generationodjAction() foreach($listeDossiers as $val => $ue) { - + $listeDossiers[$val]['preventionnistes'] = array(); + $listeDossiers[$val]['listeDocUrba'] = array(); + $listeDossiers[$val]['infosEtab'] = array(); + $listePrev = $dbDossier->getPreventionnistesDossier($ue['ID_DOSSIER']); if (count($listePrev) > 0) { $listeDossiers[$val]['preventionnistes'] = $listePrev; } - + //On recupere la liste des établissements qui concernent le dossier $listeEtab = $dbDossier->getEtablissementDossierGenConvoc($ue['ID_DOSSIER']); //on recupere la liste des infos des établissement @@ -1113,13 +1136,12 @@ public function generationpvAction() //Suivant si l'on prend en compte les heures ou non on choisi la requete à effectuer $dbDateComm = new Model_DbTable_DateCommission; $commSelect = $dbDateComm->find($dateCommId)->current(); - + $commissionInfo = $dbDateComm->find($dateCommId)->current()->toArray(); //1 = salle . 2 = visite . 3 = groupe de visite //on recupere le type de commission (salle / visite / groupe de visite) $commissionInfo = $dbDateComm->find($dateCommId)->current()->toArray(); $this->view->dateComm = $commissionInfo['DATE_COMMISSION']; - //On récupère le nom de la commission $model_commission = new Model_DbTable_Commission; $this->view->commissionInfos = $model_commission->find($commissionInfo["COMMISSION_CONCERNE"])->toArray(); @@ -1130,13 +1152,13 @@ public function generationpvAction() //afin de récuperer les informations des communes (adresse des mairies etc) $model_adresseCommune = new Model_DbTable_AdresseCommune; $model_utilisateurInfo = new Model_DbTable_UtilisateurInformations; - + if($commissionInfo['GESTION_HEURES'] == 1){ $listeDossiers = $dbDateCommPj->TESTRECUPDOSSHEURE($dateCommId); }else{ $listeDossiers = $dbDateCommPj->TESTRECUPDOSS($dateCommId); } - + $dbDossier = new Model_DbTable_Dossier; $dbDocUrba = new Model_DbTable_DossierDocUrba; $service_etablissement = new Service_Etablissement; @@ -1180,7 +1202,7 @@ public function generationcompterenduAction() $model_commission = new Model_DbTable_Commission; $this->view->commissionInfos = $model_commission->find($commissionInfo["COMMISSION_CONCERNE"])->toArray(); $model_membres = new Model_DbTable_CommissionMembre; - + $this->view->membresFiles = $model_membres->fetchAll("ID_COMMISSION = " . $commissionInfo['COMMISSION_CONCERNE']); $dbDateCommPj = new Model_DbTable_DateCommissionPj; @@ -1188,12 +1210,12 @@ public function generationcompterenduAction() $model_adresseCommune = new Model_DbTable_AdresseCommune; $model_utilisateurInfo = new Model_DbTable_UtilisateurInformations; - if($commissionInfo['GESTION_HEURES'] == 1){ + if ($commissionInfo['GESTION_HEURES'] == 1){ $listeDossiers = $dbDateCommPj->TESTRECUPDOSSHEURE($dateCommId); - }else{ + } else { $listeDossiers = $dbDateCommPj->TESTRECUPDOSS($dateCommId); } - + $dbDossier = new Model_DbTable_Dossier; $dbDocUrba = new Model_DbTable_DossierDocUrba; $service_etablissement = new Service_Etablissement; @@ -1260,7 +1282,8 @@ public function validsuppressionAction() $dateComm->delete(); } - public function exportoutlookAction() { + public function exportoutlookAction() + { $idDateComm = $this->_getParam("dateCommId"); $this->view->layout()->disableLayout(); @@ -1379,6 +1402,4 @@ public function exportoutlookmoisAction() { } echo $ics; } - - } diff --git a/application/controllers/ChangementController.php b/application/controllers/ChangementController.php new file mode 100644 index 00000000..27457de2 --- /dev/null +++ b/application/controllers/ChangementController.php @@ -0,0 +1,101 @@ +_helper->layout->setLayout('menu_admin'); + $this->view->headScript()->appendFile('js/tinymce.min.js'); + + $serviceChangement = new Service_Changement; + + if($this->_request->isPost()) { + try { + $post = $this->_request->getPost(); + $serviceChangement->save($post); + $this->_helper->flashMessenger(array( + 'context' => 'success', + 'title' => 'Mise à jour réussie !', + 'message' => 'Les messages d\'alerte ont bien été mis à jour.' + )); + $this->_helper->redirector('index', null, null, array('id' => $this->_request->id)); + } catch (Exception $e) { + $this->_helper->flashMessenger(array( + 'context' => 'error', + 'title' => '', + 'message' => 'Les messages d\'alerte n\'ont pas été mis à jour. Veuillez rééssayez. (' + . $e->getMessage() . ')' + )); + } + } + + + $this->view->changements = $serviceChangement->getAll(); + } + + + public function alerteformAction() + { + $serviceEtablissement = new Service_Etablissement; + $serviceChangement = new Service_Changement; + $serviceUser = new Service_User; + + $etablissement = $serviceEtablissement->get( + $this->_getParam("id_etablissement")); + + $changement = $serviceChangement->get($this->_getParam("changement")); + + $users = $serviceUser->getUtilisateursForAlterte( + $changement["ID_CHANGEMENT"], $etablissement); + + $mails = array(); + $tos = array(); + foreach($users as $user) { + $mails[] = $user["MAIL_UTILISATEURINFORMATIONS"]; + $tos[] = sprintf('%s, %s Retirer', + $user["ID_UTILISATEUR"], + $user["NOM_UTILISATEURINFORMATIONS"], + $user["PRENOM_UTILISATEURINFORMATIONS"], + $user["ID_UTILISATEUR"], + $user["MAIL_UTILISATEURINFORMATIONS"] + ); + } + $this->view->tos = implode(", ", $tos); + $this->view->mails = implode(";", $mails); + + $this->view->objet = $serviceChangement->getObjet( + $changement["ID_CHANGEMENT"], $etablissement); + + $this->view->message = $serviceChangement->convertMessage( + $changement["MESSAGE_CHANGEMENT"], $etablissement); + } + + public function balisesAction() + { + $serviceChangement = new Service_Changement; + + $this->view->balises = $serviceChangement->getBalises(); + } + + public function sendmailalerteAction() + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $tos = $this->_getParam("mail-emails-dst"); + + $result = false; + + if ($tos !== "") { + $arrayMails = explode(";", $tos); + $object = $this->_getParam("alerte-objet"); + $message = $this->_getParam("alerte-message"); + + $serviceMail = new Service_Mail; + $result = $serviceMail->sendAlerteMail($object, $message, $arrayMails); + } + + echo Zend_Json::encode($result); + } +} \ No newline at end of file diff --git a/application/controllers/CommissionController.php b/application/controllers/CommissionController.php index 2f890cf3..251f5967 100755 --- a/application/controllers/CommissionController.php +++ b/application/controllers/CommissionController.php @@ -215,39 +215,58 @@ public function applyReglesAction() try { $this->_helper->viewRenderer->setNoRender(); - // Modèles - $model_etablissement = new Model_DbTable_Etablissement; + // Modèles et services $model_etablissementInformation = new Model_DbTable_EtablissementInformations; - $model_etablissementAdressse = new Model_DbTable_EtablissementAdresse; - - // On récup tout les établissements - $rowset_ets = $model_etablissement->fetchAll(); - + $model_commission = new Model_DbTable_Commission; + + if (!isset($_POST['ID_COMMISSION']) && !$_POST['ID_COMMISSION']) { + throw new Exception('Aucun ID de commission fournit dans la requête'); + } + + $id_commission = $_POST['ID_COMMISSION']; + $regles = $model_commission->getRegles($id_commission); + + $search = new Model_DbTable_Search; + $search->setItem("etablissement"); + $search->setCriteria("etablissementinformations.ID_GENRE", array(2, 5)); + $search->setCriteria("etablissementadresse.NUMINSEE_COMMUNE IS NOT NULL"); + $rowset_ets = $search->run(false, null, false)->toArray(); + + $ets_to_update = array(); + // Pour tout les ets, on récup leur commission par défaut - foreach ($rowset_ets as $row) { - - // Adresses - $rowset_adresse = $model_etablissementAdressse->get($row["ID_ETABLISSEMENT"]); - - // Si il y a une adresse - if (count($rowset_adresse) > 0) { - - // On récupère les infos - $info = $model_etablissement->getInformations($row["ID_ETABLISSEMENT"])->toArray(); - - // On merge l'adresse - $info["NUMINSEE_COMMUNE"][0] = $rowset_adresse[0]["NUMINSEE_COMMUNE"]; - - // On récupère la commission - $commission = $model_etablissement->getDefaultCommission($info); - - // Si elle n'est pas nulle on l'applique - if ($commission != null) { - $row_ets = $model_etablissementInformation->find($info["ID_ETABLISSEMENTINFORMATIONS"])->current(); - $row_ets->ID_COMMISSION = $commission[0]["ID_COMMISSION"]; - $row_ets->save(); + foreach ($rowset_ets as $key => $row) { + + // On récupère la commission + foreach($regles as $regle) { + + if ($row['ID_GENRE'] == 2 + && in_array($row['NUMINSEE_COMMUNE'], $regle['NUMINSEE_COMMUNE']) + && $row['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'] == $regle['LOCALSOMMEIL'] + && $row['ID_TYPE'] == $regle['ID_TYPE'] + && $row['ID_CATEGORIE'] == $regle['ID_CATEGORIE']) + { + $ets_to_update[] = $row['ID_ETABLISSEMENTINFORMATIONS']; + break; + } + else if ($row['ID_GENRE'] == 5 + && in_array($row['NUMINSEE_COMMUNE'], $regle['NUMINSEE_COMMUNE']) + && $row['ID_CLASSE'] == $regle['ID_CLASSE']) + { + $ets_to_update[] = $row['ID_ETABLISSEMENTINFORMATIONS']; + break; } } + + // save memory + unset($rowset_ets[$key]); + } + + if ($ets_to_update) { + $model_etablissementInformation->update(array('ID_COMMISSION' => $id_commission), 'ID_ETABLISSEMENTINFORMATIONS IN ('.implode(',', $ets_to_update).')'); + + // removes cache if any changes + Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache')->clean(Zend_Cache::CLEANING_MODE_ALL); } } catch (Exception $e) { $this->_helper->flashMessenger(array( diff --git a/application/controllers/CouchesCartographiquesController.php b/application/controllers/CouchesCartographiquesController.php index a32b2af4..166ce8c3 100755 --- a/application/controllers/CouchesCartographiquesController.php +++ b/application/controllers/CouchesCartographiquesController.php @@ -9,6 +9,10 @@ public function listAction() $service_carto = new Service_Carto; $this->view->couches_cartographiques = $service_carto->getAll(); $this->view->key_ign = getenv('PREVARISC_PLUGIN_IGNKEY'); + $this->view->geoconcept_url = getenv('PREVARISC_PLUGIN_GEOCONCEPT_URL'); + $this->view->key_googlemap = getenv('PREVARISC_PLUGIN_GOOGLEMAPKEY'); + $this->view->default_lon = getenv('PREVARISC_CARTO_DEFAULT_LON') ? : "2.71490430425517"; + $this->view->default_lat = getenv('PREVARISC_CARTO_DEFAULT_LAT') ? : "50.4727273438818"; } public function addAction() diff --git a/application/controllers/DossierController.php b/application/controllers/DossierController.php old mode 100644 new mode 100755 index d9c150e4..5bce9748 --- a/application/controllers/DossierController.php +++ b/application/controllers/DossierController.php @@ -8,92 +8,92 @@ class DossierController extends Zend_Controller_Action private $listeChamps = array( //ETUDES //PC - OK - "1" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "1" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //AT - OK - "2" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "2" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Dérogation - OK - "3" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","JUSTIFDEROG","MESURESCOMPENS","MESURESCOMPLE","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","REGLEDEROG","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "3" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","JUSTIFDEROG","MESURESCOMPENS","MESURESCOMPLE","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","REGLEDEROG","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Cahier des charges fonctionnel du SSI - OK - "4" => array("type","DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DATECOMM","AVIS","COORDSSI","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "4" => array("type","DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DATECOMM","AVIS","COORDSSI","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Cahier des charges de type T - OK - "5" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "5" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Salon type T - OK - "6" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","CHARGESEC","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "6" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","CHARGESEC","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //RVRMD (diag sécu) => Levée de prescriptions - OK "7" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Documents divers - OK "8" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEPREF","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Changement de DUS - OK - "9" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "9" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Suivi organisme formation SSIAP - OK "10" => array("DATEINSERT","OBJET","NUMCHRONO","AVIS","DATESDIS","DATEPREF","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Demande de registre de sécurité CTS - OK - "11" => array("DATEINSERT","OBJET","NUMCHRONO","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEPREF","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "11" => array("DATEINSERT","OBJET","NUMCHRONO","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEPREF","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Demande d'implantation CTS < 6mois - OK - "12" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "12" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Demande d'implantation CTS > 6mois - OK - "13" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "13" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Permis d'aménager - OK - "14" => array("DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","DESCGEN","DESCEFF","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "14" => array("DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","COMMISSION","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Permis de démolir - OK - "15" => array("DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "15" => array("DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //CR de visite des organismes d'ins.... - OK - "16" => array("DATEINSERT","OBJET","NUMCHRONO","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEPREF","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "16" => array("DATEINSERT","OBJET","NUMCHRONO","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEPREF","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Etude suite a un avis ne se prononce pas - OK MAIS VOIR POUR PARTICULARITé TABLEAU - "17" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "17" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Utilisation exceptionnelle de locaux - OK - "18" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "18" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Levée de réserves - OK - "19" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","AVIS_COMMISSION","OBSERVATION"), + "19" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","AVIS_COMMISSION","OBSERVATION"), //Echéncier de travaux - OK - "46" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "46" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Déclaration préalable - "30" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION","NUMDOCURBA"), + "30" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION","NUMDOCURBA"), //RVRMD diag sécu - "33" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "33" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Autorisation d'une ICPE - OK - "61" => array("type","DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "61" => array("type","DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","DATEREP","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //Certificats d'urbanisme (CU) - OK - "62" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "62" => array("type","DATEINSERT","OBJET","NUMDOCURBA","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","SERVICEINSTRUC","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","COORDSSI","DATESDIS","DATEREP","PREVENTIONNISTE","DEMANDEUR","INCOMPLET","HORSDELAI","AVIS_COMMISSION","OBSERVATION"), // Demande d'organisation de manifestation temporaire - OK - "63" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "63" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), // Déclassement / Reclassement - OK - "66" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), + "66" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","DATESECRETARIAT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","AVIS","DATESDIS","DATEREP","PREVENTIONNISTE","ABSQUORUM","DEMANDEUR","INCOMPLET", "HORSDELAI","AVIS_COMMISSION","OBSERVATION"), //VISITE DE COMMISSION //Réception de travaux - OK - "20" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","PREVENTIONNISTE","ABSQUORUM","NPSP","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), + "20" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","DATEREP","PREVENTIONNISTE","ABSQUORUM","NPSP","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), //Avant ouverture - OK - "47" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","PREVENTIONNISTE","ABSQUORUM","NPSP","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), + "47" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","DATEREP","PREVENTIONNISTE","ABSQUORUM","NPSP","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), //Périodique - OK - "21" => array("DATEINSERT","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), + "21" => array("DATEINSERT","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","DATEREP","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), //Chantier - OK - "22" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","PREVENTIONNISTE","OBSERVATION","DELAIPRESC"), + "22" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","DATEREP","PREVENTIONNISTE","OBSERVATION","DELAIPRESC"), //Controle - OK - "23" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), + "23" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","DATEREP","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), //Inopinéee - OK - "24" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), + "24" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","DATEREP","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), //Visite conseil - OK - "64" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","PREVENTIONNISTE","OBSERVATION","DELAIPRESC"), + "64" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","DATEREP","PREVENTIONNISTE","OBSERVATION","DELAIPRESC"), //GROUPE DE VISITE //Réception de travaux - OK - "25" => array("type","DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","COORDSSI","PREVENTIONNISTE","NPSP","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), + "25" => array("type","DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","COORDSSI","DATEREP","PREVENTIONNISTE","NPSP","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), //Avant ouverture - OK - "48" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","COORDSSI","PREVENTIONNISTE","NPSP","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), + "48" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","COORDSSI","DATEREP","PREVENTIONNISTE","NPSP","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DATERVRAT","DELAIPRESC"), //Périodique - OK - "26" => array("DATEINSERT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), + "26" => array("DATEINSERT","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","DATEREP","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), //Chantier - OK - "27" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","PREVENTIONNISTE","OBSERVATION","DELAIPRESC"), + "27" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATEVISITE","COORDSSI","DATEREP","PREVENTIONNISTE","OBSERVATION","DELAIPRESC"), //Controle - OK - "28" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","COORDSSI","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), + "28" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","COORDSSI","DATEREP","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), //Inopinéee - OK - "29" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), + "29" => array("DATEINSERT","OBJET","COMMISSION","DESCGEN","DESCEFF","DATECOMM","DATEVISITE","AVIS","DATEREP","PREVENTIONNISTE","DIFFEREAVIS","ABSQUORUM","AVIS_COMMISSION","OBSERVATION","DELAIPRESC"), //REUNION //Locaux SDIS - OK - "31" => array("DATEINSERT","OBJET","DATEREUN","PREVENTIONNISTE","DEMANDEUR","OBSERVATION"), + "31" => array("DATEINSERT","OBJET","DATEREUN","DATEREP","PREVENTIONNISTE","DEMANDEUR","OBSERVATION"), //Exterieur SDIS - OK - "32" => array("DATEINSERT","OBJET","LIEUREUNION","DATEREUN","PREVENTIONNISTE","DEMANDEUR","OBSERVATION"), + "32" => array("DATEINSERT","OBJET","LIEUREUNION","DATEREUN","DATEREP","PREVENTIONNISTE","DEMANDEUR","OBSERVATION"), //Téléphonique - OK - "43" => array("DATEINSERT","OBJET","DATEREUN","PREVENTIONNISTE","DEMANDEUR","OBSERVATION"), + "43" => array("DATEINSERT","OBJET","DATEREUN","DATEREP","PREVENTIONNISTE","DEMANDEUR","OBSERVATION"), //COURRIER/COURRIEL //Lettre - OK "52" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","PREVENTIONNISTE","DATEREP","DATEENVTRANSIT","PREVENTIONNISTE","DATESDIS","DEMANDEUR","DATETRANSFERTCOMM","DATERECEPTIONCOMM","OBSERVATION"), @@ -121,22 +121,22 @@ class DossierController extends Zend_Controller_Action "65" => array("DATEINSERT","OBJET","NUMCHRONO","DATEMAIRIE","PREVENTIONNISTE","DATEREP","DATEENVTRANSIT","PREVENTIONNISTE","DATESDIS","DEMANDEUR","DATETRANSFERTCOMM","DATERECEPTIONCOMM","OBSERVATION"), //INTERVENTION //Incendie - OK - "37" => array("DATEINSERT","OBJET","OPERSDIS","RCCI","REX","NUMINTERV","DATEINTERV","DUREEINTERV","PREVENTIONNISTE","OBSERVATION"), + "37" => array("DATEINSERT","OBJET","OPERSDIS","RCCI","REX","NUMINTERV","DATEINTERV","DUREEINTERV","DATEREP","PREVENTIONNISTE","OBSERVATION"), //SAP - OK - "38" => array("DATEINSERT","OBJET","OPERSDIS","REX","NUMINTERV","DATEINTERV","DUREEINTERV","PREVENTIONNISTE","OBSERVATION"), + "38" => array("DATEINSERT","OBJET","OPERSDIS","REX","NUMINTERV","DATEINTERV","DUREEINTERV","DATEREP","PREVENTIONNISTE","OBSERVATION"), //Intervention div - OK - "39" => array("DATEINSERT","OBJET","OPERSDIS","REX","NUMINTERV","DATEINTERV","DUREEINTERV","PREVENTIONNISTE","OBSERVATION"), + "39" => array("DATEINSERT","OBJET","OPERSDIS","REX","NUMINTERV","DATEINTERV","DUREEINTERV","DATEREP","PREVENTIONNISTE","OBSERVATION"), //ARRETE //Ouverture - OK - "40" => array("DATEINSERT","DATESIGN","PREVENTIONNISTE","OBSERVATION"), + "40" => array("DATEINSERT","DATESIGN","DATEREP","PREVENTIONNISTE","OBSERVATION"), //Fermeture - OK - "41" => array("DATEINSERT","OBJET","DATESIGN","PREVENTIONNISTE","OBSERVATION"), + "41" => array("DATEINSERT","OBJET","DATESIGN","DATEREP","PREVENTIONNISTE","OBSERVATION"), //Mise en demeure - OK - "42" => array("DATEINSERT","OBJET","DATESIGN","PREVENTIONNISTE","OBSERVATION"), + "42" => array("DATEINSERT","OBJET","DATESIGN","DATEREP","PREVENTIONNISTE","OBSERVATION"), //Utilisation exceptionnelle de locaux - OK - "44" => array("DATEINSERT","OBJET","DATESIGN","PREVENTIONNISTE","OBSERVATION"), + "44" => array("DATEINSERT","OBJET","DATESIGN","DATEREP","PREVENTIONNISTE","OBSERVATION"), //Courrier - OK - "45" => array("DATEINSERT","OBJET","DATESIGN","PREVENTIONNISTE","OBSERVATION"), + "45" => array("DATEINSERT","OBJET","DATESIGN","DATEREP","PREVENTIONNISTE","OBSERVATION"), ); public function init() @@ -181,6 +181,9 @@ public function init() $this->view->idDossier = ($this->_getParam("id")); $this->view->verrou = $dossier->VERROU_DOSSIER; + + + } } @@ -207,6 +210,8 @@ public function addAction() public function indexAction() { + $this->view->headScript()->appendFile('/js/tinymce.min.js'); + $this->view->do = "new"; if ($this->_getParam("id")) { $this->view->do = "edit"; @@ -249,6 +254,9 @@ public function indexAction() $this->view->is_allowed_change_avis = unserialize($cache->load('acl'))->isAllowed(Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE'], "avis_commission", "edit_avis_com"); + // Autorisation de suppression du dossier + $this->view->is_allowed_delete_dossier = unserialize($cache->load('acl'))->isAllowed(Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE'], "suppression", "delete_dossier"); + $service_etablissement = new Service_Etablissement(); if ($this->_getParam("idEtablissement")) { @@ -307,7 +315,7 @@ public function indexAction() if (isset($commissionEtab)) { $this->view->commissionEtab = $commissionEtab; } - + $genreInfo = $this->view->genre; if (isset($idEtablissement)) { @@ -641,6 +649,7 @@ public function indexAction() unset($preventionnistes[-1]); $this->view->preventionnistes = $preventionnistes; $this->view->listeDocManquant = array(); + $this->view->dossierNatureListe = array(); } //23/10/12 Ajout du service instructeur remplacé par le select des groupements de communes @@ -882,6 +891,7 @@ public function saveAction() $docAttestation->LIBELLE_DOCAJOUT = "Attestation de"; $docAttestation->ID_NATURE = $idNature; $docAttestation->ID_DOSSIER = $idDossier; + $docAttestation->DATE_DOCAJOUT = '0000-00-00'; $docAttestation->save(); } } @@ -940,11 +950,11 @@ public function saveAction() $service_prescription = new Service_Prescriptions; $service_dossier = new Service_Dossier; if($this->_getParam('do') == 'new'){ - if($this->_getParam("TYPE_DOSSIER") == 1 ){ - $listePrescRegl = $service_prescription->getPrescriptions('etude',true); - $service_dossier->savePrescriptionRegl($idDossier,$listePrescRegl); - }else if($this->_getParam("TYPE_DOSSIER") == 2 || $this->_getParam("TYPE_DOSSIER") == 3){ - $listePrescRegl = $service_prescription->getPrescriptions('visite',true); + if($this->_getParam("TYPE_DOSSIER") == 1 ) { + $listePrescRegl = $service_prescription->getPrescriptions('etude', true); + $service_dossier->savePrescriptionRegl($idDossier,$listePrescRegl); + } else if ($this->_getParam("TYPE_DOSSIER") == 2 || $this->_getParam("TYPE_DOSSIER") == 3){ + $listePrescRegl = $service_prescription->getPrescriptions('visite', true); $service_dossier->savePrescriptionRegl($idDossier,$listePrescRegl); } } @@ -1186,7 +1196,7 @@ public function saveAction() && ($this->_getParam("AVIS_DOSSIER_COMMISSION") == 1 || $this->_getParam("AVIS_DOSSIER_COMMISSION") == 2) && $service_dossier->isDossierDonnantAvis($nouveauDossier, $idNature)) { - if ($this->_getParam('do') == 'new') { + if ($this->_getParam('do') == 'new' && $this->_getParam('idEtablissement')) { $listeEtab = array(array( 'ID_ETABLISSEMENT' => $this->_getParam('idEtablissement'), )); @@ -1194,10 +1204,43 @@ public function saveAction() $listeEtab = $DBetablissementDossier->getEtablissementListe($idDossier); } + $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache'); + $mygroupe = Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE']; + $service_ets = new Service_Etablissement; + $arrayEtsAvis = array(); + if (unserialize($cache->load('acl'))->isAllowed($mygroupe, "alerte_email", "alerte_avis") + && getenv('PREVARISC_MAIL_ENABLED') && getenv('PREVARISC_MAIL_ENABLED') == 1) { + foreach($listeEtab as $etab) { + $currentEts = $service_ets->get($etab['ID_ETABLISSEMENT']); + if ($currentEts) { + $arrayEtsAvis[$etab['ID_ETABLISSEMENT']]['avis'] = $currentEts['avis']; + $arrayEtsAvis[$etab['ID_ETABLISSEMENT']]['libelle'] = + $currentEts['informations']['LIBELLE_ETABLISSEMENTINFORMATIONS']; + } + } + } + $dbEtab = new Model_DbTable_Etablissement(); $updatedEtab = $service_dossier->saveDossierDonnantAvis($nouveauDossier, $listeEtab, $cache, $this->_getParam('repercuterAvis')); - + if (unserialize($cache->load('acl'))->isAllowed($mygroupe, "alerte_email", "alerte_avis") + && getenv('PREVARISC_MAIL_ENABLED') && getenv('PREVARISC_MAIL_ENABLED') == 1) { + $service_alerte = new Service_Alerte; + foreach($updatedEtab as $upEts) { + if ($upEts['ID_DOSSIER_DONNANT_AVIS'] === $nouveauDossier['ID_DOSSIER'] + && $nouveauDossier['AVIS_DOSSIER_COMMISSION'] !== + $arrayEtsAvis[$upEts['ID_ETABLISSEMENT']]['avis']) { + $options = $service_alerte->getLink(2, $upEts["ID_ETABLISSEMENT"]); + $this->_helper->flashMessenger(array( + 'context' => 'success', + 'title' => 'Mise à jour réussie !', 'message' => 'L\'établissement ' + . $arrayEtsAvis[$upEts['ID_ETABLISSEMENT']]['libelle'] + . ' a bien été mis à jour.' . $options)); + } + + } + } + // AVERTISSEMENT SUR L'OUVERTURE D'UN ETABLISSEMENT A EFFECTUER // Dans le cas d'une visite avant ouverture avec avis de commission positif if ($this->_getParam("AVIS_DOSSIER_COMMISSION") == 1 && in_array($idNature, array(47, 48))) @@ -1435,7 +1478,7 @@ public function docconsulteAction() } } elseif (1 == $dossierType['TYPE_DOSSIER']) { //cas d'une etude - if($nature['ID_NATURE'] == 19){ + if($nature['ID_NATURE'] == 19 || $nature['ID_NATURE'] == 7){ $listeDocConsulte[$nature["ID_NATURE"]] = $dblistedoc->getDocVisite(); }else{ $listeDocConsulte[$nature["ID_NATURE"]] = $dblistedoc->getDocEtude(); @@ -1511,7 +1554,7 @@ public function validdocAction() $date = "0000-00-00"; } $ref = str_replace("\"","''",$_POST['ref_'.$idValid]); - $libelle = $_POST['libelle_'.$idValid]; + $libelle = isset($_POST['libelle_'.$idValid]) ? $_POST['libelle_'.$idValid] : ""; //on définit s'il sagid d'un doc ajouté ou nom $tabNom = explode("_",$idValid); @@ -1631,10 +1674,18 @@ public function deleteetablissementAction() $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache'); $deleteEtabDossier = $DBetablissementDossier->find($this->_getParam("idEtabDossier"))->current(); + if (!$deleteEtabDossier) { + $this->_helper->flashMessenger(array( + 'context' => 'warning', + 'title' => "L'établissement n'est pas lié à ce dossier.", + 'message' => '', + )); + return ; + } + $idEtablissement = $deleteEtabDossier['ID_ETABLISSEMENT']; $idDossier = $deleteEtabDossier['ID_DOSSIER']; $etablissement = $dbEtab->find($idEtablissement)->current(); - $deleteEtabDossier->delete(); $this->_helper->flashMessenger(array( @@ -1752,7 +1803,7 @@ public function rapportAction(){ $pathBase = REAL_DATA_PATH . DS . "uploads" . DS . "documents"; //Récupération des documents présents dans le dossier 0. Documents visibles après vérrouillage - $pathVer = $pathBase."/0"; + $pathVer = $pathBase. DS . "0"; $dirVer = opendir($pathVer) or die('Erreur de listage : le répertoire n\'existe pas'); $fichierVer = array(); $dossierVer = array(); @@ -2182,7 +2233,12 @@ public function creationdocAction($idDossier, $idEtab, $commission) $listeDocConsulte = $dblistedoc->getDocVisite(); } } elseif (1 == $dossierType['TYPE_DOSSIER']) { - $listeDocConsulte = $dblistedoc->getDocEtude(); + //cas d'une etude + if($dossierNature['ID_NATURE'] == 19 || $dossierNature['ID_NATURE'] == 7){ + $listeDocConsulte = $dblistedoc->getDocVisite(); + }else{ + $listeDocConsulte = $dblistedoc->getDocEtude(); + } } else { $listeDocConsulte = 0; } @@ -2211,14 +2267,17 @@ public function creationdocAction($idDossier, $idEtab, $commission) //On récupère toutes les cellules $idDateCommAffect = $affectDossier['ID_DATECOMMISSION_AFFECT']; $listeDossierConcerne = $dbAffectDossier->getDossierNonAffect($idDateCommAffect); + if(isset($affectDossier['ID_DATECOMMISSION_AFFECT']) && $affectDossier['ID_DATECOMMISSION_AFFECT'] != ''){ $cptIdArray = 0; foreach($listeDossierConcerne as $dossier){ + $listeDossierConcerne[$cptIdArray]['regl'] = $service_dossier->getPrescriptions((int) $dossier['ID_DOSSIER'],0); $listeDossierConcerne[$cptIdArray]['exploit'] = $service_dossier->getPrescriptions((int) $dossier['ID_DOSSIER'],1); $listeDossierConcerne[$cptIdArray]['amelio'] = $service_dossier->getPrescriptions((int) $dossier['ID_DOSSIER'],2); $cptIdArray++; } + $this->view->celluleDossier = $listeDossierConcerne; } }elseif($this->view->id_typeactivite == 29 && in_array($dossierNature["ID_NATURE"], $natureCCL) && !$this->_getParam("repriseCC")){ @@ -2316,7 +2375,12 @@ public function creationdocAction($idDossier, $idEtab, $commission) $nouvellePJ->ID_PIECEJOINTE = $this->view->idPieceJointe; $nouvellePJ->NOM_PIECEJOINTE = substr(basename($this->view->fichierSelect), 0, strlen(basename($this->view->fichierSelect)) - 3); $nouvellePJ->EXTENSION_PIECEJOINTE = ".odt"; - $nouvellePJ->DESCRIPTION_PIECEJOINTE = "Rapport de l'établissement ".$object_informations['LIBELLE_ETABLISSEMENTINFORMATIONS']." généré le ".$dateDuJour->get(Zend_Date::DAY."/".Zend_Date::MONTH."/".Zend_Date::YEAR)." à ".$dateDuJour->get(Zend_Date::HOUR.":".Zend_Date::MINUTE); + $nouvellePJ->DESCRIPTION_PIECEJOINTE = sprintf("Rapport de l'établissement %s (%s) généré le %s à %s", + $object_informations['LIBELLE_ETABLISSEMENTINFORMATIONS'], + $etablissement['NUMEROID_ETABLISSEMENT'], + $dateDuJour->get(Zend_Date::DAY."/".Zend_Date::MONTH."/".Zend_Date::YEAR), + $dateDuJour->get(Zend_Date::HOUR.":".Zend_Date::MINUTE) + ); $nouvellePJ->DATE_PIECEJOINTE = $dateDuJour->get(Zend_Date::YEAR."-".Zend_Date::MONTH."-".Zend_Date::DAY); $nouvellePJ->save(); @@ -2495,10 +2559,11 @@ public function prescriptionAction() public function prescriptionwordsearchAction() { + $this->view->tabMotCles = array(); if ($this->_getParam('motsCles')) { - $tabMotCles = explode(" ", $this->_getParam('motsCles')); + $this->view->tabMotCles = explode(" ", $this->_getParam('motsCles')); $dbPrescType = new Model_DbTable_PrescriptionType(); - $listePrescType = $dbPrescType->getPrescriptionTypeByWords($tabMotCles); + $listePrescType = $dbPrescType->getPrescriptionTypeByWords($this->view->tabMotCles); $dbPrescAssoc = new Model_DbTable_PrescriptionTypeAssoc(); $prescriptionArray = array(); @@ -2586,7 +2651,8 @@ public function prescriptionaddtypeAction() $idPrescType = $this->_getParam('idPrescType'); $idDossier = $this->_getParam('idDossier'); $this->view->typePrescDossier = $this->_getParam('typePrescriptionDossier'); - + $this->view->idDossier = $idDossier; + //on recup le num max de prescription du dossier $dbPrescDossier = new Model_DbTable_PrescriptionDossier(); $numMax = $dbPrescDossier->recupMaxNumPrescDossier($idDossier, $this->_getParam('typePrescriptionDossier')); @@ -2629,6 +2695,7 @@ public function prescriptionaddtypeAction() $listeExploit = $dbPrescDossier->recupPrescDossier($idDossier, 1); foreach($listeExploit as $prescDossier){ $prescCount = $dbPrescDossier->find($prescDossier['ID_PRESCRIPTION_DOSSIER'])->current(); + if (!$prescCount) continue; $prescCount->NUM_PRESCRIPTION_DOSSIER = $nbPresc; $prescCount->save(); $nbPresc++; @@ -2637,6 +2704,7 @@ public function prescriptionaddtypeAction() $listeAmelio = $dbPrescDossier->recupPrescDossier($idDossier, 2); foreach($listeAmelio as $prescDossier){ $prescCount = $dbPrescDossier->find($prescDossier['ID_PRESCRIPTION_DOSSIER'])->current(); + if (!$prescCount) continue; $prescCount->NUM_PRESCRIPTION_DOSSIER = $nbPresc; $prescCount->save(); $nbPresc++; @@ -2742,4 +2810,31 @@ public function deverrouAction() $lockDosier->save(); echo $lockDosier->ID_DOSSIER; } + + //GESTION DE LA SUPPRESSION + public function deleteAction() + { + try { + + $service_dossier = new Service_Dossier(); + $service_dossier->delete($this->_getParam("id")); + + // Récupération de la ressource cache à partir du bootstrap + $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cacheSearch'); + $cache->clean(Zend_Cache::CLEANING_MODE_ALL); + + $this->_helper->flashMessenger(array( + 'context' => 'success', + 'title' => 'Mise à jour réussie !', + 'message' => 'Le dossier a bien été supprimé.', + )); + $this->redirect("/search/dossier?objet=&page=1");; + } catch (Exception $e) { + $this->_helper->flashMessenger(array( + 'context' => 'error', + 'title' => '', + 'message' => 'L\'établissement n\'a pas été mis à jour. Veuillez rééssayez. (' . $e->getMessage() .')', + )); + } + } } diff --git a/application/controllers/EtablissementController.php b/application/controllers/EtablissementController.php index 61205b78..ee6aedbd 100755 --- a/application/controllers/EtablissementController.php +++ b/application/controllers/EtablissementController.php @@ -5,6 +5,7 @@ class EtablissementController extends Zend_Controller_Action public function indexAction() { $this->_helper->layout->setLayout('etablissement'); + $this->view->headScript()->appendFile('/js/tinymce.min.js'); $service_etablissement = new Service_Etablissement; $service_groupement_communes = new Service_GroupementCommunes; @@ -15,6 +16,7 @@ public function indexAction() $this->view->couches_cartographiques = $service_carto->getAll(); $this->view->key_ign = getenv('PREVARISC_PLUGIN_IGNKEY'); $this->view->key_googlemap = getenv('PREVARISC_PLUGIN_GOOGLEMAPKEY'); + $this->view->geoconcept_url = getenv('PREVARISC_PLUGIN_GEOCONCEPT_URL'); $this->view->etablissement = $etablissement; $this->view->default_periodicite = $DB_periodicite->gn4ForEtablissement($etablissement); @@ -23,6 +25,10 @@ public function indexAction() $this->view->avis = $service_etablissement->getAvisEtablissement($etablissement['general']['ID_ETABLISSEMENT'], $etablissement['general']['ID_DOSSIER_DONNANT_AVIS']); $this->view->store = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('dataStore'); + + $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache'); + // Autorisation de suppression de l'établissement + $this->view->is_allowed_delete_etablissement = unserialize($cache->load('acl'))->isAllowed(Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE'], "suppression", "delete_etablissement"); } public function editAction() @@ -35,10 +41,13 @@ public function editAction() $etablissement = $service_etablissement->get($this->_request->id); $this->view->avis = $service_etablissement->getAvisEtablissement($etablissement['general']['ID_ETABLISSEMENT'], $etablissement['general']['ID_DOSSIER_DONNANT_AVIS']); - + $this->view->etablissement = $etablissement; $this->view->key_ign = getenv('PREVARISC_PLUGIN_IGNKEY'); + $this->view->geoconcept_url = getenv('PREVARISC_PLUGIN_GEOCONCEPT_URL'); + $this->view->default_lon = getenv('PREVARISC_CARTO_DEFAULT_LON') ? : "2.71490430425517"; + $this->view->default_lat = getenv('PREVARISC_CARTO_DEFAULT_LAT') ? : "50.4727273438818"; $service_genre = new Service_Genre; $service_statut = new Service_Statut; @@ -63,9 +72,8 @@ public function editAction() $this->view->DB_famille = $service_famille->getAll(); $this->view->DB_classe = $service_classe->getAll(); $this->view->DB_classement = $service_classement->getAll(); - + $this->view->couches_cartographiques = $service_carto->getAll(); - $this->view->key_ign = getenv('PREVARISC_PLUGIN_IGNKEY'); $this->view->add = false; @@ -76,9 +84,21 @@ public function editAction() if($this->_request->isPost()) { try { $post = $this->_request->getPost(); + $options = ''; + if (getenv('PREVARISC_MAIL_ENABLED') && getenv('PREVARISC_MAIL_ENABLED') == 1) { + $typeAlerte = $service_etablissement->checkAlerte($etablissement, $post); + + if (unserialize($cache->load('acl'))->isAllowed($mygroupe, "alerte_email", "alerte_statut", "alerte_classement")) { + if ($typeAlerte !== false) { + $service_alerte = new Service_Alerte; + $options = $service_alerte->getLink($typeAlerte); + } + } + } + $date = date("Y-m-d"); $service_etablissement->save($post['ID_GENRE'], $post, $this->_request->id, $date); - $this->_helper->flashMessenger(array('context' => 'success', 'title' => 'Mise à jour réussie !', 'message' => 'L\'établissement a bien été mis à jour.')); + $this->_helper->flashMessenger(array('context' => 'success', 'title' => 'Mise à jour réussie !', 'message' => 'L\'établissement a bien été mis à jour.' . $options)); $this->_helper->redirector('index', null, null, array('id' => $this->_request->id)); } catch(Exception $e) { @@ -101,6 +121,7 @@ public function addAction() $service_famille = new Service_Famille; $service_classe = new Service_Classe; $service_classement = new Service_Classement; + $service_carto = new Service_Carto; $this->view->DB_genre = $service_genre->getAll(); $this->view->DB_statut = $service_statut->getAll(); @@ -115,8 +136,12 @@ public function addAction() $this->view->DB_classement = $service_classement->getAll(); $this->view->add = true; - + $this->view->key_ign = getenv('PREVARISC_PLUGIN_IGNKEY'); + $this->view->geoconcept_url = getenv('PREVARISC_PLUGIN_GEOCONCEPT_URL'); + $this->view->default_lon = getenv('PREVARISC_CARTO_DEFAULT_LON') ? : "2.71490430425517"; + $this->view->default_lat = getenv('PREVARISC_CARTO_DEFAULT_LAT') ? : "50.4727273438818"; + $this->view->couches_cartographiques = $service_carto->getAll(); $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache'); $mygroupe = Zend_Auth::getInstance()->getIdentity()['group']['LIBELLE_GROUPE']; @@ -434,4 +459,30 @@ public function historiqueAction() $this->view->historique = $service_etablissement->getHistorique($this->_request->id); } + + public function deleteAction() + { + try { + + $idEtablissement = $this->_getParam("id"); + + // On supprime les dossiers de l'établissement + $service_dossier = new Service_Dossier(); + $service_dossier->deleteByEtab($idEtablissement); + + // On supprime l'établissement + $service_etablissement = new Service_Etablissement(); + $service_etablissement->delete($idEtablissement); + + // Récupération de la ressource cache à partir du bootstrap + $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cacheSearch'); + $cache->clean(Zend_Cache::CLEANING_MODE_ALL); + + $this->_helper->flashMessenger(array('context' => 'success', 'title' => 'Mise à jour réussie !', 'message' => 'L\'établissement a bien été supprimé.')); + $this->redirect("/search/etablissement?label=&page=1"); + } + catch(Exception $e) { + $this->_helper->flashMessenger(array('context' => 'error','title' => '','message' => 'L\'établissement n\'a pas été supprimé. Veuillez rééssayez. (' . $e->getMessage() . ')')); + } + } } diff --git a/application/controllers/GestionDesCommunesController.php b/application/controllers/GestionDesCommunesController.php index 4191300c..244702b2 100755 --- a/application/controllers/GestionDesCommunesController.php +++ b/application/controllers/GestionDesCommunesController.php @@ -33,6 +33,8 @@ public function displayAction() public function saveAction() { try { + if(isset($_POST["ID_UTILISATEURCIVILITE"]) && $_POST["ID_UTILISATEURCIVILITE"] == "null") + unset($_POST["ID_UTILISATEURCIVILITE"]); $this->_helper->viewRenderer->setNoRender(); diff --git a/application/controllers/GestionDesDocumentsController.php b/application/controllers/GestionDesDocumentsController.php index 634dcf5a..dbb28b37 100755 --- a/application/controllers/GestionDesDocumentsController.php +++ b/application/controllers/GestionDesDocumentsController.php @@ -60,27 +60,6 @@ public function indexAction() $this->view->path = DATA_PATH . "/uploads/documents"; $this->view->liste_commission = $liste_commission; - - - -/* - //on liste les documents présents dans $path déclaré global pour le controller - $path = $this->path; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point') - $dir = opendir($path) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant - $fichier= array(); // on déclare le tableau contenant le nom des fichiers - $dossier= array(); // on déclare le tableau contenant le nom des dossiers - - while ($element = readdir($dir)) { - if ($element != '.' && $element != '..') { - if($element != '.gitignore') - if (!is_dir($path.DS.$element)) {$fichier[] = $element;} else {$dossier[] = $element;} - } - } - closedir($dir); - sort($fichier); - $this->view->path = DATA_PATH . "/uploads/documents"; - $this->view->listeFichiers = $fichier; -*/ } public function formAction() @@ -93,22 +72,27 @@ public function formAction() public function addAction() { try { + + $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); + + // Extension du fichier + $filename = str_replace(DS, '', $_FILES['fichier']['name']); + $extension = strtolower(strrchr($filename, ".")); + if (!in_array($extension, array('.odt'))) { + throw new Exception("Seuls les fichiers .odt sont autorisés en upload."); + } + //Si besoin verificaiton de l'extension du fichier (uniquement odt) - if (move_uploaded_file($_FILES['fichier']['tmp_name'], $this->path . DS. $this->_getParam('commission') .DS. $_FILES['fichier']['name'])) { - // Echappement des "backslashes" si le serveur est une machine Windows (Dossier\Fichier => DossierFichier) - $filePath = str_replace("\\", "\\\\", $this->_getParam('commission') . DS . $_FILES['fichier']['name']); - echo " - - "; + if (!move_uploaded_file($_FILES['fichier']['tmp_name'], $this->path . DS. $this->_getParam('commission') .DS. $filename)) { + throw new Exception('Impossible de déplacer le fichier uploadé'); } $this->_helper->flashMessenger(array( 'context' => 'success', 'title' => 'Le document a bien été ajouté', 'message' => '' )); + } catch (Exception $e) { $this->_helper->flashMessenger(array( 'context' => 'error', @@ -116,32 +100,30 @@ public function addAction() 'message' => $e->getMessage() )); } - } - - public function checkAction() - { - //On verifie si le fichier existe - $this->view->exists = file_exists( $this->path .DS. $this->_request->nomFich); + echo ' + + '; } public function suppdocAction() { try { + $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $path = $this->path.DS.$this->_getParam('idCommission'); + + $filename = str_replace(DS, '', $this->_getParam('name')); + //On verifie si le fichier existe - $exist = file_exists( $path .DS. $this->_getParam('name')); - unlink($path .DS. $this->_getParam('name')); - $exist2 = file_exists( $path .DS. $this->_getParam('name')); - - if ($exist != $exist2) { - echo "le fichier ".$this->_getParam('name')." a bien été supprimé"; - $this->_helper->flashMessenger(array( - 'context' => 'success', - 'title' => 'Le document '.$this->_getParam('name').' a bien été supprimé', - 'message' => '' - )); + $exist = file_exists($path .DS. $filename); + unlink($path .DS. $filename); + $exist2 = file_exists($path .DS. $filename); + + if ($exist == $exist2) { + throw new Exception('Impossible de supprimer le fichier '.$filename); } } catch (Exception $e) { $this->_helper->flashMessenger(array( @@ -149,6 +131,7 @@ public function suppdocAction() 'title' => 'Erreur lors de la suppression du document', 'message' => $e->getMessage() )); + echo $e->getMessage(); } } diff --git a/application/controllers/PieceJointeController.php b/application/controllers/PieceJointeController.php index 7d4d82e8..8732bee6 100755 --- a/application/controllers/PieceJointeController.php +++ b/application/controllers/PieceJointeController.php @@ -25,7 +25,7 @@ public function indexAction() $this->view->identifiant = $this->_request->id; $this->view->pjcomm = $this->_request->pjcomm; $listePj = $DBused->affichagePieceJointe("dossierpj", "dossierpj.ID_DOSSIER", $this->_request->id); - $this->view->verrou = $this->_request->verrou; + $this->view->verrou = $this->_request->verrou; } // Cas établissement @@ -79,7 +79,7 @@ public function getAction() $piece_jointe = $DBused->affichagePieceJointe("datecommissionpj", "piecejointe.ID_PIECEJOINTE", $this->_request->idpj); } - if (!$piece_jointe || count($piece_jointe) != 1) { + if (!$piece_jointe || count($piece_jointe) == 0) { throw new Zend_Controller_Action_Exception('Cannot find piece jointe for id '.$this->_request->idpj, 404); } @@ -91,23 +91,20 @@ public function getAction() $this->_helper->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); - if (!is_readable($filepath)) { + if (!is_readable($filepath)) { throw new Zend_Controller_Action_Exception('Cannot read file '.$filepath, 404); } - + + ob_get_clean(); + header("Pragma: public"); header("Expires: -1"); header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Type: application/octet-stream"); - $handle = fopen($filepath, "r"); - if ($handle) { - while (($buffer = fgets($handle, 4096)) !== false) { - echo $buffer; - } - fclose($handle); - } + readfile($filepath); + exit(); } @@ -141,8 +138,11 @@ public function addAction() } // Extension du fichier - $extension = strrchr($_FILES['fichier']['name'], "."); - + $extension = strtolower(strrchr($_FILES['fichier']['name'], ".")); + if (in_array($extension, array('.php', '.php4', '.php5', '.sh', '.ksh', '.csh'))) { + throw new Exception("Ce type de fichier n'est pas autorisé en upload"); + } + // Date d'aujourd'hui $dateNow = new Zend_Date(); @@ -263,7 +263,6 @@ public function deleteAction() // On récupère la pièce jointe $pj = $DBpieceJointe->find($this->_request->id_pj)->current(); -// var_dump($pj);exit(); // Selon le type, on fixe le modèle à utiliser switch ($this->_request->type) { @@ -281,7 +280,7 @@ public function deleteAction() } // On supprime dans la BDD et physiquement - if ($DBitem != null) { + if ($pj != null && $DBitem != null) { $file_path = $this->store->getFilePath($pj, $this->_request->type, $this->_request->id); $miniature_pj = $pj; diff --git a/application/controllers/SearchController.php b/application/controllers/SearchController.php index 23e535b3..5507fb14 100755 --- a/application/controllers/SearchController.php +++ b/application/controllers/SearchController.php @@ -45,8 +45,9 @@ public function etablissementAction() $local_sommeil = array_key_exists('presences_local_sommeil', $parameters) && count($parameters['presences_local_sommeil']) == 1 ? $parameters['presences_local_sommeil'][0] == 'true' : null; $city = array_key_exists('city', $parameters) && $parameters['city'] != '' ? $parameters['city'] : null; $street = array_key_exists('street', $parameters) && $parameters['street'] != '' ? $parameters['street'] : null; + $number = array_key_exists('number', $parameters) && $parameters['number'] != '' ? $parameters['number'] : null; - $search = $service_search->etablissements($label, $identifiant, $genres, $categories, $classes, $familles, $types_activites, $avis_favorable, $statuts, $local_sommeil, null, null, null, $city, $street, 50, $page); + $search = $service_search->etablissements($label, $identifiant, $genres, $categories, $classes, $familles, $types_activites, $avis_favorable, $statuts, $local_sommeil, null, null, null, $city, $street, $number, 50, $page); $paginator = new Zend_Paginator(new SDIS62_Paginator_Adapter_Array($search['results'], $search['search_metadata']['count'])); $paginator->setItemCountPerPage(50)->setCurrentPageNumber($page)->setDefaultScrollingStyle('Elastic'); @@ -54,7 +55,7 @@ public function etablissementAction() $this->view->results = $paginator; } catch(Exception $e) { - $this->_helper->flashMessenger(array('context' => 'error','title' => 'Problème de recherche','message' => 'La recherche n\'a pas été effectué correctement. Veuillez rééssayez. (' . $e->getMessage() . ')')); + $this->_helper->flashMessenger(array('context' => 'error','title' => 'Problème de recherche','message' => 'La recherche n\'a pas été effectuée correctement. Veuillez réessayer. (' . $e->getMessage() . ')')); } } } @@ -142,25 +143,38 @@ public function utilisateurAction() } } } + + public function displayAjaxSearchEtablissementAction() + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $service_search = new Service_Search; + + $data = $service_search->etablissements(null, null, null, null, null, null, null, null, null, null, null, null, $this->_request->parent, null, null, null); + + $data = $data['results']; + + $html = "