fray...@hephaestos.ovh.adullact.org
unread,Feb 26, 2020, 6:06:39 AM2/26/20Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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("&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);
+ //
+ $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&action=3&idx='.
+ $line['courrier'].'&idz='.$line['registre'].'&premier='.$this->getParameter('premier').'&advs_id='.$this->getParameter('advs_id').'&recherche='.$this->getParameter('recherche').'&tricol='.$this->getParameter('tricol').'&selectioncol='.$this->getParameter('selectioncol').'&valide='.$this->getParameter('valide').'&retour=tab">';
+ else
+ $line_link_content = '<a href="form.php?obj=courrier_depart&action=3&idx='.
+ $line['courrier'].'&idz='.$line['registre'].'&premier='.$this->getParameter('premier').'&advs_id='.$this->getParameter('advs_id').'&recherche='.$this->getParameter('recherche').'&tricol='.$this->getParameter('tricol').'&selectioncol='.$this->getParameter('selectioncol').'&valide='.$this->getParameter('valide').'&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&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&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 "&premier=".$this->getParameter("premier");
+ echo "&tricol=".$this->getParameter("tricol");
+ echo "&recherche=".$this->getParameter("recherche");
+ echo "&selectioncol=".$this->getParameter("selectioncol");
+ echo "&action=3";
+ echo "&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 "&premier=".$this->getParameter("premier");
+ echo "&tricol=".$this->getParameter("tricol");
+ echo "&recherche=".$this->getParameter("recherche");
+ echo "&selectioncol=".$this->getParameter("selectioncol");
+ echo "&action=3";
+ echo "&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