2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/core.php' ;
// Lettura parametri iniziali
if ( ! empty ( $id_plugin )) {
2017-09-22 15:19:59 +02:00
$info = Plugins :: get ( $id_plugin );
2017-08-04 16:28:16 +02:00
$directory = '/plugins/' . $info [ 'directory' ];
$permesso = $info [ 'idmodule_to' ];
2018-06-26 14:26:40 +02:00
$id_module = $info [ 'idmodule_to' ];
2017-08-04 16:28:16 +02:00
} else {
2017-09-22 15:19:59 +02:00
$info = Modules :: get ( $id_module );
2017-08-04 16:28:16 +02:00
$directory = '/modules/' . $info [ 'directory' ];
$permesso = $id_module ;
}
2018-02-20 17:57:16 +01:00
$upload_dir = DOCROOT . '/files/' . basename ( $directory );
2017-08-28 09:49:38 +02:00
2017-08-04 16:28:16 +02:00
$dbo -> query ( 'START TRANSACTION' );
// GESTIONE UPLOAD
if ( filter ( 'op' ) == 'link_file' || filter ( 'op' ) == 'unlink_file' ) {
// Controllo sui permessi di scrittura per il modulo
if ( Modules :: getPermission ( $id_module ) != 'rw' ) {
2018-07-07 13:56:22 +02:00
App :: flash () -> error ( tr ( 'Non hai permessi di scrittura per il modulo _MODULE_' , [
2017-09-22 15:19:59 +02:00
'_MODULE_' => '"' . Modules :: get ( $id_module )[ 'name' ] . '"' ,
2018-07-07 13:56:22 +02:00
]));
2017-08-04 16:28:16 +02:00
}
// Controllo sui permessi di scrittura per il file system
2017-09-11 17:49:03 +02:00
elseif ( ! directory ( $upload_dir )) {
2018-07-07 13:56:22 +02:00
App :: flash () -> error ( tr ( 'Non hai i permessi di scrittura nella cartella _DIR_!' , [
2017-09-10 14:35:41 +02:00
'_DIR_' => '"files"' ,
2018-07-07 13:56:22 +02:00
]));
2017-08-04 16:28:16 +02:00
}
// Gestione delle operazioni
else {
// UPLOAD
if ( filter ( 'op' ) == 'link_file' && ! empty ( $_FILES ) && ! empty ( $_FILES [ 'blob' ][ 'name' ])) {
2018-07-03 21:22:29 +02:00
$upload = Uploads :: upload ( $_FILES [ 'blob' ], [
2018-07-03 11:12:32 +02:00
'name' => filter ( 'nome_allegato' ),
'category' => filter ( 'categoria' ),
'id_module' => $id_module ,
'id_plugin' => $id_plugin ,
2018-07-03 21:22:29 +02:00
'id_record' => $id_record ,
2018-07-03 11:12:32 +02:00
]);
2018-05-22 17:42:19 +02:00
2017-09-10 14:35:41 +02:00
// Creazione file fisico
2018-07-03 21:22:29 +02:00
if ( ! empty ( $upload )) {
2018-07-07 13:56:22 +02:00
App :: flash () -> info ( tr ( 'File caricato correttamente!' ));
2017-09-10 14:35:41 +02:00
} else {
2018-07-07 13:56:22 +02:00
App :: flash () -> error ( tr ( 'Errore durante il caricamento del file!' ));
2017-09-10 14:35:41 +02:00
}
2017-08-04 16:28:16 +02:00
}
// DELETE
elseif ( filter ( 'op' ) == 'unlink_file' && filter ( 'filename' ) !== null ) {
2018-07-03 21:22:29 +02:00
$name = Uploads :: delete ( filter ( 'filename' ), [
'id_module' => $id_module ,
'id_plugin' => $id_plugin ,
'id_record' => $id_record ,
]);
2017-08-04 16:28:16 +02:00
2018-07-03 21:22:29 +02:00
if ( ! empty ( $name )) {
2018-07-07 13:56:22 +02:00
App :: flash () -> info ( tr ( 'File _FILE_ eliminato!' , [
2018-07-03 21:22:29 +02:00
'_FILE_' => '"' . $name . '"' ,
2018-07-07 13:56:22 +02:00
]));
2018-07-03 21:22:29 +02:00
} else {
2018-07-07 13:56:22 +02:00
App :: flash () -> error ( tr ( " Errore durante l'eliminazione del file! " ));
2017-08-04 16:28:16 +02:00
}
}
2018-05-16 00:19:10 +02:00
redirect ( ROOTDIR . '/editor.php?id_module=' . $id_module . '&id_record=' . $id_record . (( ! empty ( $options [ 'id_plugin' ])) ? '#tab_' . $options [ 'id_plugin' ] : '' ));
2017-08-04 16:28:16 +02:00
}
2017-08-28 09:49:38 +02:00
} elseif ( filter ( 'op' ) == 'download_file' ) {
$rs = $dbo -> fetchArray ( 'SELECT * FROM zz_files WHERE id_module=' . prepare ( $id_module ) . ' AND id=' . prepare ( filter ( 'id' )) . ' AND filename=' . prepare ( filter ( 'filename' )));
2017-09-11 17:49:03 +02:00
download ( $upload_dir . '/' . $rs [ 0 ][ 'filename' ], $rs [ 0 ][ 'original' ]);
2018-02-20 17:57:16 +01:00
} elseif ( filter ( 'op' ) == 'send-email' ) {
$template = Mail :: getTemplate ( $post [ 'template' ]);
2018-06-25 19:05:00 +02:00
$id_account = $template [ 'id_smtp' ];
2018-06-26 14:26:40 +02:00
2018-03-30 13:29:21 +02:00
// Elenco degli allegati
2018-02-21 17:47:43 +01:00
$attachments = [];
2018-02-20 17:57:16 +01:00
2018-02-21 17:47:43 +01:00
// Stampe
foreach ( $post [ 'prints' ] as $print ) {
$print = Prints :: get ( $print );
2018-02-20 17:57:16 +01:00
2018-03-31 08:44:42 +02:00
// Utilizzo di una cartella particolare per il salvataggio temporaneo degli allegati
$filename = DOCROOT . '/files/attachments/' . $print [ 'title' ] . ' - ' . $id_record . '.pdf' ;
2018-02-20 17:57:16 +01:00
2018-02-21 17:47:43 +01:00
Prints :: render ( $print [ 'id' ], $id_record , $filename );
$attachments [] = [
'path' => $filename ,
2018-04-26 17:58:39 +02:00
'name' => $print [ 'title' ] . '.pdf' ,
2018-02-21 17:47:43 +01:00
];
2018-02-20 17:57:16 +01:00
}
2018-02-21 17:47:43 +01:00
// Allegati del record
$selected = [];
if ( ! empty ( $post [ 'attachments' ])) {
2018-04-02 08:38:03 +02:00
$selected = $dbo -> fetchArray ( 'SELECT * FROM zz_files WHERE id IN (' . implode ( ',' , $post [ 'attachments' ]) . ') AND id_module = ' . prepare ( $id_module ) . ' AND id_record = ' . prepare ( $id_record ));
2018-02-20 17:57:16 +01:00
}
2018-02-21 17:47:43 +01:00
foreach ( $selected as $attachment ) {
$attachments [] = [
'path' => $upload_dir . '/' . $attachment [ 'filename' ],
'name' => $attachment [ 'nome' ],
];
}
// Allegati dell'Azienda predefinita
2018-02-20 17:57:16 +01:00
$anagrafiche = Modules :: get ( 'Anagrafiche' );
2018-02-21 17:47:43 +01:00
$selected = [];
if ( ! empty ( $post [ 'attachments' ])) {
$selected = $dbo -> fetchArray ( 'SELECT * FROM zz_files WHERE id IN (' . implode ( ',' , $post [ 'attachments' ]) . ') AND id_module != ' . prepare ( $id_module ));
}
foreach ( $selected as $attachment ) {
$attachments [] = [
'path' => DOCROOT . '/files/' . $anagrafiche [ 'directory' ] . '/' . $attachment [ 'filename' ],
'name' => $attachment [ 'nome' ],
];
2018-02-20 17:57:16 +01:00
}
// Preparazione email
2018-06-25 19:05:00 +02:00
$mail = new Mail ( $id_account );
2018-02-20 17:57:16 +01:00
2018-02-21 17:47:43 +01:00
// Conferma di lettura
if ( ! empty ( $post [ 'read_notify' ])) {
$mail -> ConfirmReadingTo = $mail -> From ;
}
2018-02-20 17:57:16 +01:00
// Reply To
if ( ! empty ( $template [ 'reply_to' ])) {
$mail -> AddReplyTo ( $template [ 'reply_to' ]);
}
// CC
if ( ! empty ( $template [ 'cc' ])) {
$mail -> AddCC ( $template [ 'cc' ]);
}
// BCC
if ( ! empty ( $template [ 'bcc' ])) {
$mail -> AddBCC ( $template [ 'bcc' ]);
}
2018-02-21 17:47:43 +01:00
// Destinatari
foreach ( $post [ 'destinatari' ] as $key => $destinatario ) {
$type = $post [ 'tipo_destinatari' ][ $key ];
$pieces = explode ( '<' , $destinatario );
$count = count ( $pieces );
$name = null ;
if ( $count > 1 ) {
$email = substr ( end ( $pieces ), 0 , - 1 );
$name = substr ( $destinatario , 0 , strpos ( $destinatario , '<' . $email ));
} else {
$email = $destinatario ;
}
if ( ! empty ( $email )) {
if ( $type == 'a' ) {
$mail -> AddAddress ( $email , $name );
} elseif ( $type == 'cc' ) {
$mail -> AddCC ( $email , $name );
} elseif ( $type == 'bcc' ) {
$mail -> AddBCC ( $email , $name );
}
}
}
2018-02-20 17:57:16 +01:00
// Oggetto
$mail -> Subject = $post [ 'subject' ];
// Allegati
2018-03-30 13:29:21 +02:00
foreach ( $attachments as $attachment ) {
2018-02-20 17:57:16 +01:00
$mail -> AddAttachment ( $attachment [ 'path' ], $attachment [ 'name' ]);
}
2018-02-21 17:47:43 +01:00
// Contenuto
2018-02-20 17:57:16 +01:00
$mail -> Body = $post [ 'body' ];
// Invio mail
if ( ! $mail -> send ()) {
2018-07-07 13:56:22 +02:00
App :: flash () -> error ( tr ( " Errore durante l'invio dell'email " ) . ': ' . $mail -> ErrorInfo );
2018-02-20 17:57:16 +01:00
} else {
2018-07-07 13:56:22 +02:00
App :: flash () -> info ( tr ( 'Email inviata correttamente!' ));
2018-02-20 17:57:16 +01:00
}
2018-02-21 17:47:43 +01:00
redirect ( ROOTDIR . '/editor.php?id_module=' . $id_module . '&id_record=' . $id_record );
exit ();
2017-08-04 16:28:16 +02:00
}
2017-09-22 15:29:44 +02:00
if ( Modules :: getPermission ( $permesso ) == 'r' || Modules :: getPermission ( $permesso ) == 'rw' ) {
2018-06-26 14:26:40 +02:00
// Inclusione di eventuale plugin personalizzato
2017-08-04 16:28:16 +02:00
if ( ! empty ( $info [ 'script' ])) {
2018-06-26 14:26:40 +02:00
include App :: filepath ( 'modules/' . $info [ 'module_dir' ] . '/plugins|custom|' , $info [ 'script' ]);
2017-08-04 16:28:16 +02:00
2018-07-02 15:41:38 +02:00
$dbo -> query ( 'COMMIT' );
2017-08-04 16:28:16 +02:00
return ;
}
// Caricamento helper modulo (verifico se ci sono helper personalizzati)
2018-06-26 14:26:40 +02:00
include_once App :: filepath ( $directory . '|custom|' , 'modutil.php' );
2017-08-04 16:28:16 +02:00
// Lettura risultato query del modulo
2018-06-26 14:26:40 +02:00
include App :: filepath ( $directory . '|custom|' , 'init.php' );
2017-08-04 16:28:16 +02:00
2018-02-10 17:24:16 +01:00
if ( Modules :: getPermission ( $permesso ) == 'rw' ) {
2017-09-22 15:29:44 +02:00
// Esecuzione delle operazioni di gruppo
$id_records = post ( 'id_records' );
$id_records = is_array ( $id_records ) ? $id_records : explode ( ';' , $id_records );
$id_records = array_filter ( $id_records , function ( $var ) { return ! empty ( $var ); });
$id_records = array_unique ( $id_records );
2017-08-04 16:28:16 +02:00
2018-06-26 14:26:40 +02:00
$bulk = include App :: filepath ( $directory . '|custom|' , 'bulk.php' );
$bulk = empty ( $bulk ) ? [] : $bulk ;
2017-08-04 16:28:16 +02:00
2017-09-22 15:29:44 +02:00
if ( in_array ( post ( 'op' ), array_keys ( $bulk ))) {
redirect ( ROOTDIR . '/controller.php?id_module=' . $id_module , 'js' );
} else {
// Esecuzione delle operazioni del modulo
2018-06-26 14:26:40 +02:00
include App :: filepath ( $directory . '|custom|' , 'actions.php' );
2018-02-10 17:24:16 +01:00
// Operazioni generiche per i campi personalizzati
2018-02-15 17:30:42 +01:00
if ( post ( 'op' ) != null ) {
$query = 'SELECT `id`, `name` FROM `zz_fields` WHERE ' ;
if ( ! empty ( $id_plugin )) {
$query .= '`id_plugin` = ' . prepare ( $id_plugin );
} else {
$query .= '`id_module` = ' . prepare ( $id_module );
2018-02-10 17:24:16 +01:00
}
2018-02-15 17:30:42 +01:00
$customs = $dbo -> fetchArray ( $query );
if ( ! starts_with ( post ( 'op' ), 'delete' )) {
$values = [];
foreach ( $customs as $custom ) {
if ( isset ( $post [ $custom [ 'name' ]])) {
$values [ $custom [ 'id' ]] = $post [ $custom [ 'name' ]];
}
}
2018-02-10 17:24:16 +01:00
2018-02-15 17:30:42 +01:00
// Inserimento iniziale
if ( starts_with ( post ( 'op' ), 'add' )) {
foreach ( $values as $key => $value ) {
$dbo -> insert ( 'zz_field_record' , [
2018-05-11 15:56:08 +02:00
'id_record' => $id_record ,
'id_field' => $key ,
'value' => $value ,
]);
2018-02-15 17:30:42 +01:00
}
2018-02-10 17:24:16 +01:00
}
2018-02-15 17:30:42 +01:00
// Aggiornamento
elseif ( starts_with ( post ( 'op' ), 'update' )) {
foreach ( $values as $key => $value ) {
$dbo -> update ( 'zz_field_record' , [
2018-02-10 17:24:16 +01:00
'value' => $value ,
], [
'id_record' => $id_record ,
'id_field' => $key ,
]);
2018-02-15 17:30:42 +01:00
}
2018-02-10 17:24:16 +01:00
}
}
2018-02-15 17:30:42 +01:00
// Eliminazione
elseif ( ! empty ( $customs )) {
$dbo -> query ( 'DELETE FROM `zz_field_record` WHERE `id_record` = ' . prepare ( $id_record ) . ' AND `id_field` IN (' . implode ( array_column ( $customs , 'id' )) . ')' );
}
2018-02-10 17:24:16 +01:00
}
2017-08-04 16:28:16 +02:00
}
}
}
$dbo -> query ( 'COMMIT' );