예제 #1
0
 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);
 }