Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate from deprecated strftime to IntlDateFormatter #42

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions debitor/crmkalender.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
// ----------------------------------------------------------------------
// 20240209 PHR Added indbetaling
// 20240227 PHR Added $printfile and call to saldiprint.php
// 20250207 migrate from strftime to IntlDateFormatter.

@session_start();
$s_id = session_id();
Expand Down Expand Up @@ -74,8 +75,6 @@
// Main Execution
function render_crm_calendar()
{
// Set locale for date handling
setlocale(LC_TIME, 'da_DK.UTF-8');

// Determine selected year and month
$selected_year = $_GET['year'] ?? date('Y');
Expand Down Expand Up @@ -136,8 +135,10 @@ function render_month_navigation($selected_year, $selected_month)
</select>
<select name="month" onchange="this.form.submit()">
<?php
$date_fmt = new IntlDateFormatter('da_DK');
$date_fmt->setPattern('MMMM');
for ($month = 1; $month <= 12; $month++) {
$month_name = strftime('%B', mktime(0, 0, 0, $month, 1));
$month_name = $date_fmt->format(mktime(0, 0, 0, $month, 1));
$selected = $month == $selected_month ? 'selected' : '';
echo "<option value='$month' $selected>" . ucfirst($month_name) . "</option>";
}
Expand Down
3 changes: 2 additions & 1 deletion finans/budget.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
// 20210312 LOE Translated the former Danish text here to English and Applied findtekst function to this and the menu items
// 20220926 MSC Removed a 2 number in title for budget
// 20250130 migrate utf8_en-/decode() to mb_convert_encoding
// 20250207 Decrease arguments in call to periodeoverskrifter

@session_start();
$s_id=session_id();
Expand Down Expand Up @@ -270,7 +271,7 @@
# print "<td width=20 title=\"$z. regnskabsm&aring;ned\"><b> MD_$z<b><br></td>";
#}
$budget_csvdata="\"Kontonr\";\"Kontonavn\";"; # 20150622 del 2 start
$budget_csvdata.=periodeoverskrifter($maanedantal, $startaar, $startmaaned, 1, "regnskabsmaaned", $regnskabsaar);
$budget_csvdata.=periodeoverskrifter($maanedantal, $startaar, $startmaaned, 1, $regnskabsaar);
print "<td align=right><b> I alt</a></b></td> ";
$budget_csvdata.="\"I alt\"\n"; # 20150622 del 2 slut
print "</tr>";
Expand Down
3 changes: 2 additions & 1 deletion finans/regnskab.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
// 20210721 LOE translated some texts here and also updated title texts with translated ones.
// 20220624 CA rolled back retrieving data from kontoplan.txt DA and EN cause it overwrites existing accounting plans.
// 20250130 migrate utf8_en-/decode() to mb_convert_encoding
// 20250207 Decrease arguments in call to periodeoverskrifter

@session_start();
$s_id=session_id();
Expand Down Expand Up @@ -337,7 +338,7 @@
#for ($z=1; $z<=$maanedantal; $z++) {
# print "<td title=\"$z. regnskabsm&aring;ned\" align=right><b> MD_$z<b><br></td>";
#}
$tmp=periodeoverskrifter($maanedantal, $startaar, $startmaaned, 1, "regnskabsmaaned", $regnskabsaar);
$tmp=periodeoverskrifter($maanedantal, $startaar, $startmaaned, 1, $regnskabsaar);
fwrite($csv,";". str_replace('"','',$tmp) ."I alt\n");
#$cols+=count(explode(";",$tmp));

Expand Down
73 changes: 16 additions & 57 deletions includes/finansfunk.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,70 +18,29 @@
// ----------------------------------------------------------------------------
//
// 20150622 CA funktionen periodeoverskrifter returnere overskrifterne som CSV
// 20250207 migrate from strftime to IntlDateFormatter. + strip function down to what is actually used.

if (!function_exists('periodeoverskrifter')) {
function periodeoverskrifter ($periodeantal, $periode_aar, $periode_md, $periode_dag=1, $periode_laengde="regnskabsmaaned", $regnskabsaar="") {
# Periodelængder kan være dag, uge, maaned, regnskabsmaaned eller kvartal (eller blot det foerste bogstav)
setlocale(LC_TIME, "da_DK","da","da_DK.utf8");
$retur=""; # 20150622
function periodeoverskrifter ($periodeantal, $periode_aar, $periode_md, $periode_dag=1, $regnskabsaar="") {
$date_fmt = new IntlDateFormatter('da_DK');
$retur="";
$trin = 1;
$periode_laengde = strtolower(substr($periode_laengde, 0, 1));
if ( $periode_laengde == substr("uge", 0, 1) ) {
$trin = 7;
$periodeantal = $trin * $periodeantal;
}
if ( $periode_laengde == substr("kvartal", 0, 1) ) {
$trin = 3;
$periodeantal = $trin * $periodeantal;
}
for ($z=0; $z<$periodeantal; $z=$z+$trin) {
if ( $periode_laengde == substr("dag", 0, 1) ) {
$periode_tidsstempel = mktime(12, 0, 0, $periode_md, $periode_dag+$z, $periode_aar);
if ( strftime("%u", $periode_tidsstempel) > 5 ) { # Loerdag eller soendag med det danske oe i navnet
# $periode_kort = ucfirst(substr(strftime("%a", $periode_tidsstempel),0,3))."&nbsp;".date("j/n",$periode_tidsstempel);
$periode_kort = ucfirst(substr(strftime("%a", $periode_tidsstempel),0,1))."&oslash;&nbsp;".date("j/n",$periode_tidsstempel);
} else {
$periode_kort = ucfirst(substr(strftime("%a", $periode_tidsstempel),0,2))."&nbsp;".date("j/n",$periode_tidsstempel);
}
$periode_lang = ucfirst(strftime("%A %e. %B %Y",$periode_tidsstempel));
} elseif ( $periode_laengde == substr("uge", 0, 1) ) {
$periode_tidsstempel = mktime(12, 0, 0, $periode_md, $periode_dag+$z, $periode_aar);
$periode_ugedag = strftime("%u", $periode_tidsstempel);
$periode_start = mktime(12, 0, 0, $periode_md, $periode_dag+$z+1-$periode_ugedag, $periode_aar);
$periode_slut = mktime(12, 0, 0, $periode_md, $periode_dag+$z+7-$periode_ugedag, $periode_aar);
$periode_kort = strftime("u%V'%g",$periode_tidsstempel);
$periode_lang = strftime("Uge %V i &aring;r %G",$periode_tidsstempel);
$periode_lang .= " (".date("d/m",$periode_start)." - ".date("d/m",$periode_slut).")";
} else {
$periode_tidsstempel= mktime(12, 0, 0, $periode_md+$z, $periode_dag, $periode_aar);
if ( $periode_laengde == substr("kvartal", 0, 1) ) {
$periode_slut = mktime(12, 0, 0, $periode_md+$z+3, 0, $periode_aar);
$periode_kvartal = floor((date("m",$periode_tidsstempel)-1)/3)+1;
$periode_kort = $periode_kvartal.". kv'". strftime("%y",$periode_tidsstempel);
$periode_lang = $periode_kvartal.". kvartal ". strftime("%Y",$periode_tidsstempel);
$periode_lang .= " (".date("d/m",$periode_tidsstempel)." - ".date("d/m",$periode_slut).")";
} elseif ( $periode_laengde == substr("maaned", 0, 1) ) {
$periode_kort = ucfirst(strftime("%b'%y",$periode_tidsstempel));
$periode_lang = ucfirst(strftime("%B %Y",$periode_tidsstempel));
} elseif ( $periode_laengde == substr("regnskabsmaaned", 0, 1) ) {
$periode_kort = ucfirst(strftime("%b'%y",$periode_tidsstempel));
$periode_lang = ucfirst(strftime("%B %Y",$periode_tidsstempel));
$periode_lang .= " (".($z+1).". regnskabsm&aring;ned i regnskabs&aring;ret";
if ( $regnskabsaar ) $periode_lang .= " ".$regnskabsaar;
$periode_lang .= ")";

} else {
$periode_kort = ($z+1).".";
$periode_lang = ($z+1).". periode";
}
}
$periode_tidsstempel= mktime(12, 0, 0, $periode_md+$z, $periode_dag, $periode_aar);

$date_fmt->setPattern("MMM''yy");
$periode_kort = ucfirst($date_fmt->format($periode_tidsstempel));

$date_fmt->setPattern("MMMM yyyy");
$periode_lang = ucfirst($date_fmt->format($periode_tidsstempel));
$periode_lang .= " (".($z+1).". regnskabsm&aring;ned i regnskabs&aring;ret";
if ( $regnskabsaar ) $periode_lang .= " ".$regnskabsaar;
$periode_lang .= ")";

print "<td title=\"$periode_lang\" align=\"right\"><b>$periode_kort</b></td>\n";
$retur.="\"$periode_kort\";"; # 20150622
$retur.="\"$periode_kort\";";
}
return $retur; # 20150622
return $retur;
}

}
?>

13 changes: 10 additions & 3 deletions sager/vis_loen.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

// 20250130 migrate utf8_en-/decode() to mb_convert_encoding
// 20250207 migrate from strftime to IntlDateFormatter.

function vis_loen($id) {
global $charset;
Expand Down Expand Up @@ -246,12 +247,18 @@ function vis_loen($id) {
$datotext_error="style=\"border: 1px solid red;-webkit-padding-before: 1px;-webkit-padding-after: 1px;-webkit-padding-start: 1px;-webkit-padding-end: 1px;\"";
} else {
$loendato=dkdato($loendate);
setlocale(LC_TIME, "danish");
if ($loendate==NULL) {
$loen_datotext=NULL;
} else {
$loen_datotext = strftime('%A den %d. %B %Y',strtotime($loendate));
if ($db_encode=='UTF8') $loen_datotext=mb_convert_encoding($loen_datotext, 'UTF-8', 'ISO-8859-1');
$date_fmt = new IntlDateFormatter(
'da_DK',
IntlDateFormatter::FULL,
IntlDateFormatter::NONE
);
$loen_datotext = $date_fmt->format(strtotime($loendate));
if ($db_encode != 'UTF8') {
$loen_datotext = $loen_datotext=mb_convert_encoding($loen_datotext, 'ISO-8859-1', 'UTF-8');
}
$dato = date('d-m-y');
$tid = date('H:i');
}
Expand Down