]> git.mxchange.org Git - friendica.git/commitdiff
allow linking to Diaspora's scaled-down images
authorZach Prezkuta <fermion@gmx.com>
Wed, 20 Jun 2012 02:45:24 +0000 (20:45 -0600)
committerZach Prezkuta <fermion@gmx.com>
Sat, 23 Jun 2012 17:02:15 +0000 (11:02 -0600)
include/diaspora.php
include/network.php

index 80fb104046f827fae5a9b426b90239498d73e7b0..fdb85f15f1504913f0e285edaaa7e5def5ca29b7 100755 (executable)
@@ -1560,7 +1560,8 @@ function diaspora_photo($importer,$xml,$msg) {
 
        $link_text = '[img]' . $remote_photo_path . $remote_photo_name . '[/img]' . "\n";
 
-       $link_text = scale_external_images($link_text);
+       $link_text = scale_external_images($link_text, true,
+                                          array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
 
        if(strpos($parent_item['body'],$link_text) === false) {
                $r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d limit 1",
index 446413cd834c5cd81ebd4e02ca6d8861c9f2e6fc..c1a76000ef2b021174a29af69b56004fddb7512f 100644 (file)
@@ -793,7 +793,7 @@ function add_fcontact($arr,$update = false) {
 }
 
 
-function scale_external_images($s,$include_link = true) {
+function scale_external_images($s, $include_link = true, $scale_replace = false) {
 
        $a = get_app();
 
@@ -803,10 +803,22 @@ function scale_external_images($s,$include_link = true) {
                require_once('include/Photo.php');
                foreach($matches as $mtch) {
                        logger('scale_external_image: ' . $mtch[1]);
+
                        $hostname = str_replace('www.','',substr($a->get_baseurl(),strpos($a->get_baseurl(),'://')+3));
                        if(stristr($mtch[1],$hostname))
                                continue;
-                       $i = fetch_url($mtch[1]);
+
+                       // $scale_replace, if passed, is an array of two elements. The
+                       // first is the name of the full-size image. The second is the
+                       // name of a remote, scaled-down version of the full size image.
+                       // This allows Friendica to display the smaller remote image if
+                       // one exists, while still linking to the full-size image
+                       if($scale_replace)
+                               $scaled = str_replace($scale_replace[0], $scale_replace[1], $mtch[1]);
+                       else
+                               $scaled = $mtch[1];
+                       $i = fetch_url($scaled);
+
                        // guess mimetype from headers or filename
                        $type = guess_image_type($mtch[1],true);
                        
@@ -822,7 +834,7 @@ function scale_external_images($s,$include_link = true) {
                                                $new_width = $ph->getWidth();
                                                $new_height = $ph->getHeight();
                                                logger('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG);
-                                               $s = str_replace($mtch[0],'[img=' . $new_width . 'x' . $new_height. ']' . $mtch[1] . '[/img]'
+                                               $s = str_replace($mtch[0],'[img=' . $new_width . 'x' . $new_height. ']' . $scaled . '[/img]'
                                                        . "\n" . (($include_link) 
                                                                ? '[url=' . $mtch[1] . ']' . t('view full size') . '[/url]' . "\n"
                                                                : ''),$s);