1439bc143SSascha Leib<?php 2439bc143SSascha Leib/** 3439bc143SSascha Leib * DokuWiki Information about a page in JSON format 4439bc143SSascha Leib * 5439bc143SSascha Leib * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6*bf9e4d53SSascha Leib * @author Sascha Leib <sascha (dot) leib (at) kolmio (dot) com> 7439bc143SSascha Leib */ 8439bc143SSascha Leib 9439bc143SSascha Leibheader('Content-Type: application/json'); 102bc6d755Ssaschaleibheader('Access-Control-Allow-Origin: *'); 11439bc143SSascha Leib 12*bf9e4d53SSascha Leib// Turn off all error reporting 13*bf9e4d53SSascha Leib//error_reporting(0); 14439bc143SSascha Leib 15439bc143SSascha Leib/* connect to DokuWiki: */ 16439bc143SSascha Leibif(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching) 17439bc143SSascha Leibif (!defined('DOKU_INC')) { define('DOKU_INC', __DIR__ . '/../../../../'); } 18439bc143SSascha Leibrequire_once(DOKU_INC . 'inc/init.php'); 19439bc143SSascha Leib 20439bc143SSascha Leib/* get the output style (can be 'preview' or 'all') */ 219a22688fSSascha Leib$style = ( array_key_exists('v', $_GET) ? strtolower($_GET['v']) : 'all' ); 22439bc143SSascha Leibif ($style !== 'preview') { $style = 'all'; } 23439bc143SSascha Leib 24439bc143SSascha Leib/* initialize the storage: */ 25439bc143SSascha Leib$result = [ 26439bc143SSascha Leib 'type' => 'error' 27439bc143SSascha Leib]; 28439bc143SSascha Leib 29439bc143SSascha Leib/* find the page ID */ 30439bc143SSascha Leib$id = $_GET['id']; 31439bc143SSascha Leib 32439bc143SSascha Leibif ($id !== null) { 33439bc143SSascha Leib 34439bc143SSascha Leib /* get all metadata; */ 35439bc143SSascha Leib $meta = p_get_metadata($id); 36439bc143SSascha Leib 379a22688fSSascha Leib if (array_key_exists('title', $meta) && $meta['title'] !== null) { 38439bc143SSascha Leib 39439bc143SSascha Leib if ($style == 'preview') { 40439bc143SSascha Leib $result['type'] = 'preview'; 41439bc143SSascha Leib } else { 42439bc143SSascha Leib $result['type'] = 'standard'; 43439bc143SSascha Leib $result['pageid'] = $id; 44439bc143SSascha Leib $result['lang'] = $conf['lang']; 45439bc143SSascha Leib } 46439bc143SSascha Leib 47439bc143SSascha Leib $result['title'] = $meta['title']; 48439bc143SSascha Leib 49439bc143SSascha Leib /* The page URL(s) */ 50439bc143SSascha Leib $url = wl($id); 51439bc143SSascha Leib 52439bc143SSascha Leib if ($style == 'preview') { 53439bc143SSascha Leib $result['content_urls'] = [ 54439bc143SSascha Leib 'desktop' => [ 55439bc143SSascha Leib 'page' => wl($id) 56439bc143SSascha Leib ] 57439bc143SSascha Leib ]; 58439bc143SSascha Leib } else { 59439bc143SSascha Leib $url = $conf['baseurl'] . wl($id); 60439bc143SSascha Leib $set = [ 61439bc143SSascha Leib 'page' => $url, 62439bc143SSascha Leib 'revisions' => $url . '?do=revisions', 63439bc143SSascha Leib 'edit' => $url . '?do=edit' 64439bc143SSascha Leib ]; 65439bc143SSascha Leib $result['content_urls'] = [ 66439bc143SSascha Leib 'desktop' => $set, 67439bc143SSascha Leib 'mobile' => $set 68439bc143SSascha Leib ]; 69439bc143SSascha Leib } 70439bc143SSascha Leib 71439bc143SSascha Leib /* extract the first paragraph:*/ 72439bc143SSascha Leib $parts = explode("\n", $meta['description']['abstract']); 739a22688fSSascha Leib $result['extract'] = ( count($parts) > 2 ? $parts[2] : '' ); 749a22688fSSascha Leib $result['extract_html'] = '<p>'. ( count($parts) > 2 ? $parts[2] : '' ) .'</p>'; 75439bc143SSascha Leib 76439bc143SSascha Leib } else { 77*bf9e4d53SSascha Leib /* page does not exist */ 78439bc143SSascha Leib $result['extract'] = 'Error: page does not exist.'; 79439bc143SSascha Leib $result['extract_html'] = '<p><strong>' . $result['extract'] . '</strong></p>'; 80439bc143SSascha Leib } 81439bc143SSascha Leib} 82439bc143SSascha Leib 83439bc143SSascha Leib/* output the result: */ 84439bc143SSascha Leibecho json_encode($result);