1*439bc143SSascha Leib<?php 2*439bc143SSascha Leib/** 3*439bc143SSascha Leib * DokuWiki Information about a page in JSON format 4*439bc143SSascha Leib * 5*439bc143SSascha Leib * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6*439bc143SSascha Leib * @author Sascha Leib <sascha@leib.be> 7*439bc143SSascha Leib */ 8*439bc143SSascha Leib 9*439bc143SSascha Leibheader('Content-Type: application/json'); 10*439bc143SSascha Leib 11*439bc143SSascha Leib//ini_set('display_errors', '1'); 12*439bc143SSascha Leib 13*439bc143SSascha Leib/* connect to DokuWiki: */ 14*439bc143SSascha Leibif(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching) 15*439bc143SSascha Leibif (!defined('DOKU_INC')) { define('DOKU_INC', __DIR__ . '/../../../../'); } 16*439bc143SSascha Leibrequire_once(DOKU_INC . 'inc/init.php'); 17*439bc143SSascha Leib 18*439bc143SSascha Leib/* get the output style (can be 'preview' or 'all') */ 19*439bc143SSascha Leib$style = strtolower($_GET['v']); 20*439bc143SSascha Leibif ($style !== 'preview') { $style = 'all'; } 21*439bc143SSascha Leib 22*439bc143SSascha Leib/* initialize the storage: */ 23*439bc143SSascha Leib$result = [ 24*439bc143SSascha Leib 'type' => 'error' 25*439bc143SSascha Leib]; 26*439bc143SSascha Leib 27*439bc143SSascha Leib/* find the page ID */ 28*439bc143SSascha Leib$id = $_GET['id']; 29*439bc143SSascha Leib 30*439bc143SSascha Leibif ($id !== null) { 31*439bc143SSascha Leib 32*439bc143SSascha Leib /* get all metadata; */ 33*439bc143SSascha Leib $meta = p_get_metadata($id); 34*439bc143SSascha Leib 35*439bc143SSascha Leib if ($meta['title'] !== null) { 36*439bc143SSascha Leib 37*439bc143SSascha Leib if ($style == 'preview') { 38*439bc143SSascha Leib $result['type'] = 'preview'; 39*439bc143SSascha Leib } else { 40*439bc143SSascha Leib $result['type'] = 'standard'; 41*439bc143SSascha Leib $result['pageid'] = $id; 42*439bc143SSascha Leib $result['lang'] = $conf['lang']; 43*439bc143SSascha Leib } 44*439bc143SSascha Leib 45*439bc143SSascha Leib $result['title'] = $meta['title']; 46*439bc143SSascha Leib 47*439bc143SSascha Leib /* The page URL(s) */ 48*439bc143SSascha Leib $url = wl($id); 49*439bc143SSascha Leib 50*439bc143SSascha Leib if ($style == 'preview') { 51*439bc143SSascha Leib $result['content_urls'] = [ 52*439bc143SSascha Leib 'desktop' => [ 53*439bc143SSascha Leib 'page' => wl($id) 54*439bc143SSascha Leib ] 55*439bc143SSascha Leib ]; 56*439bc143SSascha Leib } else { 57*439bc143SSascha Leib $url = $conf['baseurl'] . wl($id); 58*439bc143SSascha Leib $set = [ 59*439bc143SSascha Leib 'page' => $url, 60*439bc143SSascha Leib 'revisions' => $url . '?do=revisions', 61*439bc143SSascha Leib 'edit' => $url . '?do=edit' 62*439bc143SSascha Leib ]; 63*439bc143SSascha Leib $result['content_urls'] = [ 64*439bc143SSascha Leib 'desktop' => $set, 65*439bc143SSascha Leib 'mobile' => $set 66*439bc143SSascha Leib ]; 67*439bc143SSascha Leib } 68*439bc143SSascha Leib 69*439bc143SSascha Leib /* extract the first paragraph:*/ 70*439bc143SSascha Leib $parts = explode("\n", $meta['description']['abstract']); 71*439bc143SSascha Leib $result['extract'] = $parts[2]; 72*439bc143SSascha Leib $result['extract_html'] = '<p>'.$parts[2].'</p>'; 73*439bc143SSascha Leib 74*439bc143SSascha Leib } else { 75*439bc143SSascha Leib $result['extract'] = 'Error: page does not exist.'; 76*439bc143SSascha Leib $result['extract_html'] = '<p><strong>' . $result['extract'] . '</strong></p>'; 77*439bc143SSascha Leib } 78*439bc143SSascha Leib $result['conf'] = $conf; 79*439bc143SSascha Leib // $result['meta'] = $meta; 80*439bc143SSascha Leib} 81*439bc143SSascha Leib 82*439bc143SSascha Leib/* output the result: */ 83*439bc143SSascha Leibecho json_encode($result);