/** * Insert (or update if already existing) a list of Sosa individuals * @param array $sosa_records */ public function insertOrUpdate($sosa_records) { if (!$this->is_setup) { return; } $treeid = $this->tree->getTreeId(); $userid = $this->user->getUserId(); $questionmarks_table = array(); $values_table = array(); $i = 0; foreach ($sosa_records as $row) { $gen = Functions::getGeneration($row['sosa']); if ($gen <= self::MAX_DB_GENERATIONS) { $questionmarks_table[] = '(:tree_id' . $i . ', :user_id' . $i . ', :sosa' . $i . ', :indi_id' . $i . ', :gen' . $i . ', :byear' . $i . ', :dyear' . $i . ')'; $values_table = array_merge($values_table, array('tree_id' . $i => $treeid, 'user_id' . $i => $userid, 'sosa' . $i => $row['sosa'], 'indi_id' . $i => $row['indi'], 'gen' . $i => Functions::getGeneration($row['sosa']), 'byear' . $i => $row['birth_year'], 'dyear' . $i => $row['death_year'])); } $i++; } $sql = 'REPLACE INTO `##maj_sosa`' . ' (majs_gedcom_id, majs_user_id, majs_sosa, majs_i_id, majs_gen, majs_birth_year, majs_death_year)' . ' VALUES ' . implode(',', $questionmarks_table); Database::prepare($sql)->execute($values_table); }