phpDocumentor VFront
[ class tree: VFront ] [ index: VFront ] [ all elements ]

Source for file add.attach.php

Documentation is available at add.attach.php

  1. <?php
  2. /**
  3. * Finestra per la gestione degli allegati dalla scheda
  4. * Viene aperta in popup dal file {@link scheda.php}
  5. @package VFront
  6. @author Mario Marcello Verona <marcelloverona@gmail.com>
  7. @copyright 2007 Mario Marcello Verona
  8. @version 0.90
  9. @license http://www.gnu.org/licenses/gpl.html GNU Public License
  10. */
  11.  
  12.  
  13.  
  14.  
  15. // Imposto l'esecuzione massima in 10 minuti
  16. ini_set('max_execution_time',600);
  17.     
  18.  
  19. include("./inc/conn.php");
  20. include("./inc/layouts.php");
  21. include("./inc/func.comuni.php");
  22. include("./inc/func.frontend.php");
  23. include("./inc/func.var_frontend.php");
  24.  
  25.  
  26.  
  27. /**
  28.  * Permette di modificare il nome di un file eliminando i caratteri accentati latin1 e
  29.  * sostituendo ciò che non è lettere, numeri o trattini con il carattere underscore
  30.  *
  31.  * @param string $nomefile 
  32.  * @return string Nome del file senza caratteri accenti o spazi
  33.  */
  34. function rinomina_file($nomefile){
  35.     
  36.     $nomefile=str_replace(array('à','è','é','ò','ì','ù'),
  37.                           array('a','e','e','o','i','u'),
  38.                           $nomefile);
  39.     
  40.     $nomefile=preg_replace("'[^\w-.]+'","_",trim($nomefile));
  41.     
  42.     return $nomefile;
  43.  
  44. }
  45.  
  46.  
  47. /**
  48.  * Controlla la tipologia dei file mediante la lettura delle estensioni
  49.  * ed il confronto con le estensioni permesse nella variabile "formati_attach"
  50.  *
  51.  * @param string $nomefile 
  52.  * @param string $header_file 
  53.  * @todo Impostare un controllo mediante la lettura del MIME del file
  54.  * @return bool 
  55.  */
  56. function verifica_tipo_file($nomefile,$header_file){
  57.     
  58.     if(!isset($GLOBALS['_VARIABILI'])){
  59.         
  60.         var_frontend();
  61.     }
  62.     
  63.     $estensioni_accettate=explode(",",$GLOBALS['_VARIABILI']['formati_attach']);
  64.     
  65.     
  66.     foreach($estensioni_accettate as $k=>$v$estensioni_accettate[$k]=trim($v);
  67.     
  68.     $infofile=pathinfo($nomefile);
  69.     
  70. //    var_dump($estensioni_accettate);
  71.     
  72.     return (in_array($infofile['extension'],$estensioni_accettate)) ?  true:false;
  73.     
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80. /**
  81.  * Funzione per la determinazione del tipo di file immagine mediante il nome e l'estensione
  82.  * Restituisce una icona con il tipo (se presente nei casi descritti)
  83.  *
  84.  * @param string $nomefile 
  85.  * @return string 
  86.  */
  87. function img_filetype($nomefile){
  88.     
  89.     switch (substr($nomefile,-4,4)){
  90.         
  91.         case '.pdf'$mime='pdf.gif'$alt='pdf'break;
  92.         case '.doc'$mime='doc.gif'$alt='documento Word'break;
  93.         case '.xls'$mime='xls.gif'$alt='foglio di calcolo Excel'break;
  94.         case '.zip'$mime='zip.gif'$alt='file compresso zip'break;
  95.         default   $mime='generic.gif'$alt='file'break;
  96.         
  97.         
  98.     }
  99.     
  100.     
  101.     return "<img src=\"img/mime/$mime\" alt=\"$alt\" />";
  102.     
  103. }
  104.  
  105.  
  106.  
  107. /**
  108.  * Funzione che determina la dimensione di un file allegato
  109.  *
  110.  * @param int $id_file 
  111.  * @return string 
  112.  */
  113. function allegato_filesize($id_file){
  114.     
  115.     $file _PATH_ATTACHMENT."/$id_file.dat";
  116.     
  117.     if(file_exists($file)){
  118.         
  119.         $size filesize($file);
  120.         
  121.         if($size>1024){
  122.         
  123.             return round($size/1024)." Kb";
  124.         }
  125.         else{
  126.             return $size." bytes";
  127.         }
  128.     }
  129.     else return 'Dimensione non disponibile, il file sembra inesistente';
  130. }
  131.  
  132.  
  133. ######################################################################
  134. #
  135. #    CASO ELIMINA ALLEGATO
  136. #
  137.  
  138.  
  139. if(isset($_GET['del'])){
  140.     
  141.     $id_da_eliminare=str_replace(_BASE64_PASSFRASE,'',base64_decode($_GET['del']));
  142.     
  143.     $id_da_eliminare=intval($id_da_eliminare);
  144.     
  145.     // elimino dal DB
  146.     $q_del=vmsql_query("DELETE FROM "._TABELLA_ALLEGATO." WHERE codiceallegato=$id_da_eliminare",$link);
  147.     
  148.     $test_del_db(vmsql_affected_rows($link,$q_del)==1true:false;
  149.  
  150.     
  151.     // elimino dal filesystem
  152.     $test_del_fs=@unlink(_PATH_ATTACHMENT."/$id_da_eliminare.dat");
  153.     
  154.     if($test_del_db && $test_del_fs){
  155.         header("Location: ".$_SERVER['PHP_SELF']."?t=".$_GET['t']."&id=".$_GET['id']."&az=del&feed=ok");
  156.         
  157.     }
  158.     else{
  159.         header("Location: ".$_SERVER['PHP_SELF']."?t=".$_GET['t']."&id=".$_GET['id']."&az=del&feed=ko");
  160.     }
  161.     
  162.     exit;
  163. }
  164.  
  165.  
  166. #
  167. #
  168. ######################################################################
  169.  
  170.  
  171.  
  172.  
  173.  
  174. #######################################################################
  175. #
  176. #    CASO UPLOAD ESEGUITO
  177. #
  178.  
  179. if(count($_FILES)>0){
  180.     
  181.     
  182.     // variabile per il test finale
  183.     $success=0;
  184.     $tipo_errori_uparray();
  185.     
  186.     // CICLO SUI FILES
  187.     for($i=0;$i<count($_FILES['gfile']['tmp_name']);$i++){
  188.         
  189.         // test sulla correttezza dell'upload
  190.         if(is_file($_FILES['gfile']['tmp_name'][$i]&& $_FILES['gfile']['error'][$i]==0){
  191.             
  192.             $nome_pulito rinomina_file($_FILES['gfile']['name'][$i]);
  193.         }
  194.         else{
  195.             $tipo_errori_up[$i]='generico di upload';
  196.             continue;
  197.         }
  198.         
  199.         
  200.         // Test sul tipo di file
  201.         if(!verifica_tipo_file($nome_pulito,$_FILES['gfile']['type'][$i])){
  202.             $tipo_errori_up[$i]='tipo di file non accettato (le estensioni possibili sono: '.str_replace(",",", ",$GLOBALS['_VARIABILI']['formati_attach']).')';
  203.             continue;
  204.         }
  205.         
  206.         
  207.         // INSERISCE IN DATABASE
  208.         
  209.         $sql_ins=sprintf("INSERT INTO "._TABELLA_ALLEGATO."
  210.                  (tipoentita,codiceentita,nomefileall,descroggall,autoreall,lastdata)
  211.                  VALUES ('%s','%s','%s','%s','%s','%s')",
  212.                  $_POST['t'],
  213.                  $_POST['id'],
  214.                  $nome_pulito,
  215.                  '',
  216.                  ucfirst($_SESSION['user']['nome'])." ".ucfirst($_SESSION['user']['cognome']),
  217.                  date('Y-m-d H:i:s')
  218.                  );
  219.  
  220.         
  221.         $q_ins=vmsql_query($sql_ins,$link);
  222.         
  223.         $id_ultimo=vmsql_insert_id($link,_TABELLA_ALLEGATO,'codiceallegato');
  224.         
  225.         $test_move=move_uploaded_file($_FILES['gfile']['tmp_name'][$i],_PATH_ATTACHMENT."/$id_ultimo.dat");
  226.         
  227.         if($test_move){
  228.             
  229.             $success++;
  230.         }
  231.         else{
  232.             $tipo_errori_up[$i]='caricamento file nella cartella impossibile';
  233.             continue;
  234.         }
  235.         
  236.         
  237.         
  238.     }
  239.     
  240.     if($success==count($_FILES['gfile']['tmp_name'])){
  241.         
  242.         header("Location: ".$_SERVER['PHP_SELF']."?t=".$_POST['t']."&id=".$_POST['id']."&feed=ok");
  243.     }
  244.     else{
  245.         header("Location: ".$_SERVER['PHP_SELF']."?t=".$_POST['t']."&id=".$_POST['id']."&feed=ko&msg=".implode("|",$tipo_errori_up));
  246.     }
  247.     
  248.     exit;
  249. }
  250. ########################################################################
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264. ########################################################################
  265. #
  266. #    VISTA PAGINA - QUERY DI RICERCA ALLEGATI
  267. #
  268.  
  269.  
  270.  
  271.  
  272.  
  273. # CASO SPECIALE NEW:
  274. // L'utente ha cliccato su allegato quando ancora il record non era salvato..
  275. if($_GET['id']=='new'){
  276.     
  277.     $msg="La corretta procedura per allegare file, prevede prima il salvataggio del nuovo record e solo allora il caricamento di file allegati.";
  278.     openErrorGenerico('Impossibile allegare file prima di salvare il nuovo record',false,$msg,'popup');
  279.     exit;
  280. }
  281.  
  282. if($_GET['id']=='ric'){
  283.     
  284.     $msg="Si &egrave; in fase di ricerca. Eseguire o annullare la ricerca prima di inserire allegati.";
  285.     openErrorGenerico('Impossibile allegare file in modalit&agrave; ricerca',false,$msg,'popup');
  286.     exit;
  287. }
  288.  
  289.  
  290. $tabella preg_replace("'[\W]+'","",trim($_GET['t']));
  291. $id preg_replace("'[\W]+'","",trim($_GET['id']));
  292.  
  293.  
  294.  
  295. // PRENDI IMPOSTAZIONI ALLEGATI PER TABELLA/REGISTO
  296. $q_reg=vmsql_query("SELECT  permetti_allegati_ins
  297.                             permetti_allegati_del
  298.                     FROM {$db1['frontend']}.registro_tab
  299.                     WHERE table_name='$tabella'
  300.                     AND gid=".$_SESSION['gid'],$link);
  301.  
  302. list($allegati_ins,$allegati_del)=vmsql_fetch_row($q_reg);
  303.  
  304.  
  305.  
  306.  
  307. if(!is_tabella($tabella|| $id==''){
  308.     
  309.     openErrorGenerico('Errore nella richiesta',false);
  310.     exit;
  311. }
  312.  
  313.  
  314.  
  315.  
  316. // CERCA ALLEGATI PER QUESTA TABELLA
  317. $qa=vmsql_query("SELECT * FROM "._TABELLA_ALLEGATO."
  318.                 WHERE tipoentita='$tabella'
  319.                 AND codiceentita='$id'
  320.                 ORDER BY nomefilealllastdata",$link);
  321.  
  322. $num_allegati=vmsql_num_rows($qa);
  323.  
  324. $matrice_info_allegati=vmsql_fetch_assoc_all($qa);
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. $files array('sty/linguette.css','js/uploadprogress/BytesUploaded.js','js/uploadprogress/LoadVars.js','js/clona_attach.js','sty/attach.css');
  335.  
  336. $INIZIO_LAYOUTopenLayout1("Allegati",$files,'popup');
  337.  
  338. echo str_replace("<body>","<body onload=\"window.focus();\">",$INIZIO_LAYOUT);
  339.  
  340.  
  341.  
  342.  
  343.  
  344. echo "<h1 style=\"font-size:1.6em;\">Allegati per record <span style=\"color:#666;\">".$_GET['id']."</span> della tabella <span class=\"var\">".$_GET['t']."</span></h1>";
  345.  
  346. echo "<img src=\"./img/flussi.gif\" class=\"img-float\" alt=\"gestione allegati\" />\n";
  347.  
  348.  
  349.  
  350. $JS_aggiorna(isset($_GET['feed']&& $_GET['feed']=='ok'?  'window.opener.richiediAL();' "";
  351.  
  352.  
  353.     echo "    
  354.     <script type=\"text/javascript\">
  355.     
  356.         $JS_aggiorna
  357.     
  358.         var nuoviAllegati=0;
  359.         
  360.         var bUploaded = new BytesUploaded('whileuploading.php',500);
  361.     
  362.         var divs = new Array('allegati','nuoviallegati');
  363.     
  364.     
  365.         function eti(ido){
  366.             
  367.             for (var i in divs){
  368.                 document.getElementById('cont-eti-'+divs[i]).style.display='none';
  369.                 document.getElementById('li-'+divs[i]).className='disattiva';
  370.             }
  371.             
  372.             // attiva il selezionato
  373.             document.getElementById('cont-eti-'+ido).style.display='';
  374.             document.getElementById('li-'+ido).className='attiva';
  375.             
  376.         }
  377.     
  378.     
  379.     </script>
  380.     ";
  381.     
  382.     
  383.     if(isset($_GET['feed']&& $_GET['feed']=='ko'){
  384.         
  385.         
  386.         $messaggi=str_replace("|","<br />",$_GET['msg']);
  387.         
  388.         echo "<p><strong>Attenzione!</strong><br />\n$messaggi</p>\n";
  389.     }
  390.     
  391.  
  392.     echo "    
  393. <div id=\"contenitore-variabili\">
  394.     <div id=\"box-etichette\">
  395.         
  396.         <ul class=\"eti-var-gr\">
  397.  
  398.         
  399.             <li onclick=\"eti('allegati');\" id=\"li-allegati\" class=\"attiva\">Allegati presenti</li>
  400.             "($allegati_ins"<li onclick=\"eti('nuoviallegati');\" id=\"li-nuoviallegati\" class=\"disattiva\">Inserisci allegati</li>" "","
  401.  
  402.         </ul>
  403.     
  404.     </div>";
  405.  
  406.     
  407.     // opzione scarica tutti
  408.     if($num_allegati>=2){
  409.         
  410.         $link_scarica_tutti=" - <a href=\"download.php?type=all&amp;idr=".base64_encode($matrice_info_allegati[0]['codiceallegato']._BASE64_PASSFRASE)."\">Scarica tutti gli allegati</a>";
  411.     }
  412.     else{
  413.         $link_scarica_tutti='';
  414.     }
  415.     
  416.     // LINGUETTA NUOVO FLUSSO
  417.     echo "
  418.     <div class=\"cont-eti\" id=\"cont-eti-allegati\" >
  419.     
  420.         <p>Allegati presenti per questo record: <strong>$num_allegati</strong$link_scarica_tutti</p>
  421.         
  422.         <hr class=\"light2\" />
  423.         ";
  424.     
  425.         // MOSTRA GLI ALLEGATI
  426.         for($i=0;$i<count($matrice_info_allegati);$i++){
  427.             
  428.             $dimensione =    allegato_filesize($matrice_info_allegati[$i]['codiceallegato']);
  429.             
  430.             $scarica=(ereg('Dimensione',$dimensione)) """ - <a href=\"download.php?f=".base64_encode($matrice_info_allegati[$i]['codiceallegato']._BASE64_PASSFRASE)."\">Scarica</a>";
  431.             $elimina=($allegati_del" - <span class=\"fakelink-rosso\" onclick=\"if(confirm('Vuoi davvero cancellare questo allegato?')){ window.location='".$_SERVER['PHP_SELF']."?t=$tabella&amp;id=$id&amp;del=".base64_encode($matrice_info_allegati[$i]['codiceallegato']._BASE64_PASSFRASE)."';}\" >Elimina</span>" "";
  432.             
  433.             $estensione=substr($matrice_info_allegati[$i]['nomefileall'],-3,3);
  434.             
  435.             if($estensione=='gif' || $estensione=='jpg' || $estensione=='png' || 
  436.             $estensione=='GIF' || $estensione=='JPG' || $estensione=='PNG'){
  437.                 
  438.                 $immagine='<img src="thumb.php?id='.$matrice_info_allegati[$i]['codiceallegato'].'" alt="'.$matrice_info_allegati[$i]['nomefileall'].'" class="thumb" /><div style="clear:both">&nbsp;</div>';
  439.             }
  440.             else{
  441.                 
  442.                 $immagine img_filetype($matrice_info_allegati[$i]['nomefileall']);
  443.             }
  444.             
  445.             echo "
  446.             <div class=\"allegato\">
  447.                 <div class=\"allegato-img\">".$immagine."</div>
  448.                 <div class=\"allegato-info\">
  449.                     <strong>".$matrice_info_allegati[$i]['nomefileall']."</strong><br />
  450.                     $dimensione $scarica $elimina
  451.                     
  452.                 </div>
  453.             </div>\n";
  454.         }
  455.     
  456.     
  457.     
  458.     
  459.     echo "
  460.     </div>
  461.     ";
  462.     
  463.     
  464.     // LINGUETTA AMMINISTRAZIONE FLUSSI
  465.     if($allegati_ins){
  466.     echo "
  467.     <div class=\"cont-eti\" id=\"cont-eti-nuoviallegati\" style=\"display:none;\">
  468.         <br />
  469.         ";
  470.     ?>
  471.     <form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" onsubmit="bUploaded.start('fileprogress');">
  472.             <div>
  473.                 <div id="contenitore-file"><div><input type="file" name="gfile[]" size="60" /> <span onclick="rimuovi_attach(this);" class="fakelink" style="font-size:0.7em;">rimuovi</span><br /></div></div>
  474.                 
  475.                 <span onclick="clona_attach();" class="fakelink">Aggiungi un altro file</span><br /><br /><br />
  476.                 
  477.                 
  478.                 <input type="hidden" name="t" value="<?php echo $tabella;?>" />
  479.                 <input type="hidden" name="id" value="<?php echo $id;?>" />
  480.                 
  481.                 <input type="submit" name="aggiungi" value="  Invia  " onclick="submit();this.value='Attendere, prego';this.disabled=true;" />
  482.                     
  483.             </div>
  484.         </form>
  485.         <div id="fileprogress" style="font-weight: bold;"> </div>
  486.  
  487. <?php
  488.     
  489.     echo "</div>\n";
  490.     // -- fine clausola nuovi inserimenti
  491.     
  492. echo "</div><!-- fine contenitore -->\n\n";
  493.  
  494.  
  495.  
  496.  
  497. echo closeLayout1();
  498. ?>

Documentation generated on Sat, 22 Sep 2007 11:49:40 +0200 by phpDocumentor 1.4.0a2