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