static function replaceKeywords($filename, $replacements, $xml_filenames = NULL) { if (is_null($xml_filenames)) { $xml_filenames = array('content.xml', 'styles.xml'); } foreach ($xml_filenames as $xml_filename) { $xml = ODF_Tools::getXML($filename, $xml_filename); foreach ($replacements as $k => $v) { $xml = str_replace('%' . strtoupper($k) . '%', ODF_Tools::odfEntities(trim($v)), $xml); } ODF_TOOLS::setXML($filename, $xml, $xml_filename); } }
function mergeODT($source_file, $merged_file) { $xml_filename = 'content.xml'; require_once 'include/odf_tools.class.php'; $content = ODF_Tools::getXML($source_file, $xml_filename); if (empty($content)) { trigger_error('Could not find content within this ' . $extension . ' file'); return; } $HEADER_END = '</text:sequence-decls>'; $FOOTER_START = '</office:text>'; $middle_start_pos = strpos($content, $HEADER_END) + strlen($HEADER_END); $middle_end_pos = strpos($content, $FOOTER_START); if (NULL === $middle_start_pos || NULL === $middle_end_pos) { trigger_error('Cannot locate body content of the file'); return; } $middle_template = substr($content, $middle_start_pos, $middle_end_pos - $middle_start_pos); $header = substr($content, 0, $middle_start_pos); $footer = substr($content, $middle_end_pos); $merged_middle = ''; foreach ($this->getMergeData() as $id => $row) { if (empty($row)) { continue; } $this_middle = $middle_template; foreach ($row as $k => $v) { $this_middle = str_replace('%' . strtoupper($k) . '%', ODF_Tools::odfEntities(trim($v)), $this_middle); } $merged_middle .= $this_middle; } $merged_file = dirname($source_file) . '/jethro_merged_' . time() . session_id(); copy($source_file, $merged_file); ODF_Tools::setXML($merged_file, $header . $merged_middle . $footer, $xml_filename); }