Surfbar now has admin menu (dummy extension!), menu system rebuilded for unique key...
[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 OPEN_TABLE("100%", "admin_content admin_content_align", "");
57 // List all menu points and make them editable
58 OUTPUT_HTML("<br /><br /></FONT>
59 <DIV align=\"center\">");
60 if ((isset($_POST['edit'])) && ($chk > 0) && (!IS_DEMO()))
61 {
62         // Edit menu entries
63         define('__SUB_VALUE', $SUB);
64         define('__CHK_VALUE', $chk);
65
66         $cnt = 0; $SW = 2; $OUT = "";
67         foreach ($_POST['sel'] as $sel=>$confirm)
68         {
69                 if ($confirm == 1)
70                 {
71                         $cnt++;
72                         $query = SQL_QUERY_ESC("SELECT title, action, what FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%d LIMIT 1",
73                          array(bigintval($sel)), __FILE__, __LINE__);
74                         if (SQL_NUMROWS($query) == 1)
75                         {
76                                 // Entry found so we load the stuff...
77                                 list($menu, $act, $wht) = SQL_FETCHROW($query);
78                                 SQL_FREERESULT($result);
79                                 $DATA = array(
80                                         'cnt'    => $cnt,
81                                         'sel'    => $sel,
82                                         'action' => ADMIN_MAKE_MENU_SELECTION("guest", "action", "sel_action[".$sel."]", $act),
83                                         'what'   => ADMIN_MAKE_MENU_SELECTION("guest", "what", "sel_what[".$sel."]", $wht),
84                                         'menu'   => $menu,
85                                         'sw'     => $SW,
86                                 );
87                                 $OUT .= LOAD_TEMPLATE("admin_gmenu_edit_row", true, $DATA);
88                         }
89                          else
90                         {
91                                 // Entry not found?
92                                 $content = array(
93                                         'sw'  => $SW,
94                                         'sel' => $sel
95                                 );
96                                 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
97                         }
98                         $SW = 3 - $SW;
99                 }
100         }
101         define('__MENU_ROWS', $OUT);
102         define('__CNT_VALUE', $cnt);
103
104         // Load template
105         LOAD_TEMPLATE("admin_gmenu_edit_form");
106 }
107  elseif ((isset($_POST['del'])) && (!IS_DEMO()))
108 {
109         // Del menu entries with or without confirmation
110         define('__SUB_VALUE', $SUB);
111         define('__CHK_VALUE', $chk);
112
113         $cnt = 0; $OUT = ""; $SW = 2;
114         foreach ($_POST['sel'] as $sel=>$confirm)
115         {
116                 if ($confirm == 1)
117                 {
118                         $cnt++;
119                         $query = SQL_QUERY_ESC("SELECT title FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%d LIMIT 1",
120                          array(bigintval($sel)), __FILE__, __LINE__);
121                         if (SQL_NUMROWS($query) == 1)
122                         {
123                                 // Entry found so we load the stuff...
124                                 list($menu) = SQL_FETCHROW($query);
125                                 SQL_FREERESULT($result);
126                                 $DATA = array(
127                                         'cnt'  => $cnt,
128                                         'menu' => $menu,
129                                         'sel'  => $sel,
130                                         'sw'   => $SW,
131                                 );
132                                 $OUT .= LOAD_TEMPLATE("admin_gmenu_delete_row", true, $DATA);
133                         }
134                          else
135                         {
136                                 // Entry not found?
137                                 $content = array(
138                                         'sw'  => $SW,
139                                         'sel' => $sel
140                                 );
141                                 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
142                         }
143                         $SW = 3 - $SW;
144                 }
145         }
146         define('__MENU_ROWS', $OUT);
147         define('__CNT_VALUE', $cnt);
148
149         // Load template
150         LOAD_TEMPLATE("admin_gmenu_delete");
151 }
152  elseif ((isset($_POST['ok'])) && (!IS_DEMO()))
153 {
154         // An action is done...
155         switch ($_POST['ok'])
156         {
157         case "edit": // Edit menu
158                 foreach ($_POST['sel'] as $sel=>$menu)
159                 {
160                         // Secure selector
161                         $sel = bigintval($sel);
162
163                         // Update entry
164                         $query = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET title='%s', action='%s', what='%s' WHERE ".$AND." AND id=%d LIMIT 1",
165                          array($menu, $_POST['sel_action'][$sel], $_POST['sel_what'][$sel], $sel),__FILE__, __LINE__);
166                 }
167                 LOAD_TEMPLATE("admin_data_saved");
168                 break;
169
170         case "del": // Delete menu
171                 foreach ($_POST['sel'] as $sel=>$menu)
172                 {
173                         // Delete enty
174                         $query = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%d LIMIT 1",
175                          array(bigintval($sel)), __FILE__, __LINE__);
176                 }
177                 LOAD_TEMPLATE("admin_data_saved");
178                 break;
179
180         case "status": // Change access levels
181                 foreach ($_POST['sel'] as $sel=>$menu)
182                 {
183                         // Secure selector
184                         $sel = bigintval($sel);
185
186                         // Update entry
187                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET visible='%s', locked='%s' WHERE ".$AND." AND id=%d LIMIT 1",
188                          array($_POST['visible'][$sel], $_POST['locked'][$sel], $sel), __FILE__, __LINE__);
189                 }
190                 LOAD_TEMPLATE("admin_data_saved");
191                 break;
192
193         default: // Unexpected action
194                 define('__OK_VALUE', $_POST['ok']);
195                 LOAD_TEMPLATE("admin_menu_unknown_okay");
196                 break;
197         }
198 }
199  elseif ((isset($_POST['status'])) && ($chk > 0) && (!IS_DEMO()))
200 {
201         // Change status (visible / locked)
202         define('__SUB_VALUE', $SUB);
203         define('__CHK_VALUE', $chk);
204
205         // Load template
206         $SW = 2; $cnt = 0; $OUT = "";
207         foreach ($_POST['sel'] as $sel=>$confirm)
208         {
209                 if ($confirm == 1)
210                 {
211                         $cnt++;
212                         $result = SQL_QUERY_ESC("SELECT title, visible, locked FROM "._MYSQL_PREFIX."_guest_menu WHERE ".$AND." AND id=%d LIMIT 1",
213                          array(bigintval($sel)), __FILE__, __LINE__);
214                         if (SQL_NUMROWS($result) == 1)
215                         {
216                                 // Entry found so we load the stuff...
217                                 list($menu, $vis, $locked) = SQL_FETCHROW($result);
218                                 SQL_FREERESULT($result);
219                                 $content = array(
220                                         'cnt'     => $cnt,
221                                         'menu'    => $menu,
222                                         'sel'     => $sel,
223                                         'sw'      => $SW,
224                                         'visible' => ADD_SELECTION("yn", $vis   , "visible", $sel),
225                                         'locked'  => ADD_SELECTION("yn", $locked, "locked" , $sel),
226                                 );
227
228                                 // Load template
229                                 $OUT .= LOAD_TEMPLATE("admin_menu_status_row", true, $content);
230                         }
231                          else
232                         {
233                                 // Entry not found?
234                                 $content = array(
235                                         'sw'  => $SW,
236                                         'sel' => $sel
237                                 );
238                                 $OUT .= LOAD_TEMPLATE("admin_menu_404_row", true, $content);
239                         }
240                         $SW = 3 - $SW;
241                 }
242         }
243         define('__CNT_VALUE', $cnt);
244         define('__MENU_ROWS', $OUT);
245
246         // Load template
247         LOAD_TEMPLATE("admin_gmenu_status");
248 }
249  else
250 {
251         if ((!empty($_GET['act'])) && (!empty($_GET['tid'])) && (!empty($_GET['fid'])))
252         {
253                 // Get IDs
254                 if (!empty($_GET['w']))
255                 {
256                         // Sub menus selected
257                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE action='%s' AND sort='%s' LIMIT 1",
258                          array($_GET['act'], bigintval($_GET['tid'])), __FILE__, __LINE__);
259                         list($tid) = SQL_FETCHROW($result);
260                         SQL_FREERESULT($result);
261                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE action='%s' AND sort='%s' LIMIT 1",
262                          array($_GET['act'], bigintval($_GET['fid'])), __FILE__, __LINE__);
263                         list($fid) = SQL_FETCHROW($result);
264                         SQL_FREERESULT($result);
265                 }
266                  else
267                 {
268                         // Main menu selected
269                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE (what='' OR what IS NULL) AND sort='%s' LIMIT 1",
270                          array(bigintval($_GET['tid'])), __FILE__, __LINE__);
271                         list($tid) = SQL_FETCHROW($result);
272                         SQL_FREERESULT($result);
273                         $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_guest_menu WHERE (what='' OR what IS NULL) AND sort='%s' LIMIT 1",
274                          array(bigintval($_GET['fid'])), __FILE__, __LINE__);
275                         list($fid) = SQL_FETCHROW($result);
276                         SQL_FREERESULT($result);
277                 }
278
279                 if ((!empty($tid)) && (!empty($fid)))
280                 {
281                         // Sort menu
282                         $result_sort = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET sort='%s' WHERE ".$AND." AND id=%d LIMIT 1",
283                          array(bigintval($_GET['tid']), bigintval($fid)), __FILE__, __LINE__);
284                         $result_sort = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_guest_menu SET sort='%s' WHERE ".$AND." AND id=%d LIMIT 1",
285                          array(bigintval($_GET['fid']), bigintval($tid)), __FILE__, __LINE__);
286                 }
287         }
288
289         // By default list menus
290         if (empty($SUB))
291         {
292                 // List only main menus
293                 $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__);
294         }
295          else
296         {
297                 // List sub menus
298                 $query = SQL_QUERY_ESC("SELECT id, action, what, title, sort FROM "._MYSQL_PREFIX."_guest_menu WHERE action='%s' AND what != '' ORDER BY sort ASC",
299                  array($SUB), __FILE__, __LINE__);
300         }
301
302         // Get number of menu entries
303         $max = SQL_NUMROWS($query);
304         if ($max > 0)
305         {
306                 // Some entties does exist!
307                 if (!empty($SUB))
308                 {
309                         // Set sub value
310                         define('__SUB_VALUE', $SUB);
311                 }
312                  else
313                 {
314                         // No sub menu selected
315                         define('__SUB_VALUE', "");
316                 }
317
318                 $SW = 2; $cnt = 0; $OUT = "";
319                 while (list($id, $act, $wht, $title, $sort) = SQL_FETCHROW($query))
320                 {
321                         $cnt++;
322                         if (($sort == 0) || (($sort == 1) && (!empty($SUB))))
323                         {
324                                 // Is highest position
325                                 $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>";
326                         }
327                          elseif ($cnt == $max)
328                         {
329                                 // Is lowest position
330                                 $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>";
331                         }
332                          elseif ($sort > 0)
333                         {
334                                 // Anything else between highest and lowest
335                                 $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>";
336                         }
337                         if (empty($act)) $act = "&nbsp;";
338                         if (empty($wht))   $wht   = "&nbsp;";
339                         if (empty($title))  $title  = "&nbsp;";
340                         $content = array(
341                                 'sw'     => $SW,
342                                 'id'     => $id,
343                                 'action' => $act,
344                                 'what'   => $wht,
345                                 'title'  => $title,
346                                 'navi'   => $NAVI,
347                                 'mode'   => "guest"
348                         );
349                         $OUT .= LOAD_TEMPLATE("admin_menu_overview_row", true, $content);
350                         $SW = 3 - $SW;
351                 }
352
353                 // Free memory
354                 SQL_FREERESULT($query);
355                 define('__MENU_ROWS', $OUT);
356
357                 // Load template
358                 LOAD_TEMPLATE("admin_gmenu_edit");
359         }
360          else
361         {
362                 // Menu entries are missing... (???)
363                 LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_NO_MENUS_FOUND);
364         }
365 }
366 OUTPUT_HTML("</DIV>");
367 CLOSE_TABLE();
368 //
369 ?>