1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-11 07:05:22 +01:00

Aggiornamento moduli non conformi

This commit is contained in:
Thomas Zilio 2018-07-07 14:24:59 +02:00
parent 0b9f6fd2ca
commit 4be3171061
8 changed files with 121 additions and 215 deletions

View File

@ -4,53 +4,52 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'update':
if ($permessi[$module_name] == 'rw') {
$id_record = $_POST['id_record'];
$descrizione = save($_POST['descrizione']);
$descrizione = post('descrizione');
//Verifico che il nome non sia duplicato
$q = 'SELECT descrizione FROM zz_documenti_categorie WHERE descrizione="'.$descrizione.'" AND deleted = 0 ';
$rs = $dbo->fetchArray($q);
if (sizeof($rs) > 0) {
array_push($_SESSION['errors'], "Categoria '".$descrizione."' già esistente!");
}
//Nome ok
else {
$query = "UPDATE zz_documenti_categorie SET descrizione=\"$descrizione\" WHERE id = $id_record";
$rs = $dbo->query($query);
array_push($_SESSION['infos'], 'Informazioni salvate correttamente!');
}
// Verifico che il nome non sia duplicato
$count = $dbo->fetchNum('SELECT descrizione FROM zz_documenti_categorie WHERE descrizione='.prepare($descrizione).' AND deleted = 0');
if ($count != 0) {
App::flash()->error(tr('Categoria _NAME_ già esistente!',[
'_NAME_' => $descrizione
]));
}
else {
$dbo->update('zz_documenti_categorie', [
'descrizione' => $descrizione,
],['id' => $id_record]);
App::flash()->info(tr('Informazioni salvate correttamente!'));
}
break;
case 'add':
if ($permessi[$module_name] == 'rw') {
$descrizione = save($_POST['descrizione']);
$descrizione = post('descrizione');
if (isset($_POST['descrizione'])) {
//Verifico che il nome non sia duplicato
$q = 'SELECT descrizione FROM zz_documenti_categorie WHERE descrizione="'.$descrizione.'" AND deleted = 0 ';
$rs = $dbo->fetchArray($q);
if (isset($_POST['descrizione'])) {
// Verifico che il nome non sia duplicato
$count = $dbo->fetchNum('SELECT descrizione FROM zz_documenti_categorie WHERE descrizione='.prepare($descrizione).' AND deleted = 0');
if ($count != 0) {
App::flash()->error(tr('Categoria _NAME_ già esistente!',[
'_NAME_' => $descrizione
]));
} else {
$dbo->insert('zz_documenti_categorie', [
'descrizione' => $descrizione,
]);
$id_record = $dbo->last_inserted_id();
if (sizeof($rs) > 0) {
array_push($_SESSION['errors'], "Categoria '".$descrizione."' già esistente!");
} else {
$query = "INSERT INTO zz_documenti_categorie(descrizione) VALUES (\"$descrizione\")";
$rs = $dbo->query($query);
$id_record = $dbo->last_inserted_id();
array_push($_SESSION['infos'], 'Nuova categoria documenti aggiunta!');
}
App::flash()->info(tr('Nuova categoria documenti aggiunta!'));
}
}
break;
case 'delete':
if ($permessi[$module_name] == 'rw') {
$dbo->query("UPDATE zz_documenti_categorie SET deleted=1 WHERE id = $id_record");
$dbo->query("UPDATE zz_documenti_categorie SET deleted=1 WHERE id = ".prepare($id_record));
App::flash()->info(tr('Categoria docimenti eliminata!'));
array_push($_SESSION['infos'], 'Categoria docimenti eliminata!');
}
break;
}

View File

@ -1,19 +1,23 @@
<form action="editor.php?id_module=$id_module$" method="post" id="add-form">
<?php
include_once __DIR__.'/../../core.php';
?><form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
<div class="row">
<div class="col-md-12">
{[ "type": "text", "label": "Descrizione", "name": "descrizione", "required": 1, "class": "", "value": "", "extra": "" ]}
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "class": "", "value": "", "extra": "" ]}
</div>
</div>
<!-- PULSANTI -->
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> Aggiungi</button>
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi'); ?></button>
</div>
</div>
</form>

View File

@ -1,50 +1,34 @@
<?php
//Se lo stato intervento è uno di quelli di default, non lo lascio modificare
include_once __DIR__.'/../../core.php';
// Presenza di documenti associati
if ($records[0]['doc_associati'] > 0) {
$warning_text = "<div class='alert alert-warning'>Non puoi eliminare questo categoria documento! Ci sono ".$records[0]['doc_associati'].' documenti associati!</div>';
} else {
$attr = '';
$warning_text = '';
echo '
<div class="alert alert-warning">'.tr('Non puoi eliminare questo categoria documento!').' '.tr('Ci sono _NUM_ documenti associati!', [
'_NUM_' => $records[0]['doc_associati'],
]).'</div>';
}
echo $warning_text;
?>
<form action="" method="post" id="add-form">
?><form action="" method="post" id="edit-form">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="update">
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
<?php
//Se il tipo di anagrafica è uno di quelli di default, non lo lascio modificare
if (!$records[0]['default']) {
?>
<div class="clearfix"></div>
<?php
}
?>
<div class="row">
<div class="col-md-12">
{[ "type": "text", "label": "Descrizione", "name": "descrizione", "required": 1, "class": "", "value": "$descrizione$", "extra": "" ]}
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "class": "", "value": "$descrizione$", "extra": "" ]}
</div>
</div>
</form>
<?php
//Se il tipo di anagrafica è uno di quelli di default, non lo lascio modificare
if ($records[0]['doc_associati'] == 0) {
?>
<form action="" method="post" role="form" id="form-delete">
<input type="hidden" name="backto" value="record-list">
<input type="hidden" name="op" value="delete">
<button type="button" class="btn-link" onclick="if( confirm('Eliminare questo tipo di documento?') ){ $('#form-delete').submit(); }">
<span class="text-danger"><i class="fa fa-trash-o"></i> Elimina tipo di documento</span></button>
</form>
<?php
}
?>
// Presenza di documenti associati
if ($records[0]['doc_associati'] == 0) {
echo '
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> '.tr('Elimina').'
</a>';
}

View File

@ -4,105 +4,36 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'add':
$dbo->insert('zz_documenti', [
'idcategoria' => post('nome'),
'nome' => post('idcategoria'),
'data' => post('data'),
]);
$id_record = $dbo->last_inserted_id();
$nome = save($_POST['nome']);
$idcategoria = save($_POST['idcategoria']);
$data = saveDate($_POST['data']);
App::flash()->info(tr('Nuova documento aggiunto!'));
$dir_ok = true;
$nome_modulo = 'Gestione documentale';
$nome_allegato = save($_POST['nome_allegato']);
$filename = $_FILES['blob']['name'];
$src = $_FILES['blob']['tmp_name'];
$f = pathinfo($filename);
//$q="SELECT idanagrafica FROM zz_utenti WHERE idutente=".$_SESSION['idutente'];
//$rs=$dbo->fetchArray($q);
//$idutente=$rs[0]['idanagrafica'];
$dst_file = sanitizeFilename($f['filename'].'.'.$f['extension']);
$dst_dir = $docroot.'/files/gestione_documentale/';
$dst_dir = strtolower($dst_dir);
//Rinomino il file se non esiste già
$f = pathinfo($dst_file);
$i = 1;
while (file_exists($dst_dir.'/'.$dst_file)) {
$dst_file = sanitizeFilename($f['filename'].'_'.$i.'.'.$f['extension']);
++$i;
}
//Se la destinazione non esiste la creo
if (!is_dir($dst_dir)) {
if (!mkdir($dst_dir)) {
$dir_ok = false;
array_push($_SESSION['errors'], 'Non hai i permessi per creare directory!');
header('Location: '.$rootdir.'/controller.php?id_module='.Modules::get('Gestione documentale')['id']);
exit;
}
}
//Creazione file fisico
if ($dir_ok) {
if (move_uploaded_file($src, $dst_dir.'/'.$dst_file)) {
$rs = $dbo->query("INSERT INTO `zz_documenti`( nome, idcategoria, data ) VALUES( '".$nome."','".$idcategoria."','".$data."' )");
$id_record = $dbo->last_inserted_id();
$rs = $dbo->query('INSERT INTO `zz_files`( nome, filename, id_module, id_record ) VALUES( "'.$nome_allegato.'", "'.$dst_file.'", "'.Modules::get('Gestione documentale')['id'].'", "'.$id_record.'" )');
array_push($_SESSION['infos'], 'File caricato correttamente!');
} else {
array_push($_SESSION['errors'], 'Errore durante il caricamento del file!');
header('Location: '.$rootdir.'/controller.php?id_module='.Modules::get('Gestione documentale')['id']);
exit;
}
}
break;
break;
case 'update':
$dbo->update('zz_documenti', [
'idcategoria' => post('nome'),
'nome' => post('idcategoria'),
'data' => post('data'),
], ['id' => $id_record]);
if ($permessi[$module_name] == 'rw') {
//leggo tutti i valori passati dal POST e li salvo in un array
$html_post = [];
foreach ($_POST as $key => $value) {
$html_post[$key] = save($value);
}
if (isset($_POST['id_record'])) {
$query = 'UPDATE zz_documenti SET '.
'idcategoria="'.$html_post['idcategoria'].'",'.
'nome="'.$html_post['nome'].'",'.
'data="'.saveDate($html_post['data']).'"'.
"WHERE id = '$id_record' ".$additional_where['Gestione documenti'];
$rs = $dbo->query($query);
array_push($_SESSION['infos'], "Informazioni per la scheda ''".$html_post['id']."'' salvate correttamente!");
}
}
App::flash()->info(tr('Informazioni salvate correttamente!'));
break;
case 'delete':
if ($permessi[$module_name] == 'rw') {
$rs = $dbo->fetchArray('SELECT id FROM zz_files WHERE externalid = "'.$id_record."\" AND module = '".$module_name."' ");
$n = sizeof($rs);
$dbo->query('DELETE FROM zz_documenti WHERE id = '.prepare($id_record));
//Per tutte le sessioni di lavoro trovate
for ($i = 0; $i < $n; ++$i) {
//Elimino fisicamente il file...
$rs2 = $dbo->fetchArray('SELECT filename FROM zz_files WHERE id = "'.$rs[$i]['id'].'" ');
unlink($docroot.'/files/'.strtolower($module_name).'/'.$rs2[0]['filename']);
}
Uploads::deleteLinked([
'id_module' => $id_module,
'id_record' => $id_record,
]);
//...e da db
$dbo->query('DELETE FROM zz_files WHERE externalid = "'.$id_record."\" AND module = '".$module_name."' ");
$dbo->query('DELETE FROM zz_documenti WHERE id = "'.$id_record.'" ');
array_push($_SESSION['infos'], 'Scheda e relativi files eliminati!');
}
App::flash()->info(tr('Scheda e relativi files eliminati!'));
break;
}

View File

@ -1,5 +1,8 @@
<form id="upload_form" action="editor.php?id_module=$id_module$" method="post" enctype="multipart/form-data" onsubmit="if( $('input[name=nome_allegato]').val()=='' || $('input[name=nome_allegato]').val()=='Inserisci un nome...' ){ alert('Devi inserire un nome per il file!'); return false; } if( $('#blob').val()=='' ){ alert('Devi selezionare un file con il tasto Sfoglia...'); return false; }">
<?php
include_once __DIR__.'/../../core.php';
?><form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
@ -7,31 +10,20 @@
<div class="col-md-6">
{[ "type": "text", "label": "Nome", "name": "nome", "required": 1, "class": "", "value": "", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "Categoria", "name": "idcategoria", "required": 1, "class": "", "values": "query=SELECT id, descrizione FROM zz_documenti_categorie WHERE deleted = 0", "value": "", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "Data", "name": "data", "required": 1, "class": "datepicker text-center", "value": "", "extra": "" ]}
</div>
</div>
<div class='row'>
<div class='col-md-6'>
{[ "type": "text", "label": "Nome allegato", "name": "nome_allegato", "required": 1, "class": "", "value": "", "extra": " placeholder=\"Inserisci un nome...\" " ]}
</div>
<div class='col-md-3'>
<input type="file" class="inputtext" id="blob" name="blob"><br><br>
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi'); ?></button>
</div>
</div>
<div class='row'>
<div class='col-md-12'>
<button type='submit' class='btn btn-primary pull-right' id="upload_button"><i class='fa fa-upload'></i> Carica</button>
</div>
</div>
</form>
</form>

View File

@ -2,15 +2,9 @@
include_once __DIR__.'/../../core.php';
?>
<form action="" method="post" id="add-form">
?><form action="" method="post" id="edit-form">
<input type="hidden" name="op" value="update">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
<!-- SCHEDA FILE -->
<div class="panel panel-primary">
@ -48,18 +42,8 @@ include_once __DIR__.'/../../core.php';
</form>
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>" )}
<form action="" method="post" role="form" id="form-delete">
<input type="hidden" name="backto" value="record-list">
<input type="hidden" name="op" value="delete">
<button type="button" class="btn-link" onclick="if( confirm('Eliminare scheda e relativi allegati?') ){ $('#form-delete').submit(); }"><span class="text-danger"><i class="fa fa-trash-o"></i> Elimina scheda file e allegati</span></button>
</form>
<script>
$(document).ready( function(){
});
</script>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>

View File

@ -27,12 +27,7 @@ class FileManager implements ManagerInterface
$attachment_id = 'attachments_'.$options['id_module'].'-'.$options['id_plugin'];
// Cartella delle anteprime
if (!empty($options['id_plugin'])) {
$directory = '/plugins/'.\Plugins::get($options['id_plugin'])['directory'];
} else {
$directory = \Modules::get($options['id_module'])['directory'];
}
$directory = basename($directory);
$directory = \Uploads::getUploadDirectory($options['id_module'], $options['id_plugin']);
$dbo = \Database::getConnection();
@ -83,7 +78,7 @@ class FileManager implements ManagerInterface
$result .= '
<tr>
<td align="left">
<a href="'.ROOTDIR.'/files/'.\Modules::get($options['id_module'])['directory'].'/'.$r['filename'].'" target="_blank">
<a href="'.ROOTDIR.'/'.$directory.'/'.$r['filename'].'" target="_blank">
<i class="fa fa-external-link"></i> '.$r['nome'].'
</a>
</td>
@ -102,10 +97,10 @@ class FileManager implements ManagerInterface
if ($extension == 'pdf') {
$result .= '
<iframe src="'.\Prints::getPDFLink('files/'.$directory.'/'.$r['filename']).'" frameborder="0" width="100%" height="550"></iframe>';
<iframe src="'.\Prints::getPDFLink($directory.'/'.$r['filename']).'" frameborder="0" width="100%" height="550"></iframe>';
} else {
$result .= '
<img src="'.ROOTDIR.'/files/'.$directory.'/'.$r['filename'].'" width="100%"></img>';
<img src="'.ROOTDIR.'/'.$directory.'/'.$r['filename'].'" width="100%"></img>';
}
$result .= '

View File

@ -259,6 +259,23 @@ class Uploads
return null;
}
public static function deleteLinked($data)
{
$database = Database::getConnection();
$uploads = $database->select('zz_files', ['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'],
]);
foreach ($uploads as $upload) {
self::delete($upload['filename'], $data);
}
return null;
}
public static function fileInfo($filepath)
{
$infos = pathinfo($filepath);