[opencourrier-Commits] r1092 - branches/5.1.0/obj

5 views
Skip to first unread message

fray...@hephaestos.ovh.adullact.org

unread,
Feb 26, 2020, 6:06:39 AM2/26/20
to openmairie-...@googlegroups.com
Author: fraynaud
Date: 2020-02-26 12:06:38 +0100 (Wed, 26 Feb 2020)
New Revision: 1092

Added:
branches/5.1.0/obj/courrier.class.php
branches/5.1.0/obj/courrier_arrivee.class.php
branches/5.1.0/obj/courrier_arrivee_copie.class.php
branches/5.1.0/obj/courrier_arrivee_traitement.class.php
branches/5.1.0/obj/courrier_depart.class.php
branches/5.1.0/obj/courrier_depart_copie.class.php
branches/5.1.0/obj/courrier_depart_traitement.class.php
branches/5.1.0/obj/courrier_edition.class.php
branches/5.1.0/obj/courrier_edition_depart.class.php
branches/5.1.0/obj/courrier_recherche.class.php
branches/5.1.0/obj/diffusion.class.php
branches/5.1.0/obj/diffusion_courrier.class.php
branches/5.1.0/obj/diffusion_non_validee.class.php
branches/5.1.0/obj/dossier.class.php
branches/5.1.0/obj/emetteur.class.php
branches/5.1.0/obj/fonction.class.php
branches/5.1.0/obj/mode_diffusion.class.php
branches/5.1.0/obj/nature.class.php
branches/5.1.0/obj/note.class.php
branches/5.1.0/obj/om_dbform.class.php
branches/5.1.0/obj/om_formulaire.class.php
branches/5.1.0/obj/tache.class.php
branches/5.1.0/obj/tachenonsolde.class.php
branches/5.1.0/obj/type_diffusion.class.php
branches/5.1.0/obj/type_dossier.class.php
branches/5.1.0/obj/workfonction.class.php
Log:
ajout des surcharges obj




Added: branches/5.1.0/obj/courrier.class.php
===================================================================
--- branches/5.1.0/obj/courrier.class.php (rev 0)
+++ branches/5.1.0/obj/courrier.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,1334 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/courrier.class.php";
+
+class courrier extends courrier_gen {
+
+ var $maj; // affichage diffusion
+ var $validation; // affichage diffusion
+ var $id; // affichage diffusion en ajout
+ var $archive; // archive si traitement est modifie
+ var $traitement; // garder la valeur pour ajouterapres
+ // variable utilisee pour savoir si il y a un courrier dans scan ou dossier
+ var $nb_scan; // nombre de scan dans le repertoire de scan
+ var $nature=1; // variable par defaut pour fonctionnement recherche dossier
+
+
+ function init_class_actions() {
+ // On récupère les actions génériques définies dans la méthode
+ // d'initialisation de la classe parente
+ parent::init_class_actions();
+ // valider_diffusion
+ $this->class_actions[5] = array(
+ "identifier" => "diffuser",
+ "portlet" => array(
+ "type" => "action-direct-with-confirmation",
+ "libelle" => _("valider la diffusion"),
+ "order" => 10,
+ "class" => "copy-16",
+ ),
+ "view" => "formulaire",
+ "method" => "valider_diffusion",
+ "button" => "diffuser",
+ "permission_suffix" => "diffuser",
+ );
+ }
+
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ $form->setType('texte', 'hidden');
+ $form->setType('om_etat', 'hidden');
+ $form->setType('nature','selecthiddenstatic');
+ if ($maj==0 ){
+ $form->setType('registre', 'hidden');
+ $form->setType('ajout_emetteur', 'checkbox');
+ $form->setType('traitement', 'autocomplete');
+ $form->setType('emetteur', 'autocomplete');
+ $form->setType('categorie_courrier', 'autocomplete');
+ $form->setType('affaire_reference', 'autocomplete');
+ $form->setType('service_origine', 'hidden');
+ $form->setType('objetcourrier', 'html_courrier');
+ }
+ if($maj==1){
+ if ( $this->nb_scan==1 ){
+ $form->setType('scan_pdf','afficheall');
+ }else{
+ $form->setType("scan_pdf",'hidden');
+ }
+ $form->setType('affaire_reference', 'hidden');
+ $form->setType('traitement', 'autocomplete');
+ $form->setType('emetteur', 'autocomplete');
+ $form->setType("lib_scan_pdf",'hidden');
+ $form->setType('objetcourrier_ajout', 'hidden');
+ $form->setType('ajout_emetteur', 'hidden');
+ $form->setType('categorie_courrier','selecthiddenstatic');
+ $form->setType('service_origine', 'hidden');
+ $form->setType('objetcourrier', 'html_courrier');
+ }
+ if($maj==3){
+ if ( $this->nb_scan==1 ){
+ $form->setType('scan_pdf','afficheall');
+ }else{
+ $form->setType("scan_pdf",'hidden');
+ }
+ $form->setType("lib_scan_pdf",'hidden');
+ $form->setType('categorie_courrier','hidden');
+ $form->setType('objetcourrier_ajout', 'hidden');
+ $form->setType('emetteur','hidden');
+ $form->setType('ajout_emetteur', 'hidden');
+ $form->setType('traitement', 'hidden');
+ $form->setType('affaire_reference', 'hidden');
+ $form->setType('objetcourrier_ajout', 'hidden');
+ $form->setType('service_origine', 'selecthiddenstatic');
+ }
+ }
+
+ // ===============================================
+ // surcharge pour traitement en service et affaire
+ // ===============================================
+
+ function setSelect(&$form, $maj, &$dnu1 = NULL, $dnu2 = NULL) {
+ parent::setSelect($form, $maj,$db,$dnu2 = NULL);
+ if($maj<2){
+ // Initialise les paramétres
+ $params = array();
+ // Surcharge visée pour l'ajout
+ $params['obj'] = "service";
+ // Table de l'objet
+ $params['table'] = "service";
+ // Permission d'ajouter
+ $params['droit_ajout'] = false;
+ // Critères de recherche
+ $params['criteres'] = array(
+ "service.libelle" => _("service"),
+ "service.code" => _("code"),
+ );
+ $params['group_by'] = array();
+ // Tables liées
+ $params['jointures'] = array();
+ // restriction de service hiérarchique
+ $ajout_actuel=0; //ajout du service actuel de traitement en maj
+ $traitement_actuel = 0; // service actuel en maj
+ if($maj==1){ // recherche du service actuel
+ if(is_numeric($this->get_traitement()))
+ $traitement_actuel = $this->get_traitement();
+ }
+ $i=0;
+ $selection = "(";
+ // liste hierarchique
+ // attention elle ne se fait pas en temps reel
+ // suivant la variable session
+ foreach($_SESSION['sous_service'] as $elt) {
+ $i++;
+ if($i!=1) // pas de virgule sur le 1er element
+ $selection .= ",";
+ $selection .= "'".$elt."'";
+ // test si le service de traitement est dans la liste
+ // hierarchique
+ if($elt==$traitement_actuel and $maj==1)
+ $ajout_actuel=1;
+ }
+ // on ajoute le service actuel en maj si il n'est pas
+ // dans la liste hierarchique
+ if($ajout_actuel==0 and $maj==1)
+ $selection .= ",'".$traitement_actuel."'";
+ $selection .= ")";
+ $params['where'] = 'service.service in '.$selection;
+ if($maj==0){
+ $params['where'] .= ' and service.en_cours is true ';
+ }
+ // Colonnes ID et libellé du champ -> affichage de l autocomplete
+ // (si plusieurs pour le libellé alors une concaténation est faite)
+ $params['identifiant'] = "service.service";
+ $params['libelle'] = array ("service.code","service.libelle");
+ // Envoi des paramètres
+ $form->setSelect("traitement", $params);
+
+ // *** emetteur
+ // Initialise les paramétres
+ $params = array();
+ // Surcharge visée pour l'ajout
+ $params['obj'] = "emetteur";
+ // Table de l'objet
+ $params['table'] = "emetteur";
+ // Permission d'ajouter
+ $params['droit_ajout'] = false;
+ // Critères de recherche
+ $params['criteres'] = array(
+ "emetteur.emetteurnom" => _("nom"),
+ "emetteur.emetteurprenom" => _("prenom"),
+ );
+ $params['group_by'] = array();
+ // Tables liées
+ $params['jointures'] = array();
+ if($maj==0)
+ $params['where'] = 'emetteur.en_cours is true';
+ // Colonnes ID et libellé du champ -> affichage de l autocomplete
+ // (si plusieurs pour le libellé alors une concaténation est faite)
+ $params['identifiant'] = "emetteur.emetteur";
+ $params['libelle'] = array ("emetteur.emetteurnom","emetteur.emetteurprenom");
+ // Envoi des paramètres
+ $form->setSelect("emetteur", $params);
+ }
+ if($maj==0){
+ // Initialise les paramétres
+ $params = array();
+ // Surcharge visée pour l'ajout
+ $params['obj'] = "categorie_courrier";
+ // Table de l'objet
+ $params['table'] = "categorie_courrier";
+ // Permission d'ajouter
+ $params['droit_ajout'] = false;
+ // Critères de recherche
+ $params['criteres'] = array(
+ "categorie_courrier.libelle" => _("nom"),
+ //"service.libelle" => _("service"),
+ );
+ /*
+ $params['group_by'] =array(
+ "categorie_courrier.libelle",
+ //"service.libelle",
+ );
+ */
+ $params['group_by'] = array();
+ $params['where'] = 'categorie_courrier.en_cours is true';
+ $params['jointures'] = array();
+ // Tables liées
+ //$params['jointures'] = array(
+ // "categorie_courrier_service on categorie_courrier_service.categorie_courrier=categorie_courrier.categorie_courrier",
+ // "service on categorie_courrier_service.service=service.service",);
+ // $params['where'] = "categorie_courrier_service.type_diffusion=1";
+ //$params['where'] = 'categorie_courrier is true';
+ // Colonnes ID et libellé du champ -> affichage de l autocomplete
+ // (si plusieurs pour le libellé alors une concaténation est faite)
+ $params['identifiant'] = "categorie_courrier.categorie_courrier";
+ $params['libelle'] = array ("categorie_courrier.libelle");//,"service.libelle");
+ // Envoi des paramètres
+ $form->setSelect("categorie_courrier", $params);
+
+ // Initialise les paramétres *** AFFAIRE ***
+ $params = array();
+ // Surcharge visée pour l'ajout
+ $params['obj'] = "affaire";
+ // Table de l'objet
+ $params['table'] = "affaire";
+ // Permission d'ajouter
+ $params['droit_ajout'] = false;
+ // Critères de recherche
+ $params['criteres'] = array(
+ "affaire.libelle" => _("libelle"),
+ "affaire.emetteurnom" => _("nom"),
+ );
+ $params['group_by'] = array();
+ // Tables liées
+ //$params['jointures'] = array("service inner join service.service=affaire.service",);
+ $params['where'] = 'affaire.en_cours is true';
+ $params['where'] .= ' and service_origine ='.$_SESSION['service'];
+ // Colonnes ID et libellé du champ -> affichage de l autocomplete
+ // (si plusieurs pour le libellé alors une concaténation est faite)
+ $params['identifiant'] = "affaire.affaire";
+ $params['libelle'] = array ("affaire.libelle","affaire.emetteurnom");
+ // Envoi des paramètres
+ $form->setSelect("affaire_reference", $params);
+ }
+ }
+
+
+ function setOnchange(&$form,$maj){
+ parent::setOnchange($form,$maj);
+ $form->setOnchange("emetteurnom","this.value=this.value.toUpperCase()");
+ $form->setOnchange("emetteurville","this.value=this.value.toUpperCase()");
+ }
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ if($validation == 0) {
+ if($maj==0){
+ $form->setVal('datearrivee', date('Y-m-d'));
+ $form->setVal('nature', $this->nature);
+ $form->setVal("type_courrier",1);
+ $form->setVal("service_origine",$_SESSION['service']);
+ }
+
+ }// fin validation
+ $this->maj=$maj; // affichage diffusion
+ $this->validation=$validation; // affichage diffusion
+ if($maj>0){ // recherche dans dossier du courrier arrive et traitement
+ $form->setVal('scan_pdf', $this->get_dossier());
+ $form->setVal('traitement', $this->get_traitement());
+ }
+ }
+
+ function setLayout(&$form, $maj) {
+ if($this->nb_scan>0){
+ $form->setBloc('scan_pdf','D',"","col_7"); // bloc a gauche
+ $form->setFieldset('scan_pdf','D',_('Fichier'), "collapsible");
+ if($maj!=0){
+ $form->setFieldset('scan_pdf','F','');
+ $form->setBloc('scan_pdf','F',''); // fin bloc de gauche
+ }else{
+ $form->setBloc('lib_scan_pdf','F','');
+ $form->setBloc('lib_scan_pdf','F',''); // fin bloc de gauche
+ }
+ $temp="col_5";
+ }else{
+ $temp="";
+ }
+ // bloc de droite
+ if($maj!=0){
+ $form->setBloc('courrier','D',"",$temp); // bloc droite
+ $form->setFieldset('courrier','D',_('TYPE DE COURRIER'), "startClosed");
+ $temp= "startClosed";
+ }else{
+ $form->setBloc('type_courrier','D',"",$temp); // bloc droite
+ $form->setFieldset('type_courrier','D',_('TYPE DE COURRIER'), "startClosed");
+ $temp="collapsible";
+ }
+ $form->setFieldset('nature','F','');
+ //horodatage
+ $form->setFieldset('datearrivee','D',_('DATE'), "collapsible");
+ $form->setFieldset('datecourrier','F','');
+
+ //affaire
+ $form->setFieldset('affaire_reference','D',_('AFFAIRE'), "startClosed" );
+ $form->setFieldset('affaire_reference','F','');
+
+
+ //CORRESPONDANT EXISTANT
+ $form->setFieldset('emetteur','D',_('EMETTEUR EXISTANT'), $temp );
+ $form->setFieldset('emetteur','F','');
+
+ //traitement categorie
+ $form->setFieldset('categorie_courrier','D', 'TRAITEMENT CATEGORIE', $temp);
+ $form->setFieldset('objetcourrier_ajout','F','');
+
+ //CORRESPONDANT
+ $form->setFieldset('civilite','D','EMETTEUR', "collapsible");
+ $form->setFieldset('ajout_emetteur','F','');
+
+ //traitement service
+ if($maj==3){
+ $temp="OBJET";
+ }else{
+ $temp='TRAITEMENT SERVICE';
+ }
+ $form->setFieldset('traitement','D', $temp, "collapsible");
+ $form->setFieldset('objetcourrier','F','');
+ $form->setBloc('objetcourrier','F'); // fin du bloc de droite
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('datearrivee', _('arrive le').' ');
+ $form->setLib('datecourrier', _('du').' ');
+ $form->setLib('scan_pdf','');
+ $form->setLib('datearrivee', _('arrive').' ');
+ $form->setLib('categorie_courrier',"");
+ $form->setLib('type_correspondant',_('type'));
+ $form->setLib('emetteurnom',_('nom'));
+ $form->setLib('emetteurprenom',_('prenom'));
+ $form->setLib('emetteurad2',_('adresse2'));
+ $form->setLib('emetteurad1',_('adresse1'));
+ $form->setLib('lib_scan_pdf','');
+ $form->setLib('objetcourrier',"");
+ $form->setLib('objetcourrier_ajout',"");
+ $form->setLib('emetteur','');
+ $form->setLib('affaire_reference','');
+ $form->setLib('traitement','');
+ $form->setLib('service_origine',_('proprietaire'));
+ if ($maj==0) {
+ $form->setLib('ajout_emetteur',"<span class=\"om-icon om-icon-16 om-icon-fix add-16\" title=\""
+ ._("ajouter correspondant")."\">"._("ajouter")."</span>");
+ }
+ }
+
+
+
+ function triggerajouter($id, &$db = NULL, $val = Array(), $DEBUG = NULL) {
+ parent::triggerajouter($id,$db,$val,$DEBUG);
+ // service origine
+ //$this->valF['service_origine'] = $_SESSION['service'];
+ // creation emetteur si ajout_emetteur est coché
+ if($val['ajout_emetteur']=='Oui'){
+ // Instance de la classe emetteur
+ require_once '../obj/emetteur.class.php';
+ $emetteur = new emetteur("]", $db, $DEBUG);
+ // Données à envoyer
+ $valF['emetteur'] = "";
+ $valF['civilite'] = $val['civilite'];
+ $valF['emetteurnom'] = $val['emetteurnom'];
+ $valF['emetteurprenom'] = $val['emetteurprenom'];
+ $valF['emetteurad1'] = $val['emetteurad1'];
+ $valF['emetteurad2'] = $val['emetteurad2'];
+ $valF['emetteurcp'] = $val['emetteurcp'];
+ $valF['emetteurville'] = $val['emetteurville'];
+ $valF['tel'] = "";
+ $valF['type_correspondant'] = $val['type_correspondant'];
+ $valF['courriel'] = "";
+ $valF['en_cours'] = true;
+ // Ajoute le correspondant
+ $ajouter = $emetteur->ajouter($valF, $db, $DEBUG);
+ $this->f->isDatabaseError($ajouter);
+ // Récupère l'identifiant du correspondant
+ $this->valF['emetteur'] = $emetteur->valF["emetteur"];
+ }
+ return true;
+ }
+
+
+ function verifier( $val = Array(), &$db = NULL, $DEBUG = NULL) {
+ // les traitements suivants concernent la table courrier
+ // il est verifié que les champs obligatoires sont remplis à la fin
+ if($this->maj==0){
+ // Règle d'écriture du registre
+ if($this->nature==1)
+ $reg = $this->f->getParameter("registre_arrivee");
+ else
+ $reg = $this->f->getParameter("registre_depart");
+ // Si la règle est vide
+ if ($reg == "") {
+ $this->addToMessage(_("Une regle d'ecriture pour les registres doit etre renseignee.").
+ " "._("Veuillez contacter votre administrateur."));
+ return false;
+ }
+ // Création du numero de registre avec le pattern sus-cite
+ $reg=str_replace('[annee]', date('Y'), $reg);
+ if($this->nature==1)
+ $reg=str_replace('[seq]', $db->nextId(DB_PREFIXE."registre"), $reg);
+ else
+ $reg=str_replace('[seq]', $db->nextId(DB_PREFIXE."registre_depart"), $reg);
+ //
+ $this->f->addToLog("triggerajouter(): db->nextId(\"".DB_PREFIXE.'registre'."\");", VERBOSE_MODE);
+ $this->form->setVal('registre',$reg);
+ $this->valF['registre'] = $reg;
+ // service origine
+ $this->valF['service_origine'] = $_SESSION['service'];
+ // si l'emetteur est choisi alors on remplit les champs emetteurs
+ // avec l emetteur choisi
+ if ($val['emetteur']!= null) {
+ $sql = " SELECT * ";
+ $sql .= " FROM ".DB_PREFIXE."emetteur";
+ $sql .= " WHERE emetteur=".$this->valF['emetteur'];
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): trigger ajouter db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ while ($row=$res->fetchrow(DB_FETCHMODE_ASSOC)) {
+ if (!is_numeric($row['civilite'])) {
+ $this->valF['civilite'] = NULL;
+ } else {
+ $this->valF['civilite'] = $row['civilite'];
+ }
+ if ($row['emetteurnom'] == "") {
+ $this->valF['emetteurnom'] = NULL;
+ } else {
+ $this->valF['emetteurnom'] = $row['emetteurnom'];
+ }
+ if ($row['emetteurprenom'] == "") {
+ $this->valF['emetteurprenom'] = NULL;
+ } else {
+ $this->valF['emetteurprenom'] = $row['emetteurprenom'];
+ }
+ if ($row['emetteurad1'] == "") {
+ $this->valF['emetteurad1'] = NULL;
+ } else {
+ $this->valF['emetteurad1'] = $row['emetteurad1'];
+ }
+ if ($row['emetteurad2'] == "") {
+ $this->valF['emetteurad2'] = NULL;
+ } else {
+ $this->valF['emetteurad2'] = $row['emetteurad2'];
+ }
+ if ($row['emetteurcp'] == "") {
+ $this->valF['emetteurcp'] = NULL;
+ } else {
+ $this->valF['emetteurcp'] = $row['emetteurcp'];
+ }
+ if ($row['emetteurville'] == "") {
+ $this->valF['emetteurville'] = NULL;
+ } else {
+ $this->valF['emetteurville'] = $row['emetteurville'];
+ }
+ if (!is_numeric($row['type_correspondant'])) {
+ $this->valF['type_correspondant'] = NULL;
+ } else {
+ $this->valF['type_correspondant'] = $row['type_correspondant'];
+ }
+ }
+ }
+
+ if ($val['affaire_reference']!= null) {
+ $sql = " SELECT * ";
+ $sql .= " FROM ".DB_PREFIXE."affaire";
+ $sql .= " WHERE affaire=".$val['affaire_reference'];
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): trigger ajouter db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ while ($row=$res->fetchrow(DB_FETCHMODE_ASSOC)) {
+ if (!is_numeric($row['civilite'])) {
+ $this->valF['civilite'] = NULL;
+ } else {
+ $this->valF['civilite'] = $row['civilite'];
+ }
+ if ($row['emetteurnom'] == "") {
+ $this->valF['emetteurnom'] = NULL;
+ } else {
+ $this->valF['emetteurnom'] = $row['emetteurnom'];
+ }
+ if ($row['emetteurprenom'] == "") {
+ $this->valF['emetteurprenom'] = NULL;
+ } else {
+ $this->valF['emetteurprenom'] = $row['emetteurprenom'];
+ }
+ if ($row['emetteurad1'] == "") {
+ $this->valF['emetteurad1'] = NULL;
+ } else {
+ $this->valF['emetteurad1'] = $row['emetteurad1'];
+ }
+ if ($row['emetteurad2'] == "") {
+ $this->valF['emetteurad2'] = NULL;
+ } else {
+ $this->valF['emetteurad2'] = $row['emetteurad2'];
+ }
+ if ($row['emetteurcp'] == "") {
+ $this->valF['emetteurcp'] = NULL;
+ } else {
+ $this->valF['emetteurcp'] = $row['emetteurcp'];
+ }
+ if ($row['emetteurville'] == "") {
+ $this->valF['emetteurville'] = NULL;
+ } else {
+ $this->valF['emetteurville'] = $row['emetteurville'];
+ }
+ if (!is_numeric($row['type_correspondant'])) {
+ $this->valF['type_correspondant'] = NULL;
+ } else {
+ $this->valF['type_correspondant'] = $row['type_correspondant'];
+ }
+ if (!is_numeric($row['service'])) {
+ $val['traitement']= NULL;
+ } else {
+ $val['traitement'] = $row['service'];
+ }
+ if ($row['objetcourrier'] == "") {
+ $this->valF['objetcourrier']=_("affaire sans objet")." ".
+ $val['objetcourrier_ajout'];
+ } else {
+ $this->valF['objetcourrier']= $row['objetcourrier'].
+ " ".$val['objetcourrier_ajout'];
+ }
+ }
+ }
+ // on recupere objet courrier si categorie est utilisee
+ if ($this->valF['categorie_courrier']!= null) {
+ if ($this->valF['objetcourrier'] == "" )
+ $this->objetcourrier_categorie_courrier($val);
+ else{
+ $msg = _("l'objet du courrier est forcé, la categorie")." : ".
+ $val["categorie_courrier"]." ";
+ $msg .= _("n est pas prise en compte pour l'objet du courrier");
+ $this->addToMessage($msg);
+ }
+ if ($val['traitement']== null){
+ $val['traitement']=$this->traitement_categorie_courrier($val);
+ }
+ }
+ }
+ // verification des champs obligatoires dans la table
+ parent::verifier($val, $db, $DEBUG);
+ // verification du champ traitement obligatoire en ajout
+ if ($maj == 0 and $val['traitement']== null) {
+ $this->addToMessage( _('Le champ').' <span class="bold">'.
+ _("service de traitement").'</span> '._('est obligatoire'));
+ $this->correct = false;
+ }else{
+ $this->traitement = $val['traitement'];
+ }
+ }
+
+ function triggermodifier($id, &$db = NULL, $val = Array(), $DEBUG = NULL) {
+ parent::triggermodifier($id,$db,$val,$DEBUG);
+ // service origine
+ unset($this->valF['service_origine']);
+ }
+
+ // insertion automatique dans une autre table possible qu apres le nextId
+ function triggerajouterapres($id, &$db = NULL, $val = Array(), $DEBUG = NULL){
+ // insertion de l'affaire
+ if ($val['affaire_reference']!= null){
+ $this->insert_affaire_automatique($this->valF['courrier'],$db,
+ $val['affaire_reference'],$DEBUG);
+ }else{
+ $this->addToMessage( _("pas de classement en affaire"));
+ }
+ // traitement est en variable globale depuis verifier
+ // $val non valorise
+ if($this->traitement!=null)
+ $this->insert_diffusion_automatique($this->valF['courrier'],$db,
+ $val,$this->traitement, 1 ,$DEBUG);
+ else{
+ $this->addToMessage( _("attention, pas de service traitement"));
+ return false;
+ }
+ return true;
+ }
+
+ function triggermodifierapres($id, &$db = NULL, $val = Array(), $DEBUG = NULL) {
+ parent::triggermodifierapres($id,$db,$val,$DEBUG);
+ //changement de service traitement
+ $this->archive = $this->get_traitement();
+ if($this->archive!=$val["traitement"])
+ $this->changement_traitement($id,$db,$val,$DEBUG);
+ else
+ $this->addToMessage(_("pas de changement de service de traitement."));
+ }
+
+ // insertion de diffusion automatique :
+ // categorie ou service de traitement ou changement de service de traitement
+ function insert_diffusion_automatique($id,&$db,$val,$service, $type_diffusion, $DEBUG){
+ require_once '../obj/diffusion_courrier.class.php';
+ $diffusion = new diffusion_courrier("]", $db, $DEBUG);
+ // Données de la diffusion créées automatiquement
+ $valF["diffusion"]= "";
+ $valF['courrier'] = $id;
+ $valF['service'] = $service;
+ $valF['type_diffusion'] = $type_diffusion;
+ $valF['datediffusion'] = null;
+ $valF['dossier'] = $diffusion->diffusion_dossier($id,$db,$this->nature);
+ $valF['service_origine']= $_SESSION['service'];
+ $valF['etat_diffusion']= 1;
+ $valF['maj_date']='';
+ $valF['maj_login']='';
+ $valF['maj_hist']= '';
+ $valF['maj_comment']= _('diffusion automatique');
+ $ajouter = $diffusion->ajouter($valF, $db, $DEBUG);
+ database::isError($ajouter);
+ // Verifie que la diffusion a été ajoutée
+ if ($ajouter == false){
+ $this->addToMessage($diffusion->msg);
+ return false;
+ }
+ $this->addToMessage( _("diffusion")." ".$this->get_type_diffusion_libelle($type_diffusion)." ".
+ _("au service")." : ".$this->get_service_libelle($service));
+ return true;
+
+ }
+
+ // insertion d affaire automatique en ajout
+ function insert_affaire_automatique($id,&$db, $affaire, $DEBUG){
+ require_once '../obj/affaire_courrier.class.php';
+ $affaire_courrier = new affaire_courrier("]", $db, $DEBUG);
+ // Données de l'affaire créées automatiquement
+ $valF["affaire_courrier"]= "";
+ $valF['courrier'] = $id;
+ $valF['affaire'] = $affaire;
+ //$valF['maj_date']='';
+ //$valF['maj_login']='';
+ //$valF['maj_hist']= '';
+ //$valF['maj_comment']= _('affaire automatique');
+ $ajouter = $affaire_courrier->ajouter($valF, $db, $DEBUG);
+ database::isError($ajouter);
+ // Verifie que l'affaire a été ajoutée
+ if ($ajouter == false){
+ $this->addToMessage($affaire_courrier->msg);
+ return false;
+ }
+ $this->addToMessage( _("ajouter à l'affaire")." ".$this->get_affaire_libelle($affaire)." ");
+ return true;
+ }
+
+
+ function valider_diffusion() {
+ $sql = "update ".DB_PREFIXE."diffusion set etat_diffusion=2, datediffusion = '".
+ date('Y-m-d')."'";
+ $sql .= " where courrier = ".$this->getVal('courrier')."";
+ $sql .= " and etat_diffusion = 1";
+ $this->db->autocommit=true;
+ $res = $this->db->query($sql);
+ $this->f->isDatabaseError($res);
+ //$this->addToMessage($this->f->db->affectedRows()." "
+ // ._('diffusion(s) validee(s)'));
+ $message = $this->f->db->affectedRows()." "
+ ._('diffusion(s) validee(s)');
+ // transfert -> en copie
+ $sql = "update ".DB_PREFIXE."diffusion set type_diffusion=2 ";
+ $sql .= " where courrier = ".$this->getVal('courrier')." ";
+ $sql .= " and type_diffusion = 3";
+ $this->db->autocommit=true;
+ $res = $this->db->query($sql);
+ $this->f->isDatabaseError($res);
+ //$this->addToMessage($this->f->db->affectedRows()." "
+ // ._('transfert(s) en copie valide(s)'));
+ $message .= " - ".$this->f->db->affectedRows()." "
+ ._('transfert(s) en copie valide(s)');
+ $this->f->displayMessage("valid", $message);
+ }
+
+ // traitement d objetcourrier depuis la categorie
+
+ function objetcourrier_categorie_courrier($val){
+ $sql = " SELECT objetcourrier";
+ $sql .= " FROM ".DB_PREFIXE."categorie_courrier";
+ $sql .= " WHERE categorie_courrier=".$val['categorie_courrier'];
+ // Exécution de la requête
+ $res = $this->f->db->getOne($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ if($res){
+ // remplacement de variable dans l objet courrier
+ $res=str_replace("&nom",$this->valF['emetteurnom'],$res);
+ $res=str_replace("&prenom",$this->valF['emetteurprenom'],$res);
+ $res=str_replace("&adresse1",$this->valF['emetteurad1'],$res);
+ $res=str_replace("&adresse2",$this->valF['emetteurad2'],$res);
+ $res=str_replace("&cp",$this->valF['emetteurcp'],$res);
+ $res=str_replace("&ville",$this->valF['emetteurville'],$res);
+
+ $res=str_replace("&amp;nom",$this->valF['emetteurnom'],$res);
+ $res=str_replace("&amp;prenom",$this->valF['emetteurprenom'],$res);
+ $res=str_replace("&amp;adresse1",$this->valF['emetteurad1'],$res);
+ $res=str_replace("&amp;adresse2",$this->valF['emetteurad2'],$res);
+ $res=str_replace("&amp;cp",$this->valF['emetteurcp'],$res);
+ $res=str_replace("&amp;ville",$this->valF['emetteurville'],$res);
+ //
+ $this->valF['objetcourrier']=$res." ".$val['objetcourrier_ajout'];
+ }else
+ $this->valF['objetcourrier']=_("pas d'objet de courrier rempli dans catégorie");
+ }
+
+ // service traitement depuis la categorie
+
+ function traitement_categorie_courrier($val){
+ $sql = " SELECT service";
+ $sql .= " FROM ".DB_PREFIXE."categorie_courrier";
+ $sql .= " WHERE categorie_courrier=".$val['categorie_courrier'];
+ // Exécution de la requête
+ $res = $this->f->db->getOne($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ return $res;
+ }
+
+ /*
+ * changement de service en traitement en modification
+ * diffusion deja envoyer -> transfert + creation d une nouvelle diffusion
+ * sinon -> mise a jour + diffusion a un nouveau service
+ *
+ */
+
+ function changement_traitement($id,&$db,$val,$DEBUG) {
+ // recherche de l ancienne diffusion
+ $sql = "select diffusion, type_diffusion, etat_diffusion, service.libelle as service, ";
+ $sql .= " etat_diffusion, dossier, datediffusion ";
+ $sql .= " from ".DB_PREFIXE."diffusion inner join ";
+ $sql .= " ".DB_PREFIXE."service on diffusion.service=service.service ";
+ $sql .= " where courrier = ".$val['courrier']." and type_diffusion=1";
+ $res = $this->db->query($sql);
+ $this->f->isDatabaseError($res);
+ // recuperation de l anciennne diffusion
+ while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC) ){
+ If($row["etat_diffusion"]==1){ // non diffuse
+ $this->update_diffusion_service($this->valF['courrier'],$db,
+ $val,$val['traitement'], 1 ,$row["diffusion"],
+ $row["etat_diffusion"], $row["dossier"],$DEBUG);
+ $this->addToMessage(_("changement du service de traitement")." ".
+ $this->get_service_libelle($val['traitement']));
+ }else{ // diffuse
+ $this->insert_diffusion_automatique($this->valF['courrier'],$db,
+ $val,$val['traitement'], 1 ,$DEBUG);
+ $this->addToMessage(_("nouveau service de traitement pour")." ".
+ $this->get_service_libelle($val['traitement']));
+
+ $this->update_diffusion_type($this->valF['courrier'],$db,
+ $val,$this->archive, 3 ,$row["diffusion"],2, $row["dossier"],
+ $row["datediffusion"],$DEBUG);
+ $this->addToMessage(_("transfert traitement pour")." ".$row["service"]);
+
+ }
+ }
+ }
+
+ // changement de service de traitement pour courrier non diffuse
+ function update_diffusion_service($id,&$db,$val,$service,
+ $type_diffusion, $diffusion, $etat_diffusion, $dossier, $DEBUG){
+ $valF['diffusion']= $diffusion;
+ $valF['courrier'] = $id;
+ $valF['service'] = $service;
+ $valF['type_diffusion'] = $type_diffusion;
+ $valF['service_origine']= $_SESSION['service'];
+ $valF['etat_diffusion']= $etat_diffusion;
+ $valF['datediffusion'] = null;
+ $valF['dossier'] = $dossier;
+ $valF['maj_date']= '';
+ $valF['maj_login']= '';
+ $valF['maj_hist']= '';
+ $valF['maj_comment']= _("changement de service traitement");
+ require_once '../obj/diffusion_courrier.class.php';
+ $diffusion = new diffusion_courrier($valF, $db, $DEBUG);
+ $modifier = $diffusion->modifier($valF, $db, $DEBUG);
+ database::isError($modifier);
+ // Verifie que la diffusion a été ajoutée
+ if ($modifier == false){
+ $this->addToMessage($diffusion->msg);
+ return false;
+ }
+ return true;
+
+ }
+
+ // changement de type diffusion pour courrier deja diffuse
+ function update_diffusion_type($id,&$db,$val,$service,
+ $type_diffusion, $diffusion, $etat_diffusion,$dossier,
+ $datediffusion, $DEBUG){
+ // Données de la diffusion
+ $valF['diffusion']= $diffusion;
+ $valF['courrier'] = $id;
+ $valF['service'] = $service;
+ $valF['type_diffusion'] = $type_diffusion;
+ $valF['service_origine']= $_SESSION['service'];
+ $valF['etat_diffusion']= $etat_diffusion;
+ $valF['datediffusion'] = $datediffusion;
+ $valF['dossier'] = $dossier;
+ $valF['maj_date']= '';
+ $valF['maj_login']= '';
+ $valF['maj_hist']= '';
+ $valF['maj_comment']= _("changement de service traitement");
+ require_once '../obj/diffusion_courrier.class.php';
+ $diffusion = new diffusion_courrier($valF, $db, $DEBUG);
+ $modifier = $diffusion->modifier($valF, $db, $DEBUG);
+ database::isError($modifier);
+ // Verifie que la diffusion a été ajoutée
+ if ($modifier == false){
+ $this->addToMessage($diffusion->msg);
+ return false;
+ }
+ return true;
+
+ }
+
+
+
+
+ /*
+ * recherche le dossier "arrive" ou depart (a voir)
+ * (prend le premier trouver si plusieurs)
+ * retourne l id du dossier
+ *
+ */
+
+ function get_dossier(){
+ // dossier arrive
+ $sql="select dossier from ".DB_PREFIXE."dossier where courrier =".$this->getVal('courrier').
+ " and type_dossier =".$this->nature;
+ $dossier = $this->db->getOne($sql);
+ if (database::isError($dossier)) die($dossier->getMessage().$sql);
+ $this->addToLog("courrier.class/dossier: db->query(\"".$sql."\");",VERBOSE_MODE);
+ if(is_numeric($dossier))
+ $this->nb_scan=1;
+ else
+ $this->nb_scan=0;
+ return $dossier;
+ }
+
+ /*
+ * recherche le service en diffusion traitement "arrive"
+ * (prend le premier trouver si plusieurs)
+ * retourne l id du service
+ *
+ */
+ function get_traitement(){
+ // dossier arrive
+ $sql="select service from ".DB_PREFIXE."diffusion where courrier =".$this->getVal('courrier').
+ " and type_diffusion =1";
+ $traitement = $this->db->getOne($sql);
+ if (database::isError($traitement)) die($traitement->getMessage().$sql);
+ $this->addToLog("courrier.class/traitement: db->query(\"".$sql."\");",VERBOSE_MODE);
+ return $traitement;
+ }
+
+ function get_type_diffusion_libelle($type_diffusion){
+ // pas de recherche en base de type_diffusion - optimisation
+ $libelle=_("type diffusion libelle absent");
+ if($type_diffusion==1) $libelle= _("traitement");
+ if($type_diffusion==2) $libelle= _("copie");
+ return $libelle;
+ }
+
+ function get_service_libelle($service){
+ // recherche du libelle service
+ if(is_numeric($service)){
+ $sql="select libelle from ".DB_PREFIXE."service where service =".$service;
+ $service_libelle = $this->db->getOne($sql);
+ if (database::isError($service_libelle)) die($service_libelle->getMessage().$sql);
+ $this->addToLog("courrier.class/service_libelle: db->query(\"".$sql."\");",VERBOSE_MODE);
+ }else
+ $service_libelle= _("libelle service non trouve");
+ return $service_libelle;
+ }
+
+ function get_affaire_libelle($affaire){
+ // recherche du libelle de l affaire
+ if(is_numeric($affaire)){
+ $sql="select libelle from ".DB_PREFIXE."affaire where affaire =".$affaire;
+ $affaire_libelle = $this->db->getOne($sql);
+ if (database::isError($affaire_libelle)) die($affaire_libelle->getMessage().$sql);
+ $this->addToLog("courrier.class/affaire_libelle: db->query(\"".$sql."\");",VERBOSE_MODE);
+ }else
+ $affaire_libelle= _("libelle affaire non trouve");
+ return $affaire_libelle;
+ }
+
+ function get_affaire($courrier){
+ if(is_numeric($courrier)){
+ $sql="select affaire from ".DB_PREFIXE.
+ "affaire_courrier where courrier =".$courrier;
+ $affaire = $this->db->getOne($sql);
+
+ if (database::isError($affaire)) die($affaire->getMessage().$sql);
+ $this->addToLog("courrier.class/affaire_libelle: db->query(\"".$sql."\");",VERBOSE_MODE);
+ }else
+ $affaire= 0;
+ return $affaire;
+ }
+
+ function get_id_etat($etat){
+ if(is_numeric($etat)){
+ $sql="select id from ".DB_PREFIXE.
+ "om_etat where om_etat =".$etat;
+ $id = $this->db->getOne($sql);
+ if (database::isError($affaire)) die($affaire->getMessage().$sql);
+ $this->addToLog("courrier.class/id_etat: db->query(\"".$sql."\");",VERBOSE_MODE);
+ }else
+ $id= "";
+ return $id;
+ }
+
+ function edition_courrier(){
+ // Vérification de l'accessibilité sur l'élément
+ $this->checkAccessibility();
+ // Récupération de ses paramètres
+ $collectivite = $this->f->getCollectivite($_SESSION['collectivite']);
+ // $collectivite est un tableau avec le parametre om_collectivite_idx
+ // Array ( [om_collectivite_idx] => 1
+ // [registre_arrivee] => [annee]-[seq]
+ // [registre_depart] => [annee]-[seq]-D
+ // [scan] => scan [ville] => LIBREVILLE )
+ // Génération du PDF
+ $this->setValFFromVal();
+ $id_etat=$this->get_id_etat($this->valF['om_etat']);
+ $result = $this->compute_pdf_output('etat', $id_etat,
+ $collectivite,
+ $this->getVal(($this->clePrimaire)));
+ // Affichage du PDF
+ $this->expose_pdf_output(
+ $result['pdf_output'],
+ $result['filename']
+ );
+
+ }
+
+ // finalise le texte de type depart
+ function finalize_depart($val = array()) {
+
+ // Cette méthode permet d'exécuter une routine en début des méthodes
+ // dites de TREATMENT.
+ $this->begin_treatment(__METHOD__);
+
+ // Traitement de la finalisation
+ $ret = $this->manage_finalizing("finalize", $val, 2);
+
+ // Si le traitement retourne une erreur
+ if ($ret !== true) {
+ // Termine le traitement
+ return $this->end_treatment(__METHOD__, false);
+ }
+ // Termine le traitement
+ return $this->end_treatment(__METHOD__, true);
+ }
+
+ // finalise le texte de type autre
+ function finalize_autre($val = array()) {
+
+ // Cette méthode permet d'exécuter une routine en début des méthodes
+ // dites de TREATMENT.
+ $this->begin_treatment(__METHOD__);
+
+ // Traitement de la finalisation
+ $ret = $this->manage_finalizing("finalize", $val, 3);
+
+ // Si le traitement retourne une erreur
+ if ($ret !== true) {
+ // Termine le traitement
+ return $this->end_treatment(__METHOD__, false);
+ }
+ // Termine le traitement
+ return $this->end_treatment(__METHOD__, true);
+ }
+
+ /**
+ * Finalisation des documents.
+ * cette fonction a pour objet de mettre le document
+ * texte dans le dossier en format pdf
+ */
+
+ function manage_finalizing($mode = null, $val = array(), $type_dossier) {
+ // messages de retour
+ $admin_msg_error = _("Veuillez contacter votre administrateur.");
+ $file_msg_error = _("Erreur de traitement de fichier.")
+ ." ".$admin_msg_error;
+ $bdd_msg_error = _("Erreur de base de données.")
+ ." ".$admin_msg_error;
+ $log_msg_error = "Finalisation non enregistrée - courrier = %s - uid fichier = %s";
+ $this->setValFFromVal();
+ if($this->valF['texte']!= "" and $this->valF['om_etat']!= "" ){
+ // Si on finalise le document
+ $id_etat=$this->get_id_etat($this->valF['om_etat']);
+ if ($mode == "finalize"){
+ $this->begin_treatment(__METHOD__);
+ if($type_dossier==2)
+ $temp='depart';
+ else
+ $temp='autre';
+ $courrier=$this->getVal($this->clePrimaire);
+ $collectivite = $this->f->getCollectivite($_SESSION['collectivite']);
+ // Génération du PDF
+ $result = $this->compute_pdf_output('etat', $id_etat,
+ $collectivite,
+ $courrier);
+ $pdf_output = $result['pdf_output'];
+ //Métadonnées du document
+ $metadata = array(
+ 'filename' => 'depart_'.$courrier.'.pdf',
+ 'mimetype' => 'application/pdf',
+ 'size' => strlen($pdf_output),
+ "typedossier" => $temp,
+ "datecourrier" => $this->valF['datecourrier'],
+ "registre" => $this->valF['registre'],
+ "emetteur" => $this->valF['emetteurnom']." ".
+ $this->valF['emetteurprenom'],
+ "emetteur_adresse" => $this->valF['emetteurad1']." ".
+ $this->valF['emetteurad2'],
+ "emetteur_cpville" => $this->valF['emetteurcp']." ".
+ $this->valF['emetteurville'],
+ );
+ $uid = $this->f->storage->create($pdf_output, $metadata);
+ $this->addToMessage($iud);
+ // Creation du dossier
+ require_once '../obj/dossier.class.php';
+ $dossier = new dossier("]", $db, $DEBUG);
+ // Données
+ $valG=array();
+ $valG['dossier']= "";
+ $valG['fichier'] = $uid;
+ $valG['courrier'] = $courrier;
+ $valG['datedossier'] = date('d/m/Y');
+ $valG['type_dossier'] = $type_dossier;
+ $valG['observation'] = _("saisie numerisee");
+ $valG['filename'] = 'depart_'.$courrier.'.pdf';
+ $valG['service_origine'] = $_SESSION['service'];
+ $valG['key']="";
+ // Ajoute le dossier
+ $ajouter = $dossier->ajouter($valG, $db, $DEBUG);
+ if ($ajouter == true) {
+ // Message de confirmation
+ $this->addToMessage($dossier->msg);
+ $message = _("Creation du dossier depuis le texte du courrier depart.");
+ $this->addToMessage($message);
+ return $this->end_treatment(__METHOD__, true);
+ }else{
+ // Message d'erreur
+ $message = _("La creation du dossier n'est pas possible depuis le pdf scanne.");
+ $this->addToMessage($dossier->msg);
+ $this->addToMessage($file_msg_error);
+ $this->addToLog(sprintf($log_msg_error, $courrier, $uid));
+ return $this->end_treatment(__METHOD__, false);
+ }
+ }
+ }else{
+ $this->addToMessage(_("vous devez rédiger le texte qui est vide"));
+ return $this->end_treatment(__METHOD__, false);
+ }
+
+ /*
+ // Si on définalise le document
+ if ($mode == "unfinalize") {
+ //
+ $etat = _('définalisation');
+ // Récupération de l'uid du document finalisé -> ou est il stocké ?
+ $uid = $this->getVal("dossier");
+ }
+ */
+ // Si on définalise l'UID doit être défini
+ // Si on finalise la création/modification du fichier doit avoir réussi
+
+ if ($uid == '' || $uid == 'OP_FAILURE' ) {
+ $this->addToMessage($file_msg_error);
+ $this->addToLog(sprintf($log_msg_error, $courrier, $uid));
+ return $this->end_treatment(__METHOD__, false);
+ }
+
+ $this->addToLog(sprintf($log_msg_error, $courrier, $uid));
+ return $this->end_treatment(__METHOD__, false);
+ }
+
+
+
+
+
+ function courrier_texte_dossier(){
+ // output pdf
+ $pdf->Output($val["lib_scan_pdf"], 'F');
+ // Stockage
+ $uid = $this->f->storage->create($val["lib_scan_pdf"], $metadata, "from_path");
+ }
+
+ // =================================================================
+ // affichage et saisie des diffusions copies
+ // =================================================================
+
+ /**
+ * Point d'entrée permettant d'afficher des informations spécifiques.
+ *
+ *
+ * affichage de la diffusion en copie et traitement
+ * affichage en saisie
+ * - apres validation en insert pour saisie de copie (courrier existant)
+ * - avant validation en update
+ *
+ * @return void
+ *
+ */
+ function form_specific_content_after_portlet_actions($maj) {
+ if(($maj==1 and $this->correct!=1)
+ or $maj==3
+ or($maj==0 and $this->correct)){
+ if($maj==0){
+ $courrier=$this->id; // surcharge de setId()
+ }else{
+ $courrier=$this->getVal('courrier');
+ }
+
+ echo "<div id=\"affichage_diffusion\" class=\"formEntete ui-corner-all\">";
+ $this->affichediffusion_data($courrier,"origine");
+ echo "</div>";
+ }
+ }
+
+
+ /* cette surcharge permet de recuperer l id en ajouter pour les
+ * diffusions de copies
+ */
+
+ function setId(&$db = null) {
+ //numero automatique
+ $this->valF[$this->clePrimaire] = $this->f->db->nextId(DB_PREFIXE.$this->table);
+ // id
+ $this->id=$this->valF[$this->clePrimaire];
+ }
+
+ /*
+ * affichage et ajout de diffusion en courrier
+ *
+ * Cette méthode à surcharger permet d'afficher des informations
+ * spécifiques après le formulaire.
+ *
+ * scripts associes :
+ * javascript: app/js/script.js :deleteservice et getservice
+ * php : app/rechercheservice.form.php
+ *
+ * @return void
+ */
+ function affichediffusion_data($courrier, $acces_courrier){
+ // sql
+ $nature=$this->getVal('nature');
+ $sql = "select diffusion.diffusion, service.libelle as service, type_diffusion.libelle as type, ";
+ $sql .= " etat_diffusion.libelle as etat, to_char(diffusion.datediffusion ,'DD/MM/YYYY') as "._("datediffusion").", ";
+ $sql .= " diffusion.etat_diffusion, diffusion.type_diffusion ";
+ $sql .= " from ".DB_PREFIXE."diffusion ";
+ $sql .= " left join ".DB_PREFIXE."service on service.service=diffusion.service " ;
+ $sql .= " left join ".DB_PREFIXE.
+ "type_diffusion on type_diffusion.type_diffusion=diffusion.type_diffusion " ;
+ $sql .= " left join ".DB_PREFIXE.
+ "etat_diffusion on etat_diffusion.etat_diffusion=diffusion.etat_diffusion " ;
+ $sql .= " where diffusion.courrier = ".$courrier;
+ if($this->maj == 1) // on n affiche pas traitement en modification
+ $sql .= " and diffusion.type_diffusion = 2";
+ $res=$this->db->query($sql);
+ if (database::isError($res))
+ die($res->getDebugInfo()." ".$sql);
+ else {
+ if ($this->maj < 2)
+ $temp = _("Diffuser les copies");
+ else
+ $temp = _("Liste de diffusion");
+ echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\"><legend>".$temp."</legend>";
+ echo "<table class=\"tab-tab\">";
+ echo "<tr class=\"ui-tabs-nav ui-accordion ui-state-default tab-title\">";
+ echo "<th class=\"icons\">";
+ // ajouter des diffusions en copie en mode ajouter et modifier
+ if ($this->maj < 2 or $acces_courrier=="traitement") {
+ echo "<a id=\"activator\" href=\"\" onclick=\"getservice(".$courrier
+ .",".$nature.");return false;\" ><span class=\"om-icon om-icon-16 om-icon-fix add-16\" title=\""
+ ._("diffuser un courrier en copie")."\">"._("diffuser un courrier en copie")."</span></a>";
+ }
+ echo "</th>";
+ // affichage des entetes
+ echo "<th class=\"title\">"._("Id")."</th>";
+ echo "<th class=\"title\">"._("service")."</th>";
+ echo "<th class=\"title\">"._("date")."</th>";
+ echo "<th class=\"title\">"._("type")."</th>";
+ echo "<th class=\"title\">"._("etat")."</th>";
+ echo "</tr>";
+ $i=0;
+ $oddeven=array("odd","even");
+ while ($line=$res->fetchrow(DB_FETCHMODE_ASSOC)) {
+ echo "<tr class=\"tab-data ".$oddeven[$i%2]."\">";
+ echo "<td class=\"icons\">";
+ // Pour ne pas supprimer une diffusion deja envoyé +
+ // et ne pas supprimer une diffusion en traitement
+ if (($this->maj != 3 or $acces_courrier="traitement")
+ and $line['type_diffusion']==2
+ and $line['etat_diffusion']==1) {
+ echo "<a href=\"\" onclick=\"deleteservice(".$line['diffusion'].",".$courrier.");return false;\" ><span class=\"om-icon om-icon-16 om-icon-fix delete-16\" title=\""._("Supprimer le lien")."\">"._("Supprimer le lien")."</span></a>";
+ }
+ echo "</td>";
+ // affichage des lignes
+ $line_link_content='';
+ echo '<td>'.$line_link_content.$line['diffusion'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['service'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['datediffusion'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['type'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['etat'].'</a></td>';
+ echo "</tr>";
+ $i++;
+ }
+ echo "</table>";
+ echo "</fieldset>";
+ }
+ }
+
+
+
+ //==================================================================
+ // affichage des courriers liés aux affaires concernées du courrier
+ //==================================================================
+
+
+ /**
+ * Point d'entrée permettant d'afficher des informations spécifiques.
+ *
+ * Cette méthode à surcharger permet d'afficher des informations
+ * spécifiques après le formulaire.
+ *
+ * affichage des courriers lies
+ *
+ * @return void
+ */
+ function afterFormSpecificContent() {
+ if(($this->correct AND $this->validation>0) OR $this->maj>0){
+ $this->affichecourrier_affaire($this->maj);
+ }
+ }
+
+ /**
+ * Courries lies
+ *
+ * Cette méthode à surcharger permet d'afficher des informations
+ * spécifiques après le formulaire.
+ *
+ * Affichage des courriers liés aux affaires du service
+ *
+ *
+ * @return void
+ */
+ function affichecourrier_affaire($maj){
+ if($maj == 0) {
+ $courrier=$this->valF['courrier'];
+ $affaire=$this->get_affaire($courrier);
+ } else {
+ $courrier=$this->val[array_search('courrier',$this->champs,true)];
+ $affaire=$this->get_affaire($courrier);
+ }
+ if(!is_numeric($affaire)) $affaire=0;
+ // recherche des courries lies
+ $sql = "SELECT courrier.courrier, courrier.registre as registre, courrier.nature as nature, ";
+ $sql .= " nature.libelle as naturelib, affaire.libelle as affairelib, ";
+ $sql .= " to_char(courrier.datearrivee ,'DD/MM/YYYY') as datearrivee, ";
+ $sql .= " to_char(courrier.datecourrier ,'DD/MM/YYYY') as datecourrier, ";
+ $sql .= " concat(courrier.emetteurnom,' ',courrier.emetteurprenom) as emetteurnom, ";
+ $sql .= " substring(courrier.objetcourrier, 1,20) as objetcourrier, ";
+ $sql .= " affaire_courrier.affaire ";
+ $sql .= " FROM ".DB_PREFIXE."affaire_courrier";
+ $sql .= " inner join ".DB_PREFIXE."courrier ";
+ $sql .= " on affaire_courrier.courrier=courrier.courrier ";
+ $sql .= " inner join ".DB_PREFIXE."nature ";
+ $sql .= " on nature.nature=courrier.nature ";
+ $sql .= " inner join ".DB_PREFIXE."affaire ";
+ $sql .= " on affaire_courrier.affaire=affaire.affaire ";
+ $sql .= " where courrier.courrier != ".$courrier;
+ $sql .= " and affaire_courrier.affaire = ".$affaire;
+ $sql .= " and affaire.service_origine =".$_SESSION['service'];
+ // a voir les droits ...
+ $res=$this->db->query($sql);
+ if (database::isError($res))
+ die($res->getDebugInfo()." ".$sql);
+ else{
+
+ // En mode ajouter et modifier seulement
+ $i=0;
+ $oddeven=array("odd","even");
+ while ($line=$res->fetchrow(DB_FETCHMODE_ASSOC)) {
+ if($i==0){// entete de la table avec le nom de l'affaire
+ echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\"><legend>".
+ _("Courriers lies à l'affaire")."</legend>";
+ echo "<table class=\"tab-tab\">";
+ echo "<tr class=\"ui-tabs-nav ui-accordion ui-state-default tab-title\">";
+ echo "<th lass=\"title\">"._("courrier")."</th>";
+ echo "<th class=\"title\">"._("affaire")."</th>";
+ echo "<th class=\"title\">"._("registre")."</th>";
+ echo "<th class=\"title\">"._("Nature")."</th>";
+ echo "<th class=\"title\">"._("date arrivee")."</th>";
+ echo "<th class=\"title\">"._("date courrier")."</th>";
+ echo "<th class=\"title\">"._("Correspondant")."</th>";
+ echo "<th class=\"title\">"._("objet courrier")."</th>";
+ echo "</tr>";
+ }
+ echo "<tr class=\"tab-data ".$oddeven[$i%2]."\">";
+ if($line['nature']==1)
+ $line_link_content = '<a href="form.php?obj=courrier_arrivee&amp;action=3&amp;idx='.
+ $line['courrier'].'&amp;idz='.$line['registre'].'&amp;premier='.$this->getParameter('premier').'&amp;advs_id='.$this->getParameter('advs_id').'&amp;recherche='.$this->getParameter('recherche').'&amp;tricol='.$this->getParameter('tricol').'&amp;selectioncol='.$this->getParameter('selectioncol').'&amp;valide='.$this->getParameter('valide').'&amp;retour=tab">';
+ else
+ $line_link_content = '<a href="form.php?obj=courrier_depart&amp;action=3&amp;idx='.
+ $line['courrier'].'&amp;idz='.$line['registre'].'&amp;premier='.$this->getParameter('premier').'&amp;advs_id='.$this->getParameter('advs_id').'&amp;recherche='.$this->getParameter('recherche').'&amp;tricol='.$this->getParameter('tricol').'&amp;selectioncol='.$this->getParameter('selectioncol').'&amp;valide='.$this->getParameter('valide').'&amp;retour=tab">';
+ echo '<td>'.$line_link_content.$line['courrier'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['affairelib'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['registre'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['naturelib'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['datearrivee'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['datecourrier'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['emetteurnom'].'</a></td>';
+ echo '<td>'.$line_link_content.$line['objetcourrier'].'</a></td>';
+ echo "</tr>";
+ $i++;
+ }
+ echo "</table>";
+ echo "</fieldset>";
+ echo "</div>";
+ }
+ if(!is_numeric($affaire))
+ echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\"><legend>".
+ _("le courrier n'est pas lié à une affaire")."</legend>";
+ }
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_arrivee.class.php
===================================================================
--- branches/5.1.0/obj/courrier_arrivee.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_arrivee.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,249 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * ajout d'un nouveau courrier arrivé depuis un scan
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier.class.php");
+
+class courrier_arrivee extends courrier {
+
+ var $nature=1;
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ if($maj==0){
+ $form->setType('objetcourrier_ajout', 'textarea');
+ }
+ // Gestion du scan
+ if($maj==0){
+ if ( $this->nb_scan>0 ){
+ $form->setType('scan_pdf','affichepdf');
+ $form->setType("lib_scan_pdf",'hiddenstatic');
+ }else{
+ $form->setType('scan_pdf','hiddenstatic');
+ $form->setType("lib_scan_pdf",'hidden');
+ }
+ }
+ }
+
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ parent::set_form_default_values($form, $maj, $validation);
+ // prochain scan par defaut dans le repertoire scan
+ if($maj==0){ // recherche du courrier en scan
+ $dir=getcwd();
+ // parametre du repertoire de scan
+ if($this->f->getParameter("scan"))
+ $scan = $this->f->getParameter("scan");
+ else
+ $scan="scan";
+ if (file_exists (substr($dir,0,strlen($dir)-4)."/".$scan."/".$_SESSION['coll'].
+ "/".$_SESSION['om_utilisateur']."/")){
+ $dir=substr($dir,0,strlen($dir)-4)."/".$scan."/".$_SESSION['coll'].
+ "/".$_SESSION['om_utilisateur']."/";
+ $liste="../".$scan."/".$_SESSION['coll']."/".$_SESSION['om_utilisateur']."/";
+ }else{
+ $dir=substr($dir,0,strlen($dir)-strlen($scan))."/".$scan."/";
+ $liste="../".$scan."/";
+ }
+ $dossier = opendir($dir);
+ $this->nb_scan=0;
+ $liste_scan[$nb_scan]="";
+ while ($entree = readdir($dossier)){
+ if (substr($entree, -4) <> ".pdf"){
+ continue;
+ }else{
+ $liste_scan[$nb_scan]=$liste.$entree;
+ $this->nb_scan=$this->nb_scan+1;
+ }
+ }
+ closedir($dossier);
+ if ( $this->nb_scan>0 ){
+ sort ($liste_scan);
+ $form->setval("lib_scan_pdf",$liste_scan[0]);
+ $form->setval("scan_pdf",$liste_scan[0]);
+ }else{
+ $form->setval("scan_pdf",_('Pas de scan disponible sur le serveur').
+ " "._("repertoire")." ".$dir.' <br>');
+ }
+ }
+ if($maj>0){ // recherche dans dossier du courrier arrive et traitement
+ $form->setVal('scan_pdf', $this->get_dossier());
+ $form->setVal('traitement', $this->get_traitement());
+ }
+ }
+
+ function setOnchange(&$form,$maj){
+ parent::setOnchange($form,$maj);
+ $form->setOnchange("traitement", "cache_categorie(this.value)");
+ $form->setOnchange("categorie_courrier", "cache_traitement(this.value)");
+ $form->setOnchange("emetteur", "cache_emetteur(this.value)");
+ }
+
+ // =================================================================
+ // post traitement scan et categorie pour creation de tache et copie
+ // =================================================================
+
+ function triggerajouterapres($id, &$db = NULL, $val = Array(), $DEBUG = NULL){
+ /*
+ * creation du dossier saisi dans scan
+ * cette option ne fonctionne qu en php5
+ * il est necessaire de mettre en place la version 1.6 de fpdf et
+ * fpdi dans le meme repertoire
+ * attention la version 1.6 de fpdf necessite php5
+ * (FPDF error: This version of PHP is not supported)
+ */
+ if($val["lib_scan_pdf"]!="") {
+ // fichier requis pour eciture sur le scan pdf
+ require_once($path_fpdf.'fpdf.php');
+ require_once('../app/pdf/fpdi.php'); // ***
+ $pdf = new FPDI();
+ $pagecount = $pdf->setSourceFile($val["lib_scan_pdf"]);
+ // cas de plusieurs pages
+ for ($d=1; $d <= $pagecount; $d++) {
+ $tplidx = $pdf->ImportPage($d);
+ $pdf->AddPage();
+ $pdf->useTemplate($tplidx,0,0,210);
+ if ($d==1){
+ $pdf->SetY(5);
+ $pdf->SetFont("helvetica","B",8);
+ $pdf->SetTextColor(254,0,0);
+ $pdf->SetFillColor(254,0,0); //fond
+ // setdisplaymode zoom pdf
+ $axe_x=170;
+ $axe_y=0;
+ $retour=3;
+ $pdf->SetXY($axe_x , $pdf->y+$axe_y);
+ $pdf->Cell(0, 6, "Le ".date('d/m/Y'));
+ $pdf->SetXY($axe_x, $pdf->y+$retour);
+ $pdf->Cell(0, 6, "Registre : ".$this->valF['registre']);
+ $pdf->SetXY($axe_x, $pdf->y+$retour);
+ $pdf->Cell(0, 6, "service courrier");
+ //$pdf->Write(0, "c est le write"); //test
+ }
+ }
+ $fichier = "a_".$this->valF['courrier'].".pdf";
+ $pdf->Output($val["lib_scan_pdf"], 'F');
+ //Métadonnées du document -> personnalisation metadata
+ $metadata = array(
+ 'filename' => $fichier,
+ 'mimetype' => 'application/pdf',
+ 'size' => strlen(file_get_contents($val["lib_scan_pdf"])),
+ "typedossier" => "arrivee",
+ "datecourrier" => $this->valF['datecourrier'],
+ "registre" => $this->valF['registre'],
+ "emetteur" => $this->valF['emetteurnom']." ".$this->valF['emetteurprenom'],
+ "emetteur_adresse" => $this->valF['emetteurad1']." ".$this->valF['emetteurad2'],
+ "emetteur_cpville" => $this->valF['emetteurcp']." ".$this->valF['emetteurville'],
+ );
+ // Stockage
+ $uid = $this->f->storage->create($val["lib_scan_pdf"], $metadata, "from_path");
+ // Creation du dossier
+ require_once '../obj/dossier.class.php';
+ $dossier = new dossier("]", $db, $DEBUG);
+ // Données
+ $valG=array();
+ $valG['dossier']= "";
+ $valG['fichier'] = $uid;
+ $valG['courrier'] = $this->valF['courrier'];
+ $valG['datedossier'] = date('d/m/Y');
+ $valG['type_dossier'] = 1;
+ $valG['observation'] = _("saisie numerisee");
+ $valG['filename'] = "";
+ $valG['service_origine'] = $_SESSION['service'];
+ $valG['key']="";
+ // Ajoute le dossier
+ $ajouter = $dossier->ajouter($valG, $db, $DEBUG);
+ // Message d'erreur
+ $message = _("La creation du dossier n'est pas possible depuis le pdf scanne.");
+ //
+ if ($ajouter == true) {
+ // Message de confirmation
+ $message = _("Creation du dossier depuis le pdf scanne."." ".$val["lib_scan_pdf"]);
+ // destruction du fichier dans scan
+ if(file_exists($val["lib_scan_pdf"])){
+ unlink($val["lib_scan_pdf"]);
+ }
+ }
+ // Affiche le message à l'utilisateur
+ $this->addToMessage($message);
+ } // fin scan
+
+ // si la categorie est utilisee, creation des diffusions en copie et tache
+ if ($this->valF['categorie_courrier']!= null) {
+ // creation des diffusions en copie
+ $DEBUG=0;
+ $sql = " SELECT service, type_diffusion";
+ $sql .= " FROM ".DB_PREFIXE."categorie_courrier_service";
+ $sql .= " WHERE categorie_courrier=".$val['categorie_courrier'];
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ while ($row=$res->fetchrow(DB_FETCHMODE_ASSOC)) {
+ $this->insert_diffusion_automatique($this->valF['courrier'],$db,
+ $val,$row['service'], $row['type_diffusion'],$DEBUG);
+ }
+ // creation des taches
+ $DEBUG=0;
+ $sql = " SELECT libelle, categorie_tache, service, delai, observation ";
+ $sql .= " FROM ".DB_PREFIXE."categorie_courrier_tache";
+ $sql .= " WHERE categorie_courrier=".$val['categorie_courrier'];
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ while ($row=$res->fetchrow(DB_FETCHMODE_ASSOC)) {
+ $this->insert_tache_automatique($this->valF['courrier'],$db,
+ $val,$row['libelle'], $row['categorie_tache'],$row['service'],
+ $row['delai'],$row['observation'],$DEBUG);
+ }
+ }
+ // traitement generaux apres maj dossier pour insert diffusion avec dossier
+ parent::triggerajouterapres($id,$db,$val,$DEBUG);
+ }
+
+ // insertion de tache automatique definit en categorie
+ function insert_tache_automatique($id,&$db,$val,$libelle, $categorie_tache,
+ $service, $delai, $observation, $DEBUG){
+ require_once '../obj/tache.class.php';
+ $tache = new tache("]", $db, $DEBUG);
+ // Données de la tache créées automatiquement
+ $valF["tache"]= "";
+ $valF['courrier'] = $id;
+ $valF['libelle'] = $libelle;
+ $valF['categorie_tache'] = $categorie_tache;
+ // calcul de la date butoir
+ $valF["datebutoir"] = date("Y-m-d", strtotime(date('Y-m-d').
+ " +".$delai." days "));
+ $valF['service']= $service;
+ $valF['service_origine']= $_SESSION['service'];
+ $valF['observation']= $observation;
+ $valF['etat_tache']= 1;
+ $valF['maj_date']= "";
+ $valF['maj_login']= "";
+ $valF['maj_hist']= "";
+ $valF['maj_comment']= _('tache automatique');
+ $ajouter = $tache->ajouter($valF, $db, $DEBUG);
+ database::isError($ajouter);
+ // Verifie que la diffusion a été ajoutée
+ if ($ajouter == false){
+ $this->addToMessage($tache->msg);
+ return false;
+ }
+ $this->addToMessage( _("Tache")." ".$libelle." "._("au service").
+ " : ".$this->get_service_libelle($service));
+ return true;
+
+ }
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_arrivee.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_arrivee_copie.class.php
===================================================================
--- branches/5.1.0/obj/courrier_arrivee_copie.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_arrivee_copie.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * surcharge numéro de registre
+ * ajout d'un nouveau courrier arrivé
+ * Cette classe permet :
+ * - utilisation de diffusion de copie en afterFormSpecificContent
+ * - affichage special du scan sur partie gauche de l ecran en insertion
+ *
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier_arrivee.class.php");
+
+class courrier_arrivee_copie extends courrier_arrivee {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ $this->class_actions[1] = array();
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array();
+ // validation
+ $this->class_actions[5] = array();
+ }
+
+
+ function courrier_arrivee_copie($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ // =================================================================
+ // affichage et saisie des diffusions copies
+ // =================================================================
+
+ function form_specific_content_after_portlet_actions($maj) {
+ if($maj==3){
+ $courrier=$this->getVal('courrier');
+ echo "<div id=\"affichage_diffusion\" class=\"formEntete ui-corner-all\">";
+ $this->affichediffusion_data($courrier,"copie");
+ echo "</div>";
+ }
+ }
+
+
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_arrivee_copie.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_arrivee_traitement.class.php
===================================================================
--- branches/5.1.0/obj/courrier_arrivee_traitement.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_arrivee_traitement.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * surcharge numéro de registre
+ * ajout d'un nouveau courrier arrivé
+ * Cette classe permet :
+ * - utilisation de diffusion de copie en afterFormSpecificContent
+ * - affichage special du scan sur partie gauche de l ecran en insertion
+ *
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier_arrivee.class.php");
+
+class courrier_arrivee_traitement extends courrier_arrivee {
+
+
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ // $this->class_actions[1] = array();
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array();
+
+ $this->class_actions[6] = array(
+ "identifier" => "courrier edition",
+ "portlet" => array(
+ 'libelle' => _('Rediger'),
+ 'ajax' => false,
+ "class" => "edit-16",
+ 'order' => 50,
+ 'url' => '../scr/form.php?obj=courrier_edition&amp;idx=',
+ 'id' => '',
+ ),
+ );
+
+
+ $this->class_actions[7] = array(
+ "identifier" => "edition",
+ "portlet" => array(
+ "type" => "action-blank",
+ "libelle" => _("editer"),
+ "order" => 51,
+ "class" => "pdf-16",
+ ),
+ "view" => "edition_courrier",
+ );
+
+ // ACTION - 100 - finaliser le courrier depart
+ $this->class_actions[100] = array(
+ "identifier" => "finaliser_depart",
+ "portlet" => array(
+ "type" => "action-direct",
+ "libelle" => _("Finaliser courrier depart"),
+ "order" => 52,
+ "class" => "add-16",
+ ),
+ "view" => "formulaire",
+ "method" => "finalize_depart",
+ "button" => "finaliser",
+ );
+
+ // ACTION - 110 - finaliser un autre courrier
+ $this->class_actions[110] = array(
+ "identifier" => "finaliser_autre",
+ "portlet" => array(
+ "type" => "action-direct",
+ "libelle" => _("Finaliser courrier autre"),
+ "order" => 53,
+ "class" => "add-16",
+ ),
+ "view" => "formulaire",
+ "method" => "finalize_autre",
+ "button" => "finaliser",
+ );
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ if($maj==1){
+ $form->setType('type_courrier','selecthiddenstatic');
+ $form->setType('civilite','selecthiddenstatic');
+ $form->setType('type_correspondant','selecthiddenstatic');
+ $form->setType('emetteurnom','hiddenstatic');
+ $form->setType('emetteurprenom','hiddenstatic');
+ $form->setType('emetteurad1','hiddenstatic');
+ $form->setType('emetteurad2','hiddenstatic');
+ $form->setType('emetteurcp','hiddenstatic');
+ $form->setType('emetteurville','hiddenstatic');
+ $form->setType('datearrivee','datestatic');
+ $form->setType('datecourrier','datestatic');
+ }
+
+ }
+
+
+
+
+ function courrier_arrivee_traitement($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ // =================================================================
+ // affichage et saisie des diffusions copies
+ // =================================================================
+
+ /**
+ * Point d'entrée permettant d'afficher des informations spécifiques.
+ *
+ *
+ * affichage de la diffusion en copie et traitement
+ * affichage en saisie
+ * - apres validation en insert pour saisie de copie (courrier existant)
+ * - avant validation en update
+ *
+ * @return void
+ *
+ */
+
+ function form_specific_content_after_portlet_actions($maj) {
+ if($maj==3){
+ $courrier=$this->getVal('courrier');
+ echo "<div id=\"affichage_diffusion\" class=\"formEntete ui-corner-all\">";
+ $this->affichediffusion_data($courrier,"traitement");
+ echo "</div>";
+ }
+ }
+
+
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_arrivee_traitement.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_depart.class.php
===================================================================
--- branches/5.1.0/obj/courrier_depart.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_depart.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * ajout d'un nouveau courrier depart depuis un telechargement
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier.class.php");
+
+class courrier_depart extends courrier {
+
+ var $nature=2;
+
+ function init_class_actions() {
+ // On récupère les actions génériques définies dans la méthode
+ // d'initialisation de la classe parente
+ parent::init_class_actions();
+ }
+
+
+
+ function courrier_depart($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ // pas de gestion de categorie
+ $form->setType('objetcourrier_ajout', 'hidden');
+ //$form->setType('categorie_courrier', 'hidden');
+ if($maj==0){
+ $form->setType('scan_pdf','hidden');
+ $form->setType("lib_scan_pdf",'upload');
+ }
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('datearrivee', _('signé le').' ');
+ $form->setLib('scan_pdf','');
+ $form->setLib('lib_scan_pdf','');
+ }
+
+ function setOnchange(&$form,$maj){
+ parent::setOnchange($form,$maj);
+ $form->setOnchange("emetteur", "cache_correspondant(this.value)");
+ }
+
+
+ function setLayout(&$form, $maj) {
+ parent::setLayout($form, $maj);
+ if($maj==0){
+ $form->setFieldset('lib_scan_pdf','D',_('TELECHARGEMENT'), "collapsible");
+ $form->setFieldset('lib_scan_pdf','F','');
+ }
+ //CORRESPONDANT
+ $form->setFieldset('civilite','D','CORRESPONDANT', "collapsible");
+ $form->setFieldset('ajout_emetteur','F','');
+
+ //CORRESPONDANT EXISTANT
+ $form->setFieldset('emetteur','D',_('CORRESPONDANT EXISTANT'), $temp );
+ $form->setFieldset('emetteur','F','');
+
+
+ }
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ parent::set_form_default_values($form, $maj, $validation);
+ if($validation == 0) {
+ if($maj==0){
+ $form->setVal('datecourrier', date('Y-m-d'));
+ $form->setVal('traitement',$_SESSION['service']);
+ }
+ }
+ }
+
+
+ function triggerajouterapres($id,&$db,$val,$DEBUG){
+ // le courrier depart telecharge est mis dans le dossier
+ if($val["lib_scan_pdf"]!="") {
+ //Métadonnées du document -> personnalisation metadata
+ $metadata = array(
+ 'filename' => "",
+ 'mimetype' => 'application/pdf',
+ 'size' => strlen(file_get_contents($val["lib_scan_pdf"])),
+ "typedossier" => "depart",
+ "datecourrier" => $this->valF['datecourrier'],
+ "registre" => $this->valF['registre'],
+ "emetteur" => $this->valF['emetteurnom']." ".$this->valF['emetteurprenom'],
+ "emetteur_adresse" => $this->valF['emetteurad1']." ".$this->valF['emetteurad2'],
+ "emetteur_cpville" => $this->valF['emetteurcp']." ".$this->valF['emetteurville'],
+ );
+ // Stockage
+ $uid = $this->f->storage->create($val["lib_scan_pdf"], $metadata, "from_path");
+ $this->addToMessage($iud);
+ // Creation du dossier
+ require_once '../obj/dossier.class.php';
+ $dossier = new dossier("]", $db, $DEBUG);
+ // Données
+ $valG=array();
+ $valG['dossier']= "";
+ $valG['fichier'] = $val["lib_scan_pdf"]; // $uid;
+ $valG['courrier'] = $this->valF['courrier'];
+ $valG['datedossier'] = date('d/m/Y');
+ $valG['type_dossier'] = 2;
+ $valG['observation'] = _("saisie numerisee");
+ $valG['filename'] = "";
+ $valG['service_origine'] = $_SESSION['service'];
+ $valG['key']="";
+ // Ajoute le dossier
+ $ajouter = $dossier->ajouter($valG, $db, $DEBUG);
+ if ($ajouter == true) {
+ // Message de confirmation
+ $message = _("Creation du dossier depuis le pdf telecharge.");
+ }else{
+ // Message d'erreur
+ $message = _("La creation du dossier n'est pas possible depuis le pdf scanne.");
+ }
+ // Affiche le message à l'utilisateur
+ $this->addToMessage($message);
+ }
+ // traitement generaux apres maj dossier pour insert diffusion avec dossier
+ parent::triggerajouterapres($id,$db,$val,$DEBUG);
+ }
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_depart.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_depart_copie.class.php
===================================================================
--- branches/5.1.0/obj/courrier_depart_copie.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_depart_copie.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ *
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier_depart.class.php");
+
+class courrier_depart_copie extends courrier_depart {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ $this->class_actions[1] = array();
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array();
+ // validation
+ $this->class_actions[5] = array();
+ }
+
+
+ function courrier_arrivee_copie($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ // =================================================================
+ // affichage et saisie des diffusions copies
+ // =================================================================
+
+ function form_specific_content_after_portlet_actions($maj) {
+ if($maj==3){
+ $courrier=$this->getVal('courrier');
+ echo "<div id=\"affichage_diffusion\" class=\"formEntete ui-corner-all\">";
+ $this->affichediffusion_data($courrier,"copie");
+ echo "</div>";
+ }
+ }
+
+
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_depart_copie.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_depart_traitement.class.php
===================================================================
--- branches/5.1.0/obj/courrier_depart_traitement.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_depart_traitement.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,132 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier_depart.class.php
+ *
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier_depart.class.php");
+
+class courrier_depart_traitement extends courrier_depart {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ // $this->class_actions[1] = array();
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array();
+
+
+ $this->class_actions[6] = array(
+ "identifier" => "courrier edition",
+ "portlet" => array(
+ 'libelle' => _('Rediger'),
+ 'ajax' => false,
+ "class" => "edit-16",
+ 'order' => 15,
+ 'url' => '../scr/form.php?obj=courrier_edition_depart&amp;idx=',
+ 'id' => '',
+ ),
+ );
+
+ $this->class_actions[7] = array(
+ "identifier" => "edition",
+ "portlet" => array(
+ "type" => "action-blank",
+ "libelle" => _("editer"),
+ "order" => 51,
+ "class" => "pdf-16",
+ ),
+ "view" => "edition_courrier",
+ );
+
+ // ACTION - 100 - finaliser le courrier depart
+ $this->class_actions[100] = array(
+ "identifier" => "finaliser_depart",
+ "portlet" => array(
+ "type" => "action-direct",
+ "libelle" => _("Finaliser courrier depart"),
+ "order" => 52,
+ "class" => "add-16",
+ ),
+ "view" => "formulaire",
+ "method" => "finalize_depart",
+ "button" => "finaliser",
+ );
+
+ // ACTION - 110 - finaliser un autre courrier
+ $this->class_actions[110] = array(
+ "identifier" => "finaliser_autre",
+ "portlet" => array(
+ "type" => "action-direct",
+ "libelle" => _("Finaliser courrier autre"),
+ "order" => 53,
+ "class" => "add-16",
+ ),
+ "view" => "formulaire",
+ "method" => "finalize_autre",
+ "button" => "finaliser",
+ );
+
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ if($maj==1){
+ $form->setType('type_courrier','selecthiddenstatic');
+ $form->setType('civilite','selecthiddenstatic');
+ $form->setType('type_correspondant','selecthiddenstatic');
+ $form->setType('emetteurnom','hiddenstatic');
+ $form->setType('emetteurprenom','hiddenstatic');
+ $form->setType('emetteurad1','hiddenstatic');
+ $form->setType('emetteurad2','hiddenstatic');
+ $form->setType('emetteurcp','hiddenstatic');
+ $form->setType('emetteurville','hiddenstatic');
+ $form->setType('datearrivee','datestatic');
+ $form->setType('datecourrier','datestatic');
+ }
+
+ }
+
+
+
+
+ function courrier_arrivee_traitement($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ // =================================================================
+ // affichage et saisie des diffusions copies
+ // =================================================================
+
+ /**
+ * Point d'entrée permettant d'afficher des informations spécifiques.
+ *
+ *
+ * affichage de la diffusion en copie et traitement
+ * affichage en saisie
+ * - apres validation en insert pour saisie de copie (courrier existant)
+ * - avant validation en update
+ *
+ * @return void
+ *
+ */
+
+ function form_specific_content_after_portlet_actions($maj) {
+ if($maj==3){
+ $courrier=$this->getVal('courrier');
+ echo "<div id=\"affichage_diffusion\" class=\"formEntete ui-corner-all\">";
+ $this->affichediffusion_data($courrier,"traitement");
+ echo "</div>";
+ }
+ }
+
+
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_depart_traitement.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_edition.class.php
===================================================================
--- branches/5.1.0/obj/courrier_edition.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_edition.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,128 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * ajout d'un nouveau courrier arrivé depuis un scan
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier.class.php");
+
+class courrier_edition extends courrier {
+
+ var $required_field = array(
+ "texte",
+ "om_etat",
+ );
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ // validation de courrier
+ }
+
+ function courrier_edition($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ function setvalF($val = array()) {
+ //affectation valeur formulaire
+ // modification que du texte et des états
+ $this->valF['texte']=$val['texte'];
+ if (!is_numeric($val['om_etat'])) {
+ $this->valF['om_etat'] = NULL;
+ } else {
+ $this->valF['om_etat'] = $val['om_etat'];
+ }
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ $form->setType('affaire_reference', 'hidden');
+ $form->setType('registre', 'hidden');
+ $form->setType('datearrivee', 'hidden');
+ $form->setType('datecourrier', 'hidden');
+ $form->setType('type_courrier', 'hidden');
+ $form->setType('nature', 'hidden');
+ $form->setType('traitement', 'hidden');
+ $form->setType('categorie_courrier', 'hidden');
+ $form->setType('emetteur', 'hidden');
+ $form->setType('objetcourrier_ajout', 'hidden');
+ $form->setType('scan_pdf','hidden');
+ $form->setType("lib_scan_pdf",'hidden');
+
+ $form->setType('civilite', 'selecthiddenstatic');
+ $form->setType('emetteurnom', 'hiddenstatic');
+ $form->setType('emetteurprenom', 'hiddenstatic');
+ $form->setType('emetteurad1', 'hiddenstatic');
+ $form->setType('emetteurad2', 'hiddenstatic');
+ $form->setType('emetteurcp', 'hiddenstatic');
+ $form->setType('emetteurville', 'hiddenstatic');
+ $form->setType('type_correspondant', 'selecthiddenstatic');
+ $form->setType('objetcourrier', 'hiddenstatic');
+ $form->setType('texte', 'html_texte');
+ $form->setType('om_etat', 'select');
+ }
+
+ function setLayout(&$form, $maj) {
+
+ // parent::setLayout($form, $maj);
+ $form->setBloc('texte','D',"","col_9"); // bloc a gauche
+ $form->setFieldset('texte','D',_('texte'), "collapsible");
+ $form->setFieldset('om_etat','F');
+ $form->setBloc('om_etat','F','');
+ //CORRESPONDANT EXISTANT
+ $form->setFieldset('courrier','D',_('Correspondant'), "collapsible" );
+ $form->setFieldset('objetcourrier','F','');
+ $form->setFieldset('objetcourrier','D',_('Objet'), "collapsible" );
+ $form->setFieldset('objetcourrier','F','');
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('texte', '');
+ $form->setLib('om_etat','');
+ }
+
+ function form_specific_content_after_portlet_actions($maj) {
+ }
+
+ function afterFormSpecificContent() {
+ }
+
+ function retour($premier = 0, $recherche = "", $tricol = "") {
+ echo "\n<a class=\"retour\" ";
+ echo "href=\"";
+ //
+ echo "form.php";
+ echo "?obj=";
+ echo "courrier_arrivee_traitement";
+ echo "&amp;premier=".$this->getParameter("premier");
+ echo "&amp;tricol=".$this->getParameter("tricol");
+ echo "&amp;recherche=".$this->getParameter("recherche");
+ echo "&amp;selectioncol=".$this->getParameter("selectioncol");
+ echo "&amp;action=3";
+ echo "&amp;idx=".$this->getParameter("idx");
+ //
+ echo "\"";
+ echo ">";
+ //
+ echo _("Retour");
+ //
+ echo "</a>\n";
+
+ }
+
+ function verifier($val, &$db, $DEBUG) {
+ // Vérification des champs requis
+ $this->checkRequired();
+ if($val['om_etat']==""){
+ $this->correct = false;
+ $this->addToMessage( _('Le champ').' <span class="bold">om_etat</span> '._('est obligatoire'));
+ }
+
+
+ }
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_edition.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_edition_depart.class.php
===================================================================
--- branches/5.1.0/obj/courrier_edition_depart.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_edition_depart.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * ajout d'un nouveau courrier arrivé depuis un scan
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier_edition.class.php");
+
+class courrier_edition_depart extends courrier_edition {
+
+ function courrier_edition_depart($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ function retour($premier = 0, $recherche = "", $tricol = "") {
+ echo "\n<a class=\"retour\" ";
+ echo "href=\"";
+ //
+ echo "form.php";
+ echo "?obj=";
+ echo "courrier_depart_traitement";
+ echo "&amp;premier=".$this->getParameter("premier");
+ echo "&amp;tricol=".$this->getParameter("tricol");
+ echo "&amp;recherche=".$this->getParameter("recherche");
+ echo "&amp;selectioncol=".$this->getParameter("selectioncol");
+ echo "&amp;action=3";
+ echo "&amp;idx=".$this->getParameter("idx");
+ //
+ echo "\"";
+ echo ">";
+ //
+ echo _("Retour");
+ //
+ echo "</a>\n";
+
+ }
+
+ function verifier($val, &$db, $DEBUG) {
+ }
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_edition_depart.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/courrier_recherche.class.php
===================================================================
--- branches/5.1.0/obj/courrier_recherche.class.php (rev 0)
+++ branches/5.1.0/obj/courrier_recherche.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Cette classe herite de obj/courrier.class.php
+ * surcharge numéro de registre
+ * ajout d'un nouveau courrier arrivé
+ * Cette classe permet :
+ * - utilisation de diffusion de copie en afterFormSpecificContent
+ * - affichage special du scan sur partie gauche de l ecran en insertion
+ *
+ *
+ * @package openCourrier
+ *
+ */
+require_once ("../obj/courrier.class.php");
+
+
+class courrier_recherche extends courrier {
+
+ //var $nature=1;
+
+
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ $this->class_actions[1] = array();
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array();
+ // validation
+ $this->class_actions[5] = array();
+ }
+
+
+ function courrier_recherche($id,&$db,$debug) {
+ $this->constructeur($id,$db,$debug);
+ }// fin constructeur
+
+ // =================================================================
+ // affichage et saisie des diffusions copies
+ // =================================================================
+
+ function form_specific_content_after_portlet_actions($maj) {
+ if($maj==3){
+ $courrier=$this->getVal('courrier');
+ echo "<div id=\"affichage_diffusion\" class=\"formEntete ui-corner-all\">";
+ $this->affichediffusion_data($courrier,"copie");
+ echo "</div>";
+ }
+ }
+
+
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/courrier_recherche.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/diffusion.class.php
===================================================================
--- branches/5.1.0/obj/diffusion.class.php (rev 0)
+++ branches/5.1.0/obj/diffusion.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,773 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/diffusion.class.php";
+
+class diffusion extends diffusion_gen {
+
+ var $maj; // controle unicite traitement
+ var $nature = "diffusion"; // variable pour permettre changement de service dans courrier
+
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // surcharge : il est necessaire d etre un service d origine pour modifier
+ // ou supprimer une diffusion
+
+ // ACTION - 001 - modifier
+ //
+ $this->class_actions[1] = array(
+ "identifier" => "modifier",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle" => _("modifier"),
+ "class" => "edit-16",
+ "order" => 10,
+ ),
+ "permission_suffix" => "modifier",
+ "crud" => "update",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array(
+ "identifier" => "supprimer",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle"=>_("supprimer"),
+ "class" => "delete-16",
+ "order"=>20,
+ ),
+ "permission_suffix" => "supprimer",
+ "crud" => "delete",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+
+ $this->class_actions[4] = array(
+ "identifier" => "envoi_mail",
+ "portlet" => array(
+ "type" => "action-direct-with-confirmation",
+ "libelle" => _("mail lien"),
+ "order" => 10,
+ "class" => "copy-16",
+ ),
+ "view" => "formulaire",
+ "method" => "mail_key",
+ "button" => "diffuser",
+ "permission_suffix" => "diffuser",
+ "condition" => array(
+ "is_diffusion","is_mail_server")
+ );
+
+ $this->class_actions[5] = array(
+ "identifier" => "envoi_mail2",
+ "portlet" => array(
+ "type" => "action-direct-with-confirmation",
+ "libelle" => _("mail fichier joint"),
+ "order" => 10,
+ "class" => "copy-16",
+ ),
+ "view" => "formulaire",
+ "method" => "mail_fichier",
+ "button" => "diffuser",
+ "permission_suffix" => "diffuser",
+ "condition" => array(
+ "is_diffusion","is_mail_server")
+ );
+
+ $this->class_actions[6] = array(
+ "identifier" => "envoi_ftp",
+ "portlet" => array(
+ "type" => "action-direct-with-confirmation",
+ "libelle" => _("GED"),
+ "order" => 10,
+ "class" => "copy-16",
+ ),
+ "view" => "formulaire",
+ "method" => "envoi_ftp",
+ "button" => "diffuser",
+ "permission_suffix" => "diffuser",
+ "condition" => array(
+ "is_diffusion","is_ftp_server")
+ );
+
+
+ }
+
+ function is_service_origine() {
+ //
+ $service_origine = $this->getVal("service_origine");
+ //
+ if ($service_origine == $_SESSION['service']) {
+ return true;
+ }
+ return false;
+ }
+
+
+ function is_diffusion() {
+ //
+ $etat = $this->getVal("etat_diffusion");
+ //
+ if ($etat == 2) {
+ return true;
+ }
+ return false;
+ }
+
+ function is_ftp_server() {
+ //
+ if ($this->f->getParameter("ftp_server")) {
+ return true;
+ }
+ return false;
+ }
+
+ function is_mail_server() {
+ //
+ if ($this->f->config['password_reset']) {
+ return true;
+ }
+ return false;
+ }
+
+
+ function __construct($id, &$dnu1 = null, $dnu2 = null) {
+ $this->constructeur($id);
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ $form->setType('datediffusion', 'datestatic');
+ $form->setType('service_origine', 'selecthiddenstatic');
+ $form->setType('diffusion', 'hidden');
+ $form->setType('courrier', 'selecthiddenstatic');
+ if ($maj == 3 ) { //
+ $form->setType('dossier','afficheall');
+ }
+ if ($maj<2 ){
+ $form->setType('service', 'autocomplete');
+ }
+
+ $this->setType_maj($form, $maj);
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('etat_diffusion', '');
+ $form->setLib('courrier', _('pour le courrier'));
+ $form->setLib('service', _('a'));
+ $form->setLib('service_origine', _('par'));
+ $form->setLib('datediffusion',_('diffuse le'));
+ $form->setLib('type_diffusion',_('pour'));
+ $form->setLib('dossier', ' ');
+ $form->setLib('diffusion', ' ');
+ $this->setLib_maj($form, $maj);
+ }
+
+ function setSelect(&$form, $maj,&$db,$debug) {
+ parent::setSelect($form, $maj,$db,$debug);
+ if($maj<2){
+ // *** service
+ // Initialise les paramétres
+ $params = array();
+ // Surcharge visée pour l'ajout
+ $params['obj'] = "service";
+ // Table de l'objet
+ $params['table'] = "service";
+ // Permission d'ajouter
+ $params['droit_ajout'] = false;
+ // Critères de recherche
+ $params['criteres'] = array(
+ "service.libelle" => _("service"),
+ "service.code" => _("code"),
+ );
+ $params['group_by'] = array();
+ // Tables liées
+ $params['jointures'] = array();
+ // restriction de service hiérarchique
+ $ajout_actuel=0; //ajout du service actuel de traitement en maj
+ $traitement_actuel = 0; // service actuel en maj
+ if($maj==1){ // recherche du service actuel
+ if(is_numeric($this->getVal('service')))
+ $traitement_actuel = $this->getVal('service');
+ }
+ $i=0;
+ $selection = "(";
+ // liste hierarchique
+ // attention elle ne se fait pas en temps reel
+ // suivant la variable session
+ foreach($_SESSION['sous_service'] as $elt) {
+ $i++;
+ if($i!=1) // pas de virgule sur le 1er element
+ $selection .= ",";
+ $selection .= "'".$elt."'";
+ // test si le service de traitement est dans la liste
+ // hierarchique
+ if($elt==$traitement_actuel and $maj==1)
+ $ajout_actuel=1;
+ }
+ // on ajoute le service actuel en maj si il n'est pas
+ // dans la liste hierarchique
+ if($ajout_actuel==0 and $maj==1)
+ $selection .= ",'".$traitement_actuel."'";
+ $selection .= ")";
+ $params['where'] = 'service.service in '.$selection;
+ if($maj==0){
+ $params['where'] .= ' and service.en_cours is true ';
+ }
+ // Colonnes ID et libellé du champ -> affichage de l autocomplete
+ // (si plusieurs pour le libellé alors une concaténation est faite)
+ $params['identifiant'] = "service.service";
+ $params['libelle'] = array ("service.code","service.libelle");
+ // Envoi des paramètres
+ $form->setSelect("service", $params);
+ }
+ }
+
+
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ if($validation == 0) {
+ if($maj==0){
+ $form->setVal('service_origine', $_SESSION['service']);
+ $form->setVal('etat_diffusion', 1);
+ $form->setVal('type_diffusion', 2);
+ }
+ }// fin validation
+ $this->set_form_default_values_maj($form, $maj, $validation);
+ }
+
+ function verifier($val, &$db, $dnu2 = null) {
+ parent::verifier($val, $db, $dnu2 = null);
+ // verifier si il n y a pas 2 diffusions en traitement
+ // pour les dossiers depart et arrivee ***********
+ if($this->valF['type_diffusion']== 1){
+ if($this->nature=="diffusion"){
+ if ($this->maj == 0) {
+ $this->verifier_traitement_unique("]",
+ $val,$this->valF['type_diffusion']);
+ } else {
+ $this->verifier_traitement_unique($val[$this->clePrimaire],
+ $val,$this->valF['type_diffusion']);
+ }
+ }
+ }else{
+ // verifier qu il existe un sce de traitement
+ if ($this->maj == 0) {
+ $this->verifier_service_traitement("]", $val);
+ } else {
+ $this->verifier_service_traitement($val[$this->clePrimaire], $val);
+ }
+ }
+
+
+ if($this->valF['type_diffusion']== 2){
+ if ($this->maj == 0) {
+ $this->verifier_copie_service_unique("]",
+ $val,$this->valF['service']);
+ } else {
+ $this->verifier_copie_service_unique($val[$this->clePrimaire],
+ $val,$this->valF['service']);
+ }
+ }
+ }
+
+
+ function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db,$DEBUG=null){
+ parent::setValsousformulaire($form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,$db,$DEBUG=null);
+ if($validation==0) {
+ if($retourformulaire =='courrier_arrivee')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ }// fin validation
+ $this->maj=$maj;
+ }// fin setValsousformulaire
+
+
+ function setLayout(&$form, $maj) {
+ if ($maj==3){
+ $form->setBloc('dossier','D',"","col_7"); // bloc a gauche
+ }
+ $form->setFieldset('dossier','D',_('Fichier'), "collapsible");
+ $form->setFieldset('dossier','F','');
+ if ($maj==3){
+ $form->setBloc('dossier','F','');
+ $form->setBloc('diffusion','col_5'); // bloc droite
+ }
+ $form->setFieldset('etat_diffusion','D',_('diffusion'), "collapsible");
+ if ($maj!=3){
+ $form->setBloc('etat_diffusion','D',"","group");
+ $form->setBloc('datediffusion','F');
+ }
+ $form->setFieldset('datediffusion','F','');
+ $this->setLayout_maj($form, $maj);
+ }
+
+ function triggerajouter($id, &$db, $val, $dnu2 = null) {
+ parent::triggerajouter($id, $db, $val, $dnu2);
+ $this->triggerajouter_maj($id, $db, $val, $dnu2);
+ }
+
+ function triggermodifier($id, &$db, $val, $dnu2 = null) {
+ parent::triggermodifier($id, $db, $val, $dnu2);
+ $this->triggermodifier_maj($id, $db, $val, $dnu2);
+ }
+
+ /*
+ * recherche le dossier "arrive" a diffuser
+ * (prend le premier trouver si plusieurs)
+ * retourne l id du dossier
+ *
+ * appel depuis courrier arrivee
+ */
+ function diffusion_dossier($id,&$db,$nature){
+ // dossier arrive
+ $sql="select dossier from ".DB_PREFIXE."dossier where courrier = ".$id.
+ " and type_dossier =".$nature;
+ $dossier_diffusion = $db->getOne($sql);
+ if (database::isError($dossier_diffusion)) die($dossier_diffusion->getMessage().$sql);
+ $this->addToLog("diffusion.class/diffusion_dossier: db->query(\"".$sql."\");",VERBOSE_MODE);
+ return $dossier_diffusion;
+ }
+
+ /**
+ * verification sur existence de plus d'un traitement
+ */
+ function verifier_traitement_unique($id, $val, $type_diffusion) {
+ $table = "diffusion";
+ $primary_key = "diffusion";
+ //
+ $sql = " SELECT ".$table.".".$primary_key." ";
+ $sql .= " FROM ".DB_PREFIXE."".$table." ";
+ $sql .= " WHERE ".$table.".courrier=".$val['courrier']." ";
+ $sql .= " AND ".$table.".type_diffusion = ".$type_diffusion;
+ $sql .= " AND ".$table.".etat_diffusion = 1";
+ if ($id != "]") {
+ $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
+ }
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ //
+ $nbligne = $res->numrows();
+ if ($nbligne > 0) {
+ $this->correct = false;
+ $msg = $nbligne." ";
+ $msg .= _("diffusion(s) traitement existant(s) non validée(s)")."<br>";
+ $msg .= _("Il n'est pas possible d'avoir plus d'un service de traitement");
+ $msg .= " "._("pour le courrier")." : ".$val["courrier"]." "."<br>";
+ $msg .= _("Vous pouvez modifier le service dans la diffusion en traitement ");
+ $this->addToMessage($msg);
+ }
+ //
+ $sql = " SELECT ".$table.".".$primary_key." ";
+ $sql .= " FROM ".DB_PREFIXE."".$table." ";
+ $sql .= " WHERE ".$table.".courrier=".$val['courrier']." ";
+ $sql .= " AND ".$table.".type_diffusion = ".$type_diffusion;
+ $sql .= " AND ".$table.".etat_diffusion = 2";
+ if ($id != "]") {
+ $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
+ }
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ //
+ $nbligne = $res->numrows();
+ if ($nbligne > 0) {
+ $this->correct = false;
+ $msg = $nbligne." ";
+ $msg .= _("diffusion(s) traitement existant(s) validée(s)")."<br>";
+ $msg .= _("Il n'est pas possible d'avoir plus d'un service de traitement");
+ $msg .= " "._("pour le courrier")." : ".$val["courrier"]." "."<br>";
+ $msg .= _("Vous devez modifier le service de traitement en transfert ou copie")." ";
+ $msg .= _("avant d'affecter un nouveau service de traitement");
+ $this->addToMessage($msg);
+ }
+ }
+
+
+ /**
+ * verification qu il n y a pas plus d une copie par service
+ */
+ function verifier_copie_service_unique($id, $val, $service) {
+ $table = "diffusion";
+ $primary_key = "diffusion";
+ //
+ $sql = " SELECT ".$table.".".$primary_key." ";
+ $sql .= " FROM ".DB_PREFIXE."".$table." ";
+ $sql .= " WHERE ".$table.".courrier=".$val['courrier']." ";
+ $sql .= " AND ".$table.".service = ".$service;
+ $sql .= " AND ".$table.".type_diffusion = 2";
+ if ($id != "]") {
+ $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
+ }
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ //
+ $nbligne = $res->numrows();
+ if ($nbligne > 0) {
+ $this->correct = false;
+ $msg = $nbligne." ";
+ $msg .= _("diffusion(s) en copie existante(s) ")."<br>";
+ $msg .= _("Il n'est pas possible d'avoir plus d'une copie par service");
+ $msg .= " "._("pour le courrier")." : ".$val["courrier"]." "."<br>";
+ $msg .= _("Vous pouvez eventuellement diffuser la copie existante");
+ $this->addToMessage($msg);
+ }
+ }
+
+
+ /*
+ * cette fonction verifie si il y a un service en traitement
+ * avertissement non bloquant (cas changement de service)
+ */
+ function verifier_service_traitement($id, $val) {
+ $table = "diffusion";
+ $primary_key = "diffusion";
+ //
+ $sql = " SELECT ".$table.".".$primary_key." ";
+ $sql .= " FROM ".DB_PREFIXE."".$table." ";
+ $sql .= " WHERE ".$table.".courrier=".$val['courrier']." ";
+ $sql .= " AND ".$table.".type_diffusion = 1";
+ if ($id != "]") {
+ $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
+ }
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ //
+ $nbligne = $res->numrows();
+ if ($nbligne == 0) {
+ $msg = $nbligne." ";
+ $msg .= _("diffusion en traitement ")."<br>";
+ $msg .= _("ATTENTION, vous n'avez pas de service de traitement");
+ $msg .= " "._("pour le courrier")." : ".$val["courrier"]." "."<br>";
+ $this->addToMessage($msg);
+ }
+ }
+
+
+ // =================================================================
+ // methode d envoi mail avec lien, avec PJ, envoi GED
+ // =================================================================
+
+ // envoi de mail avec un lien
+ function mail_key($val = array()) {
+ // Récupération des valeurs de l'objet
+ $this->setValFFromVal();
+ // $this->checkAccessibility(); // empeche l acces en traitement -> checkActionAccessibility()
+ // pour les autres cas, obligation d'avoir une adresse remplie
+ $adresse=$this->get_adresse_service($val=array());
+ if(!empty($adresse)){
+ $titre = " "._("Diffusion")." "._("courrier")." "._("pour")." ".
+ $this->get_libelle_type_diffusion($val=array());;
+ $message= "";
+ if(!empty($this->valF['dossier'])){
+ // recherche du registre courrier
+ $courrier = $this->get_registre_courrier($val=array());
+ $corps = _("acces au document du courrier")." ".$courrier;
+ $chemin=$this->get_chemin_dossier($val = array());
+ $message = $chemin.$corps."</a>";
+ $sended=$this->f->sendMail($titre, $message, $adresse);
+ }
+ if ($sended){
+ $this->addToMessage(_("Le courrier ".$courrier." a été envoyé."));
+ $correct = true;
+ }else{
+ $this->addToMessage(_("Le courrier ".$courrier." n a pas été envoyé."));
+ $correct = false;
+ }
+ }else{ // pas d'adresse
+ $this->addToMessage(_("L'adresse pour envoi est vide."));
+ $correct=false;
+ }
+ if($correct){
+ $temp = _("envoi")." "._("mail lien")." ".$adresse;
+ $sql = "update ".DB_PREFIXE."diffusion set maj_comment ='".$temp."'".
+ ", envoi=true where diffusion = ".$this->valF["diffusion"];
+ //$this->addToMessage($sql);
+ $this->begin_treatment(__METHOD__);
+ $res=$this->f->db->query($sql);
+ //$this->f->db->commit;
+ if (database::isError($res, true)) {
+ //Appel de la methode de recuperation des erreurs
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage(_("envoi mail lien")." ["
+ .$this->f->db->affectedRows()." "._("enregistrement(s) mis en jour").
+ "]");
+ return $this->end_treatment(__METHOD__, true);
+ }
+ }else{
+ $this->addToMessage(_("L'element ").$this->valF['diffusion'].
+ _(" envoi est non mis a jour car non envoyé."));
+ }
+ }
+
+
+
+ // envoi de mail avec un lien
+ function mail_fichier($val = array()) {
+ // Récupération des valeurs de l'objet
+ $this->setValFFromVal();
+ // $this->checkAccessibility(); // empeche l acces en traitement -> checkActionAccessibility()
+ // pour les autres cas, obligation d'avoir une adresse remplie dans service/email
+ $adresse=$this->get_adresse_service($val=array());
+ if(!empty($adresse)){
+ $titre = " "._("Diffusion")." "._("courrier")." "._("pour")." ".
+ $this->get_libelle_type_diffusion($val=array());
+ $message= "";
+ if(!empty($this->valF['dossier'])){
+ // retourne le fichier associé à ce courrier
+ $filename = $this->f->retrieveDirectoryFilename($this->valF['dossier']);
+ $file = array();
+ $file[$filename] = array(
+ 'content' => '',
+ 'title' => 'Diffusion',
+ 'url' => $this->f->storage->getPath($filename),
+ 'name' => $this->f->storage->getFilename($filename));
+ $message .= "<br>"._("Le document ")." ".$this->f->storage->getFilename($filename).
+ " "._("est en piece jointe");
+ $sended = $this->f->sendMail($titre, $message,$adresse,$file);
+ }else{
+ $message .= "<br>"._("Le document n'est pas en piece jointe");
+ $sended = $this->f->sendMail($titre, $message ,$adresse);
+ }
+ if ($sended){
+ $this->addToMessage(_("Le mail avec piece jointe : ")." ".
+ $this->f->storage->getFilename($filename)." "._("a été envoyé."));
+ $correct = true;
+ }else{
+ $this->addToMessage(_("Le mail n a pas été envoyé."));
+ $correct = false;
+ }
+ }else{ // pas d'adresse
+ $this->addToMessage(_("L'adresse pour envoi est vide."));
+ $correct=false;
+ }
+ if($correct){
+ $temp = _("Envoi mail avec piece jointe")." "._("adresse")." ".$adresse;
+ $sql = "update ".DB_PREFIXE."diffusion set maj_comment ='".$temp."'".
+ ", envoi=true where diffusion = ".$this->valF["diffusion"];
+ $this->begin_treatment(__METHOD__);
+ $res=$this->f->db->query($sql);
+ if (database::isError($res, true)) {
+ //Appel de la methode de recuperation des erreurs
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage(_("envoi mail lien")." ["
+ .$this->f->db->affectedRows()." "._("enregistrement(s) mis en jour")."]");
+ return $this->end_treatment(__METHOD__, true);
+ }
+ }else{
+ $this->addToMessage(_("pas de mise a jour de la diffusion."));
+ }
+ }
+
+ // envoi de mail avec un lien
+ function envoi_ftp($val = array()) {
+ // Récupération des valeurs de l'objet
+ $this->setValFFromVal();
+ // $this->checkAccessibility(); // empeche l acces en traitement -> checkActionAccessibility()
+ // pour les autres cas, obligation d'avoir une adresse remplie
+ // $adresse="Alfresco/Sites/openmairie/documentLibrary/action_eco/";
+ $sended=false;
+ if(!empty($this->valF['dossier'])){
+ $filename = $this->f->retrieveDirectoryFilename($this->valF['dossier']); // retourne le fichier associé à ce courrier
+ $file = array();
+ $file[$filename] = array(
+ 'content' => '',
+ 'title' => $this->valF['type_diffusion'],
+ 'url' => $this->f->storage->getPath($filename),
+ 'name' => $this->f->storage->getFilename($filename));
+ }
+ if(!empty($filename)){
+ // connexion en om_parametre
+ if ($this->f->getParameter("ftp_server"))
+ $ftp_server = $this->f->getParameter("ftp_server");
+ else
+ $ftp_server = "localhost";
+ if ($this->f->getParameter("ftp_user_name"))
+ $ftp_user_name = $this->f->getParameter("ftp_user_name");
+ else
+ $ftp_user_name = "francois";
+ if ($this->f->getParameter("ftp_user_pass"))
+ $ftp_user_pass = $this->f->getParameter("ftp_user_pass");
+ else
+ $ftp_user_pass = "***";
+ if ($this->f->getParameter("ftp_user_path"))
+ $ftp_user_path = $this->f->getParameter("ftp_user_path");
+ else
+ $ftp_user_path = "";
+ // a voir si adresse par service ?
+ $adresse=$ftp_user_path;
+ // connection ftp
+ $conn_ftp = ftp_connect($ftp_server);
+ if($conn_ftp){ // connexion ftp ok
+ // envoi login / pwd
+ $login_ftp = ftp_login($conn_ftp, $ftp_user_name,
+ $ftp_user_pass);
+ if($login_ftp){ // login ftp ok
+ // en FTP_BINARY cela fonctionne alors que pb en FTP_ASCII
+ $sended = ftp_put($conn_ftp, $adresse.
+ $file[$filename]['name'].".info" , $file[$filename]['url'].".info", FTP_BINARY);
+ $sended = ftp_put($conn_ftp, $adresse.$file[$filename]['name'] ,
+ $file[$filename]['url']."", FTP_BINARY);
+ if ($sended){
+ $this->addToMessage(_("Le document : ")." ".
+ $file[$filename]['name']." "._("a été envoyé."));
+ $correct = true;
+ }else{
+ $this->addToMessage(_("Le document : ")." ".
+ $file[$filename]['name']." "._("n'a pas été envoyé."));
+ $correct = false;
+ }
+ }else{
+ $this->addToMessage("<b>"._("mauvais login / pwd ftp")."</b><br>");
+ }
+ }else{
+ $this->addToMessage("<b>"._('mauvaise connexion ftp')."</b><br>");
+ }
+ }
+
+ if($correct){
+ $temp = _("envoi ftp a")." ".$adresse;
+ $sql = "update ".DB_PREFIXE."diffusion set maj_comment ='".$temp."'".
+ ", envoi=true where diffusion = ".$this->valF["diffusion"];
+ $this->begin_treatment(__METHOD__);
+ $res=$this->f->db->query($sql);
+ if (database::isError($res, true)) {
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage(_("envoi ged")." ["
+ .$this->f->db->affectedRows()." "._("enregistrement(s) mis en jour")."]");
+ return $this->end_treatment(__METHOD__, true);
+ }
+ }else{
+ $this->addToMessage(_("Le document n'est pas transmis."));
+ }
+
+ }
+
+ /*
+ * recherche de key pour un dossier
+ */
+
+ function get_key_dossier($val = array()) {
+ $sql= "select key from ".DB_PREFIXE."dossier where dossier=".$this->valF['dossier'];
+ $res=$this->f->db->getOne($sql);
+ // Si une erreur survient
+ if (database::isError($res, true)) {
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ return false;
+ }else
+ return $res;
+ }
+
+ /*
+ * recherche du chemin pour le dossier
+ * retourne le path du chemin du dossier pour lecture externe : string
+ */
+
+ function get_chemin_dossier($val = array()) {
+ // recherche de la clé du dossier
+ $key=$this->get_key_dossier($val=array());
+ // creation du chemin acces file system
+ $serveur_lien=$_SERVER['SERVER_NAME'];
+ $chemin_php = explode("/scr/", $_SERVER['PHP_SELF']);
+ $chemin= "http://".$serveur_lien.$chemin_php[0]."/app/";
+ $chemin= "\n<a href='".$chemin."file.php?obj=dossier&champ=fichier&key=".
+ $key."&collectivite=".$_SESSION['collectivite']."' >";
+ return $chemin;
+ }
+
+ /*
+ * recherche du registre du courrier
+ * retourne le numero de registre du courrier : string
+ */
+
+ function get_registre_courrier($val = array()) {
+ $sql= "select registre from ".DB_PREFIXE."courrier where courrier=".$this->valF['courrier'];
+ $res=$this->f->db->getOne($sql);
+ // Si une erreur survient
+ if (database::isError($res, true)) {
+ // Appel de la methode de recuperation des erreurs
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ //$this->correct = false;
+ return false;
+ }else
+ return $res;
+ }
+
+ /*
+ * recherche email du service
+ * retourne email du service : string
+ */
+
+ function get_adresse_service($val = array()) {
+ $sql= "select email from ".DB_PREFIXE."service where service=".$this->valF['service'];
+ $res=$this->f->db->getOne($sql);
+ // Si une erreur survient
+ if (database::isError($res, true)) {
+ // Appel de la methode de recuperation des erreurs
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ //$this->correct = false;
+ return false;
+ }else
+ return $res;
+ }
+
+ /*
+ * recherche libelle du type de diffusion
+ * retourne libelle type_diffusion : string
+ */
+
+ function get_libelle_type_diffusion($val = array()) {
+ $sql= "select libelle from ".DB_PREFIXE."type_diffusion where type_diffusion=".
+ $this->valF['type_diffusion'];
+ $res=$this->f->db->getOne($sql);
+ // Si une erreur survient
+ if (database::isError($res, true)) {
+ // Appel de la methode de recuperation des erreurs
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ //$this->correct = false;
+ return false;
+ }else
+ return $res;
+ }
+
+
+}
+
+
+
+
+?>


Property changes on: branches/5.1.0/obj/diffusion.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/diffusion_courrier.class.php
===================================================================
--- branches/5.1.0/obj/diffusion_courrier.class.php (rev 0)
+++ branches/5.1.0/obj/diffusion_courrier.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Cette classe herite de obj/diffusion.class.php
+ * pour permettre le changement de service
+ * dans courrier.class
+ *
+ * @package openCourrier
+ *
+ */
+
+require_once ("../obj/diffusion.class.php");
+
+class diffusion_courrier extends diffusion {
+
+ var $nature="diffusion_courrier";
+
+}
+


Property changes on: branches/5.1.0/obj/diffusion_courrier.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/diffusion_non_validee.class.php
===================================================================
--- branches/5.1.0/obj/diffusion_non_validee.class.php (rev 0)
+++ branches/5.1.0/obj/diffusion_non_validee.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Cette classe herite de obj/diffudion.class.php
+ *
+ */
+
+require_once ("../obj/diffusion.class.php");
+
+class diffusion_non_validee extends diffusion {
+
+var $activate_class_action = true;
+
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ $this->class_actions [0]= array();
+ $this->class_actions [1]= array();
+ $this->class_actions [2]= array();
+ $this->class_actions [4]= array();
+ $this->class_actions [5]= array();
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ $form->setType('dossier','filestatic');
+ }
+
+}


Property changes on: branches/5.1.0/obj/diffusion_non_validee.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/dossier.class.php
===================================================================
--- branches/5.1.0/obj/dossier.class.php (rev 0)
+++ branches/5.1.0/obj/dossier.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,305 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/dossier.class.php";
+
+class dossier extends dossier_gen {
+
+ var $abstract_type = array("fichier" => "file",);
+ var $maj;
+ var $validation;
+ var $metadata = array(
+ "fichier" => array(
+ "type_dossier" => "get_type_dossier",
+ "datecourrier" => "get_datecourrier",
+ "registre" => "get_registre",
+ "emetteur" => "get_emetteur",
+ ),
+ )
+ ;
+ // surcharge : il est necessaire d etre un service d origine pour modifier
+ // ou supprimer une diffusion
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ $this->class_actions[1] = array(
+ "identifier" => "modifier",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle" => _("modifier"),
+ "class" => "edit-16",
+ "order" => 10,
+ ),
+ "permission_suffix" => "modifier",
+ "crud" => "update",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array(
+ "identifier" => "supprimer",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle"=>_("supprimer"),
+ "class" => "delete-16",
+ "order"=>20,
+ ),
+ "permission_suffix" => "supprimer",
+ "crud" => "delete",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+ }
+
+ function is_service_origine() {
+ //
+ $service_origine = $this->getVal("service_origine");
+ //
+ if ($service_origine == $_SESSION['service']) {
+ return true;
+ }
+ return false;
+ }
+
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ $form->setType('filename', 'hidden');
+ if ($maj < 2) {
+ $form->setType('dossier','hidden');
+ $form->setType('key', 'hiddenstatic');
+ $form->setType('observation', 'html');
+ $form->setType('datedossier','date2');
+ $form->setType('courrier', 'selecthiddenstatic');
+ $form->setType('service_origine', 'selecthiddenstatic');
+ }
+
+ //upload
+ if ($maj==0){ //ajout
+ if($this->retourformulaire == "") {
+ $form->setType('fichier','upload');
+ } else {
+ $form->setType('fichier','upload2');
+ }
+ }// fin ajout
+
+ if ($maj==1){ //modifier
+ if($this->retourformulaire == "") {
+ $form->setType('fichier','upload');
+ } else {
+ $form->setType('fichier','upload2');
+ }
+ }// fin modifier
+
+ if ($maj==2){ //supprimer
+ $form->setType('fichier','filestatic');
+ }// fin supprimer
+
+ if ($maj==3){ //consulter
+ $form->setType('fichier','file');
+ $form->setType('dossier','afficheall');
+ }// fin consulter
+
+ }
+
+ function setLayout(&$form, $maj) {
+
+ if ($maj==3){
+ $form->setBloc('dossier','D',"","col_7"); // bloc a gauche
+ $form->setFieldset('dossier','D',_('Fichier'), "collapsible");
+ $form->setFieldset('dossier','F','');
+ $form->setBloc('dossier','F','');
+ $form->setBloc('courrier','col_5'); // bloc droite
+ }
+ $form->setFieldset('courrier','D',_('Document'), "collapsible");
+ $form->setFieldset('type_dossier','F','');
+ $form->setFieldset('filename','D',_('Telechargement'), "collapsible");
+ $form->setFieldset('service_origine','F','');
+ if ($maj==3){
+ $form->setBloc('service_origine','F'); //
+ }
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('filename', ' ');
+ $form->setLib('courrier', ' ');
+ $form->setLib('type_dossier', '');
+ $form->setLib('datedossier', '');
+ $form->setLib('observation', '');
+ $form->setLib('dossier', ' ');
+ $form->setLib('service_origine', _('Proprietaire'));
+ }
+
+ function verifier($val, &$db, $dnu2 = null) {
+ // champs obligatoires
+ parent::verifier($val, $db, $dnu2 = null);
+ // verifier si il n y a pas 2 dossiers arrivee ou depart
+ // arrivee =1
+ // depart=2
+ if($this->valF['type_dossier']== 1 or $this->valF['type_dossier']==2){
+ if ($this->maj == 0) {
+ $this->verifier_arrivee_depart("]", $val,$this->valF['type_dossier']);
+ } else {
+ $this->verifier_arrivee_depart($val[$this->clePrimaire],
+ $val,$this->valF['type_dossier']);
+ }
+ }
+
+ }
+
+ function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db,$DEBUG=null){
+ parent::setValsousformulaire($form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,$db,$DEBUG=null);
+ if($validation==0) {
+ // if($retourformulaire =='courrier')
+ // $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_copie')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_copie')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_traitement')
+ $form->setVal('courrier', $idxformulaire);
+
+ }// fin validation
+ $this->maj=$maj;
+ }// fin setValsousformulaire
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ parent::set_form_default_values($form, $maj, $validation);
+ if($maj==0){
+ $form->setVal('service_origine', $_SESSION['service']);
+ }
+ }
+
+
+ function triggerajouter($id,&$db,$val,$DEBUG) {
+ // calcul de la cle pour acces par mail
+ $this->valF['key'] = $this->f->genPasswordResetKey();
+ $this->addToMessage( _("key")." : ".$this->valF['key']." ");
+ $this->addToLog("triggerajouter key ".$this->valF['key']." ", VERBOSE_MODE);
+ }
+
+ function triggerajouterapres($id,&$db,$val,$DEBUG) {
+ parent::triggerajouterapres($id,$db,$val,$DEBUG);
+ return $this->update_filename();
+ }
+
+ function triggermodifierapres($id,&$db,$val,$DEBUG) {
+ parent::triggermodifierapres($id,$db,$val,$DEBUG);
+ return $this->update_filename();
+ }
+
+ // mise a jour de filename
+ function update_filename() {
+ // Si le champs n'est pas vide
+ if (!empty($this->valF['fichier'])) {
+ // Valeur à mettre à jour
+ $valF = array(
+ "filename" => $this->f->storage->getFilename($this->valF['fichier']),
+ );
+ // Execution de la requête de modification des donnees de l'attribut
+ // valF de l'objet dans l'attribut table de l'objet
+ $res = $this->f->db->autoExecute(
+ DB_PREFIXE.$this->table,
+ $valF,
+ DB_AUTOQUERY_UPDATE,
+ $this->getCle($this->valF['dossier'])
+ );
+ // Erreur BDD
+ $this->f->isDatabaseError($res);
+ // Log
+ $this->addToLog("update_filename() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE)", VERBOSE_MODE);
+ //
+ return true;
+ }
+ //
+ return false;
+ }
+
+ /**
+ * verification sur existence d un dossier arrivee
+ * il ne peut pas y avoir plus d un courrier arrivee
+ * ou un courrier depart
+ */
+ function verifier_arrivee_depart($id, $val, $nature) {
+ $table = "dossier";
+ $primary_key = "dossier";
+ //
+ $sql = " SELECT ".$table.".".$primary_key." ";
+ $sql .= " FROM ".DB_PREFIXE."".$table." ";
+ $sql .= " WHERE ".$table.".courrier=".$val['courrier']." ";
+ $sql .= " AND ".$table.".type_dossier = ".$nature;
+ if ($id != "]") {
+ $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
+ }
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ //
+ $nbligne = $res->numrows();
+ if ($nbligne > 0) {
+ $this->correct = false;
+ $msg = $nbligne." ";
+ if($nature==1)
+ $msg .= _("document arrive existe. Il n'est pas possible d'avoir plus d'un document arrive ");
+ else
+ $msg .= _("document depart existe. Il n'est pas possible d'avoir plus d'un document depart");
+ $msg .= " "._("pour le courrier")." : ".$val["courrier"]." ";
+ $this->addToMessage($msg);
+ }
+ }
+
+ /*
+ * recuperer des metadonnees
+ *
+ */
+
+ function get_type_dossier (){
+ return $this->valF['type_dossier'];
+ }
+
+
+ function get_registre (){
+ $sql = "select registre from ".DB_PREFIXE."courrier where courrier =".$this->valF['courrier'];
+ $retour = $this->db->getOne($sql);
+ database::isError($retour);
+ $this->addToLog("get_registre : db->getOne(\"".$sql."\")", VERBOSE_MODE);
+ return $retour;
+ }
+
+ function get_emetteur (){
+ $sql = "select concat(emetteurnom,' ',emetteurprenom) from ".DB_PREFIXE."courrier where courrier =".
+ $this->valF['courrier'];
+ $retour = $this->db->getOne($sql);
+ database::isError($retour);
+ $this->addToLog("get_emetteur : db->getOne(\"".$sql."\")", VERBOSE_MODE);
+ return $retour;
+ }
+
+ function get_datecourrier (){
+ $sql = "select to_char(datecourrier,'DD/MM/YYYY') from ".DB_PREFIXE."courrier where courrier =".
+ $this->valF['courrier'];
+ $retour = $this->db->getOne($sql);
+ database::isError($retour);
+ $this->addToLog("get_datecourrier : db->getOne(\"".$sql."\")", VERBOSE_MODE);
+ return $retour;
+ }
+
+
+}


Property changes on: branches/5.1.0/obj/dossier.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/emetteur.class.php
===================================================================
--- branches/5.1.0/obj/emetteur.class.php (rev 0)
+++ branches/5.1.0/obj/emetteur.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,18 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/emetteur.class.php";
+
+class emetteur extends emetteur_gen {
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ if($validation == 0) {
+ if($maj==0){
+ $form->setVal('en_cours', true);
+ }
+ }
+ }
+}
+
+


Property changes on: branches/5.1.0/obj/emetteur.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/fonction.class.php
===================================================================
--- branches/5.1.0/obj/fonction.class.php (rev 0)
+++ branches/5.1.0/obj/fonction.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,55 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/fonction.class.php";
+
+class fonction extends fonction_gen {
+
+ function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
+ parent::verifier($val);
+ // On verifie si il y a un autre id 'actif' pour la collectivite
+ if ($this->valF['actif'] == "Oui"){
+ if ($this->getParameter("maj") == 0) {
+ //
+ $this->verifieractif("]", $val);
+ } else {
+ //
+ $this->verifieractif($val[$this->clePrimaire], $val);
+ }
+ }
+ }
+
+ /**
+ * verification sur existence d une fonction deja active pour la collectivite
+ */
+ function verifieractif($id, $val) {
+ //
+ $table = "fonction";
+ $primary_key = "fonction";
+ //
+ $sql = " SELECT ".$table.".".$primary_key." ";
+ $sql .= " FROM ".DB_PREFIXE."".$table." ";
+ $sql .= " WHERE ".$table.".om_utilisateur='".$val['om_utilisateur']."' ";
+ $sql .= " AND ".$table.".actif IS TRUE ";
+ if ($id != "]") {
+ $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
+ }
+ // Exécution de la requête
+ $res = $this->f->db->query($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($res);
+ //
+ $nbligne = $res->numrows();
+ if ($nbligne > 0) {
+ $this->correct = false;
+ $msg = $nbligne." ";
+ $msg .= _("fonction(s) existante(s) deja définie par defaut. Il ".
+ "n'est pas possible d'avoir plus d'une fonction active pour l'utilisateur no ");
+ $msg .= (" ".$val["om_utilisateur"]." ");
+ $this->addToMessage($msg);
+ }
+ }
+}


Property changes on: branches/5.1.0/obj/fonction.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/mode_diffusion.class.php
===================================================================
--- branches/5.1.0/obj/mode_diffusion.class.php (rev 0)
+++ branches/5.1.0/obj/mode_diffusion.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,15 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 16:03
+
+require_once "../gen/obj/mode_diffusion.class.php";
+
+class mode_diffusion extends mode_diffusion_gen {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ $this->class_actions[2] = array();
+ }
+
+
+}


Property changes on: branches/5.1.0/obj/mode_diffusion.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/nature.class.php
===================================================================
--- branches/5.1.0/obj/nature.class.php (rev 0)
+++ branches/5.1.0/obj/nature.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,17 @@
+
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 16:29
+
+require_once "../gen/obj/nature.class.php";
+
+class nature extends nature_gen {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ $this->class_actions[2] = array();
+ }
+
+
+
+}


Property changes on: branches/5.1.0/obj/nature.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/note.class.php
===================================================================
--- branches/5.1.0/obj/note.class.php (rev 0)
+++ branches/5.1.0/obj/note.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,111 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/note.class.php";
+
+class note extends note_gen {
+
+ // surcharge : il est necessaire d etre un service d origine pour modifier
+ // ou supprimer une note
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 001 - modifier
+ //
+ $this->class_actions[1] = array(
+ "identifier" => "modifier",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle" => _("modifier"),
+ "class" => "edit-16",
+ "order" => 10,
+ ),
+ "permission_suffix" => "modifier",
+ "crud" => "update",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array(
+ "identifier" => "supprimer",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle"=>_("supprimer"),
+ "class" => "delete-16",
+ "order"=>20,
+ ),
+ "permission_suffix" => "supprimer",
+ "crud" => "delete",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+ }
+
+ function is_service_origine() {
+ //
+ $service_origine = $this->getVal("service_origine");
+ //
+ if ($service_origine == $_SESSION['service']) {
+ return true;
+ }
+ return false;
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ if ($maj < 2) {
+ $form->setType('observation', 'html');
+ $form->setType('courrier', 'hidden');
+ $form->setType('note', 'hidden');
+ $form->setType('service_origine', 'hidden');
+ }
+ if ($maj == 3) {
+ $form->setType('courrier', 'hidden');
+ $form->setType('note', 'hidden');
+ }
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('observation', '');
+ $form->setLib('datenote', _('note du'));
+ $form->setLib('courrier', '');
+ $form->setLib('service_origine', _('Par'));
+ }
+
+ function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db,$DEBUG=null){
+ parent::setValsousformulaire($form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,$db,$DEBUG=null);
+ if($validation==0) {
+ // if($retourformulaire =='courrier')
+ // $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_copie')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_copie')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ }// fin validation
+ }// fin setValsousformulaire
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ if($validation == 0) {
+ if($maj==0){
+ $form->setVal('datenote', date('Y-m-d'));
+ $form->setVal('service_origine', $_SESSION['service']);
+ }
+ }// fin validation
+
+ }
+
+}


Property changes on: branches/5.1.0/obj/note.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/om_dbform.class.php
===================================================================
--- branches/5.1.0/obj/om_dbform.class.php (rev 0)
+++ branches/5.1.0/obj/om_dbform.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,259 @@
+<?php
+/**
+ * Ce fichier est destine a permettre la surcharge de certaines methodes de
+ * la classe om_dbform pour des besoins specifiques de l'application
+ *
+ * @package openmairie_exemple
+ * @version SVN : $Id: om_dbform.class.php 2045 2013-01-22 14:03:35Z jbastide $
+ */
+
+/**
+ *
+ */
+require_once PATH_OPENMAIRIE."om_dbform.class.php";
+
+/**
+ *
+ */
+require_once "om_formulaire.class.php";
+
+/**
+ *
+ */
+class om_dbform extends dbForm {
+
+ /**
+ *
+ */
+ var $om_formulaire = "om_formulaire";
+
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ if (isset($this->f->submitted_get_value['obj'])) {
+ if ($this->f->submitted_get_value['obj'] != NULL) {
+ $this->preparePrecSuiv();
+ }
+ }
+
+ }
+
+ function preparePrecSuiv() {
+ (isset($this -> f -> submitted_get_value['idx']) ? $id = $this -> f -> submitted_get_value['idx'] : $id = "");
+ (isset($this -> f -> submitted_get_value['obj']) ? $obj = $this -> f -> submitted_get_value['obj'] : $obj = "");
+ (isset($this -> f -> submitted_get_value['premier']) ? $premier = $this -> f -> submitted_get_value['premier'] : $premier = 0);
+ (isset($this -> f -> submitted_get_value['tricol']) ? $tricol = $this -> f -> submitted_get_value['tricol'] : $tricol = "");
+ (isset($this -> f -> submitted_get_value['advs_id']) ? $advs_id = $this -> f -> submitted_get_value['advs_id'] : $advs_id = "");
+ (isset($this -> f -> submitted_get_value['valide']) ? $valide = $this -> f -> submitted_get_value['valide'] : $valide = "");
+ (isset($this -> f -> submitted_get_value['recherche']) ? $recherche = $this -> f -> submitted_get_value['recherche'] : $recherche = "");
+ (isset($this -> f -> submitted_get_value['selectioncol']) ? $selectioncol = $this -> f -> submitted_get_value['selectioncol'] : $selectioncol = "");
+ (isset($this -> f -> submitted_get_value['retourformulaire']) ? $retourformulaire = $this -> f -> submitted_get_value['retourformulaire'] : $retourformulaire = "");
+ (isset($this -> f -> submitted_get_value['idxformulaire']) ? $idxformulaire = $this -> f -> submitted_get_value['idxformulaire'] : $idxformulaire = "");
+ (isset($this -> f -> submitted_get_value['retour']) ? $retour = $this -> f -> submitted_get_value['retour'] : $retour = "");
+ // Liste des options
+ // -----------------
+ if (!isset($options)) {
+ $options = array();
+ }
+ // Dictionnaire des actions
+ // ------------------------
+ // Ancien tableau (retro-compatibilite)
+ $href = array();
+ // Declaration du dictionnaire
+ $tab_actions = array(
+ 'corner' => array(),
+ 'left' => array(),
+ 'content' => array(),
+ 'specific_content' => array(),
+ );
+ $extra_parameters = array();
+
+ // surcharge globale
+ if (file_exists('../dyn/tab.inc.php')) {
+ require_once '../dyn/tab.inc.php';
+ }
+ if (file_exists('../dyn/custom.inc.php')) {
+ require '../dyn/custom.inc.php';
+ }
+ if(isset($custom['tab'][$obj]) and file_exists($custom['tab'][$obj])){
+ require $custom['tab'][$obj];
+ }else{
+ // surcharge specifique des objets
+ if (file_exists("../sql/".OM_DB_PHPTYPE."/".$obj.".inc.php")) {
+ require "../sql/".OM_DB_PHPTYPE."/".$obj.".inc.php";
+ } else {
+ require "../sql/".OM_DB_PHPTYPE."/".$obj.".inc";
+ }
+ }
+ $edition = "";
+ $om_validite = false;
+ if (!isset($options)) {
+ $options = array();
+ }
+ // on ne prend que la première colonne
+ $champAffiche[0]=substr($champAffiche[0], 0, strpos(strtolower($champAffiche[0]), " as "))." as idx";
+ // Instanciation d'om_table
+ require_once "../obj/om_table.class.php";
+ $tb = new om_table(
+ "../scr/tab.php",
+ $table,
+ $serie,
+ $champAffiche,
+ $champRecherche,
+ $tri,
+ $selection,
+ $edition,
+ $options,
+ $advs_id,
+ $om_validite
+ );
+ $params = array(
+ "obj" => $obj,
+ "premier" => $premier,
+ "recherche" => $recherche,
+ "selectioncol" => $selectioncol,
+ "tricol" => $tricol,
+ "advs_id" => $advs_id,
+ "valide" => $valide,
+ );
+ // Ajout de paramètre spécifique
+ $params = array_merge($params, $extra_parameters);
+ $tb->setParams($params);
+ // Methode permettant de definir si la recherche doit etre faite
+ // sur la recherche simple ou avncee
+ $tb->composeSearchTab();
+ // Generation de la requete de recherche
+ $tb->composeQuery();
+ // récupération de la requête générée
+ $limit=$tb ->serie+2;
+ if ($premier-1 >= 0)
+ $offset=$premier - 1;
+ else
+ $offset=0;
+ $sql= "SELECT array_agg(idx) FROM (SELECT idx FROM (".$tb->sql.") lst LIMIT ".$limit." OFFSET ".$offset.") a";
+ $tb->__destruct();
+ $idxs=$this ->f -> db -> getOne($sql);
+ $aidxs=explode(",",str_replace("{","",str_replace("}","",($idxs))));
+ $pos=array_search($id, $aidxs,true);
+ $prec=$pos-1;
+ $suiv=$pos+1;
+ if ($suiv == sizeof($aidxs))
+ $suiv=-1;
+ $premier_prec=$premier;
+ $premier_suiv=$premier;
+ if ($premier_prec > 0 && $prec==0)
+ $premier_prec=$premier_prec-$tb ->serie;
+ if ($premier_suiv == 0 && $suiv==$tb ->serie)
+ $premier_suiv=$premier_suiv+$tb ->serie;
+ if ($premier_suiv > 0 && $suiv>$tb ->serie)
+ $premier_suiv=$premier_suiv+$tb ->serie;
+ if ( $prec >=0) {
+ if ($this->f->submitted_get_value['retourformulaire'] != null)
+ $url_prec='../scr/sousform.php?obj='.$obj.'&action=3&idx='.$aidxs[$prec].'&premiersf='.$premier_prec.'&retourformulaire='.$retourformulaire.'&idxformulaire='.$idxformulaire.'&retour='.$retour;
+ else
+ $url_prec='../scr/form.php?obj='.$obj.'&action=3&idx='.$aidxs[$prec].'&advs_id='.$advs_id.'&premier='.$premier_prec.'&recherche='.$recherche.'&selectioncol='.$selectioncol.'&tricol='.$tricol.'&valide='.$valide.'&retour='.$retour;
+ } else {
+ $url_prec="";
+ }
+ if ( $suiv >=0) {
+ if ($this->f->submitted_get_value['retourformulaire'] != null)
+ $url_suiv='../scr/sousform.php?obj='.$obj.'&action=3&idx='.$aidxs[$suiv].'&premiersf='.$premier_suiv.'&retourformulaire='.$retourformulaire.'&idxformulaire='.$idxformulaire.'&retour='.$retour;
+ else
+ $url_suiv='../scr/form.php?obj='.$obj.'&action=3&idx='.$aidxs[$suiv].'&advs_id='.$advs_id.'&premier='.$premier_suiv.'&recherche='.$recherche.'&selectioncol='.$selectioncol.'&tricol='.$tricol.'&valide='.$valide.'&retour='.$retour;
+ } else {
+ $url_suiv="";
+ }
+ $prev_suiv = array(
+ "idx" => $id,
+ "prec_idx" => $prec,
+ "prec_premier" => $premier_prec,
+ "prec_url" => $url_prec,
+ "suiv_idx" => $suiv,
+ "suiv_premier" => $premier_suiv,
+ "suiv_url" => $url_suiv
+ );
+ if ($prev_suiv['idx'] != '' && $prev_suiv["prec_idx"] >=0) {
+ array_push(
+ $this->class_actions,
+ array(
+ "identifier" => "nav_prec",
+ "portlet" => array(
+ "type" => "action-self",
+ 'libelle' => _('précédent'),
+ //'ajax' => false,
+ "class" => "prev-16",
+ 'order' => 100,
+ 'url' => $prev_suiv["prec_url"]
+ //'id' => '',
+ ),
+ "permission_suffix" => "consulter"
+ )
+ );
+ }
+ if ($prev_suiv['idx'] != '' && $prev_suiv["suiv_idx"] >=0) {
+ array_push(
+ $this->class_actions,
+ array(
+ "identifier" => "nav_suiv",
+ "portlet" => array(
+ 'libelle' => _('suivant'),
+ "type" => "action-self",
+ //'ajax' => false,
+ "class" => "suiv-16",
+ 'order' => 110,
+ 'url' => $prev_suiv["suiv_url"]
+ //'id' => '',
+ ),
+ "permission_suffix" => "consulter"
+ )
+ );
+ }
+ return $prev_suiv;
+ }
+
+ // =============
+ // historisation
+ // =============
+
+ function setType_maj(&$form, $maj) {
+ $form->setType("maj_login", "hiddenstatic");
+ $form->setType("maj_date", "hiddenstatic");
+ $form->setType("maj_hist", "hiddenstatic");
+ }
+
+ function setLib_maj(&$form, $maj) {
+ $form->setLib('maj_comment',_('Commentaire'));
+ $form->setLib('maj_login',_('Utilisateur'));
+ $form->setLib('maj_date',_('Date'));
+ $form->setLib('maj_hist',_('Historique'));
+ }
+
+ function setLayout_maj(&$form, $maj) {
+ $form->setFieldset('maj_comment', 'D', _('Historique'), "startClosed");
+ $form->setFieldset('maj_hist','F','');
+ }
+
+ function set_form_default_values_maj(&$form, $maj, $validation) {
+ if ($maj == 0){
+ $form->setVal('maj_login', $_SESSION['login']);
+ }
+ }
+
+ function triggerajouter_maj($id, &$db, $val, $dnu2 = null) {
+ $this->trigger_maj($id, $db, $val, $dnu2);
+ }
+
+ function triggermodifier_maj($id, &$db, $val, $dnu2 = null) {
+ $this->trigger_maj($id, $db, $val, $dnu2);
+ }
+
+ function trigger_maj($id, &$db, $val, $dnu2 = null){
+ $dt=date('Y-m-d H:i:s');
+ $this->valF['maj_date'] = $dt;
+ $this->valF['maj_login'] = $_SESSION['login'];
+ $this->form->val['maj_login'] = $_SESSION['login'];
+ $this->form->val['maj_date'] = $dt;
+ }
+
+
+}


Property changes on: branches/5.1.0/obj/om_dbform.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/om_formulaire.class.php
===================================================================
--- branches/5.1.0/obj/om_formulaire.class.php (rev 0)
+++ branches/5.1.0/obj/om_formulaire.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,204 @@
+<?php
+/**
+ * Ce fichier est destine a permettre la surcharge de certaines methodes de
+ * la classe om_formulaire pour des besoins specifiques de l'application
+ *
+ * @package openmairie_exemple
+ * @version SVN : $Id: om_formulaire.class.php 2382 2013-06-11 10:56:25Z fmichon $
+ */
+
+/**
+ *
+ */
+require_once PATH_OPENMAIRIE."om_formulaire.class.php";
+
+/**
+ *
+ */
+class om_formulaire extends formulaire {
+
+ /**
+ * pdf uniquement
+ */
+ function affichepdf($champ, $validation, $DEBUG = false) {
+ $scan_pdf = $this->val[$champ];
+ // echo "<object data='".$scan_pdf."#zoom=80'.....width='580' height='800' <span style='width:60%;height:80%'>
+ echo "<object data='".$scan_pdf."' name='".$champ."' value=\"".
+ $scan_pdf."\" type='application/pdf' width='100%' height= '800px'>"; //
+ echo "</object>";
+ }
+
+ function afficheall($champ, $validation, $DEBUG = false) {
+
+ //----------------------------------------------------------
+ $newWidth =570;
+ $height=800;
+ $heightcsv=400;
+ //-----------------------------------------------------------
+ // type autorise : .gif;.jpg;.jpeg;.png;.txt;.pdf;.csv
+ if($this->val[$champ]!=""){
+ $filename = $this->f->retrieveDirectoryFilename($this->val[$champ]);
+ $scan_pdf = $this->f->storage->getPath($filename);
+ $mimetype = $this->f->storage->getMimetype($filename);
+ $info = $this->f->storage->getInfo($filename);
+ }
+ if($mimetype == 'application/pdf'){
+ echo "<object data='".$scan_pdf."' name='".$champ."' value=\"".
+ $scan_pdf."\" type=\"".$mimetype."\" width='100%' height='". $height."px'>";
+ echo "</object>";
+ }
+ if(substr($mimetype,0,6) == 'image/'){
+ //mo-------------------------------------
+ $x_y = getimagesize($scan_pdf);
+ // $x_y[0]."widht";
+ // $x_y[1] ."height";
+ $newHeight=($x_y[1]/ $x_y[0])*$newWidth;
+ //echo "<img src=\"". $scan_pdf."\" width='".$newWidth."' height='". $$newHeight."' >";
+ echo "<object data='".$scan_pdf."' name='".$champ."' value=\"".
+ $scan_pdf."\" type='.$mimetype.' width='".$newWidth."' height='". $newHeight."''>";
+ echo "</object>";
+ }
+ if($mimetype == 'text/plain'){
+ $fichier=fopen($scan_pdf, "r");
+ $contenu = fread($fichier, 10000);
+ echo "<textarea name='".$champ."' rows='10' cols='50' class=\"champFormulaire\" >".
+ $contenu."</textarea>";
+ }
+ if($mimetype == 'application/csv'){
+ $fichier=fopen($scan_pdf, "r");
+ $contenu = fread($fichier, 10000);
+ $flag_separateur=0;
+ // chr(9)-> tabulation : si le texte contient des tab -> c est le separateur
+ // chr(59)-> ; : si le texte ne contient pas de tab -> c est le separeateur
+ // | : si le texte ne contient pas de tab -> c est le separeateur
+ // chr(44)-> , : si on ne trouve pas de ";" "tab" ou "|" et que le texte contient des ','
+ // pas de séparateur si aucun des éléments ci dessus est trouvé -> affichage des lignes
+ $separateur="";
+ if(strstr($contenu, chr(9))){
+ $separateur=chr(9);
+ $flag_separateur=1;
+ }else{
+ if(strstr($contenu, chr(59))){
+ $separateur=chr(59);
+ $flag_separateur=1;
+ }
+ if(strstr($contenu, "|")){
+ $separateur="|";
+ $flag_separateur=1;
+ }
+ if($flag_separateur==0 and strstr($contenu, chr(44))){
+ $separateur=chr(44);
+ $flag_separateur=1;
+ }
+ }
+ if($flag_separateur==1){
+ $flagentete=1;
+ $tmp=explode("\n",$contenu);
+ echo "<div style='width:".$newWidth."px;height:". $heightcsv."px;overflow:auto;'>";
+ echo "<table id='table-csv' cellpadding='0' cellspacing ='0' border='1px solid #000000;'><tr>";
+ foreach ($tmp as &$value) {
+ $tmp1=explode($separateur,$value);
+ echo "<tr>";
+ foreach ($tmp1 as &$value1) {
+ if ($flagentete==1){
+ echo "<td align='center' id='entete-table-csv' >".$value1."</td>";
+ }else{
+ echo "<td id='td-table-csv' >".$value1."</td>";
+ }
+ }
+ echo "</tr>";
+ $flagentete=0;
+ }
+ echo "</table>";
+ echo "</div>";
+ }else{
+ echo "<textarea name='".$champ."' rows='10' cols='50' class=\"champFormulaire\" >".
+ $contenu."</textarea>";
+ }
+ }
+
+ /*
+ // par defaut configurer la ligne dans dyn/config.inc.php
+ // $config['upload_extension'] = ".gif;.jpg;.jpeg;.png;.txt;.pdf;.csv;.odt";
+ */
+
+ /*
+ // mettre le plugin libreoffice pour le navigateur mozilla
+ // libreOffice -> menu -> option ->internet -> plugin du navigateur -> cocher afficher document dans navigateur
+ // charger le plugin dans mozilla
+ // apt-get install browser-plugin-libreoffice (à partir version 4.x de libreOffice)
+ // fonctionnement abandonné car plugin trop instable et non compatible avec le modele 3 tiers
+ //
+
+ if($mimetype == 'application/vnd.oasis.opendocument.text' or $mimetype == 'application/msword' ){
+ echo "<object data='".$scan_pdf."' name='".$champ."' value=\"".
+ $scan_pdf."\" type='application/vnd.oasis.opendocument.text' width='100%' height='". $height."px'>";
+ echo "</object>";
+ }
+ if($mimetype == 'text/vnd.ms-word' ){
+ echo "<object data='".$scan_pdf."' name='".$champ."' value=\"".
+ $scan_pdf."\" type='text/vnd.ms-word' width='100%' height='". $height."px'>";
+ echo "</object>" ;
+
+ }
+ */
+
+ // appel a la librairie webodf.js qui lit les open documents
+ if($mimetype == 'application/vnd.oasis.opendocument.text' ){
+ echo '<object data="../app/odf.php?scan_pdf='.$scan_pdf.'" width="100%" height="'.
+ $height.'px" >visualiser</data></object>';
+
+ }
+ echo "<br>".$mimetype;
+ echo "<br>".$info['filename'];
+ }
+
+ function html_texte($champ, $validation, $DEBUG = false) {
+ if(!isset($this->select[$champ]['class'])) {
+ $this->select[$champ]['class'] = "";
+ }
+ if (!$this->correct) {
+ $this->select[$champ]['class'] .= " html_texte";
+ $this->textarea($champ, $validation, $DEBUG);
+ } else {
+ $this->htmlstatic($champ, $validation, $DEBUG);
+ }
+ }
+
+ function html_bible($champ, $validation, $DEBUG = false) {
+ if(!isset($this->select[$champ]['class'])) {
+ $this->select[$champ]['class'] = "";
+ }
+ if (!$this->correct) {
+ $this->select[$champ]['class'] .= " html_bible";
+ $this->textarea($champ, $validation, $DEBUG);
+ } else {
+ $this->htmlstatic($champ, $validation, $DEBUG);
+ }
+ }
+
+ function html_categorie($champ, $validation, $DEBUG = false) {
+ if(!isset($this->select[$champ]['class'])) {
+ $this->select[$champ]['class'] = "";
+ }
+ if (!$this->correct) {
+ $this->select[$champ]['class'] .= " html_categorie";
+ $this->textarea($champ, $validation, $DEBUG);
+ } else {
+ $this->htmlstatic($champ, $validation, $DEBUG);
+ }
+ }
+
+ function html_courrier($champ, $validation, $DEBUG = false) {
+ if(!isset($this->select[$champ]['class'])) {
+ $this->select[$champ]['class'] = "";
+ }
+ if (!$this->correct) {
+ $this->select[$champ]['class'] .= " html_courrier";
+ $this->textarea($champ, $validation, $DEBUG);
+ } else {
+ $this->htmlstatic($champ, $validation, $DEBUG);
+ }
+ }
+
+}


Property changes on: branches/5.1.0/obj/om_formulaire.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/tache.class.php
===================================================================
--- branches/5.1.0/obj/tache.class.php (rev 0)
+++ branches/5.1.0/obj/tache.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,212 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 12:29
+
+require_once "../gen/obj/tache.class.php";
+
+class tache extends tache_gen {
+
+ // surcharge : il est necessaire d etre le service d origine
+ // pour supprimer une tache
+ function init_class_actions() {
+ parent::init_class_actions();
+
+ // ACTION - 002 - supprimer
+ //
+ $this->class_actions[2] = array(
+ "identifier" => "supprimer",
+ "portlet" => array(
+ "type" => "action-self",
+ "libelle"=>_("supprimer"),
+ "class" => "delete-16",
+ "order"=>20,
+ ),
+ "permission_suffix" => "supprimer",
+ "crud" => "delete",
+ "condition" => array(
+ "is_service_origine",
+ ),
+ );
+ }
+
+ function is_service_origine() {
+ //
+ $service_origine = $this->getVal("service_origine");
+ //
+ if ($service_origine == $_SESSION['service']) {
+ return true;
+ }
+ return false;
+ }
+
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ if ($maj < 2) {
+ $form->setType('observation', 'html');
+ $form->setType('courrier', 'hidden');
+ $form->setType('tache', 'hidden');
+ $form->setType('geom', 'hidden');
+ $form->setType("coordinates", "hidden");
+ $form->setType('service', 'autocomplete');
+ }
+ $form->setType("service_origine", "hidden");
+ $this->setType_maj($form, $maj);
+ }
+
+ function setLib(&$form, $maj) {
+ parent::setLib($form, $maj);
+ $form->setLib('libelle', '');
+ $form->setLib('service', '');
+ $form->setLib('categorie_tache', '');
+ $form->setLib('datebutoir', '');
+ $form->setLib('date_execution', '');
+ $form->setLib('etat_tache', '');
+ $form->setLib('observation', '');
+ $form->setLib('datenote', '');
+ $form->setLib('courrier', '');
+ $form->setLib('adresse1','');
+ $form->setLib('adresse2','');
+ $form->setLib('cp','');
+ $form->setLib('ville','');
+ $form->setLib('observation','');
+ $form->setLib('coordinates',_('Lon-Lat'));
+ if ($form->val['geom'] != null ) {
+ $form->setLib('geom',_('Position (présente)'));
+ }else{
+ $form->setLib('geom',_('Position (absente)'));
+ }
+ $form->setLib('date_maj',_('date de mise à jour'));
+ $form->setLib('date_creation',_('date de création'));
+ $this->setLib_maj($form, $maj);
+ }
+
+ function setSelect(&$form, $maj,&$db,$debug) {
+ parent::setSelect($form, $maj,$db,$debug);
+ if($maj<2){
+ // *** service
+ // Initialise les paramétres
+ $params = array();
+ // Surcharge visée pour l'ajout
+ $params['obj'] = "service";
+ // Table de l'objet
+ $params['table'] = "service";
+ // Permission d'ajouter
+ $params['droit_ajout'] = false;
+ // Critères de recherche
+ $params['criteres'] = array(
+ "service.libelle" => _("service"),
+ "service.code" => _("code"),
+ );
+ $params['group_by'] = array();
+ // Tables liées
+ $params['jointures'] = array();
+ // restriction de service hiérarchique
+ $ajout_actuel=0; //ajout du service actuel de traitement en maj
+ $traitement_actuel = 0; // service actuel en maj
+ if($maj==1){ // recherche du service actuel
+ if(is_numeric($this->getVal('service')))
+ $traitement_actuel = $this->getVal('service');
+ }
+ $i=0;
+ $selection = "(";
+ // liste hierarchique
+ // attention elle ne se fait pas en temps reel
+ // suivant la variable session
+ foreach($_SESSION['sous_service'] as $elt) {
+ $i++;
+ if($i!=1) // pas de virgule sur le 1er element
+ $selection .= ",";
+ $selection .= "'".$elt."'";
+ // test si le service de traitement est dans la liste
+ // hierarchique
+ if($elt==$traitement_actuel and $maj==1)
+ $ajout_actuel=1;
+ }
+ // on ajoute le service actuel en maj si il n'est pas
+ // dans la liste hierarchique
+ if($ajout_actuel==0 and $maj==1)
+ $selection .= ",'".$traitement_actuel."'";
+ $selection .= ")";
+ $params['where'] = 'service.service in '.$selection;
+ if($maj==0){
+ $params['where'] .= ' and service.en_cours is true ';
+ }
+ // Colonnes ID et libellé du champ -> affichage de l autocomplete
+ // (si plusieurs pour le libellé alors une concaténation est faite)
+ $params['identifiant'] = "service.service";
+ $params['libelle'] = array ("service.code","service.libelle");
+ // Envoi des paramètres
+ $form->setSelect("service", $params);
+ }
+ }
+
+
+
+ function setLayout(&$form, $maj) {
+ $form->setFieldset('tache','D',' '._('affectation de tache').' ', "collapsible");
+ $form->setBloc('libelle','D','',"group");
+ $form->setBloc('service','F');
+ $form->setFieldset('service','F','');
+ $form->setFieldset('datebutoir','D',' '._('Etat de la tache').' ', "collapsible");
+ $form->setBloc('datebutoir','D',_('date butoir - execution'),"group");
+ $form->setBloc('etat_tache','F');
+ $form->setFieldset('etat_tache','F','');
+ $form->setFieldset('observation','D',' '._('Observation').' ', "startClosed");
+ $form->setFieldset('observation','F','');
+ $form->setFieldset('adresse1','D',' '._('base adresse nationale').' ', "collapsible");
+ $form->setBloc('adresse1','D',_("adresse"),"group");
+ $form->setBloc('adresse2','F');
+ $form->setBloc('cp','D',_("cp").' | '._("ville"),"group");
+ $form->setBloc('ville','F');
+ $form->setFieldset('ville','F','');
+
+ $form->setFieldset('coordinates','D',' '._('Geo localisation').' ', "collapsible");
+ $form->setBloc('coordinates','D','',"group");
+ $form->setBloc('geom','F');
+ $form->setFieldset('geom','F','');
+ $this->setLayout_maj($form, $maj);
+ }
+
+ function set_form_default_values(&$form, $maj, $validation) {
+ parent::set_form_default_values($form, $maj, $validation);
+ if($maj==0){
+ $form->setVal('etat_tache', 1);
+ $form->setVal('service_origine', $_SESSION['service']);
+ }
+ $this->set_form_default_values_maj($form, $maj, $validation);
+ }
+
+ function triggerajouter($id,&$db,$val,$DEBUG) {
+ parent::triggerajouter($id,$db,$val,$DEBUG);
+ // service origine
+ $this->triggerajouter_maj($id, $db, $val, $dnu2);
+ return true;
+ }
+
+ function triggermodifier($id, &$db, $val, $dnu2 = null) {
+ parent::triggermodifier($id, $db, $val, $dnu2);
+ $this->triggermodifier_maj($id, $db, $val, $dnu2);
+ }
+
+ function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db,$DEBUG=null){
+ parent::setValsousformulaire($form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,$db,$DEBUG=null);
+ if($validation==0) {
+ // if($retourformulaire =='courrier')
+ // $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_copie')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_arrivee_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_copie')
+ $form->setVal('courrier', $idxformulaire);
+ if($retourformulaire =='courrier_depart_traitement')
+ $form->setVal('courrier', $idxformulaire);
+ }// fin validation
+ }// fin setValsousformulaire
+
+
+}


Property changes on: branches/5.1.0/obj/tache.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/tachenonsolde.class.php
===================================================================
--- branches/5.1.0/obj/tachenonsolde.class.php (rev 0)
+++ branches/5.1.0/obj/tachenonsolde.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,16 @@
+<?php
+//$Id: tachenonsolde.class.php,v 1.2 2008-11-08 22:26:22 fraynaud Exp $
+require_once ("tache.class.php");
+
+class tachenonsolde extends tache {
+
+ //type de champ
+ function setType(&$form,$maj) {
+ parent::setType($form,$maj);
+ if($maj<2){
+ $form->setType('datebutoir','date');
+ $form->setType('dateexecution','date');
+ }
+ }
+
+}// fin de classe


Property changes on: branches/5.1.0/obj/tachenonsolde.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/type_diffusion.class.php
===================================================================
--- branches/5.1.0/obj/type_diffusion.class.php (rev 0)
+++ branches/5.1.0/obj/type_diffusion.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,14 @@
+<?php
+//$Id$
+//gen openMairie le 08/08/2017 16:03
+
+require_once "../gen/obj/type_diffusion.class.php";
+
+class type_diffusion extends type_diffusion_gen {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ $this->class_actions[2] = array();
+ }
+
+}


Property changes on: branches/5.1.0/obj/type_diffusion.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/type_dossier.class.php
===================================================================
--- branches/5.1.0/obj/type_dossier.class.php (rev 0)
+++ branches/5.1.0/obj/type_dossier.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,14 @@
+<?php
+//$Id$
+//gen openMairie le 09/08/2017 10:33
+
+require_once "../gen/obj/type_dossier.class.php";
+
+class type_dossier extends type_dossier_gen {
+
+ function init_class_actions() {
+ parent::init_class_actions();
+ $this->class_actions[2] = array();
+ }
+
+}


Property changes on: branches/5.1.0/obj/type_dossier.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: branches/5.1.0/obj/workfonction.class.php
===================================================================
--- branches/5.1.0/obj/workfonction.class.php (rev 0)
+++ branches/5.1.0/obj/workfonction.class.php 2020-02-26 11:06:38 UTC (rev 1092)
@@ -0,0 +1,158 @@
+<?php
+
+/* fr - 2017
+ * cette classe affiche le formulaire dans short link
+ * pour pouvoir changer de fonction pour un utilisateur
+ */
+
+
+class workListe {
+
+ /**
+ *
+ */
+ var $f = NULL;
+
+ /**
+ *
+ */
+ var $action = ".";
+
+ /**
+ *
+ */
+ var $listes = array ();
+
+ function __construct (&$f = NULL, $action = ".") {
+ //
+ $this->f = $f;
+ $this->action = $action;
+ //
+ $this->listefonction ();
+ }
+
+ function validateForm () {
+ //
+ if (isset ($_POST['changeliste_action_cancel'])) {
+ $this->f->goToDashboard ();
+ }
+ //
+ if (isset ($_POST['fonction']) or isset ($_POST['changeliste_action_valid'])) {
+ //
+ if (!isset ($this->listes[$_POST['fonction']])) {
+ // message
+ $message_class = "error";
+ $message = _("Cette fonction n'existe pas.");
+ $this->f->addToMessage($message_class, $message);
+ } else {
+ // recupere le libelle
+ $sql = "SELECT concat(fonction.libelle,'|', om_profil.om_profil, '|', om_profil.libelle, '|', service.service,'|', service.libelle,'|',fonction.om_utilisateur)";
+ $sql .= " as libelle FROM ".DB_PREFIXE."fonction ";
+ $sql .= " inner join ".DB_PREFIXE."service ";
+ $sql .= " on fonction.service = service.service";
+ $sql .= " inner join ".DB_PREFIXE."om_profil";
+ $sql .= " on fonction.om_profil = om_profil.om_profil";
+ $sql .= " where fonction=".$_POST['fonction']."";
+ $libelle = $this->f->db->getOne ($sql);
+ $this->f->isDatabaseError ($libelle);
+ $_SESSION['fonction']=$_POST['fonction'];
+ $_SESSION['libfonction']=$libelle;
+ // a voir ...
+ $temp=explode('|', $libelle);
+ $_SESSION['service'] = $temp[3];
+ $_SESSION['libservice'] = $temp[4];
+ //$_SESSION['profil'] = $temp[1]; // ok mais ne change pas le profil origine
+ $_SESSION['om_utilisateur'] = $temp[5];
+ $_SESSION['sous_service']=$this->f->getHierarchieService($temp[3]);
+ $message_class = "ok";
+ $message = _("Vous travaillez maintenant sur la fonction")." (".
+ $_SESSION['fonction'].") ".$_SESSION['libfonction'].' '.
+ _("pour utilisateur").' '.$_SESSION['login'].' ';
+
+ $this->f->addToMessage($message_class, $message);
+ //$this->f->addToMessage(print_r($_SESSION['sous_service'])."***") ;
+ }
+ }
+ }
+
+ function getListes () {
+ return $this->listes;
+ }
+
+ function countListes() {
+ return count($this->getListes());
+ }
+
+ function listefonction () {
+ $sql = "SELECT fonction, fonction.libelle, service.libelle as service, om_profil.libelle as om_profil ";
+ $sql .= " FROM ".DB_PREFIXE."fonction inner join ".DB_PREFIXE."om_utilisateur ";
+ $sql .= " on fonction.om_utilisateur = om_utilisateur.om_utilisateur";
+ $sql .= " inner join ".DB_PREFIXE."service ";
+ $sql .= " on fonction.service = service.service";
+ $sql .= " inner join ".DB_PREFIXE."om_profil";
+ $sql .= " on fonction.om_profil = om_profil.om_profil";
+ $sql .= " where om_utilisateur.login='".$_SESSION['login']."'";
+ $sql .= " order by fonction.libelle";
+ $res = $this->f->db->query ($sql);
+ $this->f->isDatabaseError ($res);
+ while ($row =& $res->fetchRow (DB_FETCHMODE_ASSOC)) {
+ $this->listes[$row['fonction']] = array("code" => $row['fonction'],
+ "libelle" => $row['libelle']
+ ."-".$row['service']."");
+ }
+ }
+
+
+ function showForm ($full = true) {
+ //
+ echo "\n<div id=\"changelisteform\" class=\"formulaire\">\n";
+
+ //
+ echo "<form method=\"post\" id=\"changeliste_form\" action=\"".$this->action."\">\n";
+
+ //
+ $tabindex = 1;
+
+ //
+ echo "\t<div class=\"field\">\n";
+ //
+ if ($full == true) {
+ echo "\t\t<label for=\"liste\">";
+ echo _("Choisissez la fonction avec laquelle vous souhaitez travailler.");
+ echo "</label>\n";
+ }
+ //
+ echo "\t\t<select name=\"fonction\" tabindex=\"".$tabindex++."\" ";
+ echo ($full == false?"onchange=\"submit();\"":"");
+ echo " class=\"champFormulaire\" >\n\t\t\t";
+ foreach ($this->listes as $value) {
+ echo "<option value=\"".$value['code']."\"";
+ if ($_SESSION['fonction'] == $value['code']) {
+ echo " selected=\"selected\"";
+ }
+ echo ">".$value['code']." ".$value['libelle']." </option>";
+ }
+ echo "\n\t\t</select>\n";
+ //
+ echo "\t</div>\n";
+ //
+ if ($full == true) {
+ echo "\t<div class=\"formControls\">\n";
+ echo "\t\t<input name=\"changeliste.action.valid\" tabindex=\"".
+ $tabindex++."\" value=\"".
+ _("Valider")."\" type=\"submit\" class=\"boutonFormulaire context\" />\n";
+ echo "<a class=\"retour\" title=\""._("Retour")."\" ";
+ echo "href=\"../app/index.php?module=dashboard\">";
+ echo _("Retour");
+ echo "</a>";
+ echo "\t</div>\n";
+ }
+ //
+ echo "</form>\n";
+ //
+ echo "</div>\n";
+ }
+
+}
+
+?>


Property changes on: branches/5.1.0/obj/workfonction.class.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Reply all
Reply to author
Forward
0 new messages