function plugin_filemanager_plugin_actions() { global $myUser, $_, $conf; switch ($_['action']) { case 'plugin_filemanager_get': if (!$myUser->can('file', 'r')) { exit('permission denied'); } $files = array(); echo json_encode($files); break; case 'plugin_filemanager_edit': if (!$myUser->can('file', 'u')) { exit('permission denied'); } require_once 'plugins/file/FileUploaded.class.php'; $current = new FileUploaded(); $current->date = time(); $current->user = $myUser->getLogin(); $current = isset($_['id']) && $_['id'] != '' ? $current->getById($_['id']) : $current; $current->save(); break; case "plugin_filemanager_plugin_setting": if ($myUser->can('plugin_filemanager_validation', 'u')) { // $conf->put("plugin_filemanager_plugin_recipients",$_['mail']); // on enregistre le contenu des champs (adresses mails de destination) dans la bdd // $conf->put("plugin_filemanager_plugin_users",json_encode($_['users'])); echo 'Enregistré.'; } else { echo 'Permissions insuffisantes.'; } break; case 'plugin_filemanager_delete': header('Content-type: application/json'); if ($myUser->can('file', 'd')) { require_once 'plugins/file/FileUploaded.class.php'; $response = array(); try { $current = new FileUploaded(); $current = $current->getById($_['id']); @unlink($current->path); if ($_['id'] != 0) { $current->delete(array('id' => $_['id'])); } $response['success'] = true; } catch (Exception $e) { $response['message'] = 'Erreur : ' . $e->getMessage(); } echo json_encode($response); } break; case 'plugin_filemanager_send_email_form': require_once 'plugins/file/FileUploaded.class.php'; $file = new FileUploaded(); if (isset($_['id'])) { $file = $file->getById($_['id']); if ($file->name != '') { if ($file->checkPermission($myUser)) { echo '<div class="label label-important">Attention, les permissions de de fichier seront modifiées en "acces public".</div><br/><br/>Destinaire : <input type="text" id="recipient" value=""><br/> Fichier : <a target="_blank" href="' . $file->getUrl() . '">' . $file->name . '</a><br/> <br/>Message<br/><textarea style="width:520px;" id="message">Veuillez trouver en pièce jointe le fichier : ' . $file->name . '</textarea><br/>'; } } } break; case 'plugin_filemanager_set_permission_form': require_once 'plugins/file/FileUploaded.class.php'; $file = new FileUploaded(); if (isset($_['id'])) { $file = $file->getById($_['id']); if ($file->name != '') { if ($file->checkPermission($myUser)) { $permissions = $file->getPermissions(); echo "\n\t\t\t\t\t<label class='checkbox'><input id='allow_internal' " . (in_array('$', $permissions) ? 'checked=checked' : '') . " type='checkbox'> Autoriser tous les utilisateurs ERP</label>\n\t\t\t\t\t<label class='checkbox'><input id='allow_all' " . (in_array('*', $permissions) ? 'checked=checked' : '') . " type='checkbox'> Autoriser tous le monde (même exterieur a l'erp)</label>\n\t\t\t\t\t<label>Autoriser les utilisateurs suivants (séparés par saut de ligne) </label>\n\n\t\t\t\t\t<textarea style='width:510px;' placeholder='valentin.carruesco...' id='allow_user'>"; foreach ($permissions as $permission) { if ($permission != '*' && $permission != '$') { echo $permission . "\n"; } } echo "</textarea>"; } } } break; case 'plugin_filemanager_set_permission': header('Content-type: application/json'); require_once 'plugins/file/FileUploaded.class.php'; $response = array(); $file = new FileUploaded(); if (isset($_['id'])) { $file = $file->getById($_['id']); if ($file->name != '') { $permissions = explode("\n", $_['allow_user']); if ($_['allow_all'] == 'true') { $permissions[] = '*'; } if ($_['allow_internal'] == 'true') { $permissions[] = '$'; } $file->setPermissions($permissions); $file->save(); $response['success'] = true; } } echo json_encode($response); break; case 'plugin_filemanager_send_mail': header('Content-type: application/json'); require_once 'plugins/file/FileUploaded.class.php'; $response = array(); $file = new FileUploaded(); if (isset($_['id']) && isset($_['recipient'])) { $file = $file->getById($_['id']); if ($file->name != '') { if ($file->checkPermission($myUser)) { $file->addPermission('*'); $file->save(); $mail = new Mail(); $mail->disableBorder(); $mail->setExpeditor('"' . $myUser->getFullName() . '" <' . $myUser->getMail() . '>'); $mail->setReply('"' . $myUser->getFullName() . '" <' . $myUser->getMail() . '>'); $mail->addRecipient($_['recipient']); $mail->addAttachment($file->name . '|' . $file->mime, file_get_contents($file->path)); $mail->setTitle("Pièce jointe - " . $file->name, false); $mail->setMessage($_['message']); $mail->send(); $response['success'] = true; } } } echo json_encode($response); break; case 'plugin_filemanager_search': require_once 'plugins/file/FileUploaded.class.php'; $fileManager = new FileUploaded(); $keyword = isset($_['keyword']) && $_['keyword'] != '' ? $_['keyword'] : ''; $files = $fileManager->search($keyword); foreach ($files as $file) { if ($file->checkPermission($myUser)) { ?> <div id="file_<?php echo $file->id; ?> " class="dz-preview dz-file-preview"> <div class="dz-details"> <div class="dz-filename"><a href="<?php echo $file->getUrl(); ?> "><i class="fa fa-file-text-o"></i> <?php echo $file->name; ?> </a></div> - <div class="dz-size" data-dz-size><strong><?php echo $file->getSize(); ?> </strong></div> <div class="dz-options"><ul class="dz-options"><li title="Envoyer par email" onclick="plugin_filemanager_send_mail_form(<?php echo $file->id; ?> );"><i class="fa fa-paper-plane-o"></i></li><li onclick="plugin_filemanager_set_permission_form('<?php echo $file->id; ?> ');" title="Régler les permissions"><i class="fa fa-check-square-o"></i></li><li title="Supprimer" onclick="plugin_filemanager_delete(<?php echo $file->id; ?> )"><i class="fa fa-times"></i></li></ul></div> <div class="dz-tags"><span class="dz-tag label">Tags</span> <span class="dz-tag label label-inverse"><?php echo implode('</span> <span class="dz-tag label label-inverse">', $file->getTags()); ?> </span></div> </div> </div> <?php } } break; case 'open_file': require_once 'plugins/file/FileUploaded.class.php'; $file = new FileUploaded(); if (isset($_['file'])) { $file = $file->getById($_['file']); if ($file->name != '') { if ($file->checkPermission($myUser)) { header('Content-type: ' . $file->mime); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); ob_clean(); flush(); echo file_get_contents($file->path); } else { echo 'Acces interdit'; } } } break; case 'upload': require_once 'plugins/file/FileUploaded.class.php'; header('Content-type: application/json'); $response = array('error' => array()); try { $max_size = 419430400; $allowed_ext = array('jpg', 'png', 'bmp', 'psd', 'doc', 'docx', 'xls', 'xlsx', 'mp3', 'mp4', 'ppt', 'txt', 'sql', 'pptx'); $file = new FileUploaded($_FILES['file']); if (!$file->check('size', $max_size)) { throw new Exception('Taille maximum dépassée, (autorisé : ' . $max_size . ' octets max) '); } if (!$file->check('extension', $allowed_ext)) { throw new Exception('Extension non permise (autorisé : ' . implode(',', $allowed_ext) . ')'); } $file->user = $myUser->getLogin(); $file->permissions = '*'; if (!$file->upload()) { throw new Exception('Erreur lors de l\'envoi, merci de contacter un administrateur'); } $response['file'] = array('id' => $file->id, 'url' => $file->url, 'name' => $file->name, 'ext' => $file->ext, 'tags' => $file->getTags(), 'size' => $file->getSize()); } catch (Exception $e) { $response['error'][] = $e->getMessage(); } echo json_encode($response); break; } }
<?php /* @name Fichier @author Valentin CARRUESCO <*****@*****.**> @link http://blog.idleman.fr @licence CC by nc sa @version 1.0.0 @description Gestion des fichiers et medias @type component */ //Check et creation de la table si non existente require_once 'FileUploaded.class.php'; $fileManager = new FileUploaded(); $fileManager->checkTable(true); Plugin::addCss("/css/style.css", true); Plugin::addJs("/js/dropzone.min.js", true); Plugin::addJs("/js/main.js", true);