1<?php
2/**
3 * @package tikiwiki
4 */
5// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
6//
7// All Rights Reserved. See copyright.txt for details and a complete list of authors.
8// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
9// $Id$
10
11$section = 'wiki page';
12require_once('tiki-setup.php');
13$structlib = TikiLib::lib('struct');
14$auto_query_args = ['page_ref_id', 'page', 'find', 'pageName', 'structureId', 'offset', 'printpages', 'printstructures'];
15
16$access->check_feature('feature_wiki_multiprint');
17$access->check_permission('tiki_p_view');
18//get_strings tra('Multiple Print');
19if (! isset($cookietab)) {
20	$cookietab = '1';
21}
22if (! isset($_REQUEST['printpages']) && ! isset($_REQUEST['printstructures'])) {
23	$printpages = [];
24	$printstructures = [];
25	if (isset($_REQUEST["page_ref_id"])) {
26		$info = $structlib->s_get_page_info($_REQUEST['page_ref_id']);
27		if (! empty($info)) {
28			$printstructures[] = $_REQUEST['page_ref_id'];
29		}
30	} elseif (isset($_REQUEST["page"]) && $tikilib->page_exists($_REQUEST["page"])) {
31		$printpages[] = $_REQUEST["page"];
32	}
33} else {
34	$printpages = json_decode(urldecode($_REQUEST["printpages"]));
35	$printstructures = json_decode(urldecode($_REQUEST['printstructures']));
36}
37if (isset($_REQUEST["find"])) {
38	$find = $_REQUEST["find"];
39} else {
40	$find = '';
41}
42$smarty->assign('find', $find);
43if (isset($_REQUEST["addpage"])) {
44	if (! in_array($_REQUEST["pageName"], $printpages)) {
45		foreach ($_REQUEST['pageName'] as $value) {
46			$printpages[] = $value;
47		}
48	}
49	$cookietab = 2;
50}
51if (isset($_REQUEST["removepage"])) {
52	foreach ($_REQUEST['selectedpages'] as $value) {
53		unset($printpages[$value]);
54	}
55		$printpages = array_merge($printpages);
56	$cookietab = 2;
57}
58if (isset($_REQUEST["clearpages"])) {
59	$printpages = [];
60	$cookietab = 2;
61}
62if (isset($_REQUEST["clearstructures"])) {
63	$printstructures = [];
64}
65if (isset($_REQUEST['addstructurepages'])) {
66	$struct = $structlib->get_subtree($_REQUEST["structureId"]);
67	foreach ($struct as $struct_page) {
68		// Handle dummy last entry
69		if ($struct_page["pos"] != '' && $struct_page["last"] == 1) {
70			continue;
71		}
72		$printpages[] = $struct_page["pageName"];
73	}
74	$cookietab = 2;
75}
76if (isset($_REQUEST['addstructure'])) {
77	$info = $structlib->s_get_page_info($_REQUEST['structureId']);
78	if (! empty($info)) {
79		$printstructures[] = $_REQUEST['structureId'];
80	}
81}
82$smarty->assign_by_ref('printpages', $printpages);
83$smarty->assign_by_ref('printstructures', $printstructures);
84$form_printpages = urlencode(json_encode($printpages));
85$smarty->assign_by_ref('form_printpages', $form_printpages);
86$form_printstructures = urlencode(json_encode($printstructures));
87$smarty->assign_by_ref('form_printstructures', $form_printstructures);
88$pages = $tikilib->list_pageNames(0, -1, 'pageName_asc', $find);
89$smarty->assign_by_ref('pages', $pages["data"]);
90$structures = $structlib->list_structures(0, -1, 'pageName_asc', $find);
91$smarty->assign_by_ref('structures', $structures["data"]);
92foreach ($printstructures as $page_ref_id) {
93	foreach ($structures['data'] as $struct) {
94		if ($struct['page_ref_id'] == $page_ref_id) {
95			$printnamestructures[] = $struct['pageName'];
96			break;
97		}
98	}
99}
100$smarty->assign_by_ref('printnamestructures', $printnamestructures);
101
102include_once('tiki-section_options.php');
103ask_ticket('print-pages');
104// disallow robots to index page:
105$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
106$smarty->assign('pdf_export', ($prefs['print_pdf_from_url'] != 'none') ? 'y' : 'n');
107$smarty->assign('mid', 'tiki-print_pages.tpl');
108$smarty->display("tiki.tpl");
109