Ariecchime!!!
Trovata una soluzione per eliminare anche l'allegato dopo l'invio della mail, ma si può migliorare.
Sul forum di Chronoengine è riportato un unico post con questa possibile soluzione:
<?php
$MyForm =& CFChronoForm::getInstance('formname');
$MyUploads =& CFUploads::getInstance($MyForm->formrow->id);
$MyUploads->deleteUploads();
?>
Questo codice sfrutta la funzione (sarebbe più corretto chiamarla "metodo"
) deleteUploads() per cancellare tutti gli allegati contenuti nella cartella di upload di Chronoform. La funzione è contenuta nel file chronoformuploads.php.
A me questo codice non funziona, forse per un problema di permessi su cartelle (755) e file (644). Purtroppo la funzione non restituisce nessun messaggio di errore, semplicemente i file nella cartella uploads/nome_form sono sempre al loro posto.
Ho provato un'altra soluzione con questo codice (sfruttando un hack di vales
):
<?php
global $mainframe;
$db=& JFactory::getDBO();
// ricava il percorso dove sono depositati gli allegati
$uploadpath = $MyForm->formparams('uploadpath', JPATH_SITE.DS.'components'.DS.'com_chronocontact'.DS.'uploads'.DS.$MyForm->formrow->name.DS);
// legge dalla tabella collegata al form il nome del file allegato
// attenzione! sostituire al post di tx_allegato il nome del campo della vostra tabella
// destinato a contenere il nome del file allegato
$query = "SELECT `tx_allegato` FROM `#__chronoforms_".$MyForm->formrow->name."` WHERE `uid` = '".JRequest::getVar('uid')."'";
$db->setQuery( $query );
$all=$db->loadRow();
$allegato=trim($all[0]);
$this_attachments[0] = $uploadpath.$allegato;
// cancella il file allegato (eventualmente restituisce un messaggio di errore)
if(!JFile::delete($this_attachments[0], 'NULL')){
JError::raiseWarning(100, 'Non posso cancellare l\'allegato');
}
// elimina dalla tabella collegata al form il record contenente i dati del form
$query = "DELETE FROM `#__chronoforms_".$MyForm->formrow->name."` WHERE `uid` = '".JRequest::getVar('uid')."'";
$db->setQuery( $query );
$result = $db->query();
?>
Il codice è abbastanza commentato da essere comprensibile.
Unico difetto è che nella query che legge il nome del file allegato dalla tabella collegata al form bisogna indicare il nome del campo che contiene il nome dell'allegato.
Ciao!!!