public function merge() { /* Merge nested XML/CSV files */ if (!empty($this->nested_files)) { $tmp_files = array(); foreach ($this->nested_files as $key => $nfile) { $nested_fileURL = array_shift(XmlImportParser::factory($this->xml, $this->xpath, $nfile, $tmp_file)->parse()); $tmp_files[] = $tmp_file; if (!empty($nested_fileURL)) { $errors = new WP_Error(); $uploader = new PMXI_Upload($nested_fileURL, $errors); $upload_result = $uploader->url(); if ($upload_result instanceof WP_Error) { $errors = $upload_result; } else { $source = $upload_result['source']; $filePath = $upload_result['filePath']; if (!empty($upload_result['root_element'])) { $root_element = $upload_result['root_element']; } else { $root_element = ''; } $feed_type = $upload_result['feed_type']; } unset($uploader); $nested_xml = file_get_contents($filePath); if (!empty($nested_xml)) { PMXI_Import_Record::preprocessXml($nested_xml); if (PMXI_Import_Record::validateXml($nested_xml) === true) { $nestedDom = new DOMDocument('1.0', 'UTF-8'); $nestedold = libxml_use_internal_errors(true); $nestedDom->loadXML($nested_xml); libxml_use_internal_errors($nestedold); $second = $nestedDom->documentElement; if ($second->hasChildNodes()) { foreach ($second->childNodes as $node) { $importNode = $this->dom->importNode($node, true); $this->dom->documentElement->appendChild($importNode); } $this->xml = $this->elements ? $this->dom->saveXML($this->elements->item(0)) : $this->dom->saveXML(); } unset($nestedDom); } } } } foreach ($tmp_files as $tmp_file) { // remove all temporary files created @unlink($tmp_file); } } }