2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/core.php' ;
// Lettura parametri iniziali
if ( ! empty ( $id_plugin )) {
2018-07-18 16:12:25 +02:00
$element = Plugins :: get ( $id_plugin );
2017-08-04 16:28:16 +02:00
2018-07-18 16:12:25 +02:00
$directory = '/plugins/' . $element [ 'directory' ];
$id_module = $element [ 'idmodule_to' ];
2017-08-04 16:28:16 +02:00
} else {
2018-07-18 16:12:25 +02:00
$element = Modules :: get ( $id_module );
2017-08-04 16:28:16 +02:00
2018-07-18 16:12:25 +02:00
$directory = '/modules/' . $element [ 'directory' ];
2017-08-04 16:28:16 +02:00
}
2018-07-18 16:12:25 +02:00
if ( empty ( $element ) || empty ( $element [ 'enabled' ])) {
die ( tr ( 'Accesso negato' ));
}
$php = App :: filepath ( $directory . '|custom|' , 'add.php' );
$html = App :: filepath ( $directory . '|custom|' , 'add.html' );
$element [ 'add_file' ] = ! empty ( $php ) ? $php : $html ;
$php = App :: filepath ( $directory . '|custom|' , 'edit.php' );
$html = App :: filepath ( $directory . '|custom|' , 'edit.html' );
$element [ 'edit_file' ] = ! empty ( $php ) ? $php : $html ;
2018-07-10 12:07:48 +02:00
$upload_dir = DOCROOT . '/' . Uploads :: getDirectory ( $id_module , $id_plugin );
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-07-10 12:07:48 +02:00
} elseif ( post ( 'op' ) == 'send-email' ) {
2018-02-20 17:57:16 +01:00
$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-07-10 12:07:48 +02:00
// Informazioni di log
Filter :: set ( 'get' , 'id_email' , $template [ 'id' ]);
2018-02-20 17:57:16 +01:00
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
2018-07-10 12:07:48 +02:00
$mail -> addReceivers ( $post [ 'destinatari' ], $post [ 'tipo_destinatari' ]);
2018-02-21 17:47:43 +01:00
2018-02-20 17:57:16 +01:00
// Oggetto
$mail -> Subject = $post [ 'subject' ];
// Allegati
2018-07-10 12:07:48 +02:00
$mail -> attach ( $post [ 'prints' ], $post [ 'attachments' ]);
2018-02-20 17:57:16 +01:00
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
}
2017-08-04 16:28:16 +02:00
}
2018-07-18 16:12:25 +02:00
// Inclusione di eventuale plugin personalizzato
if ( ! empty ( $element [ 'script' ])) {
include App :: filepath ( 'modules/' . $element [ 'module_dir' ] . '/plugins|custom|' , $element [ 'script' ]);
2017-08-04 16:28:16 +02:00
2018-07-18 16:12:25 +02:00
$dbo -> query ( 'COMMIT' );
2018-07-02 15:41:38 +02:00
2018-07-18 16:12:25 +02:00
return ;
}
2017-08-04 16:28:16 +02:00
2018-07-19 12:47:28 +02:00
// Caricamento funzioni del modulo
$modutil = App :: filepath ( $directory . '|custom|' , 'modutil.php' );
if ( ! empty ( $modutil )) {
include_once $modutil ;
}
2017-08-04 16:28:16 +02:00
2018-07-18 16:12:25 +02:00
// Lettura risultato query del modulo
2018-07-19 12:47:28 +02:00
$init = App :: filepath ( $directory . '|custom|' , 'init.php' );
if ( ! empty ( $init )) {
include_once $init ;
}
2017-08-04 16:28:16 +02:00
2018-07-18 16:12:25 +02:00
// Retrocompatibilità
if ( ! isset ( $record ) && isset ( $records [ 0 ])) {
$record = $records [ 0 ];
2018-07-19 09:58:28 +02:00
} elseif ( ! isset ( $records [ 0 ]) && isset ( $record )) {
$records = [ $record ];
2018-07-19 12:47:28 +02:00
} elseif ( ! isset ( $record )) {
$record = [];
$records = [ $record ];
2018-07-18 16:12:25 +02:00
}
2018-07-18 14:50:46 +02:00
2018-07-18 16:12:25 +02:00
// Registrazione del record
HTMLBuilder\HTMLBuilder :: setRecord ( $record );
if ( Modules :: getPermission ( $id_module ) == 'rw' ) {
// 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 );
2018-07-19 12:47:28 +02:00
$bulk = App :: filepath ( $directory . '|custom|' , 'bulk.php' );
$bulk = empty ( $bulk ) ? [] : include $bulk ;
2018-07-18 16:12:25 +02:00
$bulk = empty ( $bulk ) ? [] : $bulk ;
if ( in_array ( post ( 'op' ), array_keys ( $bulk ))) {
redirect ( ROOTDIR . '/controller.php?id_module=' . $id_module , 'js' );
} else {
// Esecuzione delle operazioni del modulo
include App :: filepath ( $directory . '|custom|' , 'actions.php' );
// Operazioni generiche per i campi personalizzati
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 );
}
$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-15 17:30:42 +01:00
}
2018-07-18 16:12:25 +02:00
}
// Inserimento iniziale
if ( starts_with ( post ( 'op' ), 'add' )) {
// Informazioni di log
Filter :: set ( 'get' , 'id_record' , $id_record );
2018-02-10 17:24:16 +01:00
2018-07-18 16:12:25 +02:00
foreach ( $values as $key => $value ) {
$dbo -> insert ( 'zz_field_record' , [
'id_record' => $id_record ,
'id_field' => $key ,
'value' => $value ,
]);
2018-02-10 17:24:16 +01:00
}
2018-07-18 16:12:25 +02:00
}
2018-02-10 17:24:16 +01:00
2018-07-18 16:12:25 +02: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-07-18 16:12:25 +02:00
}
2018-02-10 17:24:16 +01:00
2018-07-18 16:12:25 +02: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' );