Queries improved
[mailer.git] / inc / modules / admin / what-guestedit.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 09/28/2003 *
4  * ===============                              Last change: 12/13/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : what-guestedit.php                               *
8  * -------------------------------------------------------------------- *
9  * Short description : Edit guest's menu                                *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Menue fuer die Gaeste editieren                  *
12  * -------------------------------------------------------------------- *
13  *                                                                      *
14  * -------------------------------------------------------------------- *
15  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
16  * For more information visit: http://www.mxchange.org                  *
17  *                                                                      *
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.                                  *
22  *                                                                      *
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.                         *
27  *                                                                      *
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,               *
31  * MA  02110-1301  USA                                                  *
32  ************************************************************************/
33
34 // Some security stuff...
35 if ((ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) || (!IS_ADMIN()))
36 {
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
38         require($INC);
39 }
40 // Add description as navigation point
41 ADD_DESCR("admin", basename(__FILE__));
42
43 // Do we edit/delete/change main menus or sub menus?
44 $AND = "what = ''"; $SUB = "";
45
46 if (!empty($_GET['sub']))
47 {
48         $AND = sprintf("action='%s'", SQL_ESCAPE($_GET['sub']));
49         $SUB = SQL_ESCAPE($_GET['sub']);
50 }
51
52 // Get count of (maybe) selected menu points
53 $chk = 0;
54 if (!empty($_POST['sel'])) $chk = SELECTION_COUNT($_POST['sel']);
55
56 // List all menu points and make them editable
57 if ((isset($_POST['edit'])) && ($chk > 0) && (!IS_DEMO()))
58 {
59         // Edit menu entries
60         define('__SUB_VALUE', $SUB);
61         define('__CHK_VALUE', $chk);
62
63         $cnt = 0; $SW = 2; $OUT = "";
64         foreach ($_POST['sel'] as $sel => $confirm)
65         {
66                 if ($confirm == 1)
67                 {
68                         $cnt++;
69                         $query = SQL_QUERY_ESC("SELECT title, action, what FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%s LIMIT 1",
70                          array(bigintval($sel)), __FILE__, __LINE__);
71                         if (SQL_NUMROWS($query) == 1)
72                         {
73                                 // Entry found so we load the stuff...
74                                 list($menu, $act, $wht) = SQL_FETCHROW($query);
75                                 SQL_FREERESULT($result);
76                                 $DATA = array(
77                                         'cnt'    => $cnt,
78                                         'sel'    => $sel,
79                                         'action' => ADMIN_MAKE_MENU_SELECTION("guest", "action", "sel_action[".$sel."]", $act),
80                                         'what'   => ADMIN_MAKE_MENU_SELECTION("guest", "what", "sel_what[".$sel."]", $wht),
81                                         'menu'   => $menu,
82                                         'sw'     => $SW,
83                                 );
84                                 $OUT .= LOAD_TEMPLATE("admin_gmenu_edit_row", true, $DATA);
85                         }
86                          else
87                         {
88                                 // Entry not found?
89                                 $content = array(
90                                         'sw'  => $SW,
91                                         'sel' => $sel
92                                 );
93                                 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
94                         }
95                         $SW = 3 - $SW;
96                 }
97         }
98         define('__MENU_ROWS', $OUT);
99         define('__CNT_VALUE', $cnt);
100
101         // Load template
102         LOAD_TEMPLATE("admin_gmenu_edit_form");
103 }
104  elseif ((isset($_POST['del'])) && (!IS_DEMO()))
105 {
106         // Del menu entries with or without confirmation
107         define('__SUB_VALUE', $SUB);
108         define('__CHK_VALUE', $chk);
109
110         $cnt = 0; $OUT = ""; $SW = 2;
111         foreach ($_POST['sel'] as $sel => $confirm)
112         {
113                 if ($confirm == 1)
114                 {
115                         $cnt++;
116                         $query = SQL_QUERY_ESC("SELECT title FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%s LIMIT 1",
117                          array(bigintval($sel)), __FILE__, __LINE__);
118                         if (SQL_NUMROWS($query) == 1)
119                         {
120                                 // Entry found so we load the stuff...
121                                 list($menu) = SQL_FETCHROW($query);
122                                 SQL_FREERESULT($result);
123                                 $DATA = array(
124                                         'cnt'  => $cnt,
125                                         'menu' => $menu,
126                                         'sel'  => $sel,
127                                         'sw'   => $SW,
128                                 );
129                                 $OUT .= LOAD_TEMPLATE("admin_gmenu_delete_row", true, $DATA);
130                         }
131                          else
132                         {
133                                 // Entry not found?
134                                 $content = array(
135                                         'sw'  => $SW,
136                                         'sel' => $sel
137                                 );
138                                 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
139                         }
140                         $SW = 3 - $SW;
141                 }
142         }
143         define('__MENU_ROWS', $OUT);
144         define('__CNT_VALUE', $cnt);
145
146         // Load template
147         LOAD_TEMPLATE("admin_gmenu_delete");
148 }
149  elseif ((isset($_POST['ok'])) && (!IS_DEMO()))
150 {
151         // An action is done...
152         switch ($_POST['ok'])
153         {
154         case "edit": // Edit menu
155                 foreach ($_POST['sel'] as $sel => $menu)
156                 {
157                         // Secure selector
158                         $sel = bigintval($sel);
159
160                         // Update entry
161                         $query = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET title='%s', action='%s', what='%s' WHERE ".$AND." AND id=%s LIMIT 1",
162                          array($menu, $_POST['sel_action'][$sel], $_POST['sel_what'][$sel], $sel),__FILE__, __LINE__);
163                 }
164                 LOAD_TEMPLATE("admin_data_saved");
165                 break;
166
167         case "del": // Delete menu
168                 foreach ($_POST['sel'] as $sel => $menu)
169                 {
170                         // Delete enty
171                         $query = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%s LIMIT 1",
172                          array(bigintval($sel)), __FILE__, __LINE__);
173                 }
174                 LOAD_TEMPLATE("admin_data_saved");
175                 break;
176
177         case "status": // Change access levels
178                 foreach ($_POST['sel'] as $sel => $menu)
179                 {
180                         // Secure selector
181                         $sel = bigintval($sel);
182
183                         // Update entry
184                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET visible='%s', locked='%s' WHERE ".$AND." AND id=%s LIMIT 1",
185                          array($_POST['visible'][$sel], $_POST['locked'][$sel], $sel), __FILE__, __LINE__);
186                 }
187                 LOAD_TEMPLATE("admin_data_saved");
188                 break;
189
190         default: // Unexpected action
191                 define('__OK_VALUE', $_POST['ok']);
192                 LOAD_TEMPLATE("admin_menu_unknown_okay");
193                 break;
194         }
195 }
196  elseif ((isset($_POST['status'])) && ($chk > 0) && (!IS_DEMO()))
197 {
198         // Change status (visible / locked)
199         define('__SUB_VALUE', $SUB);
200         define('__CHK_VALUE', $chk);
201
202         // Load template
203         $SW = 2; $cnt = 0; $OUT = "";
204         foreach ($_POST['sel'] as $sel => $confirm)
205         {
206                 if ($confirm == 1)
207                 {
208                         $cnt++;
209                         $result = SQL_QUERY_ESC("SELECT title, visible, locked FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%s LIMIT 1",
210                          array(bigintval($sel)), __FILE__, __LINE__);
211                         if (SQL_NUMROWS($result) == 1)
212                         {
213                                 // Entry found so we load the stuff...
214                                 list($menu, $vis, $locked) = SQL_FETCHROW($result);
215                                 SQL_FREERESULT($result);
216                                 $content = array(
217                                         'cnt'     => $cnt,
218                                         'menu'    => $menu,
219                                         'sel'     => $sel,
220                                         'sw'      => $SW,
221                                         'visible' => ADD_SELECTION("yn", $vis   , "visible", $sel),
222                                         'locked'  => ADD_SELECTION("yn", $locked, "locked" , $sel),
223                                 );
224
225                                 // Load template
226                                 $OUT .= LOAD_TEMPLATE("admin_menu_status_row", true, $content);
227                         }
228                          else
229                         {
230                                 // Entry not found?
231                                 $content = array(
232                                         'sw'  => $SW,
233                                         'sel' => $sel
234                                 );
235                                 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
236                         }
237                         $SW = 3 - $SW;
238                 }
239         }
240         define('__CNT_VALUE', $cnt);
241         define('__MENU_ROWS', $OUT);
242
243         // Load template
244         LOAD_TEMPLATE("admin_gmenu_status");
245 }
246  else
247 {
248         if ((!empty($_GET['act'])) && (!empty($_GET['tid'])) && (!empty($_GET['fid'])))
249         {
250                 // Get IDs
251                 if (!empty($_GET['w']))
252                 {
253                         // Sub menus selected
254                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE action='%s' AND sort='%s' LIMIT 1",
255                          array($_GET['act'], bigintval($_GET['tid'])), __FILE__, __LINE__);
256                         list($tid) = SQL_FETCHROW($result);
257                         SQL_FREERESULT($result);
258                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE action='%s' AND sort='%s' LIMIT 1",
259                          array($_GET['act'], bigintval($_GET['fid'])), __FILE__, __LINE__);
260                         list($fid) = SQL_FETCHROW($result);
261                         SQL_FREERESULT($result);
262                 }
263                  else
264                 {
265                         // Main menu selected
266                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE (what='' OR what IS NULL) AND sort='%s' LIMIT 1",
267                          array(bigintval($_GET['tid'])), __FILE__, __LINE__);
268                         list($tid) = SQL_FETCHROW($result);
269                         SQL_FREERESULT($result);
270                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE (what='' OR what IS NULL) AND sort='%s' LIMIT 1",
271                          array(bigintval($_GET['fid'])), __FILE__, __LINE__);
272                         list($fid) = SQL_FETCHROW($result);
273                         SQL_FREERESULT($result);
274                 }
275
276                 if ((!empty($tid)) && (!empty($fid)))
277                 {
278                         // Sort menu
279                         $result_sort = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET sort='%s' WHERE ".$AND." AND id=%s LIMIT 1",
280                          array(bigintval($_GET['tid']), bigintval($fid)), __FILE__, __LINE__);
281                         $result_sort = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET sort='%s' WHERE ".$AND." AND id=%s LIMIT 1",
282                          array(bigintval($_GET['fid']), bigintval($tid)), __FILE__, __LINE__);
283                 }
284         }
285
286         // By default list menus
287         if (empty($SUB))
288         {
289                 // List only main menus
290                 $query = 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__);
291         }
292          else
293         {
294                 // List sub menus
295                 $query = 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",
296                  array($SUB), __FILE__, __LINE__);
297         }
298
299         // Get number of menu entries
300         $max = SQL_NUMROWS($query);
301         if ($max > 0)
302         {
303                 // Some entties does exist!
304                 if (!empty($SUB))
305                 {
306                         // Set sub value
307                         define('__SUB_VALUE', $SUB);
308                 }
309                  else
310                 {
311                         // No sub menu selected
312                         define('__SUB_VALUE', "");
313                 }
314
315                 $SW = 2; $cnt = 0; $OUT = "";
316                 while (list($id, $act, $wht, $title, $sort) = SQL_FETCHROW($query))
317                 {
318                         $cnt++;
319                         if (($sort == 0) || (($sort == 1) && (!empty($SUB))))
320                         {
321                                 // Is highest position
322                                 $NAVI = "<A href=\"".URL."/modules.php?module=admin&amp;what=guestedit&amp;sub=".__SUB_VALUE."&amp;act=".$act."&amp;w=".$wht."&amp;tid=".($sort+1)."&amp;fid=".$sort."\">".LOWER."</A>";
323                         }
324                          elseif ($cnt == $max)
325                         {
326                                 // Is lowest position
327                                 $NAVI = "<A href=\"".URL."/modules.php?module=admin&amp;what=guestedit&amp;sub=".__SUB_VALUE."&amp;act=".$act."&amp;w=".$wht."&amp;tid=".($sort-1)."&amp;fid=".$sort."\">".HIGHER."</A>";
328                         }
329                          elseif ($sort > 0)
330                         {
331                                 // Anything else between highest and lowest
332                                 $NAVI = "<A href=\"".URL."/modules.php?module=admin&amp;what=guestedit&amp;sub=".__SUB_VALUE."&amp;act=".$act."&amp;w=".$wht."&amp;tid=".($sort-1)."&amp;fid=".$sort."\">".HIGHER."</A>/<A href=\"".URL."/modules.php?module=admin&amp;what=guestedit&amp;sub=".__SUB_VALUE."&amp;act=".$act."&amp;w=".$wht."&amp;tid=".($sort+1)."&amp;fid=".$sort."\">".LOWER."</A>";
333                         }
334                         if (empty($act)) $act = "&nbsp;";
335                         if (empty($wht))   $wht   = "&nbsp;";
336                         if (empty($title))  $title  = "&nbsp;";
337                         $content = array(
338                                 'sw'     => $SW,
339                                 'id'     => $id,
340                                 'action' => $act,
341                                 'what'   => $wht,
342                                 'title'  => $title,
343                                 'navi'   => $NAVI,
344                                 'mode'   => "guest"
345                         );
346                         $OUT .= LOAD_TEMPLATE("admin_menu_overview_row", true, $content);
347                         $SW = 3 - $SW;
348                 }
349
350                 // Free memory
351                 SQL_FREERESULT($query);
352                 define('__MENU_ROWS', $OUT);
353
354                 // Load template
355                 LOAD_TEMPLATE("admin_gmenu_edit");
356         }
357          else
358         {
359                 // Menu entries are missing... (???)
360                 LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_NO_MENUS_FOUND);
361         }
362 }
363
364 //
365 ?>