setPageTitle(WT_I18N::translate('Anniversary calendar')); $controller->pageHeader(); $cal = WT_Filter::get('cal', '@#D[A-Z ]+@'); $day = WT_Filter::get('day', '\d\d?'); $month = WT_Filter::get('month', '[A-Z]{3,5}'); $year = WT_Filter::get('year', '\d{1,4}(?: B\.C\.)?|\d\d\d\d\/\d\d|\d+(-\d+|[?]+)?'); $action = WT_Filter::get('action', 'year|today|calendar', 'today'); $filterev = WT_Filter::get('filterev', 'all|bdm|' . WT_REGEX_TAG, 'bdm'); $filterof = WT_Filter::get('filterof', 'all|living|recent', 'all'); $filtersx = WT_Filter::get('filtersx', '[MF]'); if ($cal.$day.$month.$year=='') { // No date specified? Use the most likely calendar switch (WT_LOCALE) { case 'fa': $cal='@#DJALALI@'; break; case 'ar': $cal='@#DHIJRI@'; break; case 'he': $cal='@#DHEBREW@'; break; default: $cal='@#DGREGORIAN@'; break; } } // Create a WT_Date_Calendar from the parameters // We cannot display new-style/old-style years, so convert to new style if (preg_match('/^(\d\d)\d\d\/(\d\d)$/', $year, $match)) { $year=$match[1].$match[2]; } // advanced-year "year range" if (preg_match('/^(\d+)-(\d+)$/', $year, $match)) { if (strlen($match[1]) > strlen($match[2])) { $match[2]=substr($match[1], 0, strlen($match[1])-strlen($match[2])).$match[2]; } $ged_date=new WT_Date("FROM {$cal} {$match[1]} TO {$cal} {$match[2]}"); $action='year'; } else { // advanced-year "decade/century wildcard" if (preg_match('/^(\d+)(\?+)$/', $year, $match)) { $y1=$match[1].str_replace('?', '0', $match[2]); $y2=$match[1].str_replace('?', '9', $match[2]); $ged_date=new WT_Date("FROM {$cal} {$y1} TO {$cal} {$y2}"); $action='year'; } else { if ($year<0) $year=(-$year)." B.C."; // need BC to parse date $ged_date=new WT_Date("{$cal} {$day} {$month} {$year}"); $year=$ged_date->date1->y; // need negative year for year entry field. } } $cal_date=&$ged_date->date1; // Invalid month? Pick a sensible one. if ($cal_date instanceof WT_Date_Jewish && $cal_date->m==7 && $cal_date->y!=0 && !$cal_date->isLeapYear()) $cal_date->m=6; // Fill in any missing bits with todays date $today=$cal_date->today(); if ($cal_date->d==0) $cal_date->d=$today->d; if ($cal_date->m==0) $cal_date->m=$today->m; if ($cal_date->y==0) $cal_date->y=$today->y; $cal_date->setJdFromYmd(); if ($year==0) $year=$cal_date->y; // Extract values from date $days_in_month=$cal_date->daysInMonth(); $days_in_week=$cal_date->daysInWeek(); $cal_month=$cal_date->format('%O'); $today_month=$today->format('%O'); // Invalid dates? Go to monthly view, where they'll be found. if ($cal_date->d>$days_in_month && $action=='today') $action='calendar'; echo '
| '; if ($action=='today') { echo '', WT_I18N::translate('View day'), ''; } else { echo "d}&month={$cal_month}&year={$cal_date->y}&filterev={$filterev}&filterof={$filterof}&filtersx={$filtersx}&action=today\">", WT_I18N::translate('View day'), ""; } if ($action=='calendar') { echo ' | ', WT_I18N::translate('View month'), ''; } else { echo " | d}&month={$cal_month}&year={$cal_date->y}&filterev={$filterev}&filterof={$filterof}&filtersx={$filtersx}&action=calendar\">", WT_I18N::translate('View month'), ""; } if ($action=='year') { echo ' | ', WT_I18N::translate('View year'), ''; } else { echo " | d}&month={$cal_month}&year={$cal_date->y}&filterev={$filterev}&filterof={$filterof}&filtersx={$filtersx}&action=year\">", WT_I18N::translate('View year'), ""; } echo ' | '; $n=0; foreach (array( 'gregorian'=>WT_Date_Gregorian::calendarName(), 'julian' =>WT_Date_Julian::calendarName(), 'jewish' =>WT_Date_Jewish::calendarName(), 'french' =>WT_Date_French::calendarName(), 'hijri' =>WT_Date_Hijri::calendarName(), 'jalali' =>WT_Date_Jalali::calendarName(), ) as $newcal=>$cal_name) { $tmp=$cal_date->convertToCalendar($newcal); if ($tmp->inValidRange()) { if ($n++) { echo ' | '; } if (get_class($tmp)==get_class($cal_date)) { echo "{$cal_name}"; } else { $newcalesc=urlencode($tmp->format('%@')); $tmpmonth=$tmp->format('%O'); echo "d}&month={$tmpmonth}&year={$tmp->y}&filterev={$filterev}&filterof={$filterof}&filtersx={$filtersx}&action={$action}\">{$cal_name}"; } } } echo " |
| ', WT_I18N::translate('Individuals'), ' | '; echo '', WT_I18N::translate('Families'), ' | '; echo '
';
// Avoid an empty unordered list
$content = calendar_list_text($indis, '
| ';
echo '';
// Avoid an empty unordered list
$content = calendar_list_text($fams, '
| ';
echo "
| ', WT_I18N::translate('Total individuals: %s', count($indis));
echo ' '; echo ' ', $males, ' '; echo ' ', $females, ' '; if (count($indis)!=$males+$females) { echo ' ', count($indis)-$males-$females; } echo ' | ';
echo '', WT_I18N::translate('Total families: %s', count($fams)), ' | '; echo '
| {$day_name} | "; } echo "
| ";
if ($d<1 || $d>$days_in_month)
if (count($cal_facts[0])>0) {
echo '', WT_I18N::translate('Day not set'), ' '; echo ' ';
echo calendar_list_text($cal_facts[0], '', '', false);
echo ' ';
$cal_facts[0]=array();
} else
echo ' ';
else {
// Format the day number using the calendar
$tmp=new WT_Date($cal_date->format("%@ {$d} %O %E")); $d_fmt=$tmp->date1->format('%j');
if ($d==$today->d && $cal_date->m==$today->m)
echo "{$d_fmt}";
else
echo "{$d_fmt}";
// Show a converted date
foreach (explode('_and_', $CALENDAR_FORMAT) as $convcal) {
switch ($convcal) {
case 'french':
$alt_date = new WT_Date_French($cal_date->minJD + $d - 1);
break;
case 'gregorian':
$alt_date = new WT_Date_Gregorian($cal_date->minJD + $d - 1);
break;
case 'jewish':
$alt_date = new WT_Date_Jewish($cal_date->minJD + $d - 1);
break;
case 'julian':
$alt_date = new WT_Date_Julian($cal_date->minJD + $d - 1);
break;
case 'hijri':
$alt_date = new WT_Date_Hijri($cal_date->minJD + $d - 1);
break;
case 'jalali':
$alt_date = new WT_Date_Jalali($cal_date->minJD + $d - 1);
break;
default:
break 2;
}
if (get_class($alt_date)!=get_class($cal_date)) {
echo "".$alt_date->format("%j %M")."";
// Just show the first conversion
break;
}
}
echo '';
echo calendar_list_text($cal_facts[$d], '', '', false);
echo ' ';
}
echo ' | ';
if (($d+$cal_date->minJD-$week_start) % $days_in_week==0) {
echo '