1<?php 2/* Copyright (C) 2007-2017 Laurent Destailleur <eldy@users.sourceforge.net> 3 * Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <https://www.gnu.org/licenses/>. 17 */ 18 19/** 20 * \file bom_document.php 21 * \ingroup bom 22 * \brief Tab for documents linked to BillOfMaterials 23 */ 24 25// Load Dolibarr environment 26require '../main.inc.php'; 27require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; 28require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; 29require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; 30require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; 31require_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php'; 32require_once DOL_DOCUMENT_ROOT.'/bom/lib/bom.lib.php'; 33 34// Load translation files required by the page 35$langs->loadLangs(array("mrp", "companies", "other", "mails")); 36 37 38$action = GETPOST('action', 'aZ09'); 39$confirm = GETPOST('confirm', 'alpha'); 40$id = (GETPOST('socid', 'int') ? GETPOST('socid', 'int') : GETPOST('id', 'int')); 41$ref = GETPOST('ref', 'alpha'); 42 43// Security check - Protection if external user 44//if ($user->socid > 0) accessforbidden(); 45//if ($user->socid > 0) $socid = $user->socid; 46//$result = restrictedArea($user, 'bom', $id); 47 48// Get parameters 49$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; 50$sortfield = GETPOST("sortfield", 'alpha'); 51$sortorder = GETPOST("sortorder", 'alpha'); 52$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); 53if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 54$offset = $limit * $page; 55$pageprev = $page - 1; 56$pagenext = $page + 1; 57if (!$sortorder) $sortorder = "ASC"; 58if (!$sortfield) $sortfield = "name"; 59//if (! $sortfield) $sortfield="position_name"; 60 61// Initialize technical objects 62$object = new BOM($db); 63$extrafields = new ExtraFields($db); 64$diroutputmassaction = $conf->bom->dir_output.'/temp/massgeneration/'.$user->id; 65$hookmanager->initHooks(array('bomdocument', 'globalcard')); // Note that conf->hooks_modules contains array 66// Fetch optionals attributes and labels 67$extrafields->fetch_name_optionals_label($object->table_element); 68 69// Load object 70include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals 71 72if ($id > 0 || !empty($ref)) $upload_dir = $conf->bom->multidir_output[$object->entity ? $object->entity : 1]."/bom/".get_exdir(0, 0, 0, 1, $object); 73 74 75/* 76 * Actions 77 */ 78 79include_once DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; 80 81 82/* 83 * View 84 */ 85 86$form = new Form($db); 87 88$title = $langs->trans("BillOfMaterials").' - '.$langs->trans("Files"); 89$help_url = ''; 90//$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; 91llxHeader('', $title, $help_url); 92 93if ($object->id) 94{ 95 /* 96 * Show tabs 97 */ 98 $head = bomPrepareHead($object); 99 100 print dol_get_fiche_head($head, 'document', $langs->trans("BillOfMaterials"), -1, 'bom'); 101 102 103 // Build file list 104 $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ?SORT_DESC:SORT_ASC), 1); 105 $totalsize = 0; 106 foreach ($filearray as $key => $file) 107 { 108 $totalsize += $file['size']; 109 } 110 111 // Object card 112 // ------------------------------------------------------------ 113 $linkback = '<a href="'.dol_buildpath('/bom/bom_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>'; 114 115 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); 116 117 print '<div class="fichecenter">'; 118 119 print '<div class="underbanner clearboth"></div>'; 120 print '<table class="border centpercent tableforfield">'; 121 122 // Number of files 123 print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>'; 124 125 // Total size 126 print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; 127 128 print '</table>'; 129 130 print '</div>'; 131 132 print dol_get_fiche_end(); 133 134 $modulepart = 'bom'; 135 $permission = $user->rights->bom->write; 136 $permtoedit = $user->rights->bom->write; 137 $param = '&id='.$object->id; 138 139 //$relativepathwithnofile='bom/' . dol_sanitizeFileName($object->id).'/'; 140 $relativepathwithnofile = 'bom/'.dol_sanitizeFileName($object->ref).'/'; 141 142 include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; 143} else { 144 accessforbidden('', 0, 1); 145} 146 147// End of page 148llxFooter(); 149$db->close(); 150