| 
						 | 
						- <?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']],
 -         'content' => [$content]
 -       );
 -       $json = true;
 -     } else {
 -       $json = false;
 - 
 -       $micropub_request = array(
 -         'h' => 'entry',
 -         'name' => [$params['name']],
 -         '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]));
 - });
 
 
  |