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
11require_once('tiki-setup.php');
12$themecontrollib = TikiLib::lib('themecontrol');
13$categlib = TikiLib::lib('categ');
14$filegallib = TikiLib::lib('filegal');
15$themelib = TikiLib::lib('theme');
16include_once('lib/htmlpages/htmlpageslib.php');
17/**
18 * @param $arr
19 * @param $id
20 * @param $name
21 */
22function correct_array(&$arr, $id, $name)
23{
24	$temp_max = count($arr);
25	for ($i = 0; $i < $temp_max; $i++) {
26		$arr[$i]['objId'] = $arr[$i][$id];
27		$arr[$i]['objName'] = $arr[$i][$name];
28	}
29}
30$access->check_feature('feature_theme_control');
31$access->check_permission('tiki_p_admin');
32
33$auto_query_args = ['find', 'sort_mode', 'offset', 'theme', 'theme_option', 'type', 'objdata'];
34$smarty->assign('a_object', isset($_REQUEST['objdata']) ? $_REQUEST['objdata'] : '');
35
36$themes = $themelib->list_themes_and_options();
37$smarty->assign('themes', $themes);
38
39$find_objects = '';
40$objectypes = ['image gallery', 'file gallery', 'forum', 'blog', 'wiki page', 'html page', 'faq', 'quiz', 'article'];
41$smarty->assign('objectypes', $objectypes);
42if (empty($_REQUEST['type'])) {
43	$_REQUEST['type'] = 'wiki page';
44}
45$smarty->assign('type', $_REQUEST['type']);
46switch ($_REQUEST['type']) {
47	case 'image gallery':
48		$objects = $tikilib->list_galleries(0, -1, 'name_desc', 'admin', $find_objects);
49		$smarty->assign_by_ref('objects', $objects["data"]);
50		$objects = $objects['data'];
51		correct_array($objects, 'galleryId', 'name');
52		break;
53
54	case 'file gallery':
55		$objects = $filegallib->list_file_galleries(0, -1, 'name_desc', 'admin', $find_objects, $prefs['fgal_root_id']);
56		$smarty->assign_by_ref('objects', $objects["data"]);
57		$objects = $objects['data'];
58		correct_array($objects, 'galleryId', 'name');
59		break;
60
61	case 'forum':
62		$objects = TikiLib::lib('comments')->list_forums(0, -1, 'name_asc', $find_objects);
63		$smarty->assign_by_ref('objects', $objects["data"]);
64		$objects = $objects['data'];
65		correct_array($objects, 'forumId', 'name');
66		break;
67
68	case 'blog':
69		$bloglib = TikiLib::lib('blog');
70		$objects = $bloglib->list_blogs(0, -1, 'title_asc', $find_objects);
71		$smarty->assign_by_ref('objects', $objects["data"]);
72		$objects = $objects['data'];
73		correct_array($objects, 'blogId', 'title');
74		break;
75
76	case 'wiki page':
77		$objects = $tikilib->list_pageNames(0, -1, 'pageName_asc', $find_objects);
78		$smarty->assign_by_ref('objects', $objects["data"]);
79		$objects = $objects['data'];
80		correct_array($objects, 'pageName', 'pageName');
81		break;
82
83	case 'html page':
84		$objects = $htmlpageslib->list_html_pages(0, -1, 'pageName_asc', $find_objects);
85		$smarty->assign_by_ref('objects', $objects["data"]);
86		$objects = $objects['data'];
87		correct_array($objects, 'pageName', 'pageName');
88		break;
89
90	case 'faq':
91		$faqlib = TikiLib::lib('faq');
92		$objects = $faqlib->list_faqs(0, -1, 'title_asc', $find_objects);
93		$smarty->assign_by_ref('objects', $objects["data"]);
94		$objects = $objects['data'];
95		correct_array($objects, 'faqId', 'title');
96		break;
97
98	case 'quiz':
99		$objects = TikiLib::lib('quiz')->list_quizzes(0, -1, 'name_asc', $find_objects);
100		$smarty->assign_by_ref('objects', $objects["data"]);
101		$objects = $objects['data'];
102		correct_array($objects, 'quizId', 'name');
103		break;
104
105	case 'article':
106		$artlib = TikiLib::lib('art');
107		$objects = $artlib->list_articles(0, -1, 'title_asc', $find_objects, 0, 0, $user);
108		$smarty->assign_by_ref('objects', $objects["data"]);
109		$objects = $objects['data'];
110		correct_array($objects, 'articleId', 'title');
111		break;
112
113	default:
114		break;
115}
116$smarty->assign_by_ref('objects', $objects);
117if (isset($_REQUEST['assign'])) {
118	check_ticket('tc-objects');
119	list($id, $name) = explode('|', $_REQUEST['objdata']);
120	$themecontrollib->tc_assign_object($id, $_REQUEST['theme'], $_REQUEST['type'], $name);
121}
122if (isset($_REQUEST["delete"])) {
123	check_ticket('tc-objects');
124	foreach (array_keys($_REQUEST["obj"]) as $obj) {
125		$themecontrollib->tc_remove_object($obj);
126	}
127}
128if (! isset($_REQUEST["sort_mode"])) {
129	$sort_mode = 'name_asc';
130} else {
131	$sort_mode = $_REQUEST["sort_mode"];
132}
133if (! isset($_REQUEST["offset"])) {
134	$offset = 0;
135} else {
136	$offset = $_REQUEST["offset"];
137}
138$smarty->assign_by_ref('offset', $offset);
139if (isset($_REQUEST["find"])) {
140	$find = $_REQUEST["find"];
141} else {
142	$find = '';
143}
144$smarty->assign('find', $find);
145$smarty->assign_by_ref('sort_mode', $sort_mode);
146$channels = $themecontrollib->tc_list_objects(null, $offset, $maxRecords, $sort_mode, $find);
147$smarty->assign_by_ref('cant_pages', $channels["cant"]);
148$smarty->assign_by_ref('channels', $channels["data"]);
149ask_ticket('tc-objects');
150// Display the template
151$smarty->assign('mid', 'tiki-theme_control_objects.tpl');
152$smarty->display("tiki.tpl");
153