function read_udmz_lines($lines) { $out = array(); $title = 'PREAMBULE'; $curr = array(); $legenda = get_legenda($lines[0]); for ($i = 1; $i < count($lines); $i++) { if (trim($lines[$i]) == '########') { if (isset($curr)) { arrayarray($out, explode('.', $title), $curr); unset($curr); } if (known_section($lines[$i + 1], $out['PREAMBULE'])) { $title = trim($lines[$i + 1]); $curr = array(); $legenda = get_legenda($lines[$i + 2]); } $i += 2; } else { if (isset($curr)) { add_record($curr, $legenda, $lines[$i]); } } } return $out; }
function update_dates($xref, $ged_id, $gedrec) { global $TBLPREFIX, $factarray, $gBitDb; if (strpos($gedrec, '2 DATE ') && preg_match_all("/\n1 (\\w+).*(?:\n[2-9].*)*(?:\n2 DATE (.+))(?:\n[2-9].*)*/", $gedrec, $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $fact = $match[1]; if (($fact == 'FACT' || $fact == 'EVEN') && preg_match("/\n2 TYPE (\\w+)/", $match[0], $tmatch) && array_key_exists($tmatch[1], $factarray)) { $fact = $tmatch[1]; } $date = new GedcomDate($match[2]); $gBitDb->query("INSERT INTO {$TBLPREFIX}dates (d_day,d_month,d_mon,d_year,d_julianday1,d_julianday2,d_fact,d_gid,d_file,d_type) VALUES (?,?,?,?,?,?,?,?,?,?)", array($date->date1->d, $date->date1->Format('O'), $date->date1->m, $date->date1->y, $date->date1->minJD, $date->date1->maxJD, $fact, $xref, $ged_id, $date->date1->CALENDAR_ESCAPE())); if ($date->date2) { $gBitDb->query("INSERT INTO {$TBLPREFIX}dates (d_day,d_month,d_mon,d_year,d_julianday1,d_julianday2,d_fact,d_gid,d_file,d_type) VALUES (?,?,?,?,?,?,?,?,?,?)", arrayarray($date->date2->d, $date->date2->Format('O'), $date->date2->m, $date->date2->y, $date->date2->minJD, $date->date2->maxJD, $fact, $xref, $ged_id, $date->date2->CALENDAR_ESCAPE())); } } } return; }