21 include_once (
"VAULT/Class.VaultFile.php");
26 $freedomctx = getenv(
"freedom_context");
27 if ($freedomctx !=
"") {
28 return "GEN/" . $freedomctx;
43 if (preg_match(
"/^(\d\d)\/(\d\d)\/(\d\d\d\d)\s(\d\d)?:?(\d\d)?:?(\d\d)?\s+?(\w+)?$/", $fdate, $reg)) {
44 $isoDate = sprintf(
"%04d-%02d-%02d %02d:%02d:%02d", $reg[3], $reg[2], $reg[1], $reg[4], $reg[5], $reg[6]);
45 if ($reg[8] !=
"") $tz = $reg[7];
48 if ($wtz && $tz) $isoDate.=
" " . $tz;
55 $jd = FrenchDateToJD($sdate);
56 if ($jd ===
false) $jd = Iso8601ToJD($sdate);
67 if (preg_match(
"/^(\d\d)\/(\d\d)\/(\d\d\d\d)\s?(\d\d)?:?(\d\d)?:?(\d\d)?(\.\d)*/", $fdate, $reg)) {
68 return cal2jd(
"CE", $reg[3], $reg[2], $reg[1], $reg[4], $reg[5], 0);
80 if (preg_match(
"/^(\d\d)\/(\d\d)\/(\d\d\d\d)\s?(\d\d)?:?(\d\d)?:?(\d\d)?/", $fdate,
$r)) {
95 if (preg_match(
"/^(\d\d\d\d)-(\d\d)-(\d\d)[\s|T]?(\d\d)?:?(\d\d)?:?(\d\d)?/", $fdate,
$r)) {
103 if (!$hh && !$mm && !$ss) {
104 $fdate = sprintf(
"%s/%s/%s", $dd, $mo, $yy);
107 $fdate = sprintf(
"%s/%s/%s %s:%s", $dd, $mo, $yy, $hh, $mm);
110 $fdate = sprintf(
"%s/%s/%s %s:%s:%s", $dd, $mo, $yy, $hh, $mm, $ss);
113 return FrenchDateToLocaleDate($fdate,
$format);
127 if ($localeconfig !==
false) {
128 if (strlen($fdate) >= 16) {
129 $format = $localeconfig[
'dateTimeFormat'];
131 $format = $localeconfig[
'dateFormat'];
138 $d = substr($fdate, 0, 2);
139 $m = substr($fdate, 3, 2);
140 $y = substr($fdate, 6, 4);
141 if (!ctype_digit(
$d))
return $fdate;
142 if (!ctype_digit($m))
return $fdate;
143 if (!ctype_digit($y))
return $fdate;
144 if (strlen($fdate) >= 16) {
145 $h = substr($fdate, 11, 2);
146 $i = substr($fdate, 14, 2);
147 if (!ctype_digit($h))
return $fdate;
148 if (!ctype_digit($i))
return $fdate;
149 if (strlen($fdate) == 19) {
150 $s = substr($fdate, 17, 2);
151 if (!ctype_digit(
$s))
return $fdate;
154 $ldate = str_replace(
'%d',
$d, $ldate);
155 $ldate = str_replace(
'%m', $m, $ldate);
156 $ldate = str_replace(
'%Y', $y, $ldate);
158 $ldate = str_replace(
'%H', $h, $ldate);
161 $ldate = str_replace(
'%M', $i, $ldate);
164 $ldate = str_replace(
'%S',
$s, $ldate);
177 if (!$fdate)
return '';
178 if (preg_match(
'/^(\d\d)\/(\d\d)\/(\d\d\d\d)\s?(\d\d)?:?(\d\d)?:?(\d\d)?/', $fdate,
$r)) {
180 if (
$r[4] ==
"")
$dt = sprintf(
"%04d-%02d-%02d",
$r[3],
$r[2],
$r[1]);
181 else $dt = sprintf(
"%04d-%02d-%02d%s%02d:%02d:%02d",
$r[3],
$r[2],
$r[1], ($withT) ?
'T' :
' ',
$r[4],
$r[5],
$r[6]);
195 if (preg_match(
"/^(\d\d\d\d)-(\d\d)-(\d\d)[\s|T]?(\d\d)?:?(\d\d)?:?(\d\d)?/", $isodate,
$r)) {
211 $dt = FrenchDateToUnixTs($isodate, $utc);
226 if (preg_match(
"/^(\d\d\d\d)-(\d\d)-(\d\d)[\s|T]?(\d\d)?:?(\d\d)?:?(\d\d)?/", $date,
$r)) {
228 if (strlen($date) > 11) {
234 $dt = FrenchDateToIso($date, $withT);
235 if (!
$dt)
return $date;
241 if ($localeconfig !==
false) {
242 $format = $localeconfig[
'dateTimeFormat'];
243 if (strlen($date) < strlen(
$format)) {
244 $format = $localeconfig[
'dateFormat'];
250 if (strlen($date) < strlen(
$format)) {
257 if (
$d !==
false && $m !==
false && $y !==
false) {
258 $tmp = substr($date, $y, 4);
259 if (!ctype_digit($tmp))
return $date;
261 $tmp = substr($date, $m, 2);
262 if (!ctype_digit($tmp))
return $date;
264 $tmp = substr($date,
$d, 2);
265 if (!ctype_digit($tmp))
return $date;
274 if ($h !==
false && $m !==
false) {
275 $dt.= ($withT ?
'T' :
' ') . substr($date, $h, 2) .
':' . substr($date, $m, 2);
277 $dt.=
':' . substr($date,
$s, 2);
282 $dt = FrenchDateToIso($date, $withT);
283 if (!
$dt)
return $date;
295 if (preg_match(
"/^(\d\d\d\d)-(\d\d)-(\d\d)\s?(\d\d)?:?(\d\d)?:?(\d\d)?/", $isodate, $reg)) {
296 return cal2jd(
"CE", $reg[1], $reg[2], $reg[3], $reg[4], $reg[5], 0);
303 if (($y > 1969) && ($y < 2038)) {
304 $nd = unixtojd(mktime($h, $mn,
$s, $m,
$d, $y));
305 $nm = (($h * 60 + $mn) - 720) / 1440;
314 if ($y == 1582 && $m == 10 &&
$d > 4 &&
$d < 15 && $era !=
"BCE") {
315 AddWarningMsg(
"The dates 5 through 14 October, 1582, do not exist in the Gregorian system!");
319 if ($era ==
"BCE") $y = - $y + 1;
328 $intgr = floor(floor(365.25 * $jy) + floor(30.6001 * $jm) +
$d + 1720995);
330 $gregcal = 15 + 31 * (10 + 12 * 1582);
331 if (
$d + 31 * ($m + 12 * $y) >= $gregcal) {
332 $ja = floor(0.01 * $jy);
333 $intgr+= 2 - $ja + floor(0.25 * $ja);
336 $dayfrac = $h / 24.0 - 0.5;
337 if ($dayfrac < 0.0) {
342 $frac = $dayfrac + ($mn +
$s / 60.0) / 60.0 / 24.0;
344 $jd0 = ($intgr + $frac) * 100000;
346 if ($jd0 - $jd > 0.5) $jd++;
359 $t = doubleval($jd) + 0.5;
360 $wd = floor((
$t / 7 - floor(
$t / 7)) * 7 + 0.000000000317);
370 $j = doubleval($jd) + 0.5;
371 $d4 = ((($j + 31741 - ($j % 7)) % 146097) % 36524) % 1461;
372 $l = floor($d4 / 1460);
373 $d1 = (($d4 - $l) % 365) + $l;
374 $wn = floor(
$d1 / 7) + 1;
389 $frac = $jd - $intgr;
391 if ($jd >= $gregjd) {
392 $tmp = floor((($intgr - 1867216.0) - 0.25) / 36524.25);
393 $j1 = $intgr + 1 + $tmp - floor(0.25 * $tmp);
403 $j3 = floor(6680.0 + (($j2 - 2439870.0) - 122.1) / 365.25);
404 $j4 = floor($j3 * 365.25);
405 $j5 = floor(($j2 - $j4) / 30.6001);
407 $d = floor($j2 - $j4 - floor($j5 * 30.6001));
408 $m = floor($j5 - 1.0);
409 if ($m > 12) $m-= 12;
410 $y = floor($j3 - 4715.0);
416 $hr = floor($df * 24.0);
417 $mn = floor(($df * 24.0 - $hr) * 60.0);
418 $f = (($df * 24.0 - $hr) * 60.0 - $mn) * 60.0;
460 $retiso8601 = sprintf(
"%02d/%02d/%04s",
$d, $m, $y);
464 $retiso8601 = sprintf(
"%02d/%02d/%04s %02d:%02d %s",
$d, $m, $y, $hr, $mn, $ce);
468 $retiso8601 = sprintf(
"%04d-%02d-%02s %02d:%02d%s", $y, $m,
$d, $hr, $mn, $ce);
477 return str_replace(array(
491 static $search, $replace;
493 $search = $replace = array();
495 $trans = get_html_translation_table(HTML_ENTITIES);
497 foreach ($trans as $literal => $entity) {
500 if (ord($literal) >= 192) {
502 $search[] = $literal;
504 $replace[] = $entity[1];
508 return str_replace($search, $replace, $text);
512 $string = strtr($string,
"\xA1\xAA\xBA\xBF\xC0\xC1\xC2\xC3\xC5\xC7
513 \xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1
514 \xD2\xD3\xD4\xD5\xD8\xD9\xDA\xDB\xDD\xE0
515 \xE1\xE2\xE3\xE5\xE7\xE8\xE9\xEA\xEB\xEC
516 \xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF8
517 \xF9\xFA\xFB\xFD\xFF",
"!ao?AAAAAC
523 $string = strtr($string, array(
541 return iconv(
"UTF-8",
"ASCII//TRANSLIT", $string);
555 $offset = $endoff + 1;
556 $endoff = strpos($ak,
"\n", $offset);
558 }
while (($idx >= 0) && ($endoff !==
false));
560 if ($idx >= 0)
return $ak . str_repeat(
"\n-", $idx) .
"\n$by";
561 else if ($endoff ==
false) {
562 if ($offset == 0)
return "$by";
563 else return substr($ak, 0, $offset - 1) .
"\n$by";
564 }
else return substr($ak, 0, $offset) .
"$by\n" . substr($ak, $endoff + 1);
573 return str_replace(array(