/**
  * Get any historical events.
  *
  * @param Individual $person
  *
  * @return Fact[]
  */
 private static function historicalFacts(Individual $person)
 {
     $SHOW_RELATIVES_EVENTS = $person->getTree()->getPreference('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(Site::getPreference('INDEX_DIRECTORY') . 'histo.' . WT_LOCALE . '.php')) {
             $histo = array();
             require Site::getPreference('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 Fact($hist, $person, 'histo');
                 $sdate = $fact->getDate();
                 if ($sdate->isOK() && Date::compare($birt_date, $sdate) <= 0 && Date::compare($sdate, $deat_date) <= 0) {
                     $facts[] = $fact;
                 }
             }
         }
     }
     return $facts;
 }
Ejemplo n.º 2
0
 /**
  * Static helper function to sort an array of people by death date
  *
  * @param Individual $x
  * @param Individual $y
  *
  * @return int
  */
 public static function compareDeathDate(Individual $x, Individual $y)
 {
     return Date::compare($x->getEstimatedDeathDate(), $y->getEstimatedDeathDate());
 }
Ejemplo n.º 3
0
 /**
  * Recursive method to add individual to the Sosa table, and flush it regularly
  * @param Individual $indi Individual to add
  * @param int $sosa Individual's sosa
  */
 protected function addNode(Individual $indi, $sosa)
 {
     $birth_year = $indi->getEstimatedBirthDate()->gregorianYear();
     $death_year = $indi->getEstimatedDeathDate()->gregorianYear();
     $this->tmp_sosa_table[] = array('indi' => $indi->getXref(), 'sosa' => $sosa, 'birth_year' => $birth_year, 'death_year' => $death_year);
     $this->flushTmpSosaTable();
     if ($fam = $indi->getPrimaryChildFamily()) {
         if ($husb = $fam->getHusband()) {
             $this->addNode($husb, 2 * $sosa);
         }
         if ($wife = $fam->getWife()) {
             $this->addNode($wife, 2 * $sosa + 1);
         }
     }
 }