Example #1
0
 /**
  * print fact PLACe TEMPle STATus
  *
  * @param Fact $event gedcom fact record
  * @param bool $anchor to print a link to placelist
  * @param bool $sub_records to print place subrecords
  * @param bool $lds to print LDS TEMPle and STATus
  *
  * @return string HTML
  */
 public static function formatFactPlace(Fact $event, $anchor = false, $sub_records = false, $lds = false)
 {
     if ($anchor) {
         // Show the full place name, for facts/events tab
         $html = '<a href="' . $event->getPlace()->getURL() . '">' . $event->getPlace()->getFullName() . '</a>';
     } else {
         // Abbreviate the place name, for chart boxes
         return ' - ' . $event->getPlace()->getShortName();
     }
     if ($sub_records) {
         $placerec = Functions::getSubRecord(2, '2 PLAC', $event->getGedcom());
         if (!empty($placerec)) {
             if (preg_match_all('/\\n3 (?:_HEB|ROMN) (.+)/', $placerec, $matches)) {
                 foreach ($matches[1] as $match) {
                     $wt_place = new Place($match, $event->getParent()->getTree());
                     $html .= ' - ' . $wt_place->getFullName();
                 }
             }
             $map_lati = "";
             $cts = preg_match('/\\d LATI (.*)/', $placerec, $match);
             if ($cts > 0) {
                 $map_lati = $match[1];
                 $html .= '<br><span class="label">' . GedcomTag::getLabel('LATI') . ': </span>' . $map_lati;
             }
             $map_long = '';
             $cts = preg_match('/\\d LONG (.*)/', $placerec, $match);
             if ($cts > 0) {
                 $map_long = $match[1];
                 $html .= ' <span class="label">' . GedcomTag::getLabel('LONG') . ': </span>' . $map_long;
             }
             if ($map_lati && $map_long) {
                 $map_lati = trim(strtr($map_lati, "NSEW,�", " - -. "));
                 // S5,6789 ==> -5.6789
                 $map_long = trim(strtr($map_long, "NSEW,�", " - -. "));
                 // E3.456� ==> 3.456
                 $html .= ' <a rel="nofollow" href="https://maps.google.com/maps?q=' . $map_lati . ',' . $map_long . '" class="icon-googlemaps" title="' . I18N::translate('Google Maps™') . '"></a>';
                 $html .= ' <a rel="nofollow" href="https://www.bing.com/maps/?lvl=15&cp=' . $map_lati . '~' . $map_long . '" class="icon-bing" title="' . I18N::translate('Bing Maps™') . '"></a>';
                 $html .= ' <a rel="nofollow" href="https://www.openstreetmap.org/#map=15/' . $map_lati . '/' . $map_long . '" class="icon-osm" title="' . I18N::translate('OpenStreetMap™') . '"></a>';
             }
             if (preg_match('/\\d NOTE (.*)/', $placerec, $match)) {
                 $html .= '<br>' . self::printFactNotes($placerec, 3);
             }
         }
     }
     if ($lds) {
         if (preg_match('/2 TEMP (.*)/', $event->getGedcom(), $match)) {
             $html .= '<br>' . I18N::translate('LDS temple') . ': ' . GedcomCodeTemp::templeName($match[1]);
         }
         if (preg_match('/2 STAT (.*)/', $event->getGedcom(), $match)) {
             $html .= '<br>' . I18N::translate('Status') . ': ' . GedcomCodeStat::statusName($match[1]);
             if (preg_match('/3 DATE (.*)/', $event->getGedcom(), $match)) {
                 $date = new Date($match[1]);
                 $html .= ', ' . GedcomTag::getLabel('STAT:DATE') . ': ' . $date->display();
             }
         }
     }
     return $html;
 }
Example #2
0
 /**
  * Populates the global $tags array with any missing sub-tags.
  *
  * @param string $level1tag the type of the level 1 gedcom record
  * @param bool $add_date
  */
 public static function insertMissingSubtags($level1tag, $add_date = false)
 {
     global $tags, $WT_TREE;
     // handle  MARRiage TYPE
     $type_val = '';
     if (substr($level1tag, 0, 5) === 'MARR_') {
         $type_val = substr($level1tag, 5);
         $level1tag = 'MARR';
     }
     foreach (Config::levelTwoTags() as $key => $value) {
         if ($key === 'DATE' && in_array($level1tag, Config::nonDateFacts()) || $key === 'PLAC' && in_array($level1tag, Config::nonPlaceFacts())) {
             continue;
         }
         if (in_array($level1tag, $value) && !in_array($key, $tags)) {
             if ($key === 'TYPE') {
                 self::addSimpleTag('2 TYPE ' . $type_val, $level1tag);
             } elseif ($level1tag === '_TODO' && $key === 'DATE') {
                 self::addSimpleTag('2 ' . $key . ' ' . strtoupper(date('d M Y')), $level1tag);
             } elseif ($level1tag === '_TODO' && $key === '_WT_USER') {
                 self::addSimpleTag('2 ' . $key . ' ' . Auth::user()->getUserName(), $level1tag);
             } elseif ($level1tag === 'TITL' && strstr($WT_TREE->getPreference('ADVANCED_NAME_FACTS'), $key) !== false) {
                 self::addSimpleTag('2 ' . $key, $level1tag);
             } elseif ($level1tag === 'NAME' && strstr($WT_TREE->getPreference('ADVANCED_NAME_FACTS'), $key) !== false) {
                 self::addSimpleTag('2 ' . $key, $level1tag);
             } elseif ($level1tag !== 'TITL' && $level1tag !== 'NAME') {
                 self::addSimpleTag('2 ' . $key, $level1tag);
             }
             // Add level 3/4 tags as appropriate
             switch ($key) {
                 case 'PLAC':
                     if (preg_match_all('/(' . WT_REGEX_TAG . ')/', $WT_TREE->getPreference('ADVANCED_PLAC_FACTS'), $match)) {
                         foreach ($match[1] as $tag) {
                             self::addSimpleTag('3 ' . $tag, '', GedcomTag::getLabel($level1tag . ':PLAC:' . $tag));
                         }
                     }
                     self::addSimpleTag('3 MAP');
                     self::addSimpleTag('4 LATI');
                     self::addSimpleTag('4 LONG');
                     break;
                 case 'FILE':
                     self::addSimpleTag('3 FORM');
                     break;
                 case 'EVEN':
                     self::addSimpleTag('3 DATE');
                     self::addSimpleTag('3 PLAC');
                     break;
                 case 'STAT':
                     if (GedcomCodeTemp::isTagLDS($level1tag)) {
                         self::addSimpleTag('3 DATE', '', GedcomTag::getLabel('STAT:DATE'));
                     }
                     break;
                 case 'DATE':
                     // TIME is NOT a valid 5.5.1 tag
                     if (in_array($level1tag, Config::dateAndTime())) {
                         self::addSimpleTag('3 TIME');
                     }
                     break;
                 case 'HUSB':
                 case 'WIFE':
                     self::addSimpleTag('3 AGE');
                     break;
                 case 'FAMC':
                     if ($level1tag === 'ADOP') {
                         self::addSimpleTag('3 ADOP BOTH');
                     }
                     break;
             }
         } elseif ($key === 'DATE' && $add_date) {
             self::addSimpleTag('2 DATE', $level1tag, GedcomTag::getLabel($level1tag . ':DATE'));
         }
     }
     // Do something (anything!) with unrecognized custom tags
     if (substr($level1tag, 0, 1) === '_' && $level1tag !== '_UID' && $level1tag !== '_TODO') {
         foreach (array('DATE', 'PLAC', 'ADDR', 'AGNC', 'TYPE', 'AGE') as $tag) {
             if (!in_array($tag, $tags)) {
                 self::addSimpleTag('2 ' . $tag);
                 if ($tag === 'PLAC') {
                     if (preg_match_all('/(' . WT_REGEX_TAG . ')/', $WT_TREE->getPreference('ADVANCED_PLAC_FACTS'), $match)) {
                         foreach ($match[1] as $ptag) {
                             self::addSimpleTag('3 ' . $ptag, '', GedcomTag::getLabel($level1tag . ':PLAC:' . $ptag));
                         }
                     }
                     self::addSimpleTag('3 MAP');
                     self::addSimpleTag('4 LATI');
                     self::addSimpleTag('4 LONG');
                 }
             }
         }
     }
 }