Example #1
0
/**
 * print fact PLACe TEMPle STATus
 *
 * @param WT_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
 */
function format_fact_place(WT_Fact $event, $anchor = false, $sub_records = false, $lds = false)
{
    global $SEARCH_SPIDER;
    if ($anchor) {
        // Show the full place name, for facts/events tab
        if ($SEARCH_SPIDER) {
            $html = $event->getPlace()->getFullName();
        } else {
            $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 = get_sub_record(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 WT_Place($match, WT_GED_ID);
                    $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">' . WT_Gedcom_Tag::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">' . WT_Gedcom_Tag::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="' . WT_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="' . WT_I18N::translate('Bing Maps™') . '"></a>';
                $html .= ' <a rel="nofollow" href="https://www.openstreetmap.org/#map=15/' . $map_lati . '/' . $map_long . '" class="icon-osm" title="' . WT_I18N::translate('OpenStreetMap™') . '"></a>';
            }
            if (preg_match('/\\d NOTE (.*)/', $placerec, $match)) {
                $html .= '<br>' . print_fact_notes($placerec, 3);
            }
        }
    }
    if ($lds) {
        if (preg_match('/2 TEMP (.*)/', $event->getGedcom(), $match)) {
            $html .= '<br>' . WT_I18N::translate('LDS temple') . ': ' . WT_Gedcom_Code_Temp::templeName($match[1]);
        }
        if (preg_match('/2 STAT (.*)/', $event->getGedcom(), $match)) {
            $html .= '<br>' . WT_I18N::translate('Status') . ': ' . WT_Gedcom_Code_Stat::statusName($match[1]);
            if (preg_match('/3 DATE (.*)/', $event->getGedcom(), $match)) {
                $date = new WT_Date($match[1]);
                $html .= ', ' . WT_Gedcom_Tag::getLabel('STAT:DATE') . ': ' . $date->Display(false);
            }
        }
    }
    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
 */
function insert_missing_subtags($level1tag, $add_date = false)
{
    global $tags, $date_and_time, $level2_tags, $ADVANCED_PLAC_FACTS, $ADVANCED_NAME_FACTS;
    global $nondatefacts, $nonplacfacts;
    // handle  MARRiage TYPE
    $type_val = '';
    if (substr($level1tag, 0, 5) == 'MARR_') {
        $type_val = substr($level1tag, 5);
        $level1tag = 'MARR';
    }
    foreach ($level2_tags as $key => $value) {
        if ($key == 'DATE' && in_array($level1tag, $nondatefacts) || $key == 'PLAC' && in_array($level1tag, $nonplacfacts)) {
            continue;
        }
        if (in_array($level1tag, $value) && !in_array($key, $tags)) {
            if ($key == 'TYPE') {
                add_simple_tag('2 TYPE ' . $type_val, $level1tag);
            } elseif ($level1tag == '_TODO' && $key == 'DATE') {
                add_simple_tag('2 ' . $key . ' ' . strtoupper(date('d M Y')), $level1tag);
            } elseif ($level1tag == '_TODO' && $key == '_WT_USER') {
                add_simple_tag('2 ' . $key . ' ' . WT_USER_NAME, $level1tag);
            } else {
                if ($level1tag == 'TITL' && strstr($ADVANCED_NAME_FACTS, $key) !== false) {
                    add_simple_tag('2 ' . $key, $level1tag);
                } else {
                    if ($level1tag == 'NAME' && strstr($ADVANCED_NAME_FACTS, $key) !== false) {
                        add_simple_tag('2 ' . $key, $level1tag);
                    } else {
                        if ($level1tag != 'TITL' && $level1tag != 'NAME') {
                            add_simple_tag('2 ' . $key, $level1tag);
                        }
                    }
                }
            }
            switch ($key) {
                // Add level 3/4 tags as appropriate
                case 'PLAC':
                    if (preg_match_all('/(' . WT_REGEX_TAG . ')/', $ADVANCED_PLAC_FACTS, $match)) {
                        foreach ($match[1] as $tag) {
                            add_simple_tag("3 {$tag}", '', WT_Gedcom_Tag::getLabel("{$level1tag}:PLAC:{$tag}"));
                        }
                    }
                    add_simple_tag('3 MAP');
                    add_simple_tag('4 LATI');
                    add_simple_tag('4 LONG');
                    break;
                case 'FILE':
                    add_simple_tag('3 FORM');
                    break;
                case 'EVEN':
                    add_simple_tag('3 DATE');
                    add_simple_tag('3 PLAC');
                    break;
                case 'STAT':
                    if (WT_Gedcom_Code_Temp::isTagLDS($level1tag)) {
                        add_simple_tag('3 DATE', '', WT_Gedcom_Tag::getLabel('STAT:DATE'));
                    }
                    break;
                case 'DATE':
                    if (in_array($level1tag, $date_and_time)) {
                        add_simple_tag('3 TIME');
                    }
                    // TIME is NOT a valid 5.5.1 tag
                    break;
                case 'HUSB':
                case 'WIFE':
                    add_simple_tag('3 AGE');
                    break;
                case 'FAMC':
                    if ($level1tag == 'ADOP') {
                        add_simple_tag('3 ADOP BOTH');
                    }
                    break;
            }
        } elseif ($key == 'DATE' && $add_date) {
            add_simple_tag('2 DATE', $level1tag, WT_Gedcom_Tag::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)) {
                add_simple_tag("2 {$tag}");
                if ($tag == 'PLAC') {
                    if (preg_match_all('/(' . WT_REGEX_TAG . ')/', $ADVANCED_PLAC_FACTS, $match)) {
                        foreach ($match[1] as $ptag) {
                            add_simple_tag("3 {$ptag}", '', WT_Gedcom_Tag::getLabel("{$level1tag}:PLAC:{$ptag}"));
                        }
                    }
                    add_simple_tag('3 MAP');
                    add_simple_tag('4 LATI');
                    add_simple_tag('4 LONG');
                }
            }
        }
    }
}