123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <?php
- /* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- * or see https://www.gnu.org/
- */
- /**
- * \file htdocs/core/actions_builddoc.inc.php
- * \brief Code for actions on building or deleting documents
- */
- // $action must be defined
- // $id must be defined
- // $object must be defined and must have a method generateDocument().
- // $permissiontoadd must be defined
- // $upload_dir must be defined (example $conf->projet->dir_output . "/";)
- // $hidedetails, $hidedesc, $hideref and $moreparams may have been set or not.
- if (!empty($permissioncreate) && empty($permissiontoadd)) {
- $permissiontoadd = $permissioncreate; // For backward compatibility
- }
- // Build doc
- if ($action == 'builddoc' && $permissiontoadd) {
- if (is_numeric(GETPOST('model', 'alpha'))) {
- $error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Model"));
- } else {
- // Reload to get all modified line records and be ready for hooks
- $ret = $object->fetch($id);
- $ret = $object->fetch_thirdparty();
- /*if (empty($object->id) || ! $object->id > 0)
- {
- dol_print_error('Object must have been loaded by a fetch');
- exit;
- }*/
- // Save last template used to generate document
- if (GETPOST('model', 'alpha')) {
- $object->setDocModel($user, GETPOST('model', 'alpha'));
- }
- // Special case to force bank account
- //if (property_exists($object, 'fk_bank'))
- //{
- if (GETPOST('fk_bank', 'int')) {
- // this field may come from an external module
- $object->fk_bank = GETPOST('fk_bank', 'int');
- } elseif (!empty($object->fk_account)) {
- $object->fk_bank = $object->fk_account;
- }
- //}
- $outputlangs = $langs;
- $newlang = '';
- if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) {
- $newlang = GETPOST('lang_id', 'aZ09');
- }
- if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($object->thirdparty->default_lang)) {
- $newlang = $object->thirdparty->default_lang; // for proposal, order, invoice, ...
- }
- if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($object->default_lang)) {
- $newlang = $object->default_lang; // for thirdparty
- }
- if (!empty($newlang)) {
- $outputlangs = new Translate("", $conf);
- $outputlangs->setDefaultLang($newlang);
- }
- // To be sure vars is defined
- if (empty($hidedetails)) {
- $hidedetails = 0;
- }
- if (empty($hidedesc)) {
- $hidedesc = 0;
- }
- if (empty($hideref)) {
- $hideref = 0;
- }
- if (empty($moreparams)) {
- $moreparams = null;
- }
- $result = $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
- if ($result <= 0) {
- setEventMessages($object->error, $object->errors, 'errors');
- $action = '';
- } else {
- if (empty($donotredirect)) { // This is set when include is done by bulk action "Bill Orders"
- setEventMessages($langs->trans("FileGenerated"), null);
- /*$urltoredirect = $_SERVER['REQUEST_URI'];
- $urltoredirect = preg_replace('/#builddoc$/', '', $urltoredirect);
- $urltoredirect = preg_replace('/action=builddoc&?/', '', $urltoredirect); // To avoid infinite loop
- header('Location: '.$urltoredirect.'#builddoc');
- exit;*/
- }
- }
- }
- }
- // Delete file in doc form
- if ($action == 'remove_file' && $permissiontoadd) {
- if (!empty($upload_dir)) {
- require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
- if (empty($object->id) || !$object->id > 0) {
- // Reload to get all modified line records and be ready for hooks
- $ret = $object->fetch($id);
- $ret = $object->fetch_thirdparty();
- }
- $langs->load("other");
- $filetodelete = GETPOST('file', 'alpha');
- $file = $upload_dir.'/'.$filetodelete;
- $dirthumb = dirname($file).'/thumbs/'; // Chemin du dossier contenant la vignette (if file is an image)
- $ret = dol_delete_file($file, 0, 0, 0, $object);
- if ($ret) {
- // If it exists, remove thumb.
- $regs = array();
- if (preg_match('/(\.jpg|\.jpeg|\.bmp|\.gif|\.png|\.tiff)$/i', $file, $regs)) {
- $photo_vignette = basename(preg_replace('/'.$regs[0].'/i', '', $file).'_small'.$regs[0]);
- if (file_exists(dol_osencode($dirthumb.$photo_vignette))) {
- dol_delete_file($dirthumb.$photo_vignette);
- }
- $photo_vignette = basename(preg_replace('/'.$regs[0].'/i', '', $file).'_mini'.$regs[0]);
- if (file_exists(dol_osencode($dirthumb.$photo_vignette))) {
- dol_delete_file($dirthumb.$photo_vignette);
- }
- }
- setEventMessages($langs->trans("FileWasRemoved", $filetodelete), null, 'mesgs');
- } else {
- setEventMessages($langs->trans("ErrorFailToDeleteFile", $filetodelete), null, 'errors');
- }
- // Make a redirect to avoid to keep the remove_file into the url that create side effects
- $urltoredirect = $_SERVER['REQUEST_URI'];
- $urltoredirect = preg_replace('/#builddoc$/', '', $urltoredirect);
- $urltoredirect = preg_replace('/action=remove_file&?/', '', $urltoredirect);
- header('Location: '.$urltoredirect);
- exit;
- } else {
- setEventMessages('BugFoundVarUploaddirnotDefined', null, 'errors');
- }
- }
|