xref: /template/ad-hominem/rest/pageinfo.php (revision bf9e4d5335dca0012523d061b21684755126272e)
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);