]> git.mxchange.org Git - friendica.git/blobdiff - include/Photo.php
Only import new OStatus posts if they are from our followers
[friendica.git] / include / Photo.php
index f1e2989d51543e3eb946d35542d5a98ba4a213ef..828dce82d7a33088c4bae02e1c350104a6e58114 100644 (file)
@@ -47,18 +47,18 @@ class Photo {
        public function __construct($data, $type=null) {
                $this->imagick = class_exists('Imagick');
                $this->types = $this->supportedTypes();
-               if (!array_key_exists($type,$this->types)){
+               if (!array_key_exists($type, $this->types)){
                        $type='image/jpeg';
                }
                $this->type = $type;
 
                if ($this->is_imagick() && $this->load_data($data)) {
-                               return true;
-                       } else {
-                               // Failed to load with Imagick, fallback
-                               $this->imagick = false;
-                       }
-                       return $this->load_data($data);
+                       return true;
+               } else {
+                       // Failed to load with Imagick, fallback
+                       $this->imagick = false;
+               }
+               return $this->load_data($data);
        }
 
        public function __destruct() {
@@ -78,6 +78,7 @@ class Photo {
 
        /**
         * @brief Maps Mime types to Imagick formats
+        * @return arr With with image formats (mime type as key)
         */
        public function get_FormatsMap() {
                $m = array(
@@ -90,11 +91,10 @@ class Photo {
 
        private function load_data($data) {
                if ($this->is_imagick()) {
-                               $this->image = new Imagick();
+                       $this->image = new Imagick();
                        try {
                                $this->image->readImageBlob($data);
-                       }
-                       catch (Exception $e) {
+                       } catch (Exception $e) {
                                // Imagick couldn't use the data
                                return false;
                        }
@@ -114,7 +114,7 @@ class Photo {
                         */
                        switch($this->getType()){
                                case "image/png":
-                                       $quality = get_config('system','png_quality');
+                                       $quality = get_config('system', 'png_quality');
                                        if ((! $quality) || ($quality > 9)) {
                                                $quality = PNG_QUALITY;
                                        }
@@ -130,7 +130,7 @@ class Photo {
                                        $this->image->setCompressionQuality($quality);
                                        break;
                                case "image/jpeg":
-                                       $quality = get_config('system','jpeg_quality');
+                                       $quality = get_config('system', 'jpeg_quality');
                                        if ((! $quality) || ($quality > 100)) {
                                                $quality = JPEG_QUALITY;
                                        }
@@ -239,21 +239,21 @@ class Photo {
 
                        if ((($height * 9) / 16) > $width) {
                                $dest_width = $max;
-                               $dest_height = intval(( $height * $max ) / $width);
+                               $dest_height = intval(($height * $max) / $width);
                        } elseif ($width > $height) {
                                // else constrain both dimensions
                                $dest_width = $max;
-                               $dest_height = intval(( $height * $max ) / $width);
+                               $dest_height = intval(($height * $max) / $width);
                        } else {
-                               $dest_width = intval(( $width * $max ) / $height);
+                               $dest_width = intval(($width * $max) / $height);
                                $dest_height = $max;
                        }
                } else {
-                       if ( $width > $max ) {
+                       if ($width > $max) {
                                $dest_width = $max;
-                               $dest_height = intval(( $height * $max ) / $width);
+                               $dest_height = intval(($height * $max) / $width);
                        } else {
-                               if ( $height > $max ) {
+                               if ($height > $max) {
 
                                        // very tall image (greater than 16:9)
                                        // but width is OK - don't do anything
@@ -262,7 +262,7 @@ class Photo {
                                                $dest_width = $width;
                                                $dest_height = $height;
                                        } else {
-                                               $dest_width = intval(( $width * $max ) / $height);
+                                               $dest_width = intval(($width * $max) / $height);
                                                $dest_height = $max;
                                        }
                                } else {
@@ -283,7 +283,7 @@ class Photo {
                        do {
 
                                // FIXME - implement horizantal bias for scaling as in followin GD functions
-                               // to allow very tall images to be constrained only horizontally. 
+                               // to allow very tall images to be constrained only horizontally.
 
                                $this->image->scaleImage($dest_width, $dest_height);
                        } while ($this->image->nextImage());
@@ -296,7 +296,7 @@ class Photo {
                }
 
 
-               $dest = imagecreatetruecolor( $dest_width, $dest_height );
+               $dest = imagecreatetruecolor($dest_width, $dest_height);
                imagealphablending($dest, false);
                imagesavealpha($dest, true);
                if ($this->type=='image/png') {
@@ -388,12 +388,12 @@ class Photo {
                        return false;
                }
 
-               if ( (! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg') ) {
+               if ((!function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg')) {
                        return;
                }
 
                $exif = @exif_read_data($filename,null,true);
-               if (! $exif) {
+               if (!$exif) {
                        return;
                }
 
@@ -453,25 +453,25 @@ class Photo {
 
                $dest_width = $dest_height = 0;
 
-               if ((! $width)|| (! $height)) {
+               if ((!$width)|| (!$height)) {
                        return false;
                }
 
                if ($width < $min && $height < $min) {
                        if ($width > $height) {
                                $dest_width = $min;
-                               $dest_height = intval(( $height * $min ) / $width);
+                               $dest_height = intval(($height * $min) / $width);
                        } else {
-                               $dest_width = intval(( $width * $min ) / $height);
+                               $dest_width = intval(($width * $min) / $height);
                                $dest_height = $min;
                        }
                } else {
-                       if ( $width < $min ) {
+                       if ($width < $min) {
                                $dest_width = $min;
-                               $dest_height = intval(( $height * $min ) / $width);
+                               $dest_height = intval(($height * $min) / $width);
                        } else {
-                               if ( $height < $min ) {
-                                       $dest_width = intval(( $width * $min ) / $height);
+                               if ($height < $min) {
+                                       $dest_width = intval(($width * $min) / $height);
                                        $dest_height = $min;
                                } else {
                                        $dest_width = $width;
@@ -481,10 +481,10 @@ class Photo {
                }
 
                if ($this->is_imagick()) {
-                       return $this->scaleImage($dest_width,$dest_height);
+                       return $this->scaleImage($dest_width, $dest_height);
                }
 
-               $dest = imagecreatetruecolor( $dest_width, $dest_height );
+               $dest = imagecreatetruecolor($dest_width, $dest_height);
                imagealphablending($dest, false);
                imagesavealpha($dest, true);
                if ($this->type=='image/png') {
@@ -514,7 +514,7 @@ class Photo {
                        return;
                }
 
-               $dest = imagecreatetruecolor( $dim, $dim );
+               $dest = imagecreatetruecolor($dim, $dim);
                imagealphablending($dest, false);
                imagesavealpha($dest, true);
                if ($this->type=='image/png') {
@@ -530,7 +530,7 @@ class Photo {
        }
 
 
-       public function cropImage($max,$x,$y,$w,$h) {
+       public function cropImage($max, $x, $y, $w, $h) {
                if (!$this->is_valid()) {
                        return false;
                }
@@ -549,7 +549,7 @@ class Photo {
                        return $this->scaleImage($max);
                }
 
-               $dest = imagecreatetruecolor( $max, $max );
+               $dest = imagecreatetruecolor($max, $max);
                imagealphablending($dest, false);
                imagesavealpha($dest, true);
                if ($this->type=='image/png') {
@@ -590,7 +590,7 @@ class Photo {
                        return $string;
                }
 
-               $quality = FALSE;
+               $quality = false;
 
                ob_start();
 
@@ -599,18 +599,18 @@ class Photo {
 
                switch($this->getType()){
                        case "image/png":
-                               $quality = get_config('system','png_quality');
-                               if ((! $quality) || ($quality > 9)) {
+                               $quality = get_config('system', 'png_quality');
+                               if ((!$quality) || ($quality > 9)) {
                                        $quality = PNG_QUALITY;
                                }
-                               imagepng($this->image,NULL, $quality);
+                               imagepng($this->image, null, $quality);
                                break;
                        case "image/jpeg":
-                               $quality = get_config('system','jpeg_quality');
-                               if ((! $quality) || ($quality > 100)) {
+                               $quality = get_config('system', 'jpeg_quality');
+                               if ((!$quality) || ($quality > 100)) {
                                        $quality = JPEG_QUALITY;
                                }
-                               imagejpeg($this->image,NULL,$quality);
+                               imagejpeg($this->image, null, $quality);
                }
                $string = ob_get_contents();
                ob_end_clean();
@@ -683,8 +683,8 @@ class Photo {
                        );
                } else {
                        $r = q("INSERT INTO `photo`
-                               ( `uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `datasize`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
-                               VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s' )",
+                               (`uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `datasize`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`)
+                               VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s')",
                                intval($uid),
                                intval($cid),
                                dbesc($guid),
@@ -707,11 +707,6 @@ class Photo {
                        );
                }
 
-               // Update the cached values
-               if ($album != 'Contact Photos') {
-                       photo_albums($uid, true);
-               }
-
                return $r;
        }
 }
@@ -752,8 +747,8 @@ function guess_image_type($filename, $fromcurl=false) {
                        $ext = pathinfo($filename, PATHINFO_EXTENSION);
                        $types = Photo::supportedTypes();
                        $type = "image/jpeg";
-                       foreach ($types as $m=>$e){
-                               if ($ext==$e) {
+                       foreach ($types as $m => $e){
+                               if ($ext == $e) {
                                        $type = $m;
                                }
                        }
@@ -774,7 +769,7 @@ function guess_image_type($filename, $fromcurl=false) {
  *
  * @return array Returns array of the different avatar sizes
  */
-function update_contact_avatar($avatar,$uid,$cid, $force = false) {
+function update_contact_avatar($avatar, $uid, $cid, $force = false) {
 
        $r = q("SELECT `avatar`, `photo`, `thumb`, `micro` FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
        if (!dbm::is_result($r)) {
@@ -784,7 +779,7 @@ function update_contact_avatar($avatar,$uid,$cid, $force = false) {
        }
 
        if (($r[0]["avatar"] != $avatar) OR $force) {
-               $photos = import_profile_photo($avatar,$uid,$cid, true);
+               $photos = import_profile_photo($avatar, $uid, $cid, true);
 
                if ($photos) {
                        q("UPDATE `contact` SET `avatar` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d",
@@ -797,9 +792,7 @@ function update_contact_avatar($avatar,$uid,$cid, $force = false) {
        return $data;
 }
 
-function import_profile_photo($photo,$uid,$cid, $quit_on_error = false) {
-
-       $a = get_app();
+function import_profile_photo($photo, $uid, $cid, $quit_on_error = false) {
 
        $r = q("SELECT `resource-id` FROM `photo` WHERE `uid` = %d AND `contact-id` = %d AND `scale` = 4 AND `album` = 'Contact Photos' LIMIT 1",
                intval($uid),
@@ -814,41 +807,41 @@ function import_profile_photo($photo,$uid,$cid, $quit_on_error = false) {
        $photo_failure = false;
 
        $filename = basename($photo);
-       $img_str = fetch_url($photo,true);
+       $img_str = fetch_url($photo, true);
 
        if ($quit_on_error AND ($img_str == "")) {
                return false;
        }
 
-       $type = guess_image_type($photo,true);
+       $type = guess_image_type($photo, true);
        $img = new Photo($img_str, $type);
        if ($img->is_valid()) {
 
                $img->scaleImageSquare(175);
 
-               $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 4 );
+               $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 4);
 
                if ($r === false)
                        $photo_failure = true;
 
                $img->scaleImage(80);
 
-               $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 5 );
+               $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 5);
 
                if ($r === false)
                        $photo_failure = true;
 
                $img->scaleImage(48);
 
-               $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 6 );
+               $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 6);
 
                if ($r === false) {
                        $photo_failure = true;
                }
 
-               $photo = $a->get_baseurl() . '/photo/' . $hash . '-4.' . $img->getExt();
-               $thumb = $a->get_baseurl() . '/photo/' . $hash . '-5.' . $img->getExt();
-               $micro = $a->get_baseurl() . '/photo/' . $hash . '-6.' . $img->getExt();
+               $photo = App::get_baseurl() . '/photo/' . $hash . '-4.' . $img->getExt();
+               $thumb = App::get_baseurl() . '/photo/' . $hash . '-5.' . $img->getExt();
+               $micro = App::get_baseurl() . '/photo/' . $hash . '-6.' . $img->getExt();
        } else {
                $photo_failure = true;
        }
@@ -858,9 +851,9 @@ function import_profile_photo($photo,$uid,$cid, $quit_on_error = false) {
        }
 
        if ($photo_failure) {
-               $photo = $a->get_baseurl() . '/images/person-175.jpg';
-               $thumb = $a->get_baseurl() . '/images/person-80.jpg';
-               $micro = $a->get_baseurl() . '/images/person-48.jpg';
+               $photo = App::get_baseurl() . '/images/person-175.jpg';
+               $thumb = App::get_baseurl() . '/images/person-80.jpg';
+               $micro = App::get_baseurl() . '/images/person-48.jpg';
        }
 
        return(array($photo,$thumb,$micro));
@@ -872,7 +865,7 @@ function get_photo_info($url) {
 
        $data = Cache::get($url);
 
-       if (is_null($data) OR !$data) {
+       if (is_null($data) OR !$data OR !is_array($data)) {
                $img_str = fetch_url($url, true, $redirects, 4);
                $filesize = strlen($img_str);
 
@@ -915,21 +908,21 @@ function scale_image($width, $height, $max) {
 
                if ((($height * 9) / 16) > $width) {
                        $dest_width = $max;
-                       $dest_height = intval(( $height * $max ) / $width);
+                       $dest_height = intval(($height * $max) / $width);
                } elseif ($width > $height) {
                        // else constrain both dimensions
                        $dest_width = $max;
-                       $dest_height = intval(( $height * $max ) / $width);
+                       $dest_height = intval(($height * $max) / $width);
                } else {
-                       $dest_width = intval(( $width * $max ) / $height);
+                       $dest_width = intval(($width * $max) / $height);
                        $dest_height = $max;
                }
        } else {
-               if ( $width > $max ) {
+               if ($width > $max) {
                        $dest_width = $max;
-                       $dest_height = intval(( $height * $max ) / $width);
+                       $dest_height = intval(($height * $max) / $width);
                } else {
-                       if ( $height > $max ) {
+                       if ($height > $max) {
 
                                // very tall image (greater than 16:9)
                                // but width is OK - don't do anything
@@ -938,7 +931,7 @@ function scale_image($width, $height, $max) {
                                        $dest_width = $width;
                                        $dest_height = $height;
                                } else {
-                                       $dest_width = intval(( $width * $max ) / $height);
+                                       $dest_width = intval(($width * $max) / $height);
                                        $dest_height = $max;
                                }
                        } else {
@@ -950,7 +943,7 @@ function scale_image($width, $height, $max) {
        return array("width" => $dest_width, "height" => $dest_height);
 }
 
-function store_photo($a, $uid, $imagedata = "", $url = "") {
+function store_photo(App $a, $uid, $imagedata = "", $url = "") {
        $r = q("SELECT `user`.`nickname`, `user`.`page-flags`, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`
                WHERE `user`.`uid` = %d AND `user`.`blocked` = 0 AND `contact`.`self` = 1 LIMIT 1",
                intval($uid));
@@ -977,7 +970,7 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
                $a->save_timestamp($stamp1, "file");
        }
 
-       $maximagesize = get_config('system','maximagesize');
+       $maximagesize = get_config('system', 'maximagesize');
 
        if (($maximagesize) && (strlen($imagedata) > $maximagesize)) {
                logger("Image exceeds size limit of ".$maximagesize, LOGGER_DEBUG);
@@ -1022,7 +1015,7 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
        $ph->orient($tempfile);
        unlink($tempfile);
 
-       $max_length = get_config('system','max_image_length');
+       $max_length = get_config('system', 'max_image_length');
        if (! $max_length) {
                $max_length = MAX_IMAGE_LENGTH;
        }
@@ -1040,7 +1033,7 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
        // Pictures are always public by now
        //$defperm = '<'.$default_cid.'>';
        $defperm = "";
-       $visitor   = 0;
+       $visitor = 0;
 
        $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 0, 0, $defperm);
 
@@ -1049,18 +1042,18 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
                return(array());
        }
 
-       $image = array("page" => $a->get_baseurl().'/photos/'.$page_owner_nick.'/image/'.$hash,
-                       "full" => $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt());
+       $image = array("page" => App::get_baseurl().'/photos/'.$page_owner_nick.'/image/'.$hash,
+                       "full" => App::get_baseurl()."/photo/{$hash}-0.".$ph->getExt());
 
        if ($width > 800 || $height > 800) {
-               $image["large"] = $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt();
+               $image["large"] = App::get_baseurl()."/photo/{$hash}-0.".$ph->getExt();
        }
 
        if ($width > 640 || $height > 640) {
                $ph->scaleImage(640);
                $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 1, 0, $defperm);
                if ($r) {
-                       $image["medium"] = $a->get_baseurl()."/photo/{$hash}-1.".$ph->getExt();
+                       $image["medium"] = App::get_baseurl()."/photo/{$hash}-1.".$ph->getExt();
                }
        }
 
@@ -1068,7 +1061,7 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
                $ph->scaleImage(320);
                $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 2, 0, $defperm);
                if ($r) {
-                       $image["small"] = $a->get_baseurl()."/photo/{$hash}-2.".$ph->getExt();
+                       $image["small"] = App::get_baseurl()."/photo/{$hash}-2.".$ph->getExt();
                }
        }
 
@@ -1093,7 +1086,7 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
 
                $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 3, 0, $defperm);
                if ($r) {
-                       $image["thumb"] = $a->get_baseurl()."/photo/{$hash}-3.".$ph->getExt();
+                       $image["thumb"] = App::get_baseurl()."/photo/{$hash}-3.".$ph->getExt();
                }
        }