@@ -583,7 +583,17 @@ function processMakerShowCase( $ID, $from_helpdesk ) {
583583
584584 // to change this HTML code
585585 $ dom = new DOMDocument ();
586- $ dom ->loadHTML ($ buffer , LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOXMLDECL );
586+
587+ // will convert '&' to '&', '<' to '<' and '>' to '>'
588+ $ buffer = htmlspecialchars ($ buffer , ENT_NOQUOTES );
589+ // will restore '<' to '<' and '>' to '>'
590+ // so that only the already escaped entites will get the double encoding
591+ $ buffer = str_replace (['< ' , '> ' ], ['< ' , '> ' ], $ buffer );
592+
593+ // will convert any UTF-8 char that can't be expressed in ASCII into an HTML entity
594+ $ buffer = mb_convert_encoding ($ buffer , 'HTML-ENTITIES ' );
595+
596+ $ dom ->loadHTML ($ buffer , LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
587597 $ xpath = new DOMXPath ($ dom );
588598
589599 // hide some fields
@@ -606,8 +616,8 @@ function processMakerShowCase( $ID, $from_helpdesk ) {
606616 $ elt ->setAttribute ( 'colspan ' , '2 ' );
607617 }
608618
609- // $res = $xpath->query('//*[@name="content"]/ancestor::tr[1]');
610- $ res = $ xpath ->query ('//*[@name="add"]/ancestor::tr[@class="tab_bg_1"]/preceding-sibling::tr[1] ' );
619+ $ res = $ xpath ->query ('//*[@name="content"]/ancestor::tr[1] ' );
620+ // $res = $xpath->query('//*[@name="add"]/ancestor::tr[@class="tab_bg_1"]/preceding-sibling::tr[1]');
611621 $ table = $ xpath ->query ('//*[@name="add"]/ancestor::table[1] ' );
612622
613623 $ tr = $ table ->item (0 )->insertBefore (new DOMElement ('tr ' ), $ res ->item (0 ));
@@ -634,8 +644,9 @@ function processMakerShowCase( $ID, $from_helpdesk ) {
634644
635645 $ buffer = $ dom ->saveHTML ();
636646
647+ // will revert back any char converted above
648+ $ buffer = mb_convert_encoding ($ buffer , 'UTF-8 ' , 'HTML-ENTITIES ' );
637649 echo $ buffer ;
638- //showFormHelpdesk($ID, $pmItem, $caseInfo);
639650 }
640651
641652}
0 commit comments