mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
Gestione immagini come allegati
Gestione delle immagini degli Articoli come allegati.
This commit is contained in:
30
actions.php
30
actions.php
@@ -40,16 +40,16 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
|
|||||||
else {
|
else {
|
||||||
// UPLOAD
|
// UPLOAD
|
||||||
if (filter('op') == 'link_file' && !empty($_FILES) && !empty($_FILES['blob']['name'])) {
|
if (filter('op') == 'link_file' && !empty($_FILES) && !empty($_FILES['blob']['name'])) {
|
||||||
$upload = Uploads::upload($_FILES['blob']['tmp_name'], $_FILES['blob']['name'], $upload_dir, [
|
$upload = Uploads::upload($_FILES['blob'], [
|
||||||
'name' => filter('nome_allegato'),
|
'name' => filter('nome_allegato'),
|
||||||
'category' => filter('categoria'),
|
'category' => filter('categoria'),
|
||||||
'id_module' => $id_module,
|
'id_module' => $id_module,
|
||||||
'id_record' => $id_record,
|
|
||||||
'id_plugin' => $id_plugin,
|
'id_plugin' => $id_plugin,
|
||||||
|
'id_record' => $id_record,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Creazione file fisico
|
// Creazione file fisico
|
||||||
if ($upload) {
|
if (!empty($upload)) {
|
||||||
$_SESSION['infos'][] = tr('File caricato correttamente!');
|
$_SESSION['infos'][] = tr('File caricato correttamente!');
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['errors'][] = tr('Errore durante il caricamento del file!');
|
$_SESSION['errors'][] = tr('Errore durante il caricamento del file!');
|
||||||
@@ -58,22 +58,18 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
|
|||||||
|
|
||||||
// DELETE
|
// DELETE
|
||||||
elseif (filter('op') == 'unlink_file' && filter('filename') !== null) {
|
elseif (filter('op') == 'unlink_file' && filter('filename') !== null) {
|
||||||
$filename = filter('filename');
|
$name = Uploads::delete(filter('filename'), [
|
||||||
|
'id_module' => $id_module,
|
||||||
|
'id_plugin' => $id_plugin,
|
||||||
|
'id_record' => $id_record,
|
||||||
|
]);
|
||||||
|
|
||||||
$rs = $dbo->fetchArray('SELECT * FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare(filter('id')).' AND filename='.prepare($filename));
|
if (!empty($name)) {
|
||||||
|
$_SESSION['infos'][] = tr('File _FILE_ eliminato!', [
|
||||||
if (delete($upload_dir.'/'.$filename)) {
|
'_FILE_' => '"'.$name.'"',
|
||||||
$query = 'DELETE FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare(filter('id')).' AND filename='.prepare($filename);
|
|
||||||
if ($dbo->query($query)) {
|
|
||||||
$_SESSION['infos'][] = tr('File _FILE_ eliminato!', [
|
|
||||||
'_FILE_' => '"'.$rs[0]['nome'].'"',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$_SESSION['errors'][] = tr("Errore durante l'eliminazione del file _FILE_ in _DIR_!", [
|
|
||||||
'_FILE_' => '"'.$rs[0]['nome'].'"',
|
|
||||||
'_DIR_' => '"files/'.$module_dir.'/"',
|
|
||||||
]);
|
]);
|
||||||
|
} else {
|
||||||
|
$_SESSION['errors'][] = tr("Errore durante l'eliminazione del file!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,17 +30,13 @@ if (post('action') == 'init') {
|
|||||||
|
|
||||||
// Logo stampe
|
// Logo stampe
|
||||||
if (!empty($_FILES) && !empty($_FILES['blob']['name'])) {
|
if (!empty($_FILES) && !empty($_FILES['blob']['name'])) {
|
||||||
$file_id = Uploads::upload($_FILES['blob']['tmp_name'], $_FILES['blob']['name'], DOCROOT.'/files/anagrafiche', [
|
$file = Uploads::upload($_FILES['blob'], [
|
||||||
'name' => 'Logo stampe',
|
'name' => 'Logo stampe',
|
||||||
'id_module' => $id_module,
|
'id_module' => $id_module,
|
||||||
'id_record' => $id_record,
|
'id_record' => $id_record,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$file = $dbo->selectOne('zz_files', ['filename'], [
|
Settings::set('Logo stampe', $file);
|
||||||
'id' => $file_id,
|
|
||||||
]);
|
|
||||||
|
|
||||||
Settings::set('Logo stampe', $file['filename']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,72 +3,65 @@
|
|||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
switch (post('op')) {
|
switch (post('op')) {
|
||||||
case 'update':
|
// Aggiunta articolo
|
||||||
|
case 'add':
|
||||||
$codice = post('codice');
|
$codice = post('codice');
|
||||||
$descrizione = post('descrizione');
|
|
||||||
$um = post('um');
|
// Inserisco l'articolo solo se non esiste un altro articolo con stesso codice
|
||||||
$categoria = post('categoria');
|
if ($dbo->fetchNum('SELECT * FROM mg_articoli WHERE codice='.prepare($codice)) == 0) {
|
||||||
$subcategoria = post('subcategoria');
|
$dbo->insert('mg_articoli', [
|
||||||
|
'codice' => $codice,
|
||||||
|
'descrizione' => post('descrizione'),
|
||||||
|
'id_categoria' => post('categoria'),
|
||||||
|
'id_sottocategoria' => post('subcategoria'),
|
||||||
|
'attivo' => 1,
|
||||||
|
]);
|
||||||
|
$id_record = $dbo->lastInsertedID();
|
||||||
|
|
||||||
|
$_SESSION['infos'][] = tr('Aggiunto un nuovo articolo!');
|
||||||
|
} else {
|
||||||
|
$_SESSION['errors'][] = tr('Esiste già un articolo con questo codice!');
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Modifica articolo
|
||||||
|
case 'update':
|
||||||
|
$componente = post('componente_filename');
|
||||||
$qta = post('qta');
|
$qta = post('qta');
|
||||||
$threshold_qta = post('threshold_qta');
|
|
||||||
|
|
||||||
$abilita_serial = post('abilita_serial');
|
$dbo->update('mg_articoli', [
|
||||||
|
'codice' => post('codice'),
|
||||||
$prezzo_vendita = post('prezzo_vendita');
|
'descrizione' => post('descrizione'),
|
||||||
$prezzo_acquisto = post('prezzo_acquisto');
|
'um' => post('um'),
|
||||||
|
'id_categoria' => post('categoria'),
|
||||||
$idiva_vendita = post('idiva_vendita');
|
'id_sottocategoria' => post('subcategoria'),
|
||||||
$gg_garanzia = post('gg_garanzia');
|
'abilita_serial' => post('abilita_serial'),
|
||||||
$servizio = post('servizio');
|
'threshold_qta' => post('threshold_qta'),
|
||||||
$componente_filename = post('componente_filename');
|
'prezzo_vendita' => post('prezzo_vendita'),
|
||||||
|
'prezzo_acquisto' => post('prezzo_acquisto'),
|
||||||
$volume = post('volume');
|
'idiva_vendita' => post('idiva_vendita'),
|
||||||
$peso_lordo = post('peso_lordo');
|
'gg_garanzia' => post('gg_garanzia'),
|
||||||
|
'servizio' => post('servizio'),
|
||||||
$attivo = post('attivo');
|
'volume' => post('volume'),
|
||||||
|
'peso_lordo' => post('peso_lordo'),
|
||||||
$note = post('note');
|
'componente_filename' => $componente,
|
||||||
|
'attivo' => post('attivo'),
|
||||||
$query = 'UPDATE mg_articoli SET '.
|
'note' => post('note'),
|
||||||
' codice='.prepare($codice).','.
|
], ['id' => $id_record]);
|
||||||
' descrizione='.prepare($descrizione).','.
|
|
||||||
' um='.prepare($um).','.
|
|
||||||
' id_categoria='.prepare($categoria).','.
|
|
||||||
' id_sottocategoria='.prepare($subcategoria).','.
|
|
||||||
' abilita_serial='.prepare($abilita_serial).','.
|
|
||||||
' threshold_qta='.prepare($threshold_qta).','.
|
|
||||||
' prezzo_vendita='.prepare($prezzo_vendita).','.
|
|
||||||
' prezzo_acquisto='.prepare($prezzo_acquisto).','.
|
|
||||||
' idiva_vendita='.prepare($idiva_vendita).','.
|
|
||||||
' gg_garanzia='.prepare($gg_garanzia).','.
|
|
||||||
' servizio='.prepare($servizio).','.
|
|
||||||
' volume='.prepare($volume).','.
|
|
||||||
' peso_lordo='.prepare($peso_lordo).','.
|
|
||||||
' componente_filename='.prepare($componente_filename).','.
|
|
||||||
' attivo='.prepare($attivo).', '.
|
|
||||||
' note='.prepare($note).
|
|
||||||
' WHERE id='.prepare($id_record);
|
|
||||||
$dbo->query($query);
|
|
||||||
|
|
||||||
// Leggo la quantità attuale per capire se l'ho modificata
|
// Leggo la quantità attuale per capire se l'ho modificata
|
||||||
$rs = $dbo->fetchArray('SELECT qta FROM mg_articoli WHERE id='.prepare($id_record));
|
$old_qta = $records[0]['qta'];
|
||||||
$old_qta = $rs[0]['qta'];
|
|
||||||
$movimento = $qta - $old_qta;
|
$movimento = $qta - $old_qta;
|
||||||
|
|
||||||
if ($movimento != 0) {
|
if ($movimento != 0) {
|
||||||
$descrizione_movimento = post('descrizione_movimento');
|
$descrizione_movimento = post('descrizione_movimento');
|
||||||
$data_movimento = post('data_movimento');
|
$data_movimento = post('data_movimento');
|
||||||
if ($descrizione_movimento != '' && $data_movimento != '') {
|
|
||||||
add_movimento_magazzino($id_record, $movimento, [], $descrizione_movimento, $data_movimento);
|
add_movimento_magazzino($id_record, $movimento, [], $descrizione_movimento, $data_movimento);
|
||||||
} else {
|
|
||||||
add_movimento_magazzino($id_record, $movimento);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Salvataggio info componente (campo `contenuto`)
|
||||||
Salvataggio info componente (campo `contenuto`)
|
|
||||||
*/
|
|
||||||
$componente = post('componente_filename');
|
|
||||||
if (!empty($componente)) {
|
if (!empty($componente)) {
|
||||||
$contenuto = \Util\Ini::write(file_get_contents($docroot.'/files/my_impianti/'.$componente), $post);
|
$contenuto = \Util\Ini::write(file_get_contents($docroot.'/files/my_impianti/'.$componente), $post);
|
||||||
|
|
||||||
@@ -77,12 +70,15 @@ switch (post('op')) {
|
|||||||
|
|
||||||
// Upload file
|
// Upload file
|
||||||
if (!empty($_FILES) && !empty($_FILES['immagine01']['name'])) {
|
if (!empty($_FILES) && !empty($_FILES['immagine01']['name'])) {
|
||||||
$tmp = $_FILES['immagine01']['tmp_name'];
|
$filename = Uploads::upload($_FILES['immagine01'], [
|
||||||
|
'name' => 'Immagine',
|
||||||
|
'id_module' => $id_module,
|
||||||
|
'id_record' => $id_record,
|
||||||
|
], [
|
||||||
|
'thumbnails' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
$filename = basename($_FILES['immagine01']['name']);
|
if (!empty($filename)) {
|
||||||
$filename = unique_filename($filename, $upload_dir);
|
|
||||||
|
|
||||||
if (create_thumbnails($tmp, $filename, $upload_dir)) {
|
|
||||||
$dbo->query('UPDATE mg_articoli SET immagine01='.prepare($filename).' WHERE id='.prepare($id_record));
|
$dbo->query('UPDATE mg_articoli SET immagine01='.prepare($filename).' WHERE id='.prepare($id_record));
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['warnings'][] = tr('Errore durante il caricamento del file in _DIR_!', [
|
$_SESSION['warnings'][] = tr('Errore durante il caricamento del file in _DIR_!', [
|
||||||
@@ -93,38 +89,16 @@ switch (post('op')) {
|
|||||||
|
|
||||||
// Eliminazione file
|
// Eliminazione file
|
||||||
if (post('delete_immagine01') !== null) {
|
if (post('delete_immagine01') !== null) {
|
||||||
$filename = post('immagine01');
|
Uploads::delete($records[0]['immagine01'], [
|
||||||
$f = pathinfo($filename);
|
'id_module' => $id_module,
|
||||||
|
'id_record' => $id_record,
|
||||||
delete($upload_dir.'/'.$f['filename'].'.'.$f['extension']);
|
]);
|
||||||
delete($upload_dir.'/'.$f['filename'].'_thumb100.'.$f['extension']);
|
|
||||||
delete($upload_dir.'/'.$f['filename'].'_thumb250.'.$f['extension']);
|
|
||||||
|
|
||||||
$dbo->query("UPDATE mg_articoli SET immagine01 = '' WHERE id=".prepare($id_record));
|
$dbo->query("UPDATE mg_articoli SET immagine01 = '' WHERE id=".prepare($id_record));
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['infos'][] = tr('Informazioni salvate correttamente!');
|
$_SESSION['infos'][] = tr('Informazioni salvate correttamente!');
|
||||||
break;
|
|
||||||
|
|
||||||
// Aggiunta articolo
|
|
||||||
case 'add':
|
|
||||||
$codice = post('codice');
|
|
||||||
$descrizione = post('descrizione');
|
|
||||||
$categoria = post('categoria');
|
|
||||||
$subcategoria = post('subcategoria');
|
|
||||||
|
|
||||||
// Inserisco l'articolo solo se non esiste un altro articolo con stesso codice
|
|
||||||
if ($dbo->fetchNum('SELECT * FROM mg_articoli WHERE codice='.prepare($codice)) == 0) {
|
|
||||||
$query = 'INSERT INTO mg_articoli(codice, descrizione, id_categoria, id_sottocategoria, attivo) VALUES ('.prepare($codice).', '.prepare($descrizione).', '.prepare($categoria).', '.prepare($subcategoria).', 1)';
|
|
||||||
$dbo->query($query);
|
|
||||||
$_SESSION['infos'][] = tr('Aggiunto un nuovo articolo!');
|
|
||||||
|
|
||||||
$query = 'SELECT * FROM mg_articoli WHERE codice='.prepare($codice);
|
|
||||||
$rs = $dbo->fetchArray($query);
|
|
||||||
$id_record = $rs[0]['id'];
|
|
||||||
} else {
|
|
||||||
$_SESSION['errors'][] = tr('Esiste già un articolo con questo codice!');
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Aggiunta prodotto
|
// Aggiunta prodotto
|
||||||
@@ -251,12 +225,12 @@ switch (post('op')) {
|
|||||||
$idmovimento = post('idmovimento');
|
$idmovimento = post('idmovimento');
|
||||||
|
|
||||||
// Lettura qtà movimento
|
// Lettura qtà movimento
|
||||||
$rs = $dbo->fetchArray( 'SELECT idarticolo, qta FROM mg_movimenti WHERE id='.prepare($idmovimento) );
|
$rs = $dbo->fetchArray('SELECT idarticolo, qta FROM mg_movimenti WHERE id='.prepare($idmovimento));
|
||||||
$qta = $rs[0]['qta'];
|
$qta = $rs[0]['qta'];
|
||||||
$idarticolo = $rs[0]['idarticolo'];
|
$idarticolo = $rs[0]['idarticolo'];
|
||||||
|
|
||||||
// Aggiorno la quantità dell'articolo
|
// Aggiorno la quantità dell'articolo
|
||||||
$dbo->query( 'UPDATE mg_articoli SET qta=qta-'.$qta.' WHERE id='.prepare($idarticolo) );
|
$dbo->query('UPDATE mg_articoli SET qta=qta-'.$qta.' WHERE id='.prepare($idarticolo));
|
||||||
|
|
||||||
$query = 'DELETE FROM mg_movimenti WHERE id='.prepare($idmovimento);
|
$query = 'DELETE FROM mg_movimenti WHERE id='.prepare($idmovimento);
|
||||||
if ($dbo->query($query)) {
|
if ($dbo->query($query)) {
|
||||||
@@ -276,3 +250,8 @@ switch (post('op')) {
|
|||||||
$_SESSION['infos'][] = tr('Articolo eliminato!');
|
$_SESSION['infos'][] = tr('Articolo eliminato!');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Operazioni aggiuntive per l'immagine
|
||||||
|
if (filter('op') == 'unlink_file' && $name == 'Immagine') {
|
||||||
|
$dbo->query("UPDATE mg_articoli SET immagine01 = '' WHERE id=".prepare($id_record));
|
||||||
|
}
|
||||||
|
@@ -7,6 +7,10 @@ include_once Modules::filepath('MyImpianti', 'modutil.php');
|
|||||||
|
|
||||||
$_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
|
$_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
|
||||||
|
|
||||||
|
$fileinfo = Uploads::fileInfo($records[0]['immagine01']);
|
||||||
|
$img = !empty($records[0]['immagine01']) ? ROOTDIR.'/'.Uploads::getUploadDirectory($id_module).'/'.$fileinfo['filename'].'_thumb600.'.$fileinfo['extension'] : '';
|
||||||
|
|
||||||
|
|
||||||
?><form action="" method="post" id="edit-form" enctype="multipart/form-data">
|
?><form action="" method="post" id="edit-form" enctype="multipart/form-data">
|
||||||
<input type="hidden" name="backto" value="record-edit">
|
<input type="hidden" name="backto" value="record-edit">
|
||||||
<input type="hidden" name="op" value="update">
|
<input type="hidden" name="op" value="update">
|
||||||
@@ -20,7 +24,7 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
|
|||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "image", "label": "<?php echo tr('Immagine'); ?>", "name": "immagine01", "class": "img-thumbnail", "value": "<?php echo !empty($records[0]['immagine01']) ? $rootdir.'/files/articoli/'.$records[0]['immagine01'] : ''; ?>" ]}
|
{[ "type": "image", "label": "<?php echo tr('Immagine'); ?>", "name": "immagine01", "class": "img-thumbnail", "value": "<?php echo $img; ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
|
@@ -477,14 +477,8 @@ class Database extends Util\Singleton
|
|||||||
$update[] = $this->quote($key).' = '.$this->prepareValue($key, $value);
|
$update[] = $this->quote($key).' = '.$this->prepareValue($key, $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Condizioni di aggiornamento
|
|
||||||
$where = [];
|
|
||||||
foreach ($conditions as $key => $value) {
|
|
||||||
$where[] = $this->quote($key).' = '.$this->prepareValue($key, $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Costruzione della query
|
// Costruzione della query
|
||||||
$query = 'UPDATE '.$this->quote($table).' SET '.implode($update, ', ').' WHERE '.implode($where, ' AND ');
|
$query = 'UPDATE '.$this->quote($table).' SET '.implode($update, ', ').' WHERE '.$this->whereStatement($conditions);
|
||||||
|
|
||||||
if (!empty($return)) {
|
if (!empty($return)) {
|
||||||
return $query;
|
return $query;
|
||||||
@@ -581,13 +575,40 @@ class Database extends Util\Singleton
|
|||||||
|
|
||||||
$result = $this->select($table, $array, $conditions, $order, $limit, $return);
|
$result = $this->select($table, $array, $conditions, $order, $limit, $return);
|
||||||
|
|
||||||
if (isset($result[0])) {
|
if (!is_string($result) && isset($result[0])) {
|
||||||
return $result[0];
|
return $result[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Costruisce la query per l'DELETE definito dagli argomenti.
|
||||||
|
*
|
||||||
|
* @since 2.4.1
|
||||||
|
*
|
||||||
|
* @param string $table
|
||||||
|
* @param array $conditions
|
||||||
|
* @param bool $return
|
||||||
|
*
|
||||||
|
* @return string|array
|
||||||
|
*/
|
||||||
|
public function delete($table, $conditions, $return = false)
|
||||||
|
{
|
||||||
|
if (!is_string($table) || !is_array($conditions)) {
|
||||||
|
throw new UnexpectedValueException();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Costruzione della query
|
||||||
|
$query = 'DELETE FROM '.$this->quote($table).' WHERE '.$this->whereStatement($conditions);
|
||||||
|
|
||||||
|
if (!empty($return)) {
|
||||||
|
return $query;
|
||||||
|
} else {
|
||||||
|
return $this->query($query);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sincronizza i valori indicati associati alle condizioni, rimuovendo le combinazioni aggiuntive e inserendo quelle non ancora presenti.
|
* Sincronizza i valori indicati associati alle condizioni, rimuovendo le combinazioni aggiuntive e inserendo quelle non ancora presenti.
|
||||||
*
|
*
|
||||||
@@ -677,7 +698,7 @@ class Database extends Util\Singleton
|
|||||||
if (!empty($field) && !empty($sync)) {
|
if (!empty($field) && !empty($sync)) {
|
||||||
$conditions[$field] = $sync;
|
$conditions[$field] = $sync;
|
||||||
|
|
||||||
$this->query('DELETE FROM '.$this->quote($table).' WHERE '.$this->whereStatement($conditions));
|
$this->delete($table, $conditions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -749,7 +770,13 @@ class Database extends Util\Singleton
|
|||||||
}
|
}
|
||||||
// Condizione di uguaglianza
|
// Condizione di uguaglianza
|
||||||
else {
|
else {
|
||||||
$result[] = $this->quote($key).' = '.$this->prepareValue($key, $value);
|
$prepared = $this->prepareValue($key, $value);
|
||||||
|
|
||||||
|
if ($prepared == 'NULL') {
|
||||||
|
$result[] = $this->quote($key).' IS '.$prepared;
|
||||||
|
} else {
|
||||||
|
$result[] = $this->quote($key).' = '.$prepared;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
116
src/Uploads.php
116
src/Uploads.php
@@ -120,29 +120,50 @@ class Uploads
|
|||||||
'wpd' => 'application/wordperfect',
|
'wpd' => 'application/wordperfect',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public static function getUploadDirectory($id_module, $id_plugin = null)
|
||||||
|
{
|
||||||
|
if (empty($id_plugin)) {
|
||||||
|
$directory = Modules::get($id_module)['directory'];
|
||||||
|
} else {
|
||||||
|
$info = Plugins::get($id_plugin);
|
||||||
|
|
||||||
|
if (!empty($info['script'])) {
|
||||||
|
$directory = self::fileInfo($info['script'])['name'];
|
||||||
|
} else {
|
||||||
|
$directory = $info['directory'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'files/'.$directory;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Effettua l'upload di un file nella cartella indicata.
|
* Effettua l'upload di un file nella cartella indicata.
|
||||||
*
|
*
|
||||||
* @param string $src
|
* @param array $source
|
||||||
* @param string $original
|
* @param string $directory
|
||||||
* @param string $upload_dir
|
|
||||||
* @param array $data
|
* @param array $data
|
||||||
|
* @param array $options
|
||||||
*
|
*
|
||||||
* @return int|bool
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function upload($src, $original, $upload_dir, $data = [])
|
public static function upload($source, $data, $options = [])
|
||||||
{
|
{
|
||||||
$extension = pathinfo($original)['extension'];
|
$src = $source['tmp_name'];
|
||||||
|
$original = $source['name'];
|
||||||
|
|
||||||
|
$extension = strtolower(pathinfo($original)['extension']);
|
||||||
$ok = self::isSupportedType($extension);
|
$ok = self::isSupportedType($extension);
|
||||||
|
|
||||||
|
$directory = DOCROOT.'/'.self::getUploadDirectory($data['id_module'], $data['id_plugin']);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
$filename = random_string().'.'.$extension;
|
$filename = random_string().'.'.$extension;
|
||||||
} while (file_exists($upload_dir.'/'.$filename));
|
} while (file_exists($directory.'/'.$filename));
|
||||||
|
|
||||||
// Creazione file fisico
|
// Creazione file fisico
|
||||||
if (!directory($upload_dir) || !move_uploaded_file($src, $upload_dir.'/'.$filename)) {
|
if (!directory($directory) || !move_uploaded_file($src, $directory.'/'.$filename)) {
|
||||||
return false;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$database = Database::getConnection();
|
$database = Database::getConnection();
|
||||||
@@ -154,11 +175,15 @@ class Uploads
|
|||||||
'original' => $original,
|
'original' => $original,
|
||||||
'category' => !empty($data['category']) ? $data['category'] : null,
|
'category' => !empty($data['category']) ? $data['category'] : null,
|
||||||
'id_module' => !empty($data['id_module']) ? $data['id_module'] : null,
|
'id_module' => !empty($data['id_module']) ? $data['id_module'] : null,
|
||||||
'id_record' => !empty($data['id_record']) ? $data['id_record'] : null,
|
|
||||||
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
|
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
|
||||||
|
'id_record' => $data['id_record'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $database->lastInsertedID();
|
if (!empty($options['thumbnails'])) {
|
||||||
|
self::thumbnails($directory.'/'.$filename, $directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -172,4 +197,73 @@ class Uploads
|
|||||||
{
|
{
|
||||||
return in_array($extension, array_keys(self::$allowed_types));
|
return in_array($extension, array_keys(self::$allowed_types));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static function thumbnails($filepath, $directory = null)
|
||||||
|
{
|
||||||
|
$fileinfo = self::fileInfo($filepath);
|
||||||
|
$directory = empty($directory) ? dirname($filepath) : $directory;
|
||||||
|
|
||||||
|
$driver = extension_loaded('gd') ? 'gd' : 'imagick';
|
||||||
|
Intervention\Image\ImageManagerStatic::configure(['driver' => $driver]);
|
||||||
|
|
||||||
|
$img = Intervention\Image\ImageManagerStatic::make($filepath);
|
||||||
|
|
||||||
|
$img->resize(600, null, function ($constraint) {
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
});
|
||||||
|
$img->save(slashes($directory.'/'.$fileinfo['filename'].'_thumb600.'.$fileinfo['extension']));
|
||||||
|
|
||||||
|
$img->resize(250, null, function ($constraint) {
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
});
|
||||||
|
$img->save(slashes($directory.'/'.$fileinfo['filename'].'_thumb250.'.$fileinfo['extension']));
|
||||||
|
|
||||||
|
$img->resize(100, null, function ($constraint) {
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
});
|
||||||
|
$img->save(slashes($directory.'/'.$fileinfo['filename'].'_thumb100.'.$fileinfo['extension']));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function delete($filename, $data)
|
||||||
|
{
|
||||||
|
$database = Database::getConnection();
|
||||||
|
|
||||||
|
$name = $database->selectOne('zz_files', ['nome'], [
|
||||||
|
'filename' => $filename,
|
||||||
|
'id_module' => !empty($data['id_module']) ? $data['id_module'] : null,
|
||||||
|
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
|
||||||
|
'id_record' => $data['id_record'],
|
||||||
|
])['nome'];
|
||||||
|
|
||||||
|
$fileinfo = self::fileInfo($filename);
|
||||||
|
$directory = DOCROOT.'/'.self::getUploadDirectory($data['id_module'], $data['id_plugin']);
|
||||||
|
|
||||||
|
$files = [
|
||||||
|
$directory.'/'.$fileinfo['basename'],
|
||||||
|
$directory.'/'.$fileinfo['filename'].'_thumb600.'.$fileinfo['extension'],
|
||||||
|
$directory.'/'.$fileinfo['filename'].'_thumb100.'.$fileinfo['extension'],
|
||||||
|
$directory.'/'.$fileinfo['filename'].'_thumb250.'.$fileinfo['extension'],
|
||||||
|
];
|
||||||
|
|
||||||
|
if (delete($files)) {
|
||||||
|
$database->delete('zz_files', [
|
||||||
|
'filename' => $fileinfo['basename'],
|
||||||
|
'id_module' => !empty($data['id_module']) ? $data['id_module'] : null,
|
||||||
|
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
|
||||||
|
'id_record' => $data['id_record'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function fileInfo($filepath)
|
||||||
|
{
|
||||||
|
$infos = pathinfo($filepath);
|
||||||
|
$infos['extension'] = strtolower($infos['extension']);
|
||||||
|
|
||||||
|
return $infos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -374,3 +374,7 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
|
|||||||
-- Aggiunto supporto a Note di accredito e addebito
|
-- Aggiunto supporto a Note di accredito e addebito
|
||||||
ALTER TABLE `co_documenti` ADD `ref_documento` int(11) AFTER `idagente`, ADD FOREIGN KEY (`ref_documento`) REFERENCES `co_documenti`(`id`) ON DELETE CASCADE;
|
ALTER TABLE `co_documenti` ADD `ref_documento` int(11) AFTER `idagente`, ADD FOREIGN KEY (`ref_documento`) REFERENCES `co_documenti`(`id`) ON DELETE CASCADE;
|
||||||
ALTER TABLE `co_righe_documenti` ADD `qta_evasa` int(11) NOT NULL AFTER `qta`;
|
ALTER TABLE `co_righe_documenti` ADD `qta_evasa` int(11) NOT NULL AFTER `qta`;
|
||||||
|
|
||||||
|
-- Fix id_sottocategoria in mg_articoli
|
||||||
|
ALTER TABLE `mg_articoli` CHANGE `id_sottocategoria` `id_sottocategoria` int(11);
|
||||||
|
INSERT INTO `zz_files` (`id_module`, `id_record`, `nome`, `filename`, `original`) SELECT (SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli'), `id`, 'Immagine', `immagine01`, `immagine01` FROM `mg_articoli`;
|
||||||
|
Reference in New Issue
Block a user