|                                                                                                                      |  | <?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]));});
 |