pageHeader() ->requireManagerLogin(); $filename = WT_Site::preference('INDEX_DIRECTORY').WT_GEDCOM; if (strtolower(substr($filename, -4))!=='.ged') { $filename.='.ged'; } $gedout = fopen($filename.'.tmp', 'w'); if ($gedout) { // Don't use export_gedcom() - which includes pending records, privacy filtering, // media path rewriting, etc. // Instead simply dump the data to the file, which requires much less memory and CPU. $buffer=reformat_record_export(gedcom_header(WT_GEDCOM)); // Individuals $rows=WT_DB::prepare( "SELECT i_gedcom FROM `##individuals` WHERE i_file=?" )->execute(array(WT_GED_ID))->fetchOneColumn(); foreach ($rows as $row) { $buffer.=reformat_record_export($row); if (strlen($buffer)>65536) { fwrite($gedout, $buffer); $buffer=''; } } // Families $rows=WT_DB::prepare( "SELECT f_gedcom FROM `##families` WHERE f_file=?" )->execute(array(WT_GED_ID))->fetchOneColumn(); foreach ($rows as $row) { $buffer.=reformat_record_export($row); if (strlen($buffer)>65536) { fwrite($gedout, $buffer); $buffer=''; } } // Sources $rows=WT_DB::prepare( "SELECT s_gedcom FROM `##sources` WHERE s_file=?" )->execute(array(WT_GED_ID))->fetchOneColumn(); foreach ($rows as $row) { $buffer.=reformat_record_export($row); if (strlen($buffer)>65536) { fwrite($gedout, $buffer); $buffer=''; } } // Repositories and notes $rows=WT_DB::prepare( "SELECT o_gedcom FROM `##other` WHERE o_file=? AND o_type NOT IN ('HEAD', 'TRLR')" )->execute(array(WT_GED_ID))->fetchOneColumn(); foreach ($rows as $row) { $buffer.=reformat_record_export($row); if (strlen($buffer)>65536) { fwrite($gedout, $buffer); $buffer=''; } } // Media $rows=WT_DB::prepare( "SELECT m_gedcom FROM `##media` WHERE m_file=?" )->execute(array(WT_GED_ID))->fetchOneColumn(); foreach ($rows as $row) { $buffer.=reformat_record_export($row); if (strlen($buffer)>65536) { fwrite($gedout, $buffer); $buffer=''; } } fwrite($gedout, $buffer."0 TRLR".WT_EOL); fclose($gedout); if (file_exists($filename)) { unlink($filename); } if (rename($filename.'.tmp', $filename)) { echo '

', /* I18N: %s is a filename */ WT_I18N::translate('Family tree exported to %s.', realpath($filename)), '

'; } else { echo '

', /* I18N: %s is a filename */ WT_I18N::translate('Unable to create %s. Check the permissions.', $filename), '

'; } } else { echo '

', /* I18N: %s is a filename */ WT_I18N::translate('Unable to create %s. Check the permissions.', $filename.'.tmp'), '

'; }