Update LanguageOfCommentsSniff.php (#38731)

* Update LanguageOfCommentsSniff.php

* Update actions_builddoc.inc.php

* fix

* Update LanguageOfCommentsSniff.php

* Update LanguageOfCommentsSniff.php

* exclude copyright lines

* translate comments

* translate comments

* translate comments

* fix CI

* fix CI
This commit is contained in:
Frédéric FRANCE 2026-06-28 03:50:31 +02:00 committed by GitHub
parent da865dc945
commit 488637132f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 73 additions and 63 deletions

View file

@ -63,8 +63,8 @@ jobs:
phpstan-cache-${{ matrix.php-version }}-${{ github.base_ref }}-
phpstan-cache-${{ matrix.php-version }}-
- name: Show debug into
run: cd ./.github/tmp && ls -al
- name: Show debug info
run: ls -al ./.github/tmp || echo "Cache directory not found (first run)"
# Another method to get the list of changed files
# It sets the variable steps.changed-php.outputs.all_changed_files for other steps
@ -103,17 +103,17 @@ jobs:
# shellcheck disable=2086
if [ "${{ github.ref_name }}" == "develop" ] || [[ "${{ github.ref_name }}" == *.0 ]]|| [[ "${{ github.head_ref }}" == *"phpstan_full"* ]] ; then
# Run phpstan on all files in integration branch
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php | tee _stan.xml | cs2pr --graceful-warnings
phpstan analyse --no-progress --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php | tee _stan.xml | cs2pr --graceful-warnings
else
PHP_FILES=$(echo "$ALL_CHANGED_FILES" | tr ' ' '\n' | grep -E '\.php$' || true)
echo "PHP_FILES=$PHP_FILES"
if [ -z "$PHP_FILES" ]; then
echo "No PHP files to analyse. Skipping Phan."
echo "No PHP files to analyse. Skipping PHPStan."
exit 0
fi
echo phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php ${ALL_CHANGED_FILES} | tee _stan.xml | cs2pr --graceful-warnings
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php ${ALL_CHANGED_FILES} | tee _stan.xml | cs2pr --graceful-warnings
echo phpstan analyse --no-progress --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php ${ALL_CHANGED_FILES}
phpstan analyse --no-progress --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php ${ALL_CHANGED_FILES} | tee _stan.xml | cs2pr --graceful-warnings
fi
# continue-on-error: true

View file

@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2025 Frédéric France <frederic.france@free.fr>
/* Copyright (C) 2025-2026 Frédéric France <frederic.france@free.fr>
*
* 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
@ -46,6 +46,8 @@ class LanguageOfCommentsSniff implements Sniff
' entier ',
// ' facture ', // avoid french name of dolibarr object
' factures ',
' fonction ',
' formulaire ',
' ligne ',
' lignes ',
' modèle ',
@ -96,6 +98,12 @@ class LanguageOfCommentsSniff implements Sniff
{
$tokens = $phpcsFile->getTokens();
$content = $tokens[$stackPtr]['content'];
if (strpos($content, 'Copyright') === false && preg_match('/[àâäéèêëîïôùûüçœÀÂÄÉÈÊËÎÏÔÙÛÜÇŒ]/', $content)) {
$error = "The comment appears to be in French (accent detected in: '%s'). Please write in English.";
$data = [trim($content)];
$phpcsFile->addWarning($error, $stackPtr, 'FrenchDetected', $data);
return; // We stop at the first occurrence.
}
// Basic cleanup (lowercase for comparison)
$contentLower = strtolower($content);

View file

@ -9,7 +9,7 @@
* Copyright (C) 2012 J. Fernando Lagrange <fernando@demo-tic.org>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2026 Frédéric France <frederic.france@free.fr>
*
* 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
@ -277,7 +277,7 @@ foreach ($tableau as $key => $const) { // Loop on each param
print '<a href="'.dolBuildUrl(DOL_URL_ROOT.'/admin/mails_templates.php', ['action' => 'create', 'type_template' => $tmp[1], 'backtopage' => dolBuildUrl($_SERVER["PHP_SELF"])]).'">'.img_picto('', 'add').'</a>';
} elseif (preg_match('/MAIL_FROM$/i', $const)) {
print img_picto('', 'email', 'class="pictofixedwidth"').'<input type="text" class="flat minwidth300" name="constvalue_'.$const.'" value="'.dol_escape_htmltag($obj->value).'">';
} else { // type = 'string' ou 'chaine'
} else { // type = 'string' or 'chaine'
print '<input type="text" class="flat minwidth300" name="constvalue_'.$const .'" value="'.dol_escape_htmltag($obj->value).'">';
}
print '</td>';

View file

@ -7,7 +7,7 @@
* Copyright (C) 2009-2017 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2014-2018 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2015-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2015-2026 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2018-2019 Thibault FOUCART <support@ptibogxiv.net>
@ -433,7 +433,7 @@ class Adherent extends CommonObject
$this->public = 0;
$this->ismultientitymanaged = 1;
$this->isextrafieldmanaged = 1;
// les champs optionnels sont vides
// Optional fields are empty
$this->array_options = array();
$this->fields['ref_ext']['visible'] = getDolGlobalInt('MAIN_LIST_SHOW_REF_EXT');

View file

@ -129,10 +129,10 @@ if ($mode == 'memberbycountry') {
//print $sql;
} elseif ($mode == 'memberbyregion') {
$label = $langs->trans("Country");
$label2 = $langs->trans("Region"); //département
$tab = 'statsregion'; //onglet
$label2 = $langs->trans("Region"); // department
$tab = 'statsregion'; // tab
$data = array(); //tableau de donnée
$data = array(); // data array
$sql = "SELECT COUNT(DISTINCT d.rowid) as nb, COUNT(s.rowid) as nbsubscriptions, MAX(d.datevalid) as lastdate, MAX(s.dateadh) as lastsubscriptiondate, co.code, co.label, r.nom as label2";
$sql .= " FROM ".MAIN_DB_PREFIX."adherent as d";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as c on d.state_id = c.rowid";

View file

@ -3,7 +3,7 @@
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
* Copyright (C) 2020-2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2020-2026 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
@ -151,7 +151,7 @@ if ($company->id) {
}
}
// Si adherent lie a un tiers non de type "particulier"
// If the member is linked to a third party not of type "individual"
if ($company->typent_code != 'TE_PRIVATE') {
$v->setOrg($company->name);
}

View file

@ -50,6 +50,8 @@
* @var ?array<string,mixed> $moreparams
*/
'
@phan-var-force int $id
@phan-var-force int $permissiontoadd
@phan-var-force ?array<string,mixed> $moreparams
@phan-var-force CommonObject|Societe $object
@phan-var-force int $id

View file

@ -5,7 +5,7 @@
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
* Copyright (C) 2018-2024 Charlene Benke <charlene@patas-monkey.com>
* Copyright (C) 2024-2026 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2026 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2026 Joachim Küter <git-jk@bloxera.com>
*
* This program is free software; you can redistribute it and/or modify
@ -438,8 +438,8 @@ function dol_stringtotime($string, $gm = 1)
// Convert date with format DD/MM/YYY HH:MM:SS. This part of code should not be used.
if (preg_match('/^([0-9]+)\/([0-9]+)\/([0-9]+)\s?([0-9]+)?:?([0-9]+)?:?([0-9]+)?/i', $string, $reg)) {
dol_syslog("dol_stringtotime call to function with deprecated parameter format", LOG_WARNING);
// Date est au format 'DD/MM/YY' ou 'DD/MM/YY HH:MM:SS'
// Date est au format 'DD/MM/YYYY' ou 'DD/MM/YYYY HH:MM:SS'
// Date is in format 'DD/MM/YY' or 'DD/MM/YY HH:MM:SS'
// Date is in format 'DD/MM/YYYY' or 'DD/MM/YYYY HH:MM:SS'
$sday = (int) $reg[1];
$smonth = (int) $reg[2];
$syear = (int) $reg[3];
@ -632,7 +632,7 @@ function dol_get_last_day($year, $month = 12, $gm = false)
$month += 1;
}
// On se deplace au debut du mois suivant, et on retire un jour
// Move to the start of the next month, then subtract one day
$datelim = dol_mktime(23, 59, 59, $month, 1, $year, $gm);
$datelim -= (3600 * 24);
@ -909,7 +909,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $countryCodeOrId = '
}
if (in_array('ascension', $specialdayrule)) {
// Calcul du jour de l'ascension (39 days after easter day)
// Calculation of Ascension day (39 days after easter day)
$date_paques = getGMTEasterDatetime($annee);
$date_ascension = $date_paques + (3600 * 24 * 39);
$jour_ascension = gmdate("d", $date_ascension);
@ -1200,7 +1200,7 @@ function listPublicHoliday($timestampStart, $timestampEnd, $countryCodeOrId = ''
}
if (in_array('ascension', $specialdayrule)) {
// Calcul du jour de l'ascension (39 days after easter day)
// Calculation of Ascension day (39 days after easter day)
$date_paques = getGMTEasterDatetime($annee);
$date_ascension = $date_paques + (3600 * 24 * 39);
$jour_ascension = gmdate("d", $date_ascension);
@ -1496,7 +1496,7 @@ function getFirstDayOfEachWeek($TWeek, $year)
$TFirstDayOfWeek = array();
foreach ($TWeek as $weekNb) {
if (in_array('01', $TWeek) && in_array('52', $TWeek) && $weekNb == '01') {
$year++; //Si on a la 1re semaine et la semaine 52 c'est qu'on change d'année
$year++; // If we have both week 1 and week 52, it means we are changing year
}
$TFirstDayOfWeek[$weekNb] = date('d', strtotime($year.'W'.$weekNb));
}

View file

@ -107,11 +107,11 @@ if ($resql) {
while ($i < $num) {
$obj = $db->fetch_object($resql);
// Le name de l'utilisateur
// The name of the user
$nombase = str_replace("°", "'", $obj->name);
$input .= $nombase.';';
//affichage des resultats
// Display results
$ensemblereponses = $obj->reponses;
for ($k = 0; $k < $nbcolonnes; $k++) {
if (empty($somme[$k])) {

View file

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2013-2020 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2018-2026 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2026 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
@ -83,7 +83,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) { // bo
$nouveauchoix .= "1";
} elseif (GETPOSTISSET("choix$i") && GETPOST("choix$i") == '2') {
$nouveauchoix .= "2";
} else { // else it's zéro
} else { // else it's zero
$nouveauchoix .= "0";
}
}
@ -740,7 +740,7 @@ if ($object->format == "D") {
// Displaying the months
$colspan = 1;
for ($i = 0; $i < $nbofsujet; $i++) {
$cur = intval($toutsujet[$i]); // intval() est utilisé pour supprimer le suffixe @* qui déplaît logiquement à strftime()
$cur = intval($toutsujet[$i]); // intval() is used to strip the @* suffix which naturally confuses strftime()
if (!isset($toutsujet[$i + 1])) {
$next = false;
@ -1123,7 +1123,7 @@ if ($nbofcheckbox >= 2) {
print '</tr>'."\n";
}
// S'il a oublié de remplir un nom
// If they forgot to fill in a name
if (GETPOSTISSET("boutonp") && GETPOST("nom") == "") {
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Name")), null, 'errors');
}
@ -1136,7 +1136,7 @@ if (isset($erreur_ajout_date) && $erreur_ajout_date) {
setEventMessages($langs->trans("ErrorWrongDate"), null, 'errors');
}
//fin du tableau
// End of table
print '</table>'."\n";
print '</div>'."\n";

View file

@ -2,7 +2,7 @@
/* Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2024-2026 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2026 Frédéric France <frederic.france@free.fr>
*
* 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
@ -87,7 +87,7 @@ if (GETPOSTISSET("confirmecreation")) {
$toutchoix = substr($toutchoix, 1);
$_SESSION["toutchoix"] = $toutchoix;
//test de remplissage des cases
// Check that all fields are filled in
$testremplissage = '';
for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) {
if (isset($arrayofchoices[$i])) {
@ -124,8 +124,8 @@ if (empty($_SESSION['title'])) {
}
//partie creation du sondage dans la base SQL
//On prépare les données pour les inserer dans la base
// Poll creation section in the SQL database
// Prepare the data to insert into the database
print '<form name="formulaire" id="surveyform" action="'.$_SERVER["PHP_SELF"].'" method="POST">'."\n";
print '<input type="hidden" name="token" value="'.newToken().'">';
@ -139,7 +139,7 @@ print '<div>'."\n";
print '<table>'."\n";
//affichage des cases texte de formulaire
// Display form text fields
for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) {
$j = $i + 1;
if (!isset($_SESSION["choix$i"])) {
@ -154,7 +154,7 @@ for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) {
print '</table>'."\n";
//ajout de cases supplementaires
// Add extra fields
print '<table><tr>'."\n";
print '<td class="center">'.$langs->trans("5MoreChoices").'... ';
if ($conf->use_javascript_ajax) {

View file

@ -116,7 +116,7 @@ if (GETPOST('confirmation')) {
$errheure[$i][$j] = true;
$erreur = true;
}
} elseif (preg_match(";^(\d{1,2})h(\d{0,2})$;i", $tmphorairesi[$j], $heures)) { //si c'est une heure encore plus simple type 8h
} elseif (preg_match(";^(\d{1,2})h(\d{0,2})$;i", $tmphorairesi[$j], $heures)) { // if it is an even simpler time format like 8h
// If the values are ok, add the data in the session variables
if ($heures[1] < 24 && $heures[2] < 60) {
$_SESSION["horaires$i"][$j] = $heures[0];
@ -231,11 +231,11 @@ if (!isset($_SESSION["nbrecaseshoraires"])) {
$_SESSION["nbrecaseshoraires"] = 5;
} elseif ((GETPOST('ajoutcases') || GETPOST("ajoutcases_y")) && $_SESSION["nbrecaseshoraires"] == 5) {
$_SESSION["nbrecaseshoraires"] = 10;
//On sauvegarde les heures deja entrées
// Save the already entered hours
if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
//affichage des 5 cases horaires
// Display the 5 time slots
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
$horairesi = GETPOST("horaires".$i);
$_SESSION["horaires$i"][$j] = $horairesi[$j];
@ -277,11 +277,11 @@ if (issetAndNoEmpty('moisavant_x') || issetAndNoEmpty('moisavant')) {
$_SESSION["mois"] -= 1;
}
//On sauvegarde les heures deja entrées
// Save the already entered hours
if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
//affichage des 5 cases horaires
// Display the 5 time slots
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
$horairesi = GETPOST("horaires".$i);
$_SESSION["horaires$i"][$j] = $horairesi[$j];
@ -299,11 +299,11 @@ if (issetAndNoEmpty('moisapres_x') || issetAndNoEmpty('moisapres')) {
$_SESSION["mois"] += 1;
}
// On sauvegarde les heures deja entrées
// Save the already entered hours
if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
//affichage des 5 cases horaires
// Display the 5 time slots
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
$horairesi = GETPOST("horaires".$i);
$_SESSION["horaires$i"][$j] = $horairesi[$j];
@ -316,11 +316,11 @@ if (issetAndNoEmpty('moisapres_x') || issetAndNoEmpty('moisapres')) {
if (issetAndNoEmpty('anneeavant_x') || issetAndNoEmpty('anneeavant')) {
$_SESSION["annee"] -= 1;
//On sauvegarde les heures deja entrées
// Save the already entered hours
if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
//affichage des 5 cases horaires
// Display the 5 time slots
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
$horairesi = GETPOST("horaires".$i);
$_SESSION["horaires$i"][$j] = $horairesi[$j];
@ -333,11 +333,11 @@ if (issetAndNoEmpty('anneeavant_x') || issetAndNoEmpty('anneeavant')) {
if (issetAndNoEmpty('anneeapres_x') || issetAndNoEmpty('anneeapres')) {
$_SESSION["annee"] += 1;
//On sauvegarde les heures deja entrées
// Save the already entered hours
if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
//affichage des 5 cases horaires
// Display the 5 time slots
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
$horairesi = GETPOST("horaires".$i);
$_SESSION["horaires$i"][$j] = $horairesi[$j];
@ -421,7 +421,7 @@ if (issetAndNoEmpty('choixjourajout')) {
$_SESSION["totalchoixjour"] = array();
}
// Test pour éviter les doublons dans la variable qui contient toutes les dates
// Check to avoid duplicates in the variable holding all dates
$journeuf = true;
if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true && issetAndNoEmpty('choixjourajout') === true) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
@ -440,7 +440,7 @@ if (issetAndNoEmpty('choixjourajout')) {
sort($_SESSION["totalchoixjour"]);
$cle = array_search(dol_mktime(0, 0, 0, $_SESSION["mois"], (int) $choixjourajout[0], $_SESSION["annee"]), $_SESSION["totalchoixjour"]);
//On sauvegarde les heures deja entrées
// Save the already entered hours
for ($i = 0; $i < $cle; $i++) {
$horairesi = GETPOST("horaires".$i);
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
@ -465,12 +465,12 @@ if (issetAndNoEmpty('choixjourajout')) {
}
}
//retrait d'une entrée dans la variable de session qui contient toutes les dates
// Remove an entry from the session variable holding all dates
if (issetAndNoEmpty('choixjourretrait')) {
//On sauvegarde les heures deja entrées
// Save the already entered hours
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
//affichage des 5 cases horaires
// Display the 5 time slots
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
$horairesi = GETPOST("horaires".$i);
$_SESSION["horaires$i"][$j] = $horairesi[$j];
@ -490,7 +490,7 @@ if (issetAndNoEmpty('choixjourretrait')) {
}
}
//report des horaires dans toutes les cases
// Copy hours to all time slots
if (issetAndNoEmpty('reporterhoraires')) {
$_SESSION["horaires0"] = GETPOST("horaires0");
$nbofchoice = count($_SESSION["totalchoixjour"]);
@ -500,7 +500,7 @@ if (issetAndNoEmpty('reporterhoraires')) {
}
}
//effacer les horaires dans toutes les cases
// Clear hours from all time slots
if (issetAndNoEmpty('resethoraires')) {
$nbofchoice = count($_SESSION["totalchoixjour"]);
for ($i = 0; $i < $nbofchoice; $i++) {
@ -508,7 +508,7 @@ if (issetAndNoEmpty('resethoraires')) {
}
}
// affichage du calendrier
// Display the calendar
print '<tr>'."\n";
for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) {
@ -548,16 +548,16 @@ for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) {
}
}
//fin du tableau
// End of table
print '</tr>'."\n";
print '</table>'."\n";
print '</div></div>'."\n";
print '<div class="bodydate"><div class="center">'."\n";
// affichage de tous les jours choisis
// Display all selected days
if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur) {
//affichage des jours
// Display the days
print '<br>'."\n";
print '<div align="left">';
print '<strong>'.$langs->trans("SelectedDays").':</strong>'."<br>\n";
@ -609,7 +609,7 @@ if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur) {
print '<tr>'."\n";
print '<td class="left">'.dol_print_date($_SESSION["totalchoixjour"][$i], 'daytext').' <span class="opacitymedium">('.dol_print_date($_SESSION["totalchoixjour"][$i], '%A').')</span></td>';
//affichage des cases d'horaires
// Display the time slot fields
for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
if (isset($errheure[$i][$j]) /* && $errheure[$i][$j] */) {
// When an error is found, the checkbox background is red
@ -638,9 +638,9 @@ if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur) {
print '</tr>'."\n";
print '</table>'."\n";
print '<a name="bas"></a>'."\n";
//fin du formulaire et bandeau de pied
// End of form and footer
print '</form>'."\n";
//bandeau de pied
// Footer bar
print '<br><br><br><br>'."\n";
print '</div></div>'."\n";

View file

@ -2,7 +2,7 @@
/* Copyright (C) 2013-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2015-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2018-2026 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
@ -61,7 +61,7 @@ foreach ($session_var as $var) {
}
}
// On initialise également les autres variables
// Also initialise the other variables
$cocheplus = '';
$cochemail = '';
$champdatefin = 0;