示例#1
0
 function print_time_fact(WT_Fact $event)
 {
     global $basexoffset, $baseyoffset, $factcount, $TEXT_DIRECTION, $WT_IMAGES, $placements;
     $desc = $event->getValue();
     // check if this is a family fact
     $gdate = $event->getDate();
     $date = $gdate->MinDate();
     $date = $date->convert_to_cal('gregorian');
     $year = $date->y;
     $month = max(1, $date->m);
     $day = max(1, $date->d);
     $xoffset = $basexoffset + 22;
     $yoffset = $baseyoffset + ($year - $this->baseyear) * $this->scale - $this->scale;
     $yoffset = $yoffset + $month / 12 * $this->scale;
     $yoffset = $yoffset + $day / 30 * ($this->scale / 12);
     $yoffset = (int) $yoffset;
     $place = (int) ($yoffset / $this->bheight);
     $i = 1;
     $j = 0;
     $tyoffset = 0;
     while (isset($placements[$place])) {
         if ($i == $j) {
             $tyoffset = $this->bheight * $i;
             $i++;
         } else {
             $tyoffset = -1 * $this->bheight * $j;
             $j++;
         }
         $place = (int) (($yoffset + $tyoffset) / $this->bheight);
     }
     $yoffset += $tyoffset;
     $xoffset += abs($tyoffset);
     $placements[$place] = $yoffset;
     echo "<div id=\"fact{$factcount}\" style=\"position:absolute; " . ($TEXT_DIRECTION == "ltr" ? "left: " . $xoffset : "right: " . $xoffset) . "px; top:" . $yoffset . "px; font-size: 8pt; height: " . $this->bheight . "px;\" onmousedown=\"factMouseDown(this, '" . $factcount . "', " . ($yoffset - $tyoffset) . ");\">";
     echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"cursor: hand;\"><tr><td>";
     echo "<img src=\"" . $WT_IMAGES["hline"] . "\" name=\"boxline{$factcount}\" id=\"boxline{$factcount}\" height=\"3\" align=\"left\" width=\"10\" alt=\"\" style=\"padding-";
     if ($TEXT_DIRECTION == "ltr") {
         echo "left";
     } else {
         echo "right";
     }
     echo ": 3px;\">";
     $col = $event->temp % 6;
     echo "</td><td valign=\"top\" class=\"person" . $col . "\">";
     if (count($this->pids) > 6) {
         echo $event->getParent()->getFullName() . ' — ';
     }
     $record = $event->getParent();
     echo $event->getLabel();
     echo ' — ';
     if ($record instanceof WT_Individual) {
         echo format_fact_date($event, $record, false, false);
     } elseif ($record instanceof WT_Family) {
         echo $gdate->Display(false);
         if ($record->getHusband() && $record->getHusband()->getBirthDate()->isOK()) {
             $ageh = get_age_at_event(WT_Date::GetAgeGedcom($record->getHusband()->getBirthDate(), $gdate), false);
         } else {
             $ageh = null;
         }
         if ($record->getWife() && $record->getWife()->getBirthDate()->isOK()) {
             $agew = get_age_at_event(WT_Date::GetAgeGedcom($record->getWife()->getBirthDate(), $gdate), false);
         } else {
             $agew = null;
         }
         if ($ageh && $agew) {
             echo '<span class="age"> ', WT_I18N::translate('Husband’s age'), ' ', $ageh, ' ', WT_I18N::translate('Wife’s age'), ' ', $agew, '</span>';
         } elseif ($ageh) {
             echo '<span class="age"> ', WT_I18N::translate('Age'), ' ', $ageh, '</span>';
         } elseif ($agew) {
             echo '<span class="age"> ', WT_I18N::translate('Age'), ' ', $ageh, '</span>';
         }
     }
     echo ' ' . WT_Filter::escapeHtml($desc);
     if (!$event->getPlace()->isEmpty()) {
         echo ' — ' . $event->getPlace()->getShortName();
     }
     // print spouse name for marriage events
     if (isset($event->spouse)) {
         $spouse = $event->spouse;
     } else {
         $spouse = null;
     }
     if ($spouse) {
         for ($p = 0; $p < count($this->pids); $p++) {
             if ($this->pids[$p] == $spouse->getXref()) {
                 break;
             }
         }
         if ($p == count($this->pids)) {
             $p = $event->temp;
         }
         if ($spouse->getXref() != $this->pids[$p]) {
             echo ' <a href="', $spouse->getHtmlUrl(), '">', $spouse->getFullName(), '</a>';
         } else {
             echo ' <a href="', $event->getParent()->getHtmlUrl(), '">', $event->getParent()->getFullName(), '</a>';
         }
     }
     echo "</td></tr></table>";
     echo "</div>";
     if ($TEXT_DIRECTION == 'ltr') {
         $img = "dline2";
         $ypos = "0%";
     } else {
         $img = "dline";
         $ypos = "100%";
     }
     $dyoffset = $yoffset - $tyoffset + $this->bheight / 3;
     if ($tyoffset < 0) {
         $dyoffset = $yoffset + $this->bheight / 3;
         if ($TEXT_DIRECTION == 'ltr') {
             $img = "dline";
             $ypos = "100%";
         } else {
             $img = "dline2";
             $ypos = "0%";
         }
     }
     // print the diagnal line
     echo "<div id=\"dbox{$factcount}\" style=\"position:absolute; " . ($TEXT_DIRECTION == "ltr" ? "left: " . ($basexoffset + 25) : "right: " . ($basexoffset + 25)) . "px; top:" . $dyoffset . "px; font-size: 8pt; height: " . abs($tyoffset) . "px; width: " . abs($tyoffset) . "px;";
     echo " background-image: url('" . $WT_IMAGES[$img] . "');";
     echo " background-position: 0% {$ypos};\">";
     echo "</div>";
 }
示例#2
0
function calendar_fact_text(WT_Fact $fact, $show_places)
{
    $text = $fact->getLabel() . ' — ' . $fact->getDate()->Display(true, "", array());
    if ($fact->anniv) {
        $text .= ' (' . WT_I18N::translate('%s year anniversary', $fact->anniv) . ')';
    }
    if ($show_places && $fact->getAttribute('PLAC')) {
        $text .= ' — ' . $fact->getAttribute('PLAC');
    }
    return $text;
}
示例#3
0
 private static function historical_facts(WT_Individual $person)
 {
     global $SHOW_RELATIVES_EVENTS;
     $facts = array();
     if ($SHOW_RELATIVES_EVENTS) {
         // Only include events between birth and death
         $birt_date = $person->getEstimatedBirthDate();
         $deat_date = $person->getEstimatedDeathDate();
         if (file_exists(WT_Site::preference('INDEX_DIRECTORY') . 'histo.' . WT_LOCALE . '.php')) {
             require WT_Site::preference('INDEX_DIRECTORY') . 'histo.' . WT_LOCALE . '.php';
             foreach ($histo as $hist) {
                 // Earlier versions of the WIKI encouraged people to use HTML entities,
                 // rather than UTF8 encoding.
                 $hist = html_entity_decode($hist, ENT_QUOTES, 'UTF-8');
                 $fact = new WT_Fact($hist, $person, 'histo');
                 $sdate = $fact->getDate();
                 if ($sdate->isOK() && WT_Date::Compare($birt_date, $sdate) <= 0 && WT_Date::Compare($sdate, $deat_date) <= 0) {
                     $facts[] = $fact;
                 }
             }
         }
     }
     return $facts;
 }
示例#4
0
 /**
  * Static Helper functions to sort events
  *
  * @param WT_Fact $a Fact one
  * @param WT_Fact $b Fact two
  *
  * @return integer
  */
 public static function CompareDate(WT_Fact $a, WT_Fact $b)
 {
     if ($a->getDate()->isOK() && $b->getDate()->isOK()) {
         // If both events have dates, compare by date
         $ret = WT_Date::Compare($a->getDate(), $b->getDate());
         if ($ret == 0) {
             // If dates are the same, compare by fact type
             $ret = self::CompareType($a, $b);
             // If the fact type is also the same, retain the initial order
             if ($ret == 0) {
                 $ret = $a->sortOrder - $b->sortOrder;
             }
         }
         return $ret;
     } else {
         // One or both events have no date - retain the initial order
         return $a->sortOrder - $b->sortOrder;
     }
 }