2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 11/04/2009 *
4 * =================== Last change: 11/04/2009 *
6 * -------------------------------------------------------------------- *
7 * File : network_functions.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Functions for ext-network *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Funktionen fuer ext-network *
12 * -------------------------------------------------------------------- *
13 * $Revision:: 1194 $ *
14 * $Date:: 2009-10-27 18:24:18 +0100 (Tue, 27 Oct 2009) $ *
15 * $Tag:: 0.2.1-FINAL $ *
16 * $Author:: quix0r $ *
17 * Needs to be in all Files and every File needs "svn propset *
18 * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
19 * -------------------------------------------------------------------- *
20 * Copyright (c) 2003 - 2009 by Roland Haeder *
21 * For more information visit: http://www.mxchange.org *
23 * This program is free software; you can redistribute it and/or modify *
24 * it under the terms of the GNU General Public License as published by *
25 * the Free Software Foundation; either version 2 of the License, or *
26 * (at your option) any later version. *
28 * This program is distributed in the hope that it will be useful, *
29 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
30 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
31 * GNU General Public License for more details. *
33 * You should have received a copy of the GNU General Public License *
34 * along with this program; if not, write to the Free Software *
35 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
37 ************************************************************************/
39 // Some security stuff...
40 if (!defined('__SECURITY')) {
44 // Processes an admin form
45 function doAdminNetworkProcessForm () {
47 if ((!isFormSent()) && (!isPostRequestElementSet('edit')) && (!isPostRequestElementSet('del')) && (!isPostRequestElementSet('change')) && (!isPostRequestElementSet('remove'))) {
49 loadTemplate('admin_settings_saved', false, getMessage('ADMIN_NETWORK_FORM_NOT_SENT'));
51 } elseif (!isGetRequestElementSet('do')) {
53 loadTemplate('admin_settings_saved', false, getMessage('ADMIN_NETWORK_DO_404'));
57 // Create function name
58 $functionName = sprintf("doAdminNetworkProcess%sForm", ucfirst(strtolower(getRequestElement('do'))));
60 // Is the function valid?
61 if (!function_exists($functionName)) {
62 // Invalid function name
63 debug_report_bug('Invalid do ' . getRequestElement('do') . ', function ' . $functionName .' does not exist.');
66 // Call-back the method handling our request
67 call_user_func($functionName);
70 // Checks wether the (short) network name is already used (valid)
71 function isNetworkNameValid ($name) {
73 $result = SQL_QUERY_ESC("SELECT `network_id` FROM `{?_MYSQL_PREFIX?}_network_data` WHERE `network_short_name`='%s' LIMIT 1",
74 array($name), __FUNCTION__, __LINE__);
77 $isValid = (SQL_NUMROWS($result) == 1);
80 SQL_FREERESULT($result);
86 // "Getter" for a network's data by provided id number
87 function getNetworkDataById ($id) {
88 // Ids lower one are not accepted
90 // Not good, should be fixed
91 debug_report_bug('Network id ' . $id . ' is smaller than 1.');
94 // By default we have no data
95 $networkData = array();
97 // Query for the network data
98 $result = SQL_QUERY_ESC("SELECT
99 `network_id`, `network_short_name`, `network_title`, `network_reflink`, `network_data_seperator`, `network_row_seperator`, `network_request_type`, `network_charset`
101 `{?_MYSQL_PREFIX?}_network_data`
105 array(bigintval($id)), __FUNCTION__, __LINE__);
107 // Do we have an entry?
108 if (SQL_NUMROWS($result) == 1) {
110 $networkData = SQL_FETCHARRAY($result);
114 SQL_FREERESULT($result);
120 // Updates given network (id) with data from array
121 function doNetworkUpdateDataByArray ($id, $networkData) {
122 // Ids lower one are not accepted
124 // Not good, should be fixed
125 debug_report_bug('Network id ' . $id . ' is smaller than 1.');
128 // Just call our inner method
129 return adminSaveSettings($networkData, '_network_data', sprintf("`network_id`=%s", bigintval($id)), array(), false, false);
132 //------------------------------------------------------------------------------
133 // Call-back functions
134 //------------------------------------------------------------------------------
136 // Callback function to add new network
137 function doAdminNetworkProcessAddnetworkForm () {
138 // We can say here, the form is sent, so check if the network is already added
139 if (isNetworkNameValid(postRequestElement('network_short_name'))) {
141 loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_NETWORK_ALREADY_ADDED'), postRequestElement('network_short_name')));
145 // Remove the 'ok' part
146 unsetPostRequestElement('ok');
148 // Add the whole request to database
149 SQL_QUERY("INSERT INTO
150 `{?_MYSQL_PREFIX?}_network_data`
152 `" . implode('`,`', array_keys(postRequestArray())) . "`
154 '" . implode("','", array_values(postRequestArray())) . "'
155 )", __FUNCTION__, __LINE__);
157 // Add the id for output only
158 setRequestPostElement('network_id', SQL_INSERTID());
161 if (SQL_AFFECTEDROWS() == 1) {
162 // Successfully added
163 loadTemplate('admin_network_added', false, postRequestArray());
166 loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_NETWORK_DATA_NOT_ADDED'), postRequestElement('network_short_name')));
170 // Displays selected networks for editing
171 function doAdminNetworkProcessHandlenetworkForm () {
172 // Do we have selections?
173 if (countPostSelection() > 0) {
174 // Something has been selected, so start displaying one by one
176 foreach (postRequestElement('sel') as $id=>$sel) {
179 // Load this network's data
180 $networkData = getNetworkDataById($id);
182 // Do we have found the network?
183 if (count($networkData) > 0) {
185 $networkData['sw'] = $SW;
187 if (isPostRequestElementSet('edit')) {
188 // Make selection box for network_request_type
189 $networkData['network_request_type'] = generateOptionList(
192 array(getMessage('ADMIN_NETWORK_REQUEST_TYPE_GET'), getMessage('ADMIN_NETWORK_REQUEST_TYPE_POST')),
193 $networkData['network_request_type']
196 // Add row template and switch color
197 $OUT .= loadTemplate('admin_edit_networks_row', true, $networkData);
198 } elseif (isPostRequestElementSet('del')) {
199 // Translate the request type
200 $networkData['network_request_type'] = getMessage('ADMIN_NETWORK_REQUEST_TYPE_' . $networkData['network_request_type']);
202 // Add row template and switch color
203 $OUT .= loadTemplate('admin_del_networks_row', true, $networkData);
206 debug_report_bug('Cannot detect edit/del.');
213 // If we have no rows, we don't need to display the edit form
215 // Output main template
216 if (isPostRequestElementSet('edit')) {
217 loadTemplate('admin_edit_networks', false, $OUT);
218 } elseif (isPostRequestElementSet('del')) {
219 loadTemplate('admin_del_networks', false, $OUT);
222 debug_report_bug('Cannot detect edit/del.');
225 // Don't display the list/add new form
226 $GLOBALS['network_display'] = false;
228 // Nothing selected/found
229 loadTemplate('admin_settings_saved', false, getMessage('ADMIN_NETWORK_NOTHING_FOUND'));
234 // Changes given networks
235 function doAdminNetworkProcessChangenetworkForm () {
236 // Do we have selections?
237 if (countPostSelection() > 0) {
238 // By default nothing is updated
241 // Something has been selected, so start updating them
242 foreach (postRequestElement('sel') as $id => $sel) {
243 // Update this entry?
246 $networkData = array();
248 // Transfer whole array, except 'sel'
249 foreach (postRequestArray() as $key=>$entry) {
250 // Skip 'sel' and submit button
251 if (in_array($key, array('sel', 'change'))) continue;
253 // Do we have this enty?
254 if (!isset($entry[$id])) {
255 // Not found, needs fixing
256 debug_report_bug('No entry in key=' . $key . ', id=' . $id . ' found.');
260 $networkData[$key] = $entry[$id];
263 // Update the network data
264 $updated += doNetworkUpdateDataByArray($id, $networkData);
268 // Do we have updates?
271 loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_NETWORK_UPDATED'), $updated));
274 loadTemplate('admin_settings_saved', false, getMessage('ADMIN_NETWORK_NOTHING_CHANGED'));