aboutsummaryrefslogtreecommitdiffstats
path: root/include/photos.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/photos.php')
-rw-r--r--include/photos.php79
1 files changed, 48 insertions, 31 deletions
diff --git a/include/photos.php b/include/photos.php
index 9819c7ef2..060a0671d 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -5,7 +5,7 @@ require_once('include/items.php');
require_once('include/photo/photo_driver.php');
-function photo_upload($channel, $observer, $args) {
+function photo_upload($channel, $observer, $args, $local = null) {
$ret = array('success' => false);
$channel_id = $channel['channel_id'];
@@ -61,47 +61,64 @@ function photo_upload($channel, $observer, $args) {
$str_group_deny = perms2str(((is_array($args['group_deny'])) ? $args['group_deny'] : explode(',',$args['group_deny'])));
$str_contact_deny = perms2str(((is_array($args['contact_deny'])) ? $args['contact_deny'] : explode(',',$args['contact_deny'])));
- $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => '');
- call_hooks('photo_upload_file',$f);
+ if($local) {
- if(x($f,'src') && x($f,'filesize')) {
- $src = $f['src'];
- $filename = $f['filename'];
- $filesize = $f['filesize'];
- $type = $f['type'];
+ // allow an import from a binary string representing the image.
+ // This bypasses the upload step and max size limit checking
+
+ $imagedata = $local;
+ $filename = $args['filename'];
+ $filesize = strlen($imagedata);
+ // this is going to be deleted if it exists
+ $src = '/tmp/deletemenow';
+ $filetype = $args['filetype'];
}
else {
- $src = $_FILES['userfile']['tmp_name'];
- $filename = basename($_FILES['userfile']['name']);
- $filesize = intval($_FILES['userfile']['size']);
- $type = $_FILES['userfile']['type'];
- }
+ $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => '');
- if (! $type)
- $type=guess_image_type($filename);
+ call_hooks('photo_upload_file',$f);
- logger('photo_upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG);
+ if(x($f,'src') && x($f,'filesize')) {
+ $src = $f['src'];
+ $filename = $f['filename'];
+ $filesize = $f['filesize'];
+ $type = $f['type'];
+ }
+ else {
+ $src = $_FILES['userfile']['tmp_name'];
+ $filename = basename($_FILES['userfile']['name']);
+ $filesize = intval($_FILES['userfile']['size']);
+ $type = $_FILES['userfile']['type'];
+ }
- $maximagesize = get_config('system','maximagesize');
+ if (! $type)
+ $type=guess_image_type($filename);
- if(($maximagesize) && ($filesize > $maximagesize)) {
- $ret['message'] = sprintf ( t('Image exceeds website size limit of %lu bytes'), $maximagesize);
- @unlink($src);
- call_hooks('photo_upload_end',$ret);
- return $ret;
- }
+ logger('photo_upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG);
- if(! $filesize) {
- $ret['message'] = t('Image file is empty.');
- @unlink($src);
- call_hooks('photo_post_end',$ret);
- return $ret;
- }
+
+ $maximagesize = get_config('system','maximagesize');
+
+ if(($maximagesize) && ($filesize > $maximagesize)) {
+ $ret['message'] = sprintf ( t('Image exceeds website size limit of %lu bytes'), $maximagesize);
+ @unlink($src);
+ call_hooks('photo_upload_end',$ret);
+ return $ret;
+ }
- logger('photo_upload: loading the contents of ' . $src , LOGGER_DEBUG);
+ if(! $filesize) {
+ $ret['message'] = t('Image file is empty.');
+ @unlink($src);
+ call_hooks('photo_post_end',$ret);
+ return $ret;
+ }
+
+ logger('photo_upload: loading the contents of ' . $src , LOGGER_DEBUG);
+
+ $imagedata = @file_get_contents($src);
+ }
- $imagedata = @file_get_contents($src);
$r = q("select sum(size) as total from photo where aid = %d and scale = 0 ",
intval($account_id)