11<?php
2+
23/**
34 * Processes and modifies HTML content
45 * Handles DOM changes and content rules
@@ -22,7 +23,8 @@ public function __construct()
2223 }
2324
2425 /** Creates DOM from HTML content */
25- private function createDOM ($ content ) {
26+ private function createDOM ($ content )
27+ {
2628 $ dom = new DOMDocument ();
2729 $ dom ->preserveWhiteSpace = true ;
2830 libxml_use_internal_errors (true );
@@ -49,14 +51,14 @@ public function processContent($content, $host, $url)
4951 $ this ->fixRelativeUrls ($ dom , $ xpath , $ url );
5052 $ this ->applyDomainRules ($ dom , $ xpath , $ host );
5153 $ this ->cleanInlineStyles ($ xpath );
52- $ this ->addBrandBar ($ dom , $ xpath );
54+ $ this ->addBrandBar ($ dom , $ xpath, $ url );
5355 $ this ->addDebugBar ($ dom , $ xpath );
5456
5557 return $ dom ->saveHTML ();
5658 }
5759
5860 /** Updates canonical link tags */
59- private function processCanonicalLinks ($ dom , $ xpath , $ url )
61+ private function processCanonicalLinks ($ dom , $ xpath , $ url )
6062 {
6163 $ canonicalLinks = $ xpath ->query ("//link[@rel='canonical'] " );
6264 if ($ canonicalLinks !== false ) {
@@ -230,14 +232,16 @@ private function cleanInlineStyles($xpath)
230232 }
231233
232234 /** Adds branded bar to page */
233- private function addBrandBar ($ dom , $ xpath )
235+ private function addBrandBar ($ dom , $ xpath, $ url )
234236 {
235237 $ body = $ xpath ->query ('//body ' )->item (0 );
236238 if ($ body ) {
237239 $ brandDiv = $ dom ->createElement ('div ' );
238- $ brandDiv ->setAttribute ('style ' , 'z-index: 99999; position: fixed; top: 0; right: 1rem; background: rgba(37,99,235, 0.9); backdrop-filter: blur( 8px); color: #fff; font-size: 13px; line-height: 1em; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); padding: 8px 12px; margin: 0px; overflow: hidden; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; font-family: Tahoma, sans-serif ; ' );
240+ $ brandDiv ->setAttribute ('style ' , 'z-index: 99999; position: fixed; top: 0; right: 1rem; display: flex; gap: 8px; ' );
239241 $ brandHtml = $ dom ->createDocumentFragment ();
240- $ brandHtml ->appendXML ('<a href=" ' .SITE_URL .'" style="color: #fff; text-decoration: none; font-weight: bold;" target="_blank"> ' .htmlspecialchars (SITE_DESCRIPTION ).'</a> ' );
242+ $ brandHtml ->appendXML ('<a href=" ' . htmlspecialchars ($ url ) . '" style="color: #fff; text-decoration: none; font-weight: bold; background: rgba(37,99,235, 0.9); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); padding: 6px 10px; margin: 0px; overflow: hidden; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" fill="#fff" viewBox="0 0 16 16" width="20" height="20"><path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/><path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/></svg></a> ' );
243+ $ brandDiv ->appendChild ($ brandHtml );
244+ $ brandHtml ->appendXML ('<a href=" ' . htmlspecialchars (SITE_URL ) . '" style="color: #fff; text-decoration: none; font-weight: bold; background: rgba(37,99,235, 0.9); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); padding: 6px 10px; margin: 0px; overflow: hidden; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" fill="#fff" viewBox="0 0 640 512" width="20" height="20"><path d="m283.9 378.6 18.3-60.1c18-4.1 34.2-16 43.1-33.8l64-128c10.5-21.1 8.4-45.2-3.7-63.6l52.7-76.6c3.7-5.4 10.4-8 16.7-6.5s11.2 6.7 12.2 13.1l16.2 104.1 105.1-7.4c6.5-.5 12.7 3.1 15.5 9s1.8 12.9-2.6 17.8L550.1 224l71.3 77.5c4.4 4.8 5.5 11.9 2.6 17.8s-9 9.5-15.5 9l-105.1-7.4L487.3 425c-1 6.5-5.9 11.7-12.2 13.1s-13-1.1-16.7-6.5l-59.7-86.7-91.4 52.2c-5.7 3.3-12.8 2.7-17.9-1.4s-7.2-10.9-5.3-17.2zm28.3-101.7c-9.3 10.9-25.2 14.4-38.6 7.7l-65.9-32.9-85.7-42.9-104.3-52.2c-15.8-7.9-22.2-27.1-14.3-42.9l40-80C48.8 22.8 59.9 16 72 16h120c5 0 9.9 1.2 14.3 3.4l78.2 39.1 81.8 40.9c15.8 7.9 22.2 27.1 14.3 42.9l-64 128c-1.2 2.4-2.7 4.6-4.4 6.6zm-204.6-39.5 85.9 42.9L90.9 485.5C79 509.2 50.2 518.8 26.5 507s-33.3-40.8-21.4-64.5l102.5-205.1z"/></svg></a> ' );
241245 $ brandDiv ->appendChild ($ brandHtml );
242246 $ body ->appendChild ($ brandDiv );
243247 }
@@ -315,10 +319,12 @@ private function fixRelativeUrls($dom, $xpath, $baseUrl)
315319 foreach ($ elements as $ element ) {
316320 if ($ element instanceof DOMElement) {
317321 $ href = $ element ->getAttribute ('href ' );
318- if (strpos ($ href , 'mailto: ' ) === 0 ||
322+ if (
323+ strpos ($ href , 'mailto: ' ) === 0 ||
319324 strpos ($ href , 'tel: ' ) === 0 ||
320325 strpos ($ href , 'javascript: ' ) === 0 ||
321- strpos ($ href , '# ' ) === 0 ) {
326+ strpos ($ href , '# ' ) === 0
327+ ) {
322328 continue ;
323329 }
324330 if (strpos ($ href , 'http ' ) !== 0 && strpos ($ href , '// ' ) !== 0 ) {
0 commit comments