. */ namespace HTMLBuilder\Manager; use Models\Setting; use Models\Upload; use Util\FileSystem; /** * Gestione allegati. * * @since 2.3 */ class FileManager implements ManagerInterface { /** * Gestione "filelist_and_upload". * Esempio: {( "name": "filelist_and_upload", "id_module": "2", "id_record": "1", "readonly": "false" )}. * * @param array $options * * @return string */ public function manage($options) { $options['readonly'] = !empty($options['readonly']) ? true : false; $options['showpanel'] = isset($options['showpanel']) ? $options['showpanel'] : true; $options['id_plugin'] = !empty($options['id_plugin']) ? $options['id_plugin'] : null; // ID del form $attachment_id = 'attachments_'.$options['id_module'].'_'.$options['id_plugin']; $upload_max_filesize = ini_get('upload_max_filesize'); $upload_max_filesize = substr($upload_max_filesize, 0, -1); $dbo = database(); // Codice HTML $result = '
'; if (!empty($options['showpanel'])) { $result .= '

'.tr('Allegati').'

'; } $count = 0; $where = '`id_module` '.(!empty($options['id_module']) && empty($options['id_plugin']) ? '= '.prepare($options['id_module']) : 'IS NULL').' AND `id_plugin` '.(!empty($options['id_plugin']) ? '= '.prepare($options['id_plugin']) : 'IS NULL').''; // Categorie $categories = $dbo->fetchArray('SELECT DISTINCT(BINARY `category`) AS `category` FROM `zz_files` WHERE '.$where.' ORDER BY `category`'); foreach ($categories as $category) { $category = $category['category']; $rs = $dbo->fetchArray('SELECT * FROM `zz_files` WHERE BINARY `category`'.(!empty($category) ? '= '.prepare($category) : 'IS NULL').' AND `id_record` = '.prepare($options['id_record']).' AND '.$where); if (!empty($rs)) { $result .= '

'.(!empty($category) ? $category : tr('Generale')).'

{[ "type": "text", "class": "hidden category-name", "value": "'.$category.'" ]}
'; if (!empty($category) && !in_array($category, ['Fattura Elettronica'])) { $result .= ' '; } $result .= '
'; foreach ($rs as $r) { $file = Upload::find($r['id']); $result .= ' '; ++$count; } $result .= '
'.tr('Nome').' '.tr('Data').' #
'; if ($file->user && $file->user->photo) { $result .= ' '; } else { $result .= ' '; } $result .= ' '.$r['name'].' ('.$file->extension.')'.((!empty($file->size)) ? ' ('. FileSystem::formatBytes($file->size).')' : '').' '.(((setting('Logo stampe') == $r['filename']) || (setting('Filigrana stampe') == $r['filename'])) ? '' : '').''.' '.timestampFormat($r['created_at']).' '; // Anteprime supportate dal browser if ($file->hasPreview()) { $result .= ' '; } else { $result .= ' '; } if (!$options['readonly']) { $result .= ' '; } $result .= '

'; } } // Form per l'upload di un nuovo file if (!$options['readonly']) { $result .= '
'; } // In caso di readonly, se non è stato caricato nessun allegato mostro almeno box informativo elseif ($count == 0) { $result .= '
'.tr('Nessun allegato è stato caricato').'.
'; } if (!empty($options['showpanel'])) { $result .= '
'; } $source = array_clean(array_column($categories, 'category')); $result .= ' '; return $result; } }