Exemplo n.º 1
0
        /** @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");
Exemplo n.º 2
0
 /**
  * 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;
 }