1 |
<?php |
2 |
/** |
3 |
* Ce script permet l'affiche des documents numérisés dans des tableaux organisés |
4 |
* par la date de création et la catégorie |
5 |
* |
6 |
* @package openads |
7 |
* @version SVN : $Id: |
8 |
*/ |
9 |
|
10 |
// |
11 |
require_once "../obj/utils.class.php"; |
12 |
|
13 |
//Instance utils |
14 |
$f = new utils("nohtml", "document_numerise_view", _("Pieces")); |
15 |
|
16 |
// |
17 |
echo "\n<div id=\"sousform-document_numerise\">\n"; |
18 |
echo "\n<!-- ########## START FORMULAIRE ########## -->\n"; |
19 |
echo "<div class=\"formEntete ui-corner-all\">\n"; |
20 |
|
21 |
// |
22 |
($f->get_submitted_get_value('idxformulaire')!==null ? $idxformulaire = $f->get_submitted_get_value('idxformulaire') : $idxformulaire = ""); |
23 |
($f->get_submitted_get_value('retourformulaire')!==null ? $retourformulaire = $f->get_submitted_get_value('retourformulaire') : $retourformulaire = ""); |
24 |
|
25 |
//L'identifiant du dossier est $idxformualire de base pour les objets dossier_instruction |
26 |
//Depuis l'objet dossier_autorisation $dossier posséderas le numéros du dossier d'autorisation |
27 |
$dossier = $idxformulaire; |
28 |
|
29 |
//Si le formulaire est demande_avis_encours ou demande_avis_passee |
30 |
if ($retourformulaire == 'demande_avis_encours' || $retourformulaire == 'demande_avis_passee') { |
31 |
|
32 |
// Récupération du dossier en fonction du numéro de consultation |
33 |
$sql = "SELECT dossier |
34 |
FROM ".DB_PREFIXE."consultation |
35 |
WHERE consultation=$idxformulaire"; |
36 |
$dossier = $f->db->getone($sql); |
37 |
$f->addToLog("app/document_numerise.view.php: db->getone(\"".$sql."\");", VERBOSE_MODE); |
38 |
$f->isDatabaseError($dossier); |
39 |
} |
40 |
|
41 |
// Récupération des documents numérisés |
42 |
$select = "SELECT document_numerise.document_numerise as document_numerise, |
43 |
document_numerise.date_creation as date_creation, |
44 |
document_numerise_type_categorie.libelle as categorie, |
45 |
document_numerise.nom_fichier as nom_fichier, |
46 |
document_numerise_type.libelle as type_document, |
47 |
document_numerise.uid as uid "; |
48 |
|
49 |
//table de la requête |
50 |
$from = "FROM ".DB_PREFIXE."document_numerise |
51 |
LEFT JOIN ".DB_PREFIXE."document_numerise_type |
52 |
ON document_numerise.document_numerise_type = document_numerise_type.document_numerise_type |
53 |
LEFT JOIN ".DB_PREFIXE."document_numerise_type_categorie |
54 |
ON document_numerise_type.document_numerise_type_categorie = document_numerise_type_categorie.document_numerise_type_categorie "; |
55 |
if ($retourformulaire == 'dossier_autorisation') { |
56 |
$select .= ", dossier.dossier as dossier "; |
57 |
$from .= " LEFT JOIN ".DB_PREFIXE."dossier |
58 |
ON document_numerise.dossier = dossier.dossier |
59 |
LEFT JOIN ".DB_PREFIXE."dossier_autorisation |
60 |
ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation "; |
61 |
} |
62 |
|
63 |
// La condition de la requête |
64 |
$where = " WHERE document_numerise.dossier = '$dossier' "; |
65 |
// Si le formulaire est celui des dossiers d'autorisations |
66 |
if ($retourformulaire == 'dossier_autorisation') { |
67 |
$where = " WHERE dossier_autorisation.dossier_autorisation = '$dossier' |
68 |
AND (document_numerise_type.code = 'ART' |
69 |
OR document_numerise_type.code = 'AVIS' |
70 |
OR document_numerise_type.code = 'DOC' |
71 |
OR document_numerise_type.code = 'DAACT' |
72 |
OR document_numerise_type.code = 'DOS01' |
73 |
OR document_numerise_type.code = 'DOS02' )"; |
74 |
} |
75 |
|
76 |
// Le tri sur la requête |
77 |
$tri = " ORDER BY document_numerise.date_creation, document_numerise.nom_fichier"; |
78 |
|
79 |
// Concaténation des morceaux de la requête |
80 |
$sql = $select.$from.$where.$tri; |
81 |
$res = $f->db->query($sql); |
82 |
$f->addToLog("app/document_numerise.view.php: db->query(\"".$sql."\");", VERBOSE_MODE); |
83 |
$f->isDatabaseError($res); |
84 |
|
85 |
// Requête sql pour recupèrere la division de l'instructeur en session |
86 |
$sql_instr_division = "SELECT division.division |
87 |
FROM ".DB_PREFIXE."instructeur |
88 |
LEFT JOIN ".DB_PREFIXE."division |
89 |
ON division.division=instructeur.division |
90 |
LEFT JOIN ".DB_PREFIXE."om_utilisateur |
91 |
ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur |
92 |
WHERE om_utilisateur.login = '".$_SESSION['login']."'"; |
93 |
$division = $f->db->getOne($sql_instr_division); |
94 |
$f->addToLog("app/document_numerise.view.php(): db->getOne(\"".$sql_instr_division."\");", VERBOSE_MODE); |
95 |
$f->isDatabaseError($division); |
96 |
|
97 |
//En-tête de tableau pour afficher la date et la catégorie des documents |
98 |
$header = |
99 |
" |
100 |
<thead> |
101 |
<tr class='ui-tabs-nav ui-accordion ui-state-default tab-title'> |
102 |
<th class='title col-0 firstcol %s' colspan=2> |
103 |
<span class='name'> |
104 |
%s |
105 |
</span> |
106 |
</th> |
107 |
</tr> |
108 |
</thead> |
109 |
"; |
110 |
|
111 |
//Lien permettant d'ouvrir le document en pdf |
112 |
$link = " |
113 |
<a class='lienTable' |
114 |
href=\"../spg/file.php?obj=document_numerise&champ=uid&id=%s\" target='_blank'> |
115 |
%s |
116 |
</a>"; |
117 |
if ($retourformulaire == "dossier_instruction" |
118 |
&& $f->isUserAdministrateur()) { |
119 |
// l'administrateur à la permission d'accéder à la fiche du document |
120 |
$link = "<a class='lienTable' |
121 |
onclick=\"ajaxIt('document_numerise','../scr/sousform.php?obj=document_numerise&action=3&idx=%s&tri=&premier=0&recherche=&objsf=document_numerise&premiersf=0&retourformulaire=$retourformulaire&idxformulaire=$dossier&trisf=&retour=tab');\" |
122 |
href=\"#\"> |
123 |
%s |
124 |
</a>"; |
125 |
} |
126 |
|
127 |
//Récupère le statut du dossier d'instruction |
128 |
$sql = "SELECT etat.statut |
129 |
FROM ".DB_PREFIXE."etat |
130 |
LEFT JOIN |
131 |
".DB_PREFIXE."dossier |
132 |
ON |
133 |
etat.etat = dossier.etat |
134 |
WHERE dossier.dossier = '".$idxformulaire."'"; |
135 |
$statut = $f->db->getOne($sql); |
136 |
$f->addToLog("app/document_numerise.view.php: db->getOne(\"".$sql."\");", VERBOSE_MODE); |
137 |
$f->isDatabaseError($statut); |
138 |
|
139 |
// Seul un administrateur peut ajouter des pièces |
140 |
if (($retourformulaire == 'dossier' |
141 |
OR $retourformulaire == 'dossier_instruction' |
142 |
OR $retourformulaire == 'dossier_instruction_mes_encours' |
143 |
OR $retourformulaire == 'dossier_instruction_tous_encours' |
144 |
OR $retourformulaire == 'dossier_instruction_mes_clotures' |
145 |
OR $retourformulaire == 'dossier_instruction_tous_clotures') |
146 |
&& $f->isUserAdministrateur()) { |
147 |
|
148 |
//Affiche bouton ajouter |
149 |
echo "<p><a onclick=\"ajaxIt('document_numerise','../scr/sousform.php?obj=document_numerise&action=0&tri=&objsf=document_numerise&premiersf=0&retourformulaire=$retourformulaire&idxformulaire=$dossier&trisf=&retour=tab');\" href='#'> |
150 |
<span class='om-icon om-icon-16 om-icon-fix add-16' title='Ajouter'>Ajouter</span> |
151 |
Ajouter un document |
152 |
</a></p>"; |
153 |
} |
154 |
|
155 |
// |
156 |
$i = 1; |
157 |
|
158 |
//Résultat à $i - 1 pour tester la date et catégorie des documents |
159 |
$lastRes = array(); |
160 |
$lastRes['date_creation'][0] = ""; |
161 |
$lastRes['categorie'][0] = ""; |
162 |
|
163 |
//Tant qu'il y a des résultats |
164 |
while( $row = &$res->fetchRow(DB_FETCHMODE_ASSOC) ) { |
165 |
|
166 |
$lastRes['date_creation'][$i] = $row['date_creation']; |
167 |
$lastRes['categorie'][$i] = $row['categorie']; |
168 |
|
169 |
//Si la date de création est différente de celle du résultat juste avant |
170 |
if ($row['date_creation'] != $lastRes['date_creation'][$i-1]) { |
171 |
//Si ce n'est pas le premier résultat on ferme la table |
172 |
if($i != 1) { |
173 |
echo "</table>"; |
174 |
} |
175 |
|
176 |
//Affiche la table |
177 |
echo "<table class='tab-tab document_numerise'>"; |
178 |
//Affiche le header de la date |
179 |
printf($header, 'headerDate', $f->formatDate($row['date_creation'])); |
180 |
//Affiche le header de la catégorie |
181 |
printf($header,'headerCat', $row['categorie']); |
182 |
|
183 |
//Style des lignes |
184 |
$style = 'odd'; |
185 |
|
186 |
} |
187 |
|
188 |
//Si la date de création est identique à celle du résultat juste avant |
189 |
//et la catégorie est différente de celle du résultat juste avant |
190 |
if ($row['date_creation'] == $lastRes['date_creation'][$i-1] && $row['categorie'] != $lastRes['categorie'][$i-1]) { |
191 |
//Affiche le header de la catégorie |
192 |
printf($header,'headerCat', $row['categorie']); |
193 |
|
194 |
//Style des lignes |
195 |
$style = 'odd'; |
196 |
} |
197 |
|
198 |
//Si toujours dans la catégorie on change le style de la ligne |
199 |
if ($row['categorie'] == $lastRes['categorie'][$i-1] && $row['date_creation'] == $lastRes['date_creation'][$i-1]) { |
200 |
$style = ($style=='even')?'odd':'even'; |
201 |
} |
202 |
|
203 |
// |
204 |
echo '<tr class="tab-data '.$style.'">'; |
205 |
|
206 |
echo '<td class="col-0 firstcol">'; |
207 |
//Si on est dans la visualisation du DA, on affiche le numéro du dossier |
208 |
//d'instruction auquel est rataché la pièce et le nom du fichier |
209 |
if ($retourformulaire === 'dossier_autorisation'){ |
210 |
printf ($link, $row['document_numerise'], $row['dossier']." - ".$row['nom_fichier']); |
211 |
} |
212 |
else { |
213 |
//On affiche que le nom du fichier |
214 |
printf ($link, $row['document_numerise'], $row['nom_fichier']); |
215 |
|
216 |
} |
217 |
echo '</td>'; |
218 |
|
219 |
// Libelle du type du document |
220 |
echo '<td class="col-1">'; |
221 |
printf ($link, $row['document_numerise'], $row['type_document']); |
222 |
echo '</td>'; |
223 |
|
224 |
echo "</tr>"; |
225 |
|
226 |
// |
227 |
$i++; |
228 |
|
229 |
} |
230 |
|
231 |
//On ferme la table |
232 |
echo "</table>"; |
233 |
|
234 |
//S'il n'y a pas de résultat on affiche "Aucun enregistrements" |
235 |
if ($res->numrows() == 0) { |
236 |
echo "<p class='noData'>"._("Aucun enregistrements")."<p>"; |
237 |
} |
238 |
|
239 |
?> |