From fdd2da905a27fab838aa34ef7baf0ee2c5c3c5f7 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Sun, 13 Dec 2015 19:15:42 -0800 Subject: more work on api media uploads --- include/api.php | 25 ++++++++++++++++++------- include/attach.php | 2 +- include/photos.php | 2 +- mod/wall_attach.php | 28 +++++++++++++++++----------- 4 files changed, 37 insertions(+), 20 deletions(-) diff --git a/include/api.php b/include/api.php index 9c31f994f..f37e0669f 100644 --- a/include/api.php +++ b/include/api.php @@ -855,13 +855,24 @@ require_once('include/api_auth.php'); $_REQUEST['type'] = 'wall'; if(x($_FILES,'media')) { - $_FILES['userfile'] = $_FILES['media']; - // upload the image if we have one - $_REQUEST['silent']='1'; //tell wall_upload function to return img info instead of echo - require_once('mod/wall_attach.php'); - $media = wall_attach_post($a); - if(strlen($media)>0) - $_REQUEST['body'] .= "\n\n".$media; + $num_uploads = count($_FILES['media']['name']); + for($x = 0; $x < $num_uploads; $x ++) { + $_FILES['userfile'] = array(); + $_FILES['userfile']['name'] = $_FILES['media']['name'][$x]; + $_FILES['userfile']['type'] = $_FILES['media']['type'][$x]; + $_FILES['userfile']['tmp_name'] = $_FILES['media']['tmp_name'][$x]; + $_FILES['userfile']['error'] = $_FILES['media']['error'][$x]; + $_FILES['userfile']['size'] = $_FILES['media']['size'][$x]; + + // upload each image if we have any + $_REQUEST['silent']='1'; //tell wall_upload function to return img info instead of echo + require_once('mod/wall_attach.php'); + $a->data['api_info'] = $user_info; + $media = wall_attach_post($a); + + if(strlen($media)>0) + $_REQUEST['body'] .= "\n\n" . $media; + } } } diff --git a/include/attach.php b/include/attach.php index 36b971712..20e8b7444 100644 --- a/include/attach.php +++ b/include/attach.php @@ -430,7 +430,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $observer = $x[0]; } - logger('arr: ' . print_r($arr,true)); + logger('arr: ' . print_r($arr,true), LOGGER_DATA); if(! perm_is_allowed($channel_id,$observer_hash, 'write_storage')) { $ret['message'] = t('Permission denied.'); diff --git a/include/photos.php b/include/photos.php index c7360a956..798b89b54 100644 --- a/include/photos.php +++ b/include/photos.php @@ -377,7 +377,7 @@ function photo_upload($channel, $observer, $args) { $arr['item_thread_top'] = 1; $arr['item_private'] = intval($acl->is_private()); $arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid']; - $arr['body'] = (($object) ? $args['body'] : $body . "\r\n" . $args['body']); + $arr['body'] = (($args['body']) ? $body . "\r\n" . $args['body'] : $body); // this one is tricky because the item and the photo have the same permissions, those of the photo. diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 8677c2b83..f52a4f2e5 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -6,14 +6,16 @@ require_once('include/photos.php'); function wall_attach_post(&$a) { - if(argc() > 1) - $channel = get_channel_by_nick(argv(1)); - elseif($_FILES['media']) { - require_once('include/api.php'); - $user_info = api_get_user($a); + $using_api = false; + + if($a->data['api_info'] && array_key_exists('media',$_FILES)) { + $using_api = true; + $user_info = $a->data['api_info']; $nick = $user_info['screen_name']; $channel = get_channel_by_nick($user_info['screen_name']); - } + } + elseif(argc() > 1) + $channel = get_channel_by_nick(argv(1)); if(! $channel) killme(); @@ -49,12 +51,16 @@ function wall_attach_post(&$a) { } if(intval($r['data']['is_photo'])) { - echo "\n\n" . $r['body'] . "\n\n"; - if($using_api) - return; - killme(); + $s = "\n\n" . $r['body'] . "\n\n"; + } + else { + $s = "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; } - echo "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; + + if($using_api) + return $s; + + echo $s; killme(); } -- cgit v1.2.3