1
|
<?php
|
2
|
/**
|
3
|
*
|
4
|
* @category admin
|
5
|
* @package pages
|
6
|
* @author WebsiteBaker Project
|
7
|
* @copyright Ryan Djurovich
|
8
|
* @copyright WebsiteBaker Org. e.V.
|
9
|
* @link http://websitebaker.org/
|
10
|
* @license http://www.gnu.org/licenses/gpl.html
|
11
|
* @platform WebsiteBaker 2.8.3
|
12
|
* @requirements PHP 5.3.6 and higher
|
13
|
* @version $Id: settings-x.php 2 2017-07-02 15:14:29Z Manuela $
|
14
|
* @filesource $HeadURL: svn://isteam.dynxs.de/wb/2.10.x/branches/main/admin/pages/settings-x.php $
|
15
|
* @lastmodified $Date: 2017-07-02 17:14:29 +0200 (Sun, 02 Jul 2017) $
|
16
|
*
|
17
|
*/
|
18
|
|
19
|
// Create new admin object
|
20
|
if (!defined('WB_PATH')) { require dirname(dirname((__DIR__))).'/config.php'; }
|
21
|
if (!class_exists('admin', false)) { require WB_PATH.'/framework/class.admin.php'; }
|
22
|
$admin = new admin('Pages', 'pages_settings');
|
23
|
// Include the WB functions file
|
24
|
include __DIR__.'/settings_helper.php';
|
25
|
// Get page id from HTML request and sanitize it
|
26
|
if (!($page_id = intval(@$_GET['page_id']?:0))) {
|
27
|
$admin->print_header();
|
28
|
$admin->print_error($MESSAGE['PAGES_NOT_FOUND']);
|
29
|
}
|
30
|
// load requested page
|
31
|
$aPage = null;
|
32
|
$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
|
33
|
if (($oResult = $database->query($sql))) {
|
34
|
$aPage = $oResult->fetchRow(MSQL_ASSOC);
|
35
|
}
|
36
|
if (!$aPage) {
|
37
|
// throw error if no valid page received
|
38
|
$admin->print_header();
|
39
|
$admin->print_error($MESSAGE['PAGES_NOT_FOUND']);
|
40
|
}
|
41
|
// check if current user has admin rights to that page
|
42
|
if (!($admin->ami_group_member($aPage['admin_groups']) ||
|
43
|
$admin->is_group_match($aPage['admin_users'], $admin->get_user_id()))
|
44
|
) {
|
45
|
$admin->print_error($MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS']);
|
46
|
}
|
47
|
// check if user has owner rights for this page
|
48
|
$bHasOwnerRight = ($admin->get_user_id() == $aPage['page_owner'] || $admin->get_user_id() == 1);
|
49
|
// restore SEO title from page-link
|
50
|
$aPage['seo_title'] = basename($aPage['link']);
|
51
|
// add user data array to page
|
52
|
$aPage['modified_by'] = $admin->get_user_details($aPage['modified_by']);
|
53
|
|
54
|
// prepare template data -------------------------------------------------------
|
55
|
$aTmplDataGlobal = array();
|
56
|
$aTmplData = array();
|
57
|
$aTmplDataGlobal['page'] = $aPage;
|
58
|
$aTmplDataGlobal['user'] = $admin->get_user_details($admin->get_user_id());
|
59
|
$aTmplDataGlobal['user']['owner'] = $bHasOwnerRight;
|
60
|
|
61
|
// get sorted group lists ------------------------------------------------------
|
62
|
$aAdmins = explode(',', $aPage['admin_groups']);
|
63
|
$aViewers = explode(',', $aPage['viewing_groups']);
|
64
|
$aList = array();
|
65
|
$sql = 'SELECT `group_id` `id`, `name` '
|
66
|
. 'FROM `'.TABLE_PREFIX.'groups` '
|
67
|
. 'ORDER BY `name`';
|
68
|
$oRecords = $database->query($sql);
|
69
|
while ($aRecord = $oRecords->fetchRow(MYSQLI_ASSOC)) {
|
70
|
// if group is set as admin to this page
|
71
|
$aRecord['admin'] = in_array($aRecord['id'], $aAdmins);
|
72
|
// if group ist set as viewer to this page
|
73
|
$aRecord['viewer'] = in_array($aRecord['id'], $aViewers);
|
74
|
$aList[] = $aRecord;
|
75
|
}
|
76
|
// sort groups by admins
|
77
|
$aTmplData['GroupListAdmin'] = SettingsHelper::doMultiSort($aList, 'admin', 'name');
|
78
|
// sort groups by viewers
|
79
|
$aTmplData['GroupListViewer'] = SettingsHelper::doMultiSort($aList, 'viewer', 'name');
|
80
|
// get sorted user lists -------------------------------------------------------
|
81
|
$aAdmins = explode(',', $aPage['admin_users']);
|
82
|
$aViewers = explode(',', $aPage['viewing_users']);
|
83
|
$aList = array();
|
84
|
$sql = 'SELECT `user_id` `id`, `display_name` `name` '
|
85
|
. 'FROM `'.TABLE_PREFIX.'users` '
|
86
|
. 'ORDER BY `name`';
|
87
|
$oRecords = $database->query($sql);
|
88
|
while ($aRecord = $oRecords->fetchRow(MYSQLI_ASSOC)) {
|
89
|
// if user is set as admin to this page
|
90
|
$aRecord['admin'] = in_array($aRecord['id'], $aAdmins);
|
91
|
// if user is set as viewer to this page
|
92
|
$aRecord['viewer'] = in_array($aRecord['id'], $aViewers);
|
93
|
$aList[] = $aRecord;
|
94
|
}
|
95
|
// sort groups by admins
|
96
|
$aTmplData['UserListAdmin'] = SettingsHelper::doMultiSort($aList, 'admin', 'name');
|
97
|
// sort groups by viewers
|
98
|
$aTmplData['UserListViewer'] = SettingsHelper::doMultiSort($aList, 'viewer', 'name');
|
99
|
// clean up memory
|
100
|
unset($aAdmins, $aViewers, $oRecords, $aRecord, $aList, $doMultiSort);
|
101
|
// add list of possible parent pages -------------------------------------------
|
102
|
$aParentPages = SettingsHelper::getParentPagesList($aTmplDataGlobal['page']['page_id'], $iCurrentPage, $admin, $database);
|
103
|
// check for permission to add a level-0 page
|
104
|
if ($admin->get_permission('pages_add_l0') || $results_array['level'] == 0) {
|
105
|
// add the option to choose level-0
|
106
|
$aPage['id'] = 0;
|
107
|
$aPage['title'] = $aLang['TEXT_NONE'];
|
108
|
$aPage['language'] = '';
|
109
|
$aPage['active'] = !$results_array['parent'];
|
110
|
array_unshift($aParentPages, $aPage);
|
111
|
}
|
112
|
$aTmplData['ParentPages'] = $aParentPages;
|
113
|
// add list of linking targets -------------------------------------------------
|
114
|
$aTmplData['LinkTargets'] = array(
|
115
|
array('target' => '_top', 'caption' => $TEXT['TOP_FRAME']),
|
116
|
array('target' => '_self', 'caption' => $TEXT['SAME_WINDOW']),
|
117
|
array('target' => '_blank', 'caption' => $TEXT['NEW_WINDOW'])
|
118
|
);
|
119
|
// build list of available templates -------------------------------------------
|
120
|
$aTemplatesList = array();
|
121
|
$sql = 'SELECT `directory`, `name`, `version` FROM `'.TABLE_PREFIX.'addons` '
|
122
|
. 'WHERE `function` = \'template\' '
|
123
|
. 'ORDER BY `name`';
|
124
|
if (($oAddons = $database->query($sql))) {
|
125
|
while (($aAddon = $oAddon->fetchRow(MYSQLI_ASSOC))) {
|
126
|
$aTemplatesList[] = $aAddon;
|
127
|
}
|
128
|
}
|
129
|
if (!$aTemplatesList) {
|
130
|
$aTemplatesList[] = array('directory'=>'', 'name'=>'System Default', 'version'=>'');
|
131
|
}
|
132
|
$aTmplData['Templates'] = $aTemplatesList;
|
133
|
// get available menues from active template -----------------------------------
|
134
|
$sTpl = WB_PATH.'/templates/'
|
135
|
.($aPage['template'] ?: DEFAULT_TEMPLATE)
|
136
|
.'/info.php';
|
137
|
$aTemplateInfo = getContentFromInfoPhp(
|
138
|
WB_PATH.'/templates/'.($aPage['template'] ?: DEFAULT_TEMPLATE).'/info.php'
|
139
|
);
|
140
|
if (!isset($aTemplateInfo['menu'])) {
|
141
|
$aTemplateInfo['menu'] = array(1 => 'Main');
|
142
|
}
|
143
|
$aTmplData['Menues'] = $aTemplateInfo['menu'];
|
144
|
// get list of available languages ---------------------------------------------
|
145
|
$sql = 'SELECT `directory`, `name`, `version` FROM `'.TABLE_PREFIX.'addons` '
|
146
|
. 'WHERE `type` = \'language\' '
|
147
|
. 'ORDER BY `name`';
|
148
|
if (($oAddons = $database->query($sql))) {
|
149
|
while (($aAddon = $oAddon->fetchRow(MYSQLI_ASSOC))) {
|
150
|
$aLanguageList[] = $aAddon;
|
151
|
}
|
152
|
}
|
153
|
$aTmplData['Languages'] = $aLanguageList;
|
154
|
|
155
|
// Print admin footer
|
156
|
$admin->print_footer();
|