]> git.mxchange.org Git - friendica.git/blobdiff - mod/update_profile.php
parse_url: recognize image/video/audio files + move functions into own class
[friendica.git] / mod / update_profile.php
index a0cb10f5d3584483182ff652ef9d77ad621a20ea..1bc29d82cef3f3ad4c11d82f20fe61a08d895ef0 100644 (file)
@@ -1,14 +1,51 @@
 <?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) {
 
-       echo "<html>\r\n";
-       echo profile_content($a,true);
-       echo "</html>\r\n";
-       killme();
+       $profile_uid = intval($_GET["p"]);
+
+       header("Content-type: text/html");
+       echo "<!DOCTYPE html><html><body>\r\n";
+
+       // 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);
+
+       if (get_pconfig(local_user(), "system", "bandwith_saver")) {
+               $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();
 }
\ No newline at end of file