<?php
// *** Script door Yossi Beck ***
class berekening_jaar_cls{
function maandvinder($datum) {
$month=substr($datum, -8, 3);
if($month=="JAN") {$maand=1;}
else if($month=="FEB") {$maand=2;}
else if($month=="MAR") {$maand=3;}
else if($month=="APR") {$maand=4;}
else if($month=="MAY") {$maand=5;}
else if($month=="JUN") {$maand=6;}
else if($month=="JUL") {$maand=7;}
else if($month=="AUG") {$maand=8;}
else if($month=="SEP") {$maand=9;}
else if($month=="OCT") {$maand=10;}
else if($month=="NOV") {$maand=11;}
else if($month=="DEC") {$maand=12;}
else {$maand=null;}
return($maand);
}
function dagvinder($datum) {
$dag="";
if (strlen($datum)==11) { // 12 sep 2002 or 08 sep 2002
$dag=substr($datum, -11, 2);
if(substr($dag,0,1)=="0") { // 08 aug 2002
$dag=substr($dag,1,1);
}
}
if (strlen($datum)==10) { // 8 aug 2002
$dag=substr($datum, -10, 1);
}
if ($dag) {
$dag=(int)$dag;
}
if ($dag>0 AND $dag<32) {}
else { $dag=null; }
return($dag);
}
function jaarvinder($datum) {
$jaar=substr($datum,-4, 4);
if ($jaar < 2100 AND $jaar > 0) {}
else { $jaar=null;}
return ($jaar);
}
function opmerkingbehandelen($datum1, $datum2, $doop) {
global $language;
$opm1=null; // van pers_birth_date
$opm2=null; // van pers_death_date
$weergave=null;
if (strlen(stristr($datum1,"BEF"))>0){$opm1="Bef";}
else if (strlen(stristr($datum1,"AFT"))>0){$opm1="Aft";}
else if (strlen(stristr($datum1,"ABT"))>0){$opm1="Abt";}
else if (strlen(stristr($datum1,"EST"))>0){$opm1="Abt";} // ik beschouw Abt, Est en Cal als hetzelfde wat de leeftijd betreft
else if (strlen(stristr($datum1,"CAL"))>0){$opm1="Abt";} // ik beschouw Abt, Est en Cal als hetzelfde wat de leeftijd betreft
else if (strlen(stristr($datum1,"BET"))>0){$opm1="Bet";} // BET gevallen worden hieronder als niet weer te geven behandeld
else {$opm1=null;}
if (strlen(stristr($datum2,"BEF"))>0){$opm2="Bef";}
else if (strlen(stristr($datum2,"AFT"))>0){$opm2="Aft";}
else if (strlen(stristr($datum2,"ABT"))>0){$opm2="Abt";}
else if (strlen(stristr($datum2,"EST"))>0){$opm2="Abt";} // ik beschouw Abt, Est en Cal als hetzelfde wat de leeftijd betreft
else if (strlen(stristr($datum2,"CAL"))>0){$opm2="Abt";} // ik beschouw Abt, Est en Cal als hetzelfde wat de leeftijd betreft
else if (strlen(stristr($datum2,"BET"))>0){$opm2="Bet";} // BET gevallen worden hieronder als niet weer te geven behandeld
else {$opm2=null;}
if($opm1 OR $opm2) { // er is op minst 1 opmerking
if($opm1==="Bef") {
if($opm2==="Bef" OR $opm2==="Abt") { $weergave=-1;} // kan niet de leeftijd berekenen. flag -1
else if ($opm2===null OR $opm2==="Aft") { $weergave=$language["age_min"]." "; }
}
else if($opm1==="Aft") {
if($opm2==="Aft" OR $opm2==="Abt") { $weergave=-1;} // kan niet de leeftijd berekenen. flag -1
else if ($opm2===null OR $opm2==="Bef") { $weergave=$language["age_max"]." "; }
}
else if($opm1==="Abt") {
if($opm2==="Bef" OR $opm2==="Aft") { $weergave=-1;} // kan niet de leeftijd berekenen. flag -1
else if ($opm2===null OR $opm2==="Abt") { $weergave=$language["age_abt"]." "; }
}
else if($opm1===null) {
if($opm2==="Bef") { $weergave=$language["age_max"]." "; }
else if ($opm2==="Aft") { $weergave=$language["age_min"]." "; }
else if ($opm2==="Abt") { $weergave=$language["age_abt"]." "; }
}
else if($opm1==="Bet" OR $opm2==="Bet") { $weergave=-1;} // wil bij BET gevallen geen leeftijd weergeven, sorry...
}
else {
// er zijn geen opmerkingen
$weergave=null;
}
// *** Bij berekening met een doop datum altijd ongeveer weergeven ***
if ($doop==true AND $weergave!=-1){ $weergave=$language["age_abt"]." "; }
return($weergave);
}
function leeftijd_berekenen($doop_datum, $geb_datum,$ov_datum, $age_check=false) {
$geb_datum=strtoupper($geb_datum);
// *** Leeftijd ook berekenen als er alleen een doop en overlijdens datum bekend is ***
$doop=false;
if ($geb_datum==''){
$doop=true;
$geb_datum=$doop_datum;
}
// *** Leeftijd ook berekenen bij levende personen ***
$levend=false;
if(function_exists('date_default_timezone_set')){
date_default_timezone_set('Europe/Amsterdam');
}
$datum=date("j M Y");
if ($ov_datum==''){
$levend=true;
$ov_datum=$datum;
}
$ov_datum=strtoupper($ov_datum);
$leeftijd=''; // *** Berekende leeftijd ***
$age="";
global $language;
if (($geb_jaar=$this->jaarvinder($geb_datum)) AND ($ov_jaar=$this->jaarvinder($ov_datum))) { //er zijn op zijn minst twee jaartallen....
// kijken of er EST AFT ABT enz zijn en of de leeftijd te berekenen is
// als niet te berekenen is $opmerking -1 en wordt er daardoor zodadelijk geen leeftijd weer gegeven
$opmerking=$this->opmerkingbehandelen($geb_datum,$ov_datum,$doop);
if($geb_jaar==$ov_jaar) { // geb 1850 - ovl 1850
if(!$opmerking) {
$age=$language["age_under_1"];
}
else {
if($opmerking!=-1) { //het is geen opmerking (of combinatie ervan) die niet worden weergegeven
//print "BOOGIE";
$age=$opmerking.$language["age_1"];
}
}
}
else { //jaartallen zijn niet hetzelfde we hebben maand nodig voor preciese leeftijd
if (($geb_maand=$this->maandvinder($geb_datum)) AND ($ov_maand=$this->maandvinder($ov_datum))) { //er zijn 2 maanden
if($geb_maand==$ov_maand) { // zelfde maand: we hebben dag nodig voor preciese leeftijd
if (($geb_dag=$this->dagvinder($geb_datum)) AND ($ov_dag=$this->dagvinder($ov_datum))) { // er zijn 2 dagen
// *** Bij een doop de tekst "ongeveer" weergeven ***
if ($opmerking){ $age=$opmerking; }
if (($geb_dag==$ov_dag) OR ($geb_dag < $ov_dag)) {
$leeftijd=$ov_jaar - $geb_jaar;
$age.=$leeftijd." ".$language["age_year"];
}
else if ($geb_dag > $ov_dag) {
$leeftijd=($ov_jaar - $geb_jaar)-1;
$age.=$leeftijd." ".$language["age_year"];
}
}
else { // aan 1 of 2 datums ontbreekt de dag
if(!$opmerking) {
$leeftijd=($ov_jaar - $geb_jaar)-1;
$age=$leeftijd." ".$language["age_or"]." ".($ov_jaar - $geb_jaar)." ".$language["age_year"];
}
else {
if($opmerking!=-1) { //het is geen opmerking (of coombinatie ervan) die niet worden weergegeven
$leeftijd=$ov_jaar - $geb_jaar;
$age=$opmerking.$leeftijd." ".$language["age_year"];;
}
}
}
}
else if ($geb_maand < $ov_maand) { //geen dag nodig
if($opmerking!=-1) {
$leeftijd=$ov_jaar - $geb_jaar;
$age=$opmerking.$leeftijd." ".$language["age_year"];
}
}
else if ($geb_maand > $ov_maand) { // geen dag nodig
if($opmerking!=-1) {
$leeftijd=($ov_jaar - $geb_jaar)-1;
$age=$opmerking.$leeftijd." ".$language["age_year"];
}
}
}
else { // aan 1 of allebei de jaartallen ontbreekt de maand
if(!$opmerking) { // geen EST ABT AFT BEF
//$age=(($ov_jaar - $geb_jaar)-1)." or ".($ov_jaar - $geb_jaar)." ".$language["age_year"]; // bijv: 45 of 46 jaar
$leeftijd=($ov_jaar - $geb_jaar)-1;
$age=$leeftijd." ".$language["age_or"]." ".($ov_jaar - $geb_jaar)." ".$language["age_year"];
}
else { //
if($opmerking!=-1) {
$leeftijd=$ov_jaar - $geb_jaar;
$age=$opmerking.$leeftijd." ".$language["age_year"];
}
//het heeft geen zin te geven: "ongeveer 45 of 46 jaar", "hoogstens 45 of 46 jaar"
//daarom schrijven we: "ongeveer 46 jaar", hoogstens 46 jaar
}
}
}
if($age) { $age=", ".$age;}
if ($leeftijd>100){ $age=''; }
if ($age_check==true){ $age=$leeftijd; }
return($age);
}
}
} // Einde class
?>