summaryrefslogtreecommitdiff
path: root/controllers/controllers.php
diff options
context:
space:
mode:
Diffstat (limited to 'controllers/controllers.php')
-rw-r--r--controllers/controllers.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php
index 96f609a..72ac2b8 100644
--- a/controllers/controllers.php
+++ b/controllers/controllers.php
@@ -130,6 +130,19 @@ $app->get('/favorite', function() use($app) {
}
});
+$app->get('/photo', function() use($app) {
+ if($user=require_login($app)) {
+ $params = $app->request()->params();
+
+ $html = render('photo', array(
+ 'title' => 'New Photo',
+ 'note_content' => '',
+ 'authorizing' => false
+ ));
+ $app->response()->body($html);
+ }
+});
+
$app->get('/repost', function() use($app) {
if($user=require_login($app)) {
$params = $app->request()->params();
@@ -286,6 +299,20 @@ 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
@@ -340,6 +367,40 @@ $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();