]> git.mxchange.org Git - friendica.git/blobdiff - mod/update_profile.php
Merge pull request #2135 from rabuzarus/doxygen
[friendica.git] / mod / update_profile.php
index 367a5568d85636403d0bfe40069b03825178cf71..2492a48ee496d6714ce2513c5a68102fb21f76a4 100644 (file)
@@ -1,16 +1,59 @@
 <?php
 
+/**
+ * Module: update_profile
+ * Purpose: AJAX synchronisation of profile page
+ *
+ */
 
-require_once('mod/profile.php');
 
+require_once('mod/profile.php');
 
 function update_profile_content(&$a) {
 
+       $profile_uid = intval($_GET['p']);
+
        header("Content-type: text/html");
        echo "<!DOCTYPE html><html><body>\r\n";
-       echo (($_GET['msie'] == 1) ? '<div>' : '<section>');
-       echo str_replace("\t",'       ',profile_content($a,true));
-       echo (($_GET['msie'] == 1) ? '</div>' : '</section>');
+
+       /**
+        * We can remove this hack once Internet Explorer recognises HTML5 natively
+        */
+
+       echo "<section>";
+
+       /**
+        *
+        * Grab the page inner contents by calling the content function from the profile module directly, 
+        * but move any image src attributes to another attribute name. This is because 
+        * some browsers will prefetch all the images for the page even if we don't need them.
+        * The only ones we need to fetch are those for new page additions, which we'll discover
+        * on the client side and then swap the image back.
+        *
+        */
+
+       $text = profile_content($a,$profile_uid);
+
+       $pattern = "/<img([^>]*) src=\"([^\"]*)\"/";
+       $replace = "<img\${1} dst=\"\${2}\"";
+       $text = preg_replace($pattern, $replace, $text);
+
+       $replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
+       $pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
+       $text = preg_replace($pattern, $replace, $text);
+       $pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
+       $text = preg_replace($pattern, $replace, $text);
+       $pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
+       $text = preg_replace($pattern, $replace, $text);
+    $pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
+    $text = preg_replace($pattern, $replace, $text);
+
+       /**
+        * reportedly some versions of MSIE don't handle tabs in XMLHttpRequest documents very well
+        */
+
+       echo str_replace("\t",'       ',$text);
+       echo "</section>";
        echo "</body></html>\r\n";
        killme();