]> git.mxchange.org Git - friendica.git/blobdiff - include/Photo.php
Merge pull request #3770 from tobiasd/20171008-dotca
[friendica.git] / include / Photo.php
index f1e2989d51543e3eb946d35542d5a98ba4a213ef..78d448fbc240814eb432888384fc5d548ade937f 100644 (file)
@@ -4,6 +4,9 @@
  * @brief This file contains the Photo class for image processing
  */
 
+use Friendica\App;
+use Friendica\Core\System;
+
 require_once("include/photos.php");
 
 class Photo {
@@ -47,18 +50,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() {
@@ -68,7 +71,9 @@ class Photo {
                                $this->image->destroy();
                                return;
                        }
-                       imagedestroy($this->image);
+                       if (is_resource($this->image)) {
+                               imagedestroy($this->image);
+                       }
                }
        }
 
@@ -78,6 +83,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 +96,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 +119,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 +135,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 +244,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 +267,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 +288,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 +301,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') {
@@ -324,6 +329,7 @@ class Photo {
                        return;
                }
 
+               // if script dies at this point check memory_limit setting in php.ini
                $this->image  = imagerotate($this->image,$degrees,0);
                $this->width  = imagesx($this->image);
                $this->height = imagesy($this->image);
@@ -388,12 +394,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 +459,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 +487,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 +520,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 +536,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 +555,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 +596,7 @@ class Photo {
                        return $string;
                }
 
-               $quality = FALSE;
+               $quality = false;
 
                ob_start();
 
@@ -599,18 +605,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();
@@ -620,96 +626,26 @@ class Photo {
 
 
 
-       public function store($uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') {
+       public function store($uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '', $desc = '') {
 
-               $r = q("SELECT `guid` FROM `photo` WHERE `resource-id` = '%s' AND `guid` != '' LIMIT 1",
-                       dbesc($rid)
-               );
+               $r = dba::select('photo', array('guid'), array("`resource-id` = ? AND `guid` != ?", $rid, ''), array('limit' => 1));
                if (dbm::is_result($r)) {
-                       $guid = $r[0]['guid'];
+                       $guid = $r['guid'];
                } else {
                        $guid = get_guid();
                }
 
-               $x = q("SELECT `id` FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d AND `contact-id` = %d AND `scale` = %d LIMIT 1",
-                       dbesc($rid),
-                       intval($uid),
-                       intval($cid),
-                       intval($scale)
-               );
+               $x = dba::select('photo', array('id'), array('resource-id' => $rid, 'uid' => $uid, 'contact-id' => $cid, 'scale' => $scale), array('limit' => 1));
+
+               $fields = array('uid' => $uid, 'contact-id' => $cid, 'guid' => $guid, 'resource-id' => $rid, 'created' => datetime_convert(), 'edited' => datetime_convert(),
+                               'filename' => basename($filename), 'type' => $this->getType(), 'album' => $album, 'height' => $this->getHeight(), 'width' => $this->getWidth(),
+                               'datasize' => strlen($this->imageString()), 'data' => $this->imageString(), 'scale' => $scale, 'profile' => $profile,
+                               'allow_cid' => $allow_cid, 'allow_gid' => $allow_gid, 'deny_cid' => $deny_cid, 'deny_gid' => $deny_gid, 'desc' => $desc);
+
                if (dbm::is_result($x)) {
-                       $r = q("UPDATE `photo`
-                               SET `uid` = %d,
-                               `contact-id` = %d,
-                               `guid` = '%s',
-                               `resource-id` = '%s',
-                               `created` = '%s',
-                               `edited` = '%s',
-                               `filename` = '%s',
-                               `type` = '%s',
-                               `album` = '%s',
-                               `height` = %d,
-                               `width` = %d,
-                               `datasize` = %d,
-                               `data` = '%s',
-                               `scale` = %d,
-                               `profile` = %d,
-                               `allow_cid` = '%s',
-                               `allow_gid` = '%s',
-                               `deny_cid` = '%s',
-                               `deny_gid` = '%s'
-                               WHERE `id` = %d",
-
-                               intval($uid),
-                               intval($cid),
-                               dbesc($guid),
-                               dbesc($rid),
-                               dbesc(datetime_convert()),
-                               dbesc(datetime_convert()),
-                               dbesc(basename($filename)),
-                               dbesc($this->getType()),
-                               dbesc($album),
-                               intval($this->getHeight()),
-                               intval($this->getWidth()),
-                               dbesc(strlen($this->imageString())),
-                               dbesc($this->imageString()),
-                               intval($scale),
-                               intval($profile),
-                               dbesc($allow_cid),
-                               dbesc($allow_gid),
-                               dbesc($deny_cid),
-                               dbesc($deny_gid),
-                               intval($x[0]['id'])
-                       );
+                       $r = dba::update('photo', $fields, array('id' => $x['id']));
                } 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' )",
-                               intval($uid),
-                               intval($cid),
-                               dbesc($guid),
-                               dbesc($rid),
-                               dbesc(datetime_convert()),
-                               dbesc(datetime_convert()),
-                               dbesc(basename($filename)),
-                               dbesc($this->getType()),
-                               dbesc($album),
-                               intval($this->getHeight()),
-                               intval($this->getWidth()),
-                               dbesc(strlen($this->imageString())),
-                               dbesc($this->imageString()),
-                               intval($scale),
-                               intval($profile),
-                               dbesc($allow_cid),
-                               dbesc($allow_gid),
-                               dbesc($deny_cid),
-                               dbesc($deny_gid)
-                       );
-               }
-
-               // Update the cached values
-               if ($album != 'Contact Photos') {
-                       photo_albums($uid, true);
+                       $r = dba::insert('photo', $fields);
                }
 
                return $r;
@@ -752,8 +688,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,22 +710,30 @@ 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) {
-
-       $r = q("SELECT `avatar`, `photo`, `thumb`, `micro` FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
+function update_contact_avatar($avatar, $uid, $cid, $force = false) {
+       $r = q("SELECT `avatar`, `photo`, `thumb`, `micro`, `nurl` FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
        if (!dbm::is_result($r)) {
                return false;
        } else {
                $data = array($r[0]["photo"], $r[0]["thumb"], $r[0]["micro"]);
        }
 
-       if (($r[0]["avatar"] != $avatar) OR $force) {
-               $photos = import_profile_photo($avatar,$uid,$cid, true);
+       if (($r[0]["avatar"] != $avatar) || $force) {
+               $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",
                                dbesc($avatar), dbesc($photos[0]), dbesc($photos[1]), dbesc($photos[2]),
                                dbesc(datetime_convert()), intval($cid));
+
+                       // Update the public contact (contact id = 0)
+                       if ($uid != 0) {
+                               $pcontact = dba::select('contact', array('id'), array('nurl' => $r[0]['nurl']), array('limit' => 1));
+                               if (dbm::is_result($pcontact)) {
+                                       update_contact_avatar($avatar, 0, $pcontact['id'], $force);
+                               }
+                       }
+
                        return $photos;
                }
        }
@@ -797,9 +741,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,53 +756,74 @@ 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 == "")) {
+       if ($quit_on_error && ($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();
+               $suffix = '?ts='.time();
+
+               $photo = System::baseUrl() . '/photo/' . $hash . '-4.' . $img->getExt() . $suffix;
+               $thumb = System::baseUrl() . '/photo/' . $hash . '-5.' . $img->getExt() . $suffix;
+               $micro = System::baseUrl() . '/photo/' . $hash . '-6.' . $img->getExt() . $suffix;
+
+               // Remove the cached photo
+               $a = get_app();
+               $basepath = $a->get_basepath();
+
+               if (is_dir($basepath."/photo")) {
+                       $filename = $basepath.'/photo/'.$hash.'-4.'.$img->getExt();
+                       if (file_exists($filename)) {
+                               unlink($filename);
+                       }
+                       $filename = $basepath.'/photo/'.$hash.'-5.'.$img->getExt();
+                       if (file_exists($filename)) {
+                               unlink($filename);
+                       }
+                       $filename = $basepath.'/photo/'.$hash.'-6.'.$img->getExt();
+                       if (file_exists($filename)) {
+                               unlink($filename);
+                       }
+               }
        } else {
                $photo_failure = true;
        }
 
-       if ($photo_failure AND $quit_on_error) {
+       if ($photo_failure && $quit_on_error) {
                return 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 = System::baseUrl() . '/images/person-175.jpg';
+               $thumb = System::baseUrl() . '/images/person-80.jpg';
+               $micro = System::baseUrl() . '/images/person-48.jpg';
        }
 
        return(array($photo,$thumb,$micro));
@@ -872,7 +835,7 @@ function get_photo_info($url) {
 
        $data = Cache::get($url);
 
-       if (is_null($data) OR !$data) {
+       if (is_null($data) || !$data || !is_array($data)) {
                $img_str = fetch_url($url, true, $redirects, 4);
                $filesize = strlen($img_str);
 
@@ -915,21 +878,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 +901,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 +913,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));
@@ -966,7 +929,7 @@ function store_photo($a, $uid, $imagedata = "", $url = "") {
        /// $default_cid      = $r[0]['id'];
        /// $community_page   = (($r[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
 
-       if ((strlen($imagedata) == 0) AND ($url == "")) {
+       if ((strlen($imagedata) == 0) && ($url == "")) {
                logger("No image data and no url provided", LOGGER_DEBUG);
                return(array());
        } elseif (strlen($imagedata) == 0) {
@@ -977,7 +940,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 +985,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 +1003,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 +1012,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" => System::baseUrl().'/photos/'.$page_owner_nick.'/image/'.$hash,
+                       "full" => System::baseUrl()."/photo/{$hash}-0.".$ph->getExt());
 
        if ($width > 800 || $height > 800) {
-               $image["large"] = $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt();
+               $image["large"] = System::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"] = System::baseUrl()."/photo/{$hash}-1.".$ph->getExt();
                }
        }
 
@@ -1068,11 +1031,11 @@ 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"] = System::baseUrl()."/photo/{$hash}-2.".$ph->getExt();
                }
        }
 
-       if ($width > 160 AND $height > 160) {
+       if ($width > 160 && $height > 160) {
                $x = 0;
                $y = 0;
 
@@ -1093,7 +1056,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"] = System::baseUrl()."/photo/{$hash}-3.".$ph->getExt();
                }
        }