summaryrefslogtreecommitdiff
path: root/controllers/controllers.php
diff options
context:
space:
mode:
authorAaron Parecki <aaron@parecki.com>2015-07-25 03:55:00 -0700
committerAaron Parecki <aaron@parecki.com>2015-07-25 03:55:00 -0700
commit35bd5a9e68b50bf57963ea626a3fbf7432b37c93 (patch)
treecc5e9b506494eaf4c59a1200e4bcea875acba46a /controllers/controllers.php
parent60830007641c985c11c8ac8f609aab735dd84a96 (diff)
parentafa182bc120371a15b28227ce712cba501a78d05 (diff)
Merge branch 'master' of github.com:aaronpk/IndiePost
Diffstat (limited to 'controllers/controllers.php')
-rw-r--r--controllers/controllers.php81
1 files changed, 73 insertions, 8 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php
index b444676..72ac2b8 100644
--- a/controllers/controllers.php
+++ b/controllers/controllers.php
@@ -72,7 +72,8 @@ $app->get('/new', function() use($app) {
'response_date' => $user->last_micropub_response_date,
'syndication_targets' => json_decode($user->syndication_targets, true),
'test_response' => $test_response,
- 'location_enabled' => $user->location_enabled
+ 'location_enabled' => $user->location_enabled,
+ 'authorizing' => false
));
$app->response()->body($html);
}
@@ -103,7 +104,8 @@ $app->get('/bookmark', function() use($app) {
'bookmark_content' => $content,
'bookmark_tags' => $tags,
'token' => generate_login_token(),
- 'syndication_targets' => json_decode($user->syndication_targets, true)
+ 'syndication_targets' => json_decode($user->syndication_targets, true),
+ 'authorizing' => false
));
$app->response()->body($html);
}
@@ -121,7 +123,21 @@ $app->get('/favorite', function() use($app) {
$html = render('new-favorite', array(
'title' => 'New Favorite',
'url' => $url,
- 'token' => generate_login_token()
+ 'token' => generate_login_token(),
+ 'authorizing' => false
+ ));
+ $app->response()->body($html);
+ }
+});
+
+$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);
}
@@ -139,7 +155,8 @@ $app->get('/repost', function() use($app) {
$html = render('new-repost', array(
'title' => 'New Repost',
'url' => $url,
- 'token' => generate_login_token()
+ 'token' => generate_login_token(),
+ 'authorizing' => false
));
$app->response()->body($html);
}
@@ -160,17 +177,17 @@ $app->get('/creating-a-token-endpoint', function() use($app) {
$app->redirect('http://indiewebcamp.com/token-endpoint', 301);
});
$app->get('/creating-a-micropub-endpoint', function() use($app) {
- $html = render('creating-a-micropub-endpoint', array('title' => 'Creating a Micropub Endpoint'));
+ $html = render('creating-a-micropub-endpoint', array('title' => 'Creating a Micropub Endpoint', 'authorizing' => false));
$app->response()->body($html);
});
$app->get('/docs', function() use($app) {
- $html = render('docs', array('title' => 'Documentation'));
+ $html = render('docs', array('title' => 'Documentation', 'authorizing' => false));
$app->response()->body($html);
});
$app->get('/privacy', function() use($app) {
- $html = render('privacy', array('title' => 'Quill Privacy Policy'));
+ $html = render('privacy', array('title' => 'Quill Privacy Policy', 'authorizing' => false));
$app->response()->body($html);
});
@@ -217,7 +234,7 @@ $app->get('/add-to-home', function() use($app) {
$app->get('/settings', function() use($app) {
if($user=require_login($app)) {
- $html = render('settings', array('title' => 'Settings', 'include_facebook' => true));
+ $html = render('settings', array('title' => 'Settings', 'include_facebook' => true, 'authorizing' => false));
$app->response()->body($html);
}
});
@@ -282,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
@@ -336,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();