2 /************************************************************************
3 * MXChange v0.2.1 Start: 09/28/2003 *
4 * =============== Last change: 12/13/2004 *
6 * -------------------------------------------------------------------- *
7 * File : what-guestedit.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Edit guest's menu *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Menue fuer die Gaeste editieren *
12 * -------------------------------------------------------------------- *
14 * -------------------------------------------------------------------- *
15 * Copyright (c) 2003 - 2008 by Roland Haeder *
16 * For more information visit: http://www.mxchange.org *
18 * This program is free software; you can redistribute it and/or modify *
19 * it under the terms of the GNU General Public License as published by *
20 * the Free Software Foundation; either version 2 of the License, or *
21 * (at your option) any later version. *
23 * This program is distributed in the hope that it will be useful, *
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
26 * GNU General Public License for more details. *
28 * You should have received a copy of the GNU General Public License *
29 * along with this program; if not, write to the Free Software *
30 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
32 ************************************************************************/
34 // Some security stuff...
35 if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
36 $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
40 // Add description as navigation point
41 ADD_DESCR("admin", __FILE__);
43 // Do we edit/delete/change main menus or sub menus?
44 $AND = "(`what` = '' OR `what` IS NULL)"; $SUB = "";
46 if (REQUEST_ISSET_GET(('sub'))) {
47 $AND = sprintf("action='%s' AND `what` IS NOT NULL", REQUEST_GET(('sub')));
48 $SUB = REQUEST_GET(('sub'));
51 // Get count of (maybe) selected menu points
53 if (REQUEST_ISSET_POST(('sel'))) $chk = SELECTION_COUNT(REQUEST_POST('sel'));
55 // List all menu points and make them editable
56 if ((REQUEST_ISSET_POST(('edit'))) && ($chk > 0) && (!IS_DEMO()))
59 define('__SUB_VALUE', $SUB);
60 define('__CHK_VALUE', $chk);
62 $cnt = 0; $SW = 2; $OUT = "";
63 foreach (REQUEST_POST('sel') as $sel => $confirm)
68 $result = SQL_QUERY_ESC("SELECT title, action, what FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE ".$AND." AND id=%s LIMIT 1",
69 array(bigintval($sel)), __FILE__, __LINE__);
70 if (SQL_NUMROWS($result) == 1)
72 // Entry found so we load the stuff...
73 list($menu, $act, $wht) = SQL_FETCHROW($result);
74 SQL_FREERESULT($result);
78 'action' => ADMIN_MAKE_MENU_SELECTION("guest", "action", "sel_action[".$sel."]", $act),
79 'what' => ADMIN_MAKE_MENU_SELECTION("guest", "what", "sel_what[".$sel."]", $wht),
83 $OUT .= LOAD_TEMPLATE("admin_gmenu_edit_row", true, $DATA);
92 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
97 define('__MENU_ROWS', $OUT);
98 define('__CNT_VALUE', $cnt);
101 LOAD_TEMPLATE("admin_gmenu_edit_form");
102 } elseif ((REQUEST_ISSET_POST(('del'))) && (!IS_DEMO())) {
103 // Del menu entries with or without confirmation
104 define('__SUB_VALUE', $SUB);
105 define('__CHK_VALUE', $chk);
107 $cnt = 0; $OUT = ""; $SW = 2;
108 foreach (REQUEST_POST('sel') as $sel => $confirm) {
111 $result = SQL_QUERY_ESC("SELECT title FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE ".$AND." AND id=%s LIMIT 1",
112 array(bigintval($sel)), __FILE__, __LINE__);
113 if (SQL_NUMROWS($result) == 1) {
114 // Entry found so we load the stuff...
115 list($menu) = SQL_FETCHROW($result);
116 SQL_FREERESULT($result);
123 $OUT .= LOAD_TEMPLATE("admin_gmenu_delete_row", true, $DATA);
130 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
135 define('__MENU_ROWS', $OUT);
136 define('__CNT_VALUE', $cnt);
139 LOAD_TEMPLATE("admin_gmenu_delete");
140 } elseif ((IS_FORM_SENT()) && (!IS_DEMO())) {
141 // An action is done...
142 switch (REQUEST_POST('ok'))
144 case "edit": // Edit menu
145 foreach (REQUEST_POST('sel') as $sel => $menu) {
147 $sel = bigintval($sel);
150 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `title`='%s', `action`='%s', `what`='%s' WHERE ".$AND." AND id=%s LIMIT 1",
151 array($menu, REQUEST_POST('sel_action', $sel), REQUEST_POST('sel_what', $sel), $sel),__FILE__, __LINE__);
153 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('SETTINGS_SAVED'));
156 case "del": // Delete menu
157 foreach (REQUEST_POST('sel') as $sel => $menu) {
159 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE ".$AND." AND id=%s LIMIT 1",
160 array(bigintval($sel)), __FILE__, __LINE__);
162 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('SETTINGS_SAVED'));
165 case "status": // Change access levels
166 foreach (REQUEST_POST('sel') as $sel => $menu) {
168 $sel = bigintval($sel);
171 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `visible`='%s', `locked`='%s' WHERE ".$AND." AND id=%s LIMIT 1",
172 array(REQUEST_POST('visible', $sel), REQUEST_POST('locked', $sel), $sel), __FILE__, __LINE__);
174 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('SETTINGS_SAVED'));
177 default: // Unexpected action
178 define('__OK_VALUE', REQUEST_POST('ok'));
179 DEBUG_LOG(__FILE__, __LINE__, sprintf("Unsupported action %s detected.", REQUEST_POST('ok')));
180 LOAD_TEMPLATE("admin_menu_unknown_okay");
183 } elseif ((REQUEST_ISSET_POST(('status'))) && ($chk > 0) && (!IS_DEMO())) {
184 // Change status (visible / locked)
185 define('__SUB_VALUE', $SUB);
186 define('__CHK_VALUE', $chk);
189 $SW = 2; $cnt = 0; $OUT = "";
190 foreach (REQUEST_POST('sel') as $sel => $confirm)
195 $result = SQL_QUERY_ESC("SELECT title, visible, locked FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE ".$AND." AND id=%s LIMIT 1",
196 array(bigintval($sel)), __FILE__, __LINE__);
197 if (SQL_NUMROWS($result) == 1)
199 // Entry found so we load the stuff...
200 list($menu, $vis, $locked) = SQL_FETCHROW($result);
201 SQL_FREERESULT($result);
207 'visible' => ADD_SELECTION("yn", $vis , "visible", $sel),
208 'locked' => ADD_SELECTION("yn", $locked, "locked" , $sel),
212 $OUT .= LOAD_TEMPLATE("admin_menu_status_row", true, $content);
221 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
226 define('__CNT_VALUE', $cnt);
227 define('__MENU_ROWS', $OUT);
230 LOAD_TEMPLATE("admin_gmenu_status");
232 if ((REQUEST_ISSET_GET(('act'))) && (REQUEST_ISSET_GET(('tid'))) && (REQUEST_ISSET_GET(('fid')))) {
234 if (REQUEST_ISSET_GET(('w'))) {
235 // Sub menus selected
236 $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE `action`='%s' AND `sort`='%s' LIMIT 1",
237 array(REQUEST_GET('act'), bigintval(REQUEST_GET('tid'))), __FILE__, __LINE__);
238 list($tid) = SQL_FETCHROW($result);
239 SQL_FREERESULT($result);
240 $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE `action`='%s' AND `sort`='%s' LIMIT 1",
241 array(REQUEST_GET('act'), bigintval(REQUEST_GET('fid'))), __FILE__, __LINE__);
242 list($fid) = SQL_FETCHROW($result);
243 SQL_FREERESULT($result);
245 // Main menu selected
246 $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE (what='' OR `what` IS NULL) AND `sort`='%s' LIMIT 1",
247 array(bigintval(REQUEST_GET('tid'))), __FILE__, __LINE__);
248 list($tid) = SQL_FETCHROW($result);
249 SQL_FREERESULT($result);
250 $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE (what='' OR `what` IS NULL) AND `sort`='%s' LIMIT 1",
251 array(bigintval(REQUEST_GET('fid'))), __FILE__, __LINE__);
252 list($fid) = SQL_FETCHROW($result);
253 SQL_FREERESULT($result);
256 if ((!empty($tid)) && (!empty($fid))) {
258 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `sort`='%s' WHERE ".$AND." AND id=%s LIMIT 1",
259 array(bigintval(REQUEST_GET('tid')), bigintval($fid)), __FILE__, __LINE__);
260 SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `sort`='%s' WHERE ".$AND." AND id=%s LIMIT 1",
261 array(bigintval(REQUEST_GET('fid')), bigintval($tid)), __FILE__, __LINE__);
265 // By default list menus
267 // List only main menus
268 $result = SQL_QUERY("SELECT `id`, `action`, `what`, `title`, `sort` FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE (`what`='' OR `what` IS NULL) ORDER BY `sort` ASC", __FILE__, __LINE__);
271 $result = SQL_QUERY_ESC("SELECT `id`, `action`, `what`, `title`, `sort` FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE `action`='%s' AND `what` != '' AND `what` IS NOT NULL ORDER BY `sort` ASC",
272 array($SUB), __FILE__, __LINE__);
275 // Get number of menu entries
276 $max = SQL_NUMROWS($result);
279 define('__SUB_VALUE', $SUB);
286 while (list($id, $act, $wht, $title, $sort) = SQL_FETCHROW($result)) {
288 if (($sort == 0) || (($sort == 1) && (!empty($SUB)))) {
289 // Is highest position
290 $NAVI = "<a href=\"{!URL!}/modules.php?module=admin&what=guestedit&sub={!__SUB_VALUE!}&act=".$act."&w=".$wht."&tid=".($sort+1)."&fid=".$sort."\">{--LOWER--}</a>";
291 } elseif ($cnt == $max) {
292 // Is lowest position
293 $NAVI = "<a href=\"{!URL!}/modules.php?module=admin&what=guestedit&sub={!__SUB_VALUE!}&act=".$act."&w=".$wht."&tid=".($sort-1)."&fid=".$sort."\">{--HIGHER--}</a>";
294 } elseif ($sort > 0) {
295 // Anything else between highest and lowest
296 $NAVI = "<a href=\"{!URL!}/modules.php?module=admin&what=guestedit&sub={!__SUB_VALUE!}&act=".$act."&w=".$wht."&tid=".($sort-1)."&fid=".$sort."\">{--HIGHER--}</a>/<a href=\"{!URL!}/modules.php?module=admin&what=guestedit&sub={!__SUB_VALUE!}&act=".$act."&w=".$wht."&tid=".($sort+1)."&fid=".$sort."\">{--LOWER--}</a>";
299 if (empty($act)) $act = " ";
300 if (empty($wht)) $wht = " ";
301 if (empty($title)) $title = " ";
311 $OUT .= LOAD_TEMPLATE("admin_menu_overview_row", true, $content);
316 SQL_FREERESULT($result);
317 define('__MENU_ROWS', $OUT);
320 LOAD_TEMPLATE("admin_gmenu_edit");
322 // Menu entries are missing... (???)
323 LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_NO_MENUS_FOUND'));