/** * @see PGVRGedcomEHandler() * @todo add info * @param array $attrs an array of key value pairs for the attributes */ function PGVRGedcomSHandler($attrs) { global $vars, $gedrec, $gedrecStack, $processGedcoms, $fact, $desc, $ged_level; if ($processGedcoms > 0) { $processGedcoms++; return; } $id = ""; $gmatch = array(); $gt = preg_match("/0 @(.+)@/", $gedrec, $gmatch); if ($gt > 0) { $id = $gmatch[1]; } $tag = $attrs["id"]; $tag = preg_replace("/@fact/", $fact, $tag); //print "[$tag]"; $tags = explode(':', $tag); $newgedrec = ""; if (count($tags) < 2) { $newgedrec = find_gedcom_record($attrs["id"]); } if (empty($newgedrec)) { $tgedrec = $gedrec; $newgedrec = ""; foreach ($tags as $tag) { //print "[$tag]"; $match = array(); $ct = preg_match("/\\\$(.+)/", $tag, $match); if ($ct > 0) { if (isset($vars[$match[1]]["gedcom"])) { $newgedrec = $vars[$match[1]]["gedcom"]; } else { $newgedrec = find_gedcom_record($match[1]); } } else { $ct = preg_match("/@(.+)/", $tag, $match); if ($ct > 0) { $gt = preg_match("/\\d {$match['1']} @([^@]+)@/", $tgedrec, $gmatch); //print $gt; if ($gt > 0) { //print "[".$gmatch[1]."]"; $newgedrec = find_gedcom_record($gmatch[1]); //print $newgedrec; $tgedrec = $newgedrec; } else { //print "[$tgedrec]"; $newgedrec = ""; break; } } else { //$newgedrec = find_gedcom_record($gmatch[1]); $temp = explode(' ', trim($tgedrec)); $level = $temp[0] + 1; if (showFact($tag, $id) && showFactDetails($tag, $id)) { $newgedrec = get_sub_record($level, "{$level} {$tag}", $tgedrec); $tgedrec = $newgedrec; } else { $newgedrec = ""; break; } } } } } if (!empty($newgedrec)) { //$newgedrec = privatize_gedcom($newgedrec); $gedObj = new GedcomRecord($newgedrec); array_push($gedrecStack, array($gedrec, $fact, $desc)); //print "[$newgedrec]"; $gedrec = $gedObj->getGedcomRecord(); $ct = preg_match("/(\\d+) (_?[A-Z0-9]+) (.*)/", $gedrec, $match); if ($ct > 0) { $ged_level = $match[1]; $fact = $match[2]; $desc = trim($match[3]); } } else { $processGedcoms++; } }