* Copyright (C) 2017 ATM Consulting * Copyright (C) 2024-2025 Frédéric France * Copyright (C) 2024 MDW * * 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 . */ /** * \file htdocs/blockedlog/ajax/block-info.php * \ingroup blockedlog * \brief block-info */ // This script is called with a POST method. // Directory to scan (full path) is inside POST['dir']. if (!defined('NOTOKENRENEWAL')) { define('NOTOKENRENEWAL', 1); // Disables token renewal } if (!defined('NOREQUIREMENU')) { define('NOREQUIREMENU', '1'); } if (!defined('NOREQUIREHTML')) { define('NOREQUIREHTML', '1'); } // Load Dolibarr environment require '../../main.inc.php'; /** * @var Conf $conf * @var DoliDB $db * @var HookManager $hookmanager * @var Translate $langs * @var User $user */ require_once DOL_DOCUMENT_ROOT.'/blockedlog/class/blockedlog.class.php'; $id = GETPOSTINT('id'); $block = new BlockedLog($db); if ((!$user->admin && !$user->hasRight('blockedlog', 'read')) || empty($conf->blockedlog->enabled)) { accessforbidden(); } $langs->loadLangs(array("admin", "bills", "blockedlog", "cashdesk", "companies", "members", "products")); /* * View */ top_httphead(); print '
'; print ''; print ''; if ($block->fetch($id) > 0) { $objtoshow = $block->object_data; print formatObject($objtoshow, ''); } else { print 'Error, failed to get unalterable log with id '.$id; } print ''; print '
'.$langs->trans('Field').''.$langs->trans('Label').''.$langs->trans('Value').'
'; $db->close(); /** * formatObject * * @param Object|array $objtoshow Object to show * @param string $prefix Prefix of key * @return string String formatted */ function formatObject($objtoshow, $prefix) { global $db, $langs; $s = ''; $newobjtoshow = $objtoshow; $tmpobject = null; $arrayoffields = array(); if ($prefix == 'mycompany' || $prefix == 'thirdparty') { include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $tmpobject = new Societe($db); $arrayoffields = $tmpobject->fields; } elseif ($prefix == 'invoice') { include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $tmpobject = new Facture($db); $arrayoffields = $tmpobject->fields; } elseif ($prefix == 'invoiceline') { include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/factureligne.class.php'; $tmpobject = new FactureLigne($db); $arrayoffields = $tmpobject->fields; } // Convert the key stored into blocked log into the key used into ->fields $convertkey = array( 'name' => 'nom', 'country_code' => 'fk_pays', 'typent_code' => 'fk_typent', 'forme_juridique_code' => 'fk_forme_juridique', ); $otherlabels = array( 'module_source' => 'POSModule', 'pos_source' => "POSTerminal", 'posmodule' => 'POSModule', 'posnumber' => 'POSTerminal', 'pos_print_counter' => "NumberOfPrints", 'email_sent_counter' => "NumberOfEmailsSent", 'managers' => 'Managers', 'type_code' => 'PaymentMode', 'date_creation' => 'DateCreation', 'datec' => 'DateCreation', 'dateh' => 'DateSubscription', 'datef' => 'DateEndSubscription', 'fk_adherent' => 'MemberId', 'amount' => 'Amount', 'id' => 'ID', 'ref' => 'Ref', 'element' => 'TypeOfEvent', 'entity' => 'Entity', 'label' => 'Label', 'date' => 'Date', 'total_ht' => 'TotalHT', 'total_ttc' => 'TotalTTC', 'total_tva' => 'TotalVAT', 'total_localtax1' => 'TotalTax2', 'total_localtax2' => 'TotalTax3', 'multicurrency_total_ht' => 'TotalHTShortCurrency', 'multicurrency_total_ttc' => 'TotalTTCShortCurrency', 'multicurrency_total_tva' => 'TotalVATShortCurrency', 'tva_tx' => 'VatRate', 'localtax1_tx' => 'Localtax1Rate', 'localtax2_tx' => 'Localtax2Rate', 'vat_src_code' => 'VATCode', 'multicurrency_code' => 'Currency', 'qty' => 'Quantity', 'nom' => 'Name', 'name' => 'Name', 'email' => 'Email', 'address' => 'Address', 'town' => 'Town', 'state_code' => 'State', 'fk_pays' => 'Country', 'fk_typent' => 'CompanyType', 'revenuestamp' => 'RevenueStamp', 'code_client' => 'CustomerCode', 'code_fournisseur' => 'SupplierCode', 'capital' => 'Capital', 'localtax1_assuj' => 'UseLocalTax1', 'localtax2_assuj' => 'UseLocalTax2', 'localtax1_value' => 'LocalTax1DefaultValue', 'localtax2_value' => 'LocalTax2DefaultValue', 'subprice' => 'UnitPrice', 'product_type' => 'ProductType', 'product_label' => 'ProductLabel', 'type' => 'InvoiceType', 'info_bits' => 'TVA NPR or NOT', 'special_code' => 'Special line (WEEE line, option, id of module...)', 'status' => 'Status', 'cash' => 'PaymentTypeLIQ', 'cash_lifetime' => $langs->transnoentities('LifetimeAmount', $langs->transnoentities('PaymentTypeLIQ')), 'card' => 'PaymentTypeCB', 'card_lifetime' => $langs->transnoentities('LifetimeAmount', $langs->transnoentities('PaymentTypeCB')), 'cheque' => 'PaymentTypeCHQ', 'cheque_lifetime' => $langs->transnoentities('LifetimeAmount', $langs->transnoentities('PaymentTypeCHQ')), 'lifetime_start' => 'LifetimeStartDate' ); if (is_object($newobjtoshow) || is_array($newobjtoshow)) { //var_dump($newobjtoshow); foreach ($newobjtoshow as $key => $val) { if (!is_object($val) && !is_array($val)) { // TODO $val can be '__PHP_Incomplete_Class', the is_object return false $s .= ''; // Field code $s .= ''; $s .= ''; $s .= ($prefix ? $prefix.' > ' : ''); $s .= $key; $s .= ''; // Label $s .= ''; $label = ''; if (isset($arrayoffields[$key]['label'])) { $label = $langs->trans($tmpobject->fields[$key]['label']); } elseif (!empty($convertkey[$key]) && isset($arrayoffields[$convertkey[$key]]['label'])) { $label = $langs->trans($tmpobject->fields[$convertkey[$key]]['label']); } elseif ($prefix == 'mycompany' || $prefix == 'thirdparty') { $reg = array(); if (preg_match('/^idprof(\d+)$/', $key, $reg)) { $countrycode = property_exists($newobjtoshow, 'country_code') ? ($newobjtoshow->country_code ?? '') : ''; $label = $langs->trans("ProfId".$reg[1].$countrycode); } } if (empty($label) && !empty($otherlabels[$key])) { $label = $langs->trans($otherlabels[$key]); } if (empty($label) && array_key_exists($key, $convertkey) && array_key_exists((string) $convertkey[$key], $otherlabels)) { $label = $langs->trans((string) $otherlabels[(string) $convertkey[$key]]); } if (empty($label)) { $label = array_key_exists($key, $convertkey) ? $convertkey[$key] : ''; } if (!empty($label)) { $s .= ''.$label.''; } // Value $s .= ''; if (in_array($key, array('date', 'datef'))) { $s .= dol_print_date($val, 'day'); } elseif (in_array($key, array('dateh', 'datec', 'date_creation', 'datem', 'tms', 'date_valid', 'datep'))) { $s .= dol_print_date($val, 'dayhour'); } elseif (in_array($key, array('tva_assuj', 'localtax1_assuj', 'localtax2_assuj'))) { $s .= yn($val); } elseif (in_array($key, array('product_type'))) { $s .= $val ? 'Product' : 'Service'; } elseif (in_array($key, array( 'qty', 'subprice', 'tva_tx', 'localtax1_tx', 'localtax2_tx', 'total_ht', 'total_ttc', 'total_tva', 'total_localtax1', 'total_localtax2', 'localtax2', 'localtax2', 'revenuestamp', 'multicurrency_total_ht', 'multicurrency_total_tva', 'multicurrency_total_ttc', 'multicurrency_subprice', 'opening', 'cash', 'cheque', 'card', 'amount' )) || (isset($arrayoffields[$key]['type']) && in_array($arrayoffields[$key]['type'], array('price')))) { $s .= ''.price($val, 0, $langs, 1, 0, -2).''; } else { $s .= $val; } $s .= ''; } elseif (is_array($val)) { $s .= formatObject($val, ($prefix ? $prefix.' > ' : '').$key); } elseif (is_object($val)) { $s .= formatObject($val, ($prefix ? $prefix.' > ' : '').$key); } } } return $s; }