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 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
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 * Copyright (c) 2009, 2010 by Mailer Developer Team *
22 * For more information visit: http://www.mxchange.org *
24 * This program is free software; you can redistribute it and/or modify *
25 * it under the terms of the GNU General Public License as published by *
26 * the Free Software Foundation; either version 2 of the License, or *
27 * (at your option) any later version. *
29 * This program is distributed in the hope that it will be useful, *
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
32 * GNU General Public License for more details. *
34 * You should have received a copy of the GNU General Public License *
35 * along with this program; if not, write to the Free Software *
36 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
38 ************************************************************************/
40 // Some security stuff...
41 if (!defined('__SECURITY')) {
45 // Handle a (maybe) sent form here
46 function doNetworkHandleForm () {
48 if ((isFormSent()) || (isFormSent('edit')) || (isFormSent('del')) || (isFormSent('change')) || (isFormSent('remove'))) {
50 if (isGetRequestParameterSet('do')) {
51 // Process the request
52 doAdminNetworkProcessForm();
55 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_DO_404'));
60 // Processes an admin form
61 function doAdminNetworkProcessForm () {
63 if ((!isFormSent()) && (!isFormSent('edit')) && (!isFormSent('del')) && (!isFormSent('change')) && (!isFormSent('remove'))) {
65 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_FORM_NOT_SENT'));
67 } elseif (!isGetRequestParameterSet('do')) {
69 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_DO_404'));
73 // Create function name
74 $functionName = sprintf("doAdminNetworkProcess%sForm", ucfirst(strtolower(getRequestParameter('do'))));
76 // Is the function valid?
77 if (!function_exists($functionName)) {
78 // Invalid function name
79 debug_report_bug('Invalid do ' . getRequestParameter('do') . ', function ' . $functionName .' does not exist.', false);
82 // Call-back the method handling our request
83 call_user_func($functionName);
86 // Checks wether the (short) network name is already used (valid)
87 function isNetworkNameValid ($name) {
89 $result = SQL_QUERY_ESC("SELECT `network_id` FROM `{?_MYSQL_PREFIX?}_network_data` WHERE `network_short_name`='%s' LIMIT 1",
90 array($name), __FUNCTION__, __LINE__);
93 $isValid = (SQL_NUMROWS($result) == 1);
96 SQL_FREERESULT($result);
102 // Checks wether the given network type is already used (valid)
103 function isNetworkTypeHandleValid ($type, $networkId) {
105 $result = SQL_QUERY_ESC("SELECT `network_type_id` FROM `{?_MYSQL_PREFIX?}_network_types` WHERE `network_id`=%s AND `network_type_handle`='%s' LIMIT 1",
106 array($networkId, $type), __FUNCTION__, __LINE__);
109 $isValid = (SQL_NUMROWS($result) == 1);
112 SQL_FREERESULT($result);
118 // Checks wether the given network request parameter is already used (valid)
119 function isNetworkRequestParameterValid ($key, $type, $networkId) {
121 $result = SQL_QUERY_ESC("SELECT `network_param_id` FROM `{?_MYSQL_PREFIX?}_network_request_params` WHERE `network_id`=%s AND `network_type_id`=%s AND `request_param_key`='%s' LIMIT 1",
122 array($networkId, $type, $key), __FUNCTION__, __LINE__);
125 $isValid = (SQL_NUMROWS($result) == 1);
128 SQL_FREERESULT($result);
134 // "Getter" for a network's data by provided id number
135 function getNetworkDataById ($id, $column = '') {
136 // Ids lower one are not accepted
138 // Not good, should be fixed
139 debug_report_bug('Network id ' . $id . ' is smaller than 1.');
143 if (!isset($GLOBALS['network_data'][$id])) {
144 // By default we have no data
145 $GLOBALS['network_data'][$id] = array();
147 // Query for the network data
148 $result = SQL_QUERY_ESC("SELECT
149 `network_id`, `network_short_name`, `network_title`, `network_reflink`, `network_data_seperator`, `network_row_seperator`, `network_request_type`, `network_charset`
151 `{?_MYSQL_PREFIX?}_network_data`
155 array(bigintval($id)), __FUNCTION__, __LINE__);
157 // Do we have an entry?
158 if (SQL_NUMROWS($result) == 1) {
160 $GLOBALS['network_data'][$id] = SQL_FETCHARRAY($result);
164 SQL_FREERESULT($result);
168 if (empty($column)) {
170 return $GLOBALS['network_data'][$id];
173 return $GLOBALS['network_data'][$id][$column];
177 // "Getter" for a network type data by provided id number
178 function getNetworkTypeDataById ($id) {
179 // Ids lower one are not accepted
181 // Not good, should be fixed
182 debug_report_bug('Network type id ' . $id . ' is smaller than 1.');
185 // By default we have no data
186 $GLOBALS['network_type_data'][$id] = array();
188 // Query for the network data
189 $result = SQL_QUERY_ESC("SELECT
190 `network_type_id`, `network_id`, `network_type_handle`, `network_type_api_url`, `network_type_click_url`, `network_type_banner_url`
192 `{?_MYSQL_PREFIX?}_network_types`
196 array(bigintval($id)), __FUNCTION__, __LINE__);
198 // Do we have an entry?
199 if (SQL_NUMROWS($result) == 1) {
201 $GLOBALS['network_type_data'][$id] = SQL_FETCHARRAY($result);
205 SQL_FREERESULT($result);
208 return $GLOBALS['network_type_data'][$id];
211 // "Getter" for a network request parameter data by provided id number
212 function getNetworkRequestParamsDataById ($id) {
213 // Ids lower one are not accepted
215 // Not good, should be fixed
216 debug_report_bug('Network request parameter id ' . $id . ' is smaller than 1.');
219 // By default we have no data
220 $networkRequestData = array();
222 // Query for the network data
223 $result = SQL_QUERY_ESC("SELECT
224 `network_param_id`, `network_id`, `network_type_id`, `request_param_key`, `request_param_value`, `request_param_default`
226 `{?_MYSQL_PREFIX?}_network_request_params`
228 `network_param_id`=%s
230 array(bigintval($id)), __FUNCTION__, __LINE__);
232 // Do we have an entry?
233 if (SQL_NUMROWS($result) == 1) {
235 $networkRequestData = SQL_FETCHARRAY($result);
239 SQL_FREERESULT($result);
242 return $networkRequestData;
245 // Updates given network (id) with data from array
246 function doNetworkUpdateDataByArray ($id, $networkData) {
247 // Ids lower one are not accepted
249 // Not good, should be fixed
250 debug_report_bug('Network id ' . $id . ' is smaller than 1.');
253 // Just call our inner method
254 return adminSaveSettings($networkData, '_network_data', sprintf("`network_id`=%s", bigintval($id)), array(), false, false);
257 // Updates given network type handler (id) with data from array
258 function doNetworkUpdateTypeByArray ($id, $networkTypeData) {
259 // Ids lower one are not accepted
261 // Not good, should be fixed
262 debug_report_bug('Network type handler id ' . $id . ' is smaller than 1.');
265 // Just call our inner method
266 return adminSaveSettings($networkTypeData, '_network_types', sprintf("`network_type_id`=%s", bigintval($id)), array(), false, false);
269 // Updates given network request parameters (id) with data from array
270 function doNetworkUpdateParamsByArray ($id, $networkParamData) {
271 // Ids lower one are not accepted
273 // Not good, should be fixed
274 debug_report_bug('Network request parameter id ' . $id . ' is smaller than 1.');
277 // Just call our inner method
278 return adminSaveSettings($networkParamData, '_network_request_params', sprintf("`network_param_id`=%s", bigintval($id)), array(), false, false);
281 // Removes given network entry
282 function doAdminRemoveNetworkEntry ($table, $column, $id, $limit = 1) {
284 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_network_%s` WHERE `%s`=%s LIMIT %s",
285 array($table, $column, $id, $limit), __FILE__, __LINE__);
287 // Return affected rows
288 return SQL_AFFECTEDROWS();
291 // Generates a list of networks for given script and returns it
292 function generateAdminNetworkList () {
296 // Query for all networks
297 $result = SQL_QUERY("SELECT
298 `network_id`, `network_short_name`, `network_title`
300 `{?_MYSQL_PREFIX?}_network_data`
302 `network_short_name` ASC", __FILE__, __LINE__);
304 // Do we have entries?
305 if (SQL_NUMROWS($result) > 0) {
308 while ($row = SQL_FETCHARRAY($result)) {
309 // Is this valid, then add it
310 if ((is_array($row)) && (isset($row['network_id']))) {
312 $rows[$row['network_id']] = $row;
316 // Generate the selection box
317 $content = generateSelectionBoxFromArray($rows, 'network', 'network_id');
320 $content = loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_ENTRIES_404'));
324 SQL_FREERESULT($result);
330 // Generator (somewhat getter) for a list of network types for given network id
331 function generateAdminNetworkTypeList ($networkId) {
335 // Query all types of this network
336 $result = SQL_QUERY_ESC("SELECT
337 `network_type_id`, `network_type_handle`
339 `{?_MYSQL_PREFIX?}_network_types`
343 `network_type_handle` ASC",
345 bigintval($networkId)
346 ), __FILE__, __LINE__);
348 // Do we have entries?
349 if (SQL_NUMROWS($result) > 0) {
352 while ($row = SQL_FETCHARRAY($result)) {
353 // Is this valid, then add it
354 if ((is_array($row)) && (isset($row['network_type_id']))) {
356 $rows[$row['network_type_id']] = $row;
360 // Generate the selection box
361 $content = generateSelectionBoxFromArray($rows, 'network_type', 'network_type_id');
364 $content = loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_ENTRIES_404'));
368 SQL_FREERESULT($result);
374 // Generator (somewhat getter) for network type options
375 function generateNetworkTypeOptions ($id) {
376 // Is this an array, then we just came back from edit/delete actions
377 if (is_array($id)) $id = '';
380 if (!isset($GLOBALS['network_type_options'][$id])) {
381 // Generate output and cache it
382 $GLOBALS['network_type_options'][$id] = generateOptionList(
385 'network_type_handle',
389 "WHERE `network_id`=%s",
390 bigintval(getRequestParameter('network'))
396 return $GLOBALS['network_type_options'][$id];
399 // Generator (somewhat getter) for request key options
400 function generateNetworkRequestKeyOptions ($key) {
402 if (!isset($GLOBALS['network_request_param_key'][$key])) {
403 // Generate and cache it
404 $GLOBALS['network_request_param_key'][$key] = generateOptionList(
423 '{--ADMIN_NETWORK_REQUEST_PARAMETER_ID--}',
424 '{--ADMIN_NETWORK_REQUEST_PARAMETER_SID--}',
425 '{--ADMIN_NETWORK_REQUEST_PARAMETER_HASH--}',
426 '{--ADMIN_NETWORK_REQUEST_PARAMETER_PASSWORD--}',
427 '{--ADMIN_NETWORK_REQUEST_PARAMETER_RELOAD--}',
428 '{--ADMIN_NETWORK_REQUEST_PARAMETER_MAXIMUM_STAY--}',
429 '{--ADMIN_NETWORK_REQUEST_PARAMETER_MINIMUM_STAY--}',
430 '{--ADMIN_NETWORK_REQUEST_PARAMETER_CURRENCY--}',
431 '{--ADMIN_NETWORK_REQUEST_PARAMETER_TYPE--}',
432 '{--ADMIN_NETWORK_REQUEST_PARAMETER_REMAIN--}',
433 '{--ADMIN_NETWORK_REQUEST_PARAMETER_REWARD--}',
434 '{--ADMIN_NETWORK_REQUEST_PARAMETER_SIZE--}',
435 '{--ADMIN_NETWORK_REQUEST_PARAMETER_EROTIC--}',
436 '{--ADMIN_NETWORK_REQUEST_PARAMETER_EXTRA--}'
440 $GLOBALS['network_params_disabled']
445 return $GLOBALS['network_request_param_key'][$key];
448 // Generator (somewhat getter) for (return) array translation
449 function generateNetworkArrayTranslationOptions ($default) {
451 if (!isset($GLOBALS['network_array_translation'][$default])) {
452 // Generate and cache it
453 $GLOBALS['network_array_translation'][$default] = generateOptionList(
454 'network_request_params',
459 sprintf("WHERE `network_id`='%s'", bigintval(getRequestParameter('network'))),
460 $GLOBALS['network_array_translation_disabled'],
461 'ADMIN_NETWORK_REQUEST_PARAMETER_'
466 return $GLOBALS['network_array_translation'][$default];
469 //------------------------------------------------------------------------------
470 // Call-back functions
471 //------------------------------------------------------------------------------
473 // Callback function to add new network
474 function doAdminNetworkProcessAddnetworkForm () {
475 // We can say here, the form is sent, so check if the network is already added
476 if (isNetworkNameValid(postRequestParameter('network_short_name'))) {
478 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_ALREADY_ADDED', postRequestParameter('network_short_name')));
482 // Remove the 'ok' part
483 unsetPostRequestParameter('ok');
485 // Add the whole request to database
486 SQL_QUERY("INSERT INTO
487 `{?_MYSQL_PREFIX?}_network_data`
489 `" . implode('`,`', array_keys(postRequestArray())) . "`
491 '" . implode("','", array_values(postRequestArray())) . "'
492 )", __FUNCTION__, __LINE__);
494 // Add the id for output only
495 setPostRequestParameter('network_id', SQL_INSERTID());
498 if (SQL_AFFECTEDROWS() == 1) {
499 // Successfully added
500 loadTemplate('admin_network_added', false, postRequestArray());
503 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_DATA_NOT_ADDED', postRequestParameter('network_short_name')));
507 // Displays selected networks for editing
508 function doAdminNetworkProcessHandlenetworkForm () {
509 // Do we have selections?
510 if (countPostSelection() > 0) {
511 // Something has been selected, so start displaying one by one
513 foreach (postRequestParameter('sel') as $id => $sel) {
516 // Load this network's data
517 $networkData = getNetworkDataById($id);
519 // Do we have found the network?
520 if (count($networkData) > 0) {
522 $networkData['sw'] = $SW;
524 if (isFormSent('edit')) {
525 // Make selection box for network_request_type
526 $networkData['network_request_type'] = generateOptionList(
533 getMessage('ADMIN_NETWORK_REQUEST_TYPE_GET'),
534 getMessage('ADMIN_NETWORK_REQUEST_TYPE_POST')
536 $networkData['network_request_type']
539 // Add row template for editing
540 $OUT .= loadTemplate('admin_edit_networks_row', true, $networkData);
541 } elseif (isFormSent('del')) {
542 // Translate the request type
543 $networkData['network_request_type'] = getMessage('ADMIN_NETWORK_REQUEST_TYPE_' . $networkData['network_request_type']);
545 // Add row template for deleting
546 $OUT .= loadTemplate('admin_del_networks_row', true, $networkData);
549 debug_report_bug('Cannot detect edit/del.');
558 // If we have no rows, we don't need to display the edit form
560 // Output main template
561 if (isFormSent('edit')) {
562 loadTemplate('admin_edit_networks', false, $OUT);
563 } elseif (isFormSent('del')) {
564 loadTemplate('admin_del_networks', false, $OUT);
567 debug_report_bug('Cannot detect edit/del.');
570 // Don't display the list/add new form
571 $GLOBALS['network_display'] = false;
573 // Nothing selected/found
574 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_NOTHING_FOUND'));
579 // Handle network type form
580 function doAdminNetworkProcessHandlenetworktypeForm () {
581 // Do we have selections?
582 if (countPostSelection() > 0) {
584 $networkData = getNetworkDataById(getRequestParameter('network'));
586 // Something has been selected, so start displaying one by one
588 foreach (postRequestParameter('sel') as $id => $sel) {
591 // Load this network's data
592 $networkTypeData = getNetworkTypeDataById($id);
594 // Do we have found the network?
595 if (count($networkTypeData) > 0) {
597 $networkTypeData['sw'] = $SW;
599 if (isFormSent('edit')) {
600 // Add row template for deleting
601 $OUT .= loadTemplate('admin_edit_network_types_row', true, $networkTypeData);
602 } elseif (isFormSent('del')) {
603 // Fix empty banner URL
604 if (trim($networkTypeData['network_type_banner_url']) == '') $networkTypeData['network_type_banner_url'] = '---';
606 // Add row template for deleting
607 $OUT .= loadTemplate('admin_del_network_types_row', true, $networkTypeData);
610 debug_report_bug('Cannot detect edit/del.');
619 // If we have no rows, we don't need to display the edit form
621 // Prepare content for template
624 'network_data' => getNetworkDataById(getRequestParameter('network'))
627 // Output main template
628 if (isFormSent('edit')) {
629 loadTemplate('admin_edit_network_types', false, $content);
630 } elseif (isFormSent('del')) {
631 loadTemplate('admin_del_network_types', false, $content);
634 debug_report_bug('Cannot detect edit/del.');
637 // Don't display the list/add new form
638 $GLOBALS['network_display'] = false;
640 // Nothing selected/found
641 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_TYPES_NOTHING_FOUND'));
646 // Handle network request parameter form
647 function doAdminNetworkProcessHandlerequestparamsForm () {
648 // Do we have selections?
649 if (countPostSelection() > 0) {
651 $GLOBALS['network_params_disabled'] = array();
654 $networkData = getNetworkDataById(getRequestParameter('network'));
656 // Something has been selected, so start displaying one by one
658 foreach (postRequestParameter('sel') as $id => $sel) {
661 // Load this network's data
662 $networkRequestData = getNetworkRequestParamsDataById($id);
664 // Do we have found the network?
665 if (count($networkRequestData) > 0) {
667 $networkRequestData['sw'] = $SW;
669 if (isFormSent('edit')) {
670 // Add options list for network type
671 $networkRequestData['type_options'] = generateNetworkTypeOptions($networkRequestData['network_type_id']);
673 // Add options list for request key
674 $networkRequestData['key_options'] = generateNetworkRequestKeyOptions($networkRequestData['request_param_key']);
676 // Add row template for deleting
677 $OUT .= loadTemplate('admin_edit_network_params_row', true, $networkRequestData);
678 } elseif (isFormSent('del')) {
679 // Fix empty banner URL
680 if (trim($networkRequestData['request_param_default']) == '') $networkRequestData['request_param_default'] = '---';
683 $networkRequestData['network_type_data'] = getNetworkTypeDataById($networkRequestData['network_type_id']);
685 // Add row template for deleting
686 $OUT .= loadTemplate('admin_del_network_params_row', true, $networkRequestData);
689 debug_report_bug('Cannot detect edit/del.');
698 // If we have no rows, we don't need to display the edit form
700 // Prepare content for template
703 'network_data' => getNetworkDataById(getRequestParameter('network'))
706 // Output main template
707 if (isFormSent('edit')) {
708 loadTemplate('admin_edit_network_params', false, $content);
709 } elseif (isFormSent('del')) {
710 loadTemplate('admin_del_network_params', false, $content);
713 debug_report_bug('Cannot detect edit/del.');
716 // Don't display the list/add new form
717 $GLOBALS['network_display'] = false;
719 // Nothing selected/found
720 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_FOUND'));
725 // Changes given networks
726 function doAdminNetworkProcessChangenetworkForm () {
727 // Do we have selections?
728 if (countPostSelection() > 0) {
729 // By default nothing is updated
732 // Something has been selected, so start updating them
733 foreach (postRequestParameter('sel') as $id => $sel) {
734 // Update this entry?
737 $networkData = array();
739 // Transfer whole array, except 'sel'
740 foreach (postRequestArray() as $key => $entry) {
741 // Skip 'sel' and submit button
742 if (in_array($key, array('sel', 'change'))) continue;
744 // Do we have this enty?
745 if (!isset($entry[$id])) {
746 // Not found, needs fixing
747 debug_report_bug('No entry in key=' . $key . ', id=' . $id . ' found.');
751 $networkData[$key] = $entry[$id];
754 // Update the network data
755 $updated += doNetworkUpdateDataByArray($id, $networkData);
759 // Do we have updates?
762 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_UPDATED', $updated));
765 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_NOTHING_CHANGED'));
770 // Removes given networks
771 function doAdminNetworkProcessRemovenetworkForm () {
772 // Do we have selections?
773 if (countPostSelection() > 0) {
774 // By default nothing is removed
777 // Something has been selected, so start updating them
778 foreach (postRequestParameter('sel') as $id => $sel) {
779 // Update this entry?
782 $removed += doAdminRemoveNetworkEntry('data', 'network_id', $id);
786 // Do we have removes?
789 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_REMOVED', $removed));
792 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_NOTHING_REMOVED'));
797 // Add a network type handler if not yet found
798 function doAdminNetworkProcessAddnetworktypeForm () {
799 // Is the network type handle already used with given network?
800 if (isNetworkTypeHandleValid(postRequestParameter('network_type_handle'), getRequestParameter('network'))) {
802 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_HANDLE_ALREADY_ADDED', postRequestParameter('network_type_handle')));
808 // Remove the 'ok' part
809 unsetPostRequestParameter('ok');
812 setPostRequestParameter('network_id', bigintval(getRequestParameter('network')));
814 // Is network_type_banner_url set?
815 if (postRequestParameter('network_type_banner_url') == '') {
816 // Remove empty value to get a NULL for an optional entry
817 unsetPostRequestParameter('network_type_banner_url');
820 // Add the whole request to database
821 SQL_QUERY("INSERT INTO
822 `{?_MYSQL_PREFIX?}_network_types`
824 `" . implode('`,`', array_keys(postRequestArray())) . "`
826 '" . implode("','", array_values(postRequestArray())) . "'
827 )", __FUNCTION__, __LINE__);
830 if (SQL_AFFECTEDROWS() == 1) {
831 // Successfully added
832 loadTemplate('admin_network_type_added', false, postRequestArray());
835 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_NOT_ADDED', postRequestParameter('network_type_handle')));
839 // Changes given network type handlers
840 function doAdminNetworkProcessChangenetworktypeForm () {
841 // Do we have selections?
842 if (countPostSelection() > 0) {
843 // By default nothing is updated
846 // Something has been selected, so start updating them
847 foreach (postRequestParameter('sel') as $id => $sel) {
848 // Update this entry?
851 $networkTypeData = array();
853 // Transfer whole array, except 'sel'
854 foreach (postRequestArray() as $key => $entry) {
855 // Skip 'sel' and submit button
856 if (in_array($key, array('sel', 'change'))) continue;
858 // Do we have this enty?
859 if (!isset($entry[$id])) {
860 // Not found, needs fixing
861 debug_report_bug('No entry in key=' . $key . ', id=' . $id . ' found.');
864 // Fix empty network_type_banner_url to NULL
865 if (($key == 'network_type_banner_url') && (trim($entry[$id]) == '')) {
871 $networkTypeData[$key] = $entry[$id];
874 // Update the network data
875 $updated += doNetworkUpdateTypeByArray($id, $networkTypeData);
879 // Do we have updates?
882 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_UPDATED', $updated));
885 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_TYPES_NOTHING_CHANGED'));
890 // Changes given network request parameters
891 function doAdminNetworkProcessChangenetworkparamForm () {
892 // Do we have selections?
893 if (countPostSelection() > 0) {
894 // By default nothing is updated
897 // Something has been selected, so start updating them
898 foreach (postRequestParameter('sel') as $id => $sel) {
899 // Update this entry?
902 $networkParamsData = array();
904 // Transfer whole array, except 'sel'
905 foreach (postRequestArray() as $key => $entry) {
906 // Skip 'sel' and submit button
907 if (in_array($key, array('sel', 'change'))) continue;
909 // Do we have this enty?
910 if (!isset($entry[$id])) {
911 // Not found, needs fixing
912 debug_report_bug('No entry in key=' . $key . ', id=' . $id . ' found.');
915 // Fix empty request_param_default to NULL
916 if (($key == 'request_param_default') && (trim($entry[$id]) == '')) {
922 $networkParamsData[$key] = $entry[$id];
925 // Update the network data
926 $updated += doNetworkUpdateParamsByArray($id, $networkParamsData);
930 // Do we have updates?
933 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_UPDATED', $updated));
936 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_CHANGED'));
941 // Removes given network type handlers
942 function doAdminNetworkProcessRemovenetworktypeForm () {
943 // Do we have selections?
944 if (countPostSelection() > 0) {
945 // By default nothing is removed
948 // Something has been selected, so start updating them
949 foreach (postRequestParameter('sel') as $id => $sel) {
950 // Update this entry?
953 $removed += doAdminRemoveNetworkEntry('types', 'network_type_id', $id);
957 // Do we have removes?
960 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_REMOVED', $removed));
963 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_TYPES_NOTHING_REMOVED'));
968 // Removes given network request parameters
969 function doAdminNetworkProcessRemovenetworkparamForm () {
970 // Do we have selections?
971 if (countPostSelection() > 0) {
972 // By default nothing is removed
975 // Something has been selected, so start updating them
976 foreach (postRequestParameter('sel') as $id => $sel) {
977 // Update this entry?
980 $removed += doAdminRemoveNetworkEntry('request_params', 'network_param_id', $id);
984 // Do we have removes?
987 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_REMOVED', $removed));
990 loadTemplate('admin_settings_unsaved', false, getMessage('ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_REMOVED'));
995 // Adds a request parameter to given network and type
996 function doAdminNetworkProcessAddnetworkparamForm () {
997 // Is the request parameter already used with given network?
998 if (isNetworkRequestParameterValid(postRequestParameter('request_param_key'), postRequestParameter('network_type_id'), getRequestParameter('network'))) {
1000 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_ALREADY_ADDED', postRequestParameter('request_param_key')));
1002 // ... so abort here
1006 // Remove the 'ok' part
1007 unsetPostRequestParameter('ok');
1010 setPostRequestParameter('network_id', bigintval(getRequestParameter('network')));
1012 // Is request_param_default set?
1013 if (postRequestParameter('request_param_default') == '') {
1014 // Remove empty value to get a NULL for an optional entry
1015 unsetPostRequestParameter('request_param_default');
1018 // Add the whole request to database
1019 SQL_QUERY("INSERT INTO
1020 `{?_MYSQL_PREFIX?}_network_request_params`
1022 `" . implode('`,`', array_keys(postRequestArray())) . "`
1024 '" . implode("','", array_values(postRequestArray())) . "'
1025 )", __FUNCTION__, __LINE__);
1028 if (SQL_AFFECTEDROWS() == 1) {
1029 // Successfully added
1030 loadTemplate('admin_network_request_param_added', false, postRequestArray());
1033 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_NOT_ADDED', postRequestParameter('request_param_key')));
1037 // Do expression code for this extension
1038 function doExpressionNetwork ($data) {
1039 // Construct replacer
1040 $replacer = sprintf(
1041 "\" . %s(%s, '%s') . \"",
1043 $data['matches'][4][$data['key']],
1048 $code = replaceExpressionCode($data, $replacer);