/** @var $_node DOMElement */ if ($_node->nodeName === "span" && ($_node->getAttribute("class") === "name" || $_node->getAttribute("class") === "field") && $_node->childNodes->length != 1 && $_node->firstChild && ($_node->firstChild->nodeType != XML_TEXT_NODE || !preg_match("/\\[.+\\]/", $_node->nodeValue))) { return true; } if ($_node->childNodes) { searchSpan($_node); } } return false; } $compte_rendu = new CCompteRendu(); $where = array(); $where["object_id"] = "IS NULL"; $compte_rendus = $compte_rendu->loadList($where, null, "350000"); /** @var $compte_rendus CCompteRendu[] */ $list = array(); /** @var DOMDocument $xml */ $xml = new DOMDocument('1.0', 'iso-8859-1'); foreach ($compte_rendus as $_compte_rendu) { mbLog($_compte_rendu->_id); $_compte_rendu->loadContent(); $content = CMbString::convertHTMLToXMLEntities($_compte_rendu->_source); $content = utf8_encode(CHtmlToPDF::cleanWord($content)); $xml->loadXML("<div>" . $content . "</div>"); if (searchSpan($xml->documentElement)) { $list[] = $_compte_rendu; } } $smarty = new CSmartyDP(); $smarty->assign("list", $list); $smarty->display("inc_update_class_fields.tpl");
/** * Correction de problèmes de dom * * @param string $str source html * * @return string */ function fixBlockElements($str) { $xml = new DOMDocument('1.0', 'iso-8859-1'); $str = CMbString::convertHTMLToXMLEntities($str); $str = CHtmlToPDF::cleanWord($str); // Suppression des caractères de contrôle $from = array(chr(3), chr(7)); $to = array("", ""); $str = str_replace($from, $to, $str); $xml->loadXML(utf8_encode($str)); $html =& $xml->getElementsByTagName("body")->item(0); if (is_null($html)) { $html =& $xml->firstChild; } if (is_null($html)) { CAppUI::stepAjax("CCompteRendu-empty-doc"); CApp::rip(); } $xpath = new DOMXpath($xml); $elements = $xpath->query("*/div[@id='body']"); if (!is_null($elements)) { foreach ($elements as $_element) { CHtmlToPDF::removeAlign($_element); } } // Solution temporaire pour les problèmes de mise en page avec domPDF while ($elements = $xpath->query("//span[@class='field']")) { if ($elements->length == 0) { break; } foreach ($elements as $_element) { foreach ($_element->childNodes as $child) { /** @var DOMElement $child */ $_element->parentNode->insertBefore($child->cloneNode(true), $_element); } $_element->parentNode->removeChild($_element); } } $this->recursiveRemove($html); $this->recursiveRemoveNestedFont($html); $this->resizeTable($html); // Suppression des sauts de pages dans l'entête et le pied de page $elements = $xpath->query("//div[@id='header']//hr[@class='pagebreak']"); if (!is_null($elements)) { foreach ($elements as $_element) { $_element->parentNode->removeChild($_element); } } $elements = $xpath->query("//div[@id='footer']//hr[@class='pagebreak']"); if (!is_null($elements)) { foreach ($elements as $_element) { $_element->parentNode->removeChild($_element); } } $str = $xml->saveHTML(); $str = preg_replace("/<br>/", "<br/>", $str); return $str; }