summaryrefslogtreecommitdiff
path: root/controllers/controllers.php
diff options
context:
space:
mode:
Diffstat (limited to 'controllers/controllers.php')
-rw-r--r--controllers/controllers.php89
1 files changed, 41 insertions, 48 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php
index 95d3aa5..b27c73e 100644
--- a/controllers/controllers.php
+++ b/controllers/controllers.php
@@ -384,20 +384,6 @@ function create_favorite(&$user, $url) {
return $r;
}
-function create_photo(&$user, $params, $file) {
- $error = validate_photo($file);
-
- if(!$error) {
- $file_path = $file['tmp_name'];
- $micropub_request = array('content' => $params['note_content']);
- $r = micropub_post_for_user($user, $micropub_request, $file_path);
- } else {
- $r = array('error' => $error);
- }
-
- return $r;
-}
-
function create_repost(&$user, $url) {
$micropub_request = array(
'repost-of' => $url
@@ -452,40 +438,6 @@ $app->post('/favorite', function() use($app) {
}
});
-$app->post('/photo', function() use($app) {
- if($user=require_login($app)) {
-
- // var_dump($app->request()->post());
- //
- // Since $app->request()->post() with multipart is always
- // empty (bug in Slim?) We're using the raw $_POST here
- // until this gets fixed.
- // PHP empties everything in $_POST if the file upload size exceeds
- // that is why we have to test if the variables exist first.
-
- $note_content = isset($_POST['note_content']) ? $_POST['note_content'] : null;
- $params = array('note_content' => $note_content);
- $file = isset($_FILES['note_photo']) ? $_FILES['note_photo'] : null;
-
- $r = create_photo($user, $params, $file);
-
- // Populate the error if there was no location header.
- if(empty($r['location']) && empty($r['error'])) {
- $r['error'] = "No 'Location' header in response.";
- }
-
- $html = render('photo', array(
- 'title' => 'Photo posted',
- 'note_content' => $params['note_content'],
- 'location' => (isset($r['location']) ? $r['location'] : null),
- 'error' => (isset($r['error']) ? $r['error'] : null),
- 'response' => (isset($r['response']) ? htmlspecialchars($r['response']) : null),
- 'authorizing' => false
- ));
- $app->response()->body($html);
- }
-});
-
$app->post('/repost', function() use($app) {
if($user=require_login($app)) {
$params = $app->request()->params();
@@ -530,6 +482,47 @@ $app->post('/micropub/post', function() use($app) {
}
});
+$app->post('/micropub/multipart', function() use($app) {
+ if($user=require_login($app)) {
+ // var_dump($app->request()->post());
+ //
+ // Since $app->request()->post() with multipart is always
+ // empty (bug in Slim?) We're using the raw $_POST here.
+ // PHP empties everything in $_POST if the file upload size exceeds
+ // that is why we have to test if the variables exist first.
+
+ $file = isset($_FILES['photo']) ? $_FILES['photo'] : null;
+
+ if($file) {
+ $error = validate_photo($file);
+
+ unset($_POST['null']);
+
+ if(!$error) {
+ $file_path = $file['tmp_name'];
+ correct_photo_rotation($file_path);
+ $r = micropub_post_for_user($user, $_POST, $file_path);
+ } else {
+ $r = array('error' => $error);
+ }
+ } else {
+ unset($_POST['null']);
+ $r = micropub_post_for_user($user, $_POST);
+ }
+
+ // Populate the error if there was no location header.
+ if(empty($r['location']) && empty($r['error'])) {
+ $r['error'] = "No 'Location' header in response.";
+ }
+
+ $app->response()->body(json_encode(array(
+ 'response' => (isset($r['response']) ? htmlspecialchars($r['response']) : null),
+ 'location' => (isset($r['location']) ? $r['location'] : null),
+ 'error' => (isset($r['error']) ? $r['error'] : null),
+ )));
+ }
+});
+
$app->post('/micropub/postjson', function() use($app) {
if($user=require_login($app)) {
$params = $app->request()->params();