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