|
|
<?php
$app->get('/editor', function() use($app) { $user = require_login($app, false); $html = $app->render('editor.php', [ 'user' => $user ]); $app->response()->body($html); });
$app->post('/editor/publish', function() use($app) { if($user=require_login($app)) { $params = $app->request()->params();
$content = $params['body'];
// Clean up the HTML from the editor
$content = sanitize_editor_html($content);
if($user->micropub_optin_html_content) { $content = ['html' => $content];
$micropub_request = array( 'name' => [$params['name']], 'description' => [$params['description']], 'image' => [$params['image']], 'imagealt' => [$params['imagealt']], 'content' => [$content] ); $json = true; } else { $json = false;
$micropub_request = array( 'h' => 'entry', 'name' => [$params['name']], 'description' => [$params['description']], 'image' => [$params['image']], 'imagealt' => [$params['imagealt']], 'content' => [$content] ); }
if(array_key_exists('category', $params) && $params['category']) $micropub_request['category'] = $params['category'];
if(array_key_exists('slug', $params) && $params['slug']) $micropub_request[$user->micropub_slug_field] = $params['slug'];
if(array_key_exists('status', $params) && $params['status']) { if($params['status'] == 'draft') $micropub_request['post-status'] = $params['status']; }
if(array_key_exists('publish', $params) && $params['publish'] != 'now') { $micropub_request['published'] = $params['publish']; }
if($json) { $micropub_request = [ 'type' => ['h-entry'], 'properties' => $micropub_request ]; // Convert all values to arrays
foreach($micropub_request['properties'] as $k=>$v) { if(!is_array($v)) $micropub_request['properties'][$k] = [$v]; } }
$r = micropub_post_for_user($user, $micropub_request, null, $json);
$app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode([ 'location' => $r['location'], 'response' => trim(htmlspecialchars($r['response'])) ])); } });
$app->post('/editor/upload', function() use($app) { if($user=require_login($app)) { $fn = $_FILES['files']['tmp_name'][0]; $imageURL = false;
if($user->micropub_media_endpoint) { // If the user has a media endpoint, upload to that and return that URL
correct_photo_rotation($fn); $r = micropub_media_post_for_user($user, $fn); if(!empty($r['location'])) { $imageURL = $r['location']; } } if(!$imageURL) { // Otherwise, fake a file uploader by echo'ing back the data URI
$imageData = base64_encode(file_get_contents($fn)); $imageURL = 'data:'.mime_content_type($fn).';base64,'.$imageData; } $app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode([ 'files' => [ ['url'=>$imageURL] ] ])); } });
$app->post('/editor/parse-date', function() use($app) { $date = false; $params = $app->request()->params(); if(isset($params['date'])) { if($params['date'] == 'now') { $date = 'now'; } else { try { // Check if the provided date has a timezone offset
$has_timezone = preg_match('/[-+]\d\d:?\d\d$/', $params['date']);
if(!$has_timezone && $params['tzoffset']) { $s = (-60) * $params['tzoffset']; $h = $params['tzoffset'] / (-60); $tz = new DateTimeZone($h); $d = new DateTime($params['date'], $tz); } else { $d = new DateTime($params['date']); } $date = $d->format('c'); } catch(Exception $e) { } } }
$app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode(['date'=>$date])); });
$app->post('/editor/delete-file', function() use($app) { $app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode(['result'=>'deleted'])); });
$app->get('/editor/oembed', function() use($app) { $url = 'http://medium.iframe.ly/api/oembed?iframe=1&url='.urlencode($app->request()->params()['url']); $json = file_get_contents($url); $app->response()['Content-type'] = 'application/json'; $app->response()->body($json); });
$app->post('/editor/test-login', function() use($app) { $logged_in = array_key_exists('user_id', $_SESSION); $app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode(['logged_in'=>$logged_in])); });
|