1<?php
2/**
3 * @desc File per il caricamento dei file di guida per gli amministratori
4 * @package VFront
5 * @subpackage Administration
6 * @author M.Marcello Verona
7 * @copyright 2007-2010 M.Marcello Verona
8 * @version 0.96 $Id: add.docs.php 880 2010-12-14 12:43:47Z marciuz $
9 * @license http://www.gnu.org/licenses/gpl.html GNU Public License
10 */
11
12// Imposto l'esecuzione massima in 10 minuti
13ini_set('max_execution_time',600);
14
15include("./inc/conn.php");
16include("./inc/layouts.php");
17include("./inc/func.comuni.php");
18include("./inc/func.frontend.php");
19
20proteggi(2);
21
22
23/**
24 * @desc Funzione che cerca e sostituisce caratteri accentati ed altri caratteri non-standard
25 * @param string $nomefile Il nome del file
26 * @return string Il nome del file ripulito
27 */
28function rinomina_file($nomefile){
29
30	$nomefile=str_replace(array('�','�','�','�','�','�'),
31						  array('a','e','e','o','i','u'),
32						  $nomefile);
33
34	$nomefile=preg_replace("'[^\w-.]+'","_",trim($nomefile));
35
36	return $nomefile;
37
38}
39
40/**
41 * @desc Funzione per la verifica del MIME del file
42 * @param string $nomefile Il nome del file
43 * @param string $header_file Header del file
44 * @todo Funzione da scrivere ancora.
45 * @return bool
46 */
47function verifica_tipo_file($nomefile,$header_file){
48
49
50	return true;
51
52}
53
54
55
56
57
58/**
59 * @desc Mostra un'immagine a seconda dell'estensione del file
60 * @param string $nomefile Il nome del file
61 * @return string HTML IMG
62 */
63function img_filetype($nomefile){
64
65	switch (substr($nomefile,-4,4)){
66
67		case '.pdf': $mime='pdf.gif'; $alt='pdf'; break;
68		case '.doc': $mime='doc.gif'; $alt='documento Word'; break;
69		case '.xls': $mime='xls.gif'; $alt='foglio di calcolo Excel'; break;
70		case '.zip': $mime='zip.gif'; $alt='file compresso zip'; break;
71		default   : $mime='generic.gif'; $alt='file'; break;
72
73
74	}
75
76
77	return "<img src=\"img/mime/$mime\" alt=\"$alt\" />";
78
79}
80
81
82
83/**
84 * Funzione che determina la dimensione di un file allegato
85 *
86 * @param int $id_file
87 * @return string
88 */
89function allegato_filesize($id_file){
90
91	$file = _PATH_ATTACHMENT."/$id_file.dat";
92
93	if(file_exists($file)){
94
95		$size = filesize($file);
96
97		if($size>1024){
98
99			return round($size/1024)." Kb";
100		}
101		else{
102			return $size." bytes";
103		}
104	}
105	else return _('Size not available, file not found');
106}
107
108
109######################################################################
110#
111#	CASO ELIMINA ALLEGATO
112#
113
114
115if(isset($_GET['del'])){
116
117	$id_da_eliminare=str_replace(_BASE64_PASSFRASE,'',base64_decode($_GET['del']));
118
119	$id_da_eliminare=intval($id_da_eliminare);
120
121	// elimino dal DB
122	$q_del=$vmsql->query("DELETE FROM "._TABELLA_ALLEGATO." WHERE codiceallegato=$id_da_eliminare");
123
124	$test_del_db= ($vmsql->affected_rows($q_del)==1) ? true:false;
125
126
127	// elimino dal filesystem
128	$test_del_fs=unlink(_PATH_ATTACHMENT."/$id_da_eliminare.dat");
129
130	if($test_del_db && $test_del_fs){
131		header("Location: ".$_SERVER['PHP_SELF']."?t=".$_GET['t']."&id=".$_GET['id']."&az=del&feed=ok");
132
133	}
134	else{
135		header("Location: ".$_SERVER['PHP_SELF']."?t=".$_GET['t']."&id=".$_GET['id']."&az=del&feed=ko");
136	}
137
138	exit;
139}
140
141
142#
143#
144######################################################################
145
146
147
148
149
150#######################################################################
151#
152#	CASO UPLOAD ESEGUITO
153#
154
155if(count($_FILES)>0){
156
157
158	// variabile per il test finale
159	$success=0;
160	$tipo_errori_up= array();
161
162	// CICLO SUI FILES
163	for($i=0;$i<count($_FILES['gfile']['tmp_name']);$i++){
164
165		// test sulla correttezza dell'upload
166		if(is_file($_FILES['gfile']['tmp_name'][$i]) && $_FILES['gfile']['error'][$i]==0){
167
168			$nome_pulito = rinomina_file($_FILES['gfile']['name'][$i]);
169		}
170		else{
171			$tipo_errori_up[$i]='generico di upload';
172			continue;
173		}
174
175
176		// Test sul tipo di file
177		if(!verifica_tipo_file($nome_pulito,$_FILES['gfile']['type'][$i])){
178			$tipo_errori_up[$i]=_('file type not allowed (see allowed types)');
179			continue;
180		}
181
182
183		// INSERISCE IN DATABASE
184
185		$sql_ins=sprintf("INSERT INTO "._TABELLA_ALLEGATO."
186				 (tipoentita,codiceentita,nomefileall,descroggall,autoreall,lastdata)
187				 VALUES ('%s','%s','%s','%s','%s','%s')",
188				 $_POST['t'],
189				 $_POST['id'],
190				 $nome_pulito,
191				 '',
192				 ucfirst($_SESSION['user']['nome'])." ".ucfirst($_SESSION['user']['cognome']),
193				 date('Y-m-d H:i:s')
194				 );
195
196
197		$q_ins=$vmsql->query($sql_ins);
198
199		$id_ultimo=$vmsql->insert_id(_TABELLA_ALLEGATO,'codiceallegato');
200
201		$test_move=move_uploaded_file($_FILES['gfile']['tmp_name'][$i],_PATH_ATTACHMENT."/$id_ultimo.dat");
202
203		if($test_move){
204
205			$success++;
206		}
207		else{
208			$tipo_errori_up[$i]=_('it is not possible to upload the file in the folder');
209			continue;
210		}
211
212
213
214	}
215
216	if($success==count($_FILES['gfile']['tmp_name'])){
217
218		header("Location: ".$_SERVER['PHP_SELF']."?t=".$_POST['t']."&id=".$_POST['id']."&feed=ok");
219	}
220	else{
221		header("Location: ".$_SERVER['PHP_SELF']."?t=".$_POST['t']."&id=".$_POST['id']."&feed=ko&msg=".implode("|",$tipo_errori_up));
222	}
223
224	exit;
225}
226########################################################################
227
228
229
230
231
232
233
234
235
236
237
238
239
240########################################################################
241#
242#	VISTA PAGINA - QUERY DI RICERCA ALLEGATI
243#
244
245
246
247$d = dir(_PATH_ATTACHMENT."/docs");
248
249while (false !== ($entry = $d->read())) {
250
251	if($entry!='.' && $entry!='..') $FILE_PRESENTI[]=$entry;
252}
253$d->close();
254
255
256
257
258
259
260
261
262
263
264$files = array('sty/linguette.css','js/uploadprogress/BytesUploaded.js','js/uploadprogress/LoadVars.js','js/clona_attach.js','sty/attach.css');
265
266$INIZIO_LAYOUT= openLayout1("Allegati",$files);
267
268echo str_replace("<body>","<body onload=\"self.focus();\">",$INIZIO_LAYOUT);
269
270echo "<h1 style=\"font-size:1.6em;\">".sprintf(_('Attachments for record %s in table'),"<span style=\"color:#666;\">".$_GET['id']."</span>")." <span class=\"var\">".$_GET['t']."</span></h1>";
271
272echo "<img src=\"./img/flussi.gif\" class=\"img-float\" alt=\""._('Manage attachments ')."\" />\n";
273
274
275
276
277	echo "
278	<script type=\"text/javascript\">
279
280		$JS_aggiorna
281
282		var nuoviAllegati=0;
283
284		var bUploaded = new BytesUploaded('whileuploading.php',500);
285
286		var divs = new Array('allegati','nuoviallegati');
287
288
289		function eti(ido){
290
291			for (var i in divs){
292				document.getElementById('cont-eti-'+divs[i]).style.display='none';
293				document.getElementById('li-'+divs[i]).className='disattiva';
294			}
295
296			// attiva il selezionato
297			document.getElementById('cont-eti-'+ido).style.display='';
298			document.getElementById('li-'+ido).className='attiva';
299
300		}
301
302
303	</script>
304	";
305
306
307	echo "
308<div id=\"contenitore-variabili\">
309	<div id=\"box-etichette\">
310
311		<ul class=\"eti-var-gr\">
312
313
314			<li onclick=\"eti('allegati');\" id=\"li-allegati\" class=\"attiva\">"._('Attachments')."</li>
315			", ($allegati_ins) ? "<li onclick=\"eti('nuoviallegati');\" id=\"li-nuoviallegati\" class=\"disattiva\">"._('Add attachment')."</li>" : "","
316
317		</ul>
318
319	</div>";
320
321
322	// opzione scarica tutti
323	if($num_allegati>=2){
324
325		$link_scarica_tutti=" - <a href=\"download.php?type=all&amp;idr=".base64_encode($matrice_info_allegati[0]['codiceallegato']._BASE64_PASSFRASE)."\">"._('Download all attachments')."</a>";
326	}
327	else{
328		$link_scarica_tutti='';
329	}
330
331	// LINGUETTA NUOVO FLUSSO
332	echo "
333	<div class=\"cont-eti\" id=\"cont-eti-allegati\" >
334
335		<p>"._('Attachments for this record:')." <strong>$num_allegati</strong> $link_scarica_tutti</p>
336
337		<hr class=\"light2\" />
338		";
339
340
341		// MOSTRA GLI ALLEGATI
342		for($i=0;$i<count($matrice_info_allegati);$i++){
343
344			$dimensione =	allegato_filesize($matrice_info_allegati[$i]['codiceallegato']);
345
346			$scarica=(preg_match('!Dimensione!',$dimensione)) ? "": " - <a href=\"download.php?f=".base64_encode($matrice_info_allegati[$i]['codiceallegato']._BASE64_PASSFRASE)."\">Scarica</a>";
347			$elimina=($allegati_del) ? " - <span class=\"fakelink-rosso\" onclick=\"if(confirm('"._('Are you sure you want to delete this attachment?')."')){ window.location='".$_SERVER['PHP_SELF']."?t=$tabella&amp;id=$id&amp;del=".base64_encode($matrice_info_allegati[$i]['codiceallegato']._BASE64_PASSFRASE)."';}\" >"._('Delete')."</span>" : "";
348
349			$estensione=substr($matrice_info_allegati[$i]['nomefileall'],-3,3);
350
351			if($estensione=='gif' || $estensione=='jpg' || $estensione=='png'){
352
353				$immagine='<img src="thumb.php?id='.$matrice_info_allegati[$i]['codiceallegato'].'" alt="'.$matrice_info_allegati[$i]['nomefileall'].'" class="thumb" />';
354			}
355			else{
356
357				$immagine = img_filetype($matrice_info_allegati[$i]['nomefileall']);
358			}
359
360			echo "
361			<div class=\"allegato\">
362				<div class=\"allegato-img\">".$immagine."</div>
363				<div class=\"allegato-info\">
364					<strong>".$matrice_info_allegati[$i]['nomefileall']."</strong><br />
365					$dimensione $scarica $elimina
366
367				</div>
368			</div>\n";
369		}
370
371
372
373
374	echo "
375	</div>
376	";
377
378
379	// LINGUETTA AMMINISTRAZIONE FLUSSI
380	if($allegati_ins){
381	echo "
382	<div class=\"cont-eti\" id=\"cont-eti-nuoviallegati\" style=\"display:none;\">
383		<br />
384		";
385	?>
386	<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" onsubmit="bUploaded.start('fileprogress');">
387			<div>
388				<div id="contenitore-file"><div><input type="file" name="gfile[]" size="60" /> <span onclick="rimuovi_attach(this);" class="fakelink" style="font-size:0.7em;"><?php echo _('remove');?></span><br /></div></div>
389
390				<span onclick="clona_attach();" class="fakelink"><?php echo _('Add another file');?></span><br /><br /><br />
391
392
393				<input type="hidden" name="t" value="<?php echo $tabella;?>" />
394				<input type="hidden" name="id" value="<?php echo $id;?>" />
395
396				<input type="submit" name="aggiungi" value="  <?php echo _('Send');?>  " onclick="submit();this.value='<?php echo _('Please wait...');?>';this.disabled=true;" />
397
398			</div>
399		</form>
400		<div id="fileprogress" style="font-weight: bold;"> </div>
401
402<?php
403
404	echo "</div>\n";
405	} // -- fine clausola nuovi inserimenti
406
407echo "</div><!-- fine contenitore -->\n\n";
408
409
410
411
412echo closeLayout1();
413?>