Merge branch 'develop' into fix-phan-warnings-on-calendar.class

This commit is contained in:
Lucas Marcouiller 2025-12-10 09:38:00 +01:00 committed by GitHub
commit 021c7da3c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 41 additions and 39 deletions

View file

@ -186,8 +186,8 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
}
*/
$dates = dol_get_first_day(GETPOSTINT('yeartoexport'), GETPOSTINT('monthtoexport') ? GETPOSTINT('monthtoexport') : 1);
$datee = dol_get_last_day(GETPOSTINT('yeartoexport'), GETPOSTINT('monthtoexport') ? GETPOSTINT('monthtoexport') : 12);
$dates = dol_get_first_day(GETPOSTINT('yeartoexport'), GETPOSTINT('monthtoexport') > 0 ? GETPOSTINT('monthtoexport') : 1);
$datee = dol_get_last_day(GETPOSTINT('yeartoexport'), GETPOSTINT('monthtoexport') > 0 ? GETPOSTINT('monthtoexport') : 12);
if ($datee >= dol_now()) {
setEventMessages($langs->trans("ErrorPeriodMustBePastToAllowExport"), null, "errors");
@ -280,7 +280,7 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
$fh = fopen($tmpfile, 'w');
// Print line with title
fwrite($fh, "BEGIN - date=".$yearmonthdateofexport." - period=".$yearmonthtoexport
fwrite($fh, "BEGIN - date=".$yearmonthdateofexport." - period=".$yearmonthtoexport." - format=V1"
.';'.$langs->transnoentities('Id')
.';'.$langs->transnoentities('DateCreation')
.';'.$langs->transnoentities('Action')
@ -295,6 +295,7 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
.';'.$langs->transnoentities('Fingerprint')
.';'.$langs->transnoentities('Status')
.';'.$langs->transnoentities('FingerprintExport')
.';'.$langs->transnoentities('FingerprintFormat')
//.';'.$langs->transnoentities('FingerprintExportHMAC')
."\n");
@ -307,14 +308,13 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
$block_static->id = $obj->rowid;
$block_static->entity = $obj->entity;
$block_static->date_creation = $db->jdate($obj->date_creation); // TODO Use gmt
$block_static->date_creation = $db->jdate($obj->date_creation); // jdate(date_creation) is UTC
$block_static->amounts = (float) $obj->amounts; // Database store value with 8 digits, we cut ending 0 them with (flow)
$block_static->vat = $obj->vat;
$block_static->action = $obj->action;
$block_static->date_object = $db->jdate($obj->date_object); // TODO Use gmt ?
$block_static->date_object = $db->jdate($obj->date_object); // jdate(date_object) is UTC
$block_static->ref_object = $obj->ref_object;
$block_static->user_fullname = $obj->user_fullname;
@ -341,7 +341,7 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
$block_static->debuginfo = $obj->debuginfo;
//var_dump($block->id.' '.$block->signature, $block->object_data);
$checksignature = $block_static->checkSignature($previoushash); // If $previoushash is not defined, checkSignature will search it
$checksignature = $block_static->checkSignature($previoushash); // If $previoushash is not defined, checkSignature will search it
if ($checksignature) {
$statusofrecord = 'Valid';
@ -360,8 +360,11 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
$statusofrecordnote = $langs->trans("PreviousFingerprint").': '.$previoushash.($statusofrecordnote ? ' - '.$statusofrecordnote : '');
}
$signatureexport = 'TODO';
$signatureexporthmac = 'TODO';
$concatenateddata = $block_static->buildKeyForSignature();
// Version archive V1=sha256
$signatureexport = dol_hash($previoushash.$concatenateddata, 'sha256'); // SHA256
//$signatureexporthmac = 'TODO';
fwrite($fh,
';'.$block_static->id
@ -377,7 +380,8 @@ if (GETPOST('action') == 'export' && $user->hasRight('blockedlog', 'read')) { /
.';"'.str_replace('"', '""', $block_static->object_version).'";"'
.str_replace('"', '""', $block_static->signature).'";"'
.str_replace('"', '""', $statusofrecord).'";"'
.str_replace('"', '""', $signatureexport).'";'
.str_replace('"', '""', $signatureexport).'";"'
.str_replace('"', '""', $block_static->object_format).'";'
//.str_replace('"', '""', $signatureexporthmac).'"'
//.';'.$statusofrecordnote
."\n");

View file

@ -64,7 +64,7 @@ $search_startday = GETPOSTINT('search_startday');
$search_endyear = GETPOSTINT('search_endyear');
$search_endmonth = GETPOSTINT('search_endmonth');
$search_endday = GETPOSTINT('search_endday');
$search_id = GETPOST('search_id', 'alpha');
$search_id = GETPOST('search_id', 'alpha'); // Can be a USF search string
$search_fk_user = GETPOST('search_fk_user', 'intcomma');
$search_start = -1;
if (GETPOST('search_startyear') != '') {
@ -384,7 +384,7 @@ $help_url = "EN:Module_Unalterable_Archives_-_Logs|FR:Module_Archives_-_Logs_Ina
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'bodyforlist mod-blockedlog page-admin_blockedlog_list');
$blocks = $block_static->getLog('all', (int) $search_id, $MAXLINES, $sortfield, $sortorder, (int) $search_fk_user, $search_start, $search_end, $search_ref, $search_amount, $search_code, $search_signature);
$blocks = $block_static->getLog('all', (string) $search_id, $MAXLINES, $sortfield, $sortorder, (int) $search_fk_user, $search_start, $search_end, $search_ref, $search_amount, $search_code, $search_signature);
if (!is_array($blocks)) {
if ($blocks == -2) {
setEventMessages($langs->trans("TooManyRecordToScanRestrictFilters", $MAXLINES), null, 'errors');

View file

@ -980,15 +980,15 @@ class BlockedLog
$this->id = $obj->rowid;
$this->entity = $obj->entity;
$this->date_creation = $this->db->jdate($obj->date_creation); // TODO Use gmt ?
$this->date_modification = $this->db->jdate($obj->tms); // TODO Use gmt ?
$this->date_creation = $this->db->jdate($obj->date_creation); // jdate(date_creation)is UTC
$this->date_modification = $this->db->jdate($obj->tms); // jdate(tms) is UTC
$this->amounts = (float) $obj->amounts;
$this->action = $obj->action;
$this->element = $obj->element;
$this->fk_object = $obj->fk_object;
$this->date_object = $this->db->jdate($obj->date_object); // TODO Use gmt ?
$this->date_object = $this->db->jdate($obj->date_object); // jdate(date_object) is UTC
$this->ref_object = $obj->ref_object;
$this->fk_user = $obj->fk_user;
@ -1132,9 +1132,9 @@ class BlockedLog
try {
$previoushash = $this->getPreviousHash(1, 0); // This get last record and lock database until insert is done and transaction closed
$concatenatedata = $this->buildKeyForSignature(); // All the information for the hash (meta data + data saved)
$concatenateddata = $this->buildKeyForSignature(); // All the information for the hash (meta data + data saved)
$this->signature = $this->buildFinalSignatureHash($previoushash.$concatenatedata); // Build the hmac signature
$this->signature = $this->buildFinalSignatureHash($previoushash.$concatenateddata); // Build the hmac signature
// For debug:
$this->debuginfo = $this->buildFirstPartOfKeyForSignature(); // Not used
@ -1150,7 +1150,7 @@ class BlockedLog
if ($forcesignature) {
$this->signature = $forcesignature;
}
//var_dump($concatenatedata);var_dump($previoushash);var_dump($this->signature);
//var_dump($concatenateddata);var_dump($previoushash);var_dump($this->signature);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."blockedlog (";
$sql .= " date_creation,";
@ -1232,15 +1232,15 @@ class BlockedLog
$previoushash = $this->getPreviousHash(0, $this->id);
}
$concatenatedata = '';
$concatenateddata = '';
$signature = '';
// Recalculate the signature
try {
// Build the string for the signature
$concatenatedata = $this->buildKeyForSignature();
$concatenateddata = $this->buildKeyForSignature();
$signature = $this->buildFinalSignatureHash($previoushash.$concatenatedata);
$signature = $this->buildFinalSignatureHash($previoushash.$concatenateddata);
} catch (Exception $e) {
$res = ($signature === $this->signature);
$this->error = $e->getMessage();
@ -1262,13 +1262,13 @@ class BlockedLog
if ($returnarray) {
if ($returnarray == 1) {
unset($concatenatedata);
unset($concatenateddata);
return array('checkresult' => $res, 'calculatedsignature' => $signature, 'previoushash' => $previoushash);
} else { // Consume much memory ($concatenatedata is a large var)
return array('checkresult' => $res, 'calculatedsignature' => $signature, 'previoushash' => $previoushash, 'keyforsignature' => $concatenatedata);
} else { // Consume much memory ($concatenateddata is a large var)
return array('checkresult' => $res, 'calculatedsignature' => $signature, 'previoushash' => $previoushash, 'keyforsignature' => $concatenateddata);
}
} else {
unset($concatenatedata);
unset($concatenateddata);
return $res;
}
}
@ -1299,12 +1299,10 @@ class BlockedLog
/**
* Return the string for signature (clear data).
* Note: rowid of line not included as it is not a business data and this allow to make backup of a year
* and restore it into another database with different ids without comprimising checksums
*
* @return string Key for signature
*/
private function buildKeyForSignature()
public function buildKeyForSignature()
{
//print_r($this->object_data);
if ($this->object_format == '') {
@ -1415,7 +1413,7 @@ class BlockedLog
* Return array of log objects (with criteria)
*
* @param string $element Element to search
* @param int $fk_object Id of object to search
* @param string|int $fk_object Id of object to search. Can be a UFS search criteria.
* @param int<0,max> $limit Max number of element, 0 for all
* @param string $sortfield Sort field
* @param string $sortorder Sort order

View file

@ -36,6 +36,13 @@
*/
require '../main.inc.php';
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
* @var User $user
*/
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php';
@ -55,14 +62,6 @@ if (isModEnabled('category')) {
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
}
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
* @var User $user
*/
// Load translation files required by the page
$langs->loadLangs(array("categories", "orders", 'sendings', 'companies', 'compta', 'bills', 'stocks', 'products'));
@ -156,10 +155,10 @@ $offset = $limit * $page;
$pageprev = $page - 1;
$pagenext = $page + 1;
if (!$sortfield) {
$sortfield = 'pr.ref';
$sortfield = 'c.ref';
}
if (!$sortorder) {
$sortorder = 'ASC';
$sortorder = 'DESC';
}
$show_shippable_command = GETPOST('show_shippable_command', 'aZ09');

View file

@ -25,6 +25,7 @@ ListOfTrackedEvents=List of tracked events
Fingerprint=Fingerprint
FingerprintExport=Fingerprint export
FingerprintExportHMAC=Fingerprint export HMAC
FingerprintFormat=Fingerprint format
DownloadLogCSV=Export unalterable logs (CSV)
DataOfArchivedEvent=Complete data of archived event
DataOfArchivedEventHelp=This field contains the complementary data that was archived on real time. Even if some parent business event could have been canceled or modified, the data stored here is the original data, and it can't be modified.