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 // Private setter for current network id
46 function setCurrentNetworkId ($id) {
47 $GLOBALS['current_network_id'] = bigintval($id);
50 // Private getter for current network id
51 function getCurrentNetworkId () {
52 return $GLOBALS['current_network_id'];
55 // Handle a (maybe) sent form here
56 function doNetworkHandleForm () {
58 if ((isFormSent()) || (isFormSent('edit')) || (isFormSent('del')) || (isFormSent('change')) || (isFormSent('remove'))) {
60 if (isGetRequestParameterSet('do')) {
61 // Process the request
62 doAdminNetworkProcessForm();
65 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_DO_404--}');
70 // Processes an admin form
71 function doAdminNetworkProcessForm () {
73 if ((!isFormSent()) && (!isFormSent('edit')) && (!isFormSent('del')) && (!isFormSent('change')) && (!isFormSent('remove'))) {
75 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_FORM_NOT_SENT--}');
77 } elseif (!isGetRequestParameterSet('do')) {
79 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_DO_404--}');
83 // Create function name
84 $functionName = sprintf("doAdminNetworkProcess%s", capitalizeUnderscoreString(getRequestParameter('do')));
86 // Is the function valid?
87 if (!function_exists($functionName)) {
88 // Invalid function name
89 debug_report_bug(__FUNCTION__, __LINE__, 'Invalid do ' . getRequestParameter('do') . ', function ' . $functionName .' does not exist.', false);
92 // Call-back the method handling our request
93 call_user_func($functionName);
96 // Checks wether the (short) network name is already used (valid)
97 function isNetworkNameValid ($name) {
99 $result = SQL_QUERY_ESC("SELECT `network_id` FROM `{?_MYSQL_PREFIX?}_network_data` WHERE `network_short_name`='%s' LIMIT 1",
100 array($name), __FUNCTION__, __LINE__);
103 $isValid = (SQL_NUMROWS($result) == 1);
106 SQL_FREERESULT($result);
112 // Checks wether the given network type is already used (valid)
113 function isNetworkTypeHandleValid ($type, $networkId) {
115 $result = SQL_QUERY_ESC("SELECT `network_type_id` FROM `{?_MYSQL_PREFIX?}_network_types` WHERE `network_id`=%s AND `network_type_handle`='%s' LIMIT 1",
116 array($networkId, $type), __FUNCTION__, __LINE__);
119 $isValid = (SQL_NUMROWS($result) == 1);
122 SQL_FREERESULT($result);
128 // Checks wether the given network request parameter is already used (valid)
129 function isNetworkRequestParameterValid ($key, $type, $networkId) {
131 $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",
132 array($networkId, $type, $key), __FUNCTION__, __LINE__);
135 $isValid = (SQL_NUMROWS($result) == 1);
138 SQL_FREERESULT($result);
144 // Checks wether the given network API array translation
145 function isNetworkApiTranslationValid ($key, $type, $networkId) {
147 $result = SQL_QUERY_ESC("SELECT `network_api_id` FROM `{?_MYSQL_PREFIX?}_network_api_translation` WHERE `network_id`=%s AND `network_type_id`=%s AND `network_api_index`='%s' LIMIT 1",
148 array($networkId, $type, $key), __FUNCTION__, __LINE__);
151 $isValid = (SQL_NUMROWS($result) == 1);
154 SQL_FREERESULT($result);
160 // "Getter" for a network's data by provided id number
161 function getNetworkDataById ($id, $column = '') {
162 // Ids lower one are not accepted
164 // Not good, should be fixed
165 debug_report_bug(__FUNCTION__, __LINE__, 'Network id ' . $id . ' is smaller than 1.');
168 // Set current network id
169 setCurrentNetworkId($id);
172 if (!isset($GLOBALS['network_data'][$id])) {
173 // By default we have no data
174 $GLOBALS['network_data'][$id] = array();
176 // Query for the network data
177 $result = SQL_QUERY_ESC("SELECT
178 `network_id`, `network_short_name`, `network_title`, `network_reflink`, `network_data_seperator`, `network_row_seperator`, `network_request_type`, `network_charset`
180 `{?_MYSQL_PREFIX?}_network_data`
184 array(bigintval($id)), __FUNCTION__, __LINE__);
186 // Do we have an entry?
187 if (SQL_NUMROWS($result) == 1) {
189 $GLOBALS['network_data'][$id] = SQL_FETCHARRAY($result);
193 SQL_FREERESULT($result);
197 if (empty($column)) {
199 return $GLOBALS['network_data'][$id];
202 return $GLOBALS['network_data'][$id][$column];
206 // "Getter" for a network's data by provided type id number
207 function getNetworkDataByTypeId ($id, $column = '') {
208 // Ids lower one are not accepted
210 // Not good, should be fixed
211 debug_report_bug(__FUNCTION__, __LINE__, 'Network type id ' . $id . ' is smaller than 1.');
214 // Set current network id
215 setCurrentNetworkId($id);
218 if (!isset($GLOBALS['network_data'][$id])) {
219 // By default we have no data
220 $GLOBALS['network_data'][$id] = array();
222 // Query for the network data
223 $result = SQL_QUERY_ESC("SELECT
224 d.`network_id`, d.`network_short_name`, d.`network_title`, d.`network_reflink`, d.`network_data_seperator`, d.`network_row_seperator`, d.`network_request_type`, d.`network_charset`,
225 t.`network_type_handle`, t.`network_type_api_url`, t.`network_type_click_url`, t.`network_type_banner_url`
227 `{?_MYSQL_PREFIX?}_network_data` AS d
229 `{?_MYSQL_PREFIX?}_network_types` AS t
231 d.`network_id`=t.`network_id`
233 t.`network_type_id`=%s
235 array(bigintval($id)), __FUNCTION__, __LINE__);
237 // Do we have an entry?
238 if (SQL_NUMROWS($result) == 1) {
240 $GLOBALS['network_data'][$id] = SQL_FETCHARRAY($result);
244 SQL_FREERESULT($result);
248 if (empty($column)) {
250 return $GLOBALS['network_data'][$id];
253 return $GLOBALS['network_data'][$id][$column];
257 // "Getter" for a network type data by provided id number
258 function getNetworkTypeDataById ($id) {
259 // Ids lower one are not accepted
261 // Not good, should be fixed
262 debug_report_bug(__FUNCTION__, __LINE__, 'Network type id ' . $id . ' is smaller than 1.');
265 // By default we have no data
266 $GLOBALS['network_type_data'][$id] = array();
268 // Query for the network data
269 $result = SQL_QUERY_ESC("SELECT
270 `network_type_id`, `network_id`, `network_type_handle`, `network_type_api_url`, `network_type_click_url`, `network_type_banner_url`
272 `{?_MYSQL_PREFIX?}_network_types`
276 array(bigintval($id)), __FUNCTION__, __LINE__);
278 // Do we have an entry?
279 if (SQL_NUMROWS($result) == 1) {
281 $GLOBALS['network_type_data'][$id] = SQL_FETCHARRAY($result);
285 SQL_FREERESULT($result);
288 return $GLOBALS['network_type_data'][$id];
291 // "Getter" for a network request parameter data by provided id number
292 function getNetworkRequestParamsDataById ($id) {
293 // Ids lower one are not accepted
295 // Not good, should be fixed
296 debug_report_bug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $id . ' is smaller than 1.');
299 // By default we have no data
300 $networkRequestData = array();
302 // Query for the network data
303 $result = SQL_QUERY_ESC("SELECT
304 `network_param_id`, `network_id`, `network_type_id`, `request_param_key`, `request_param_value`, `request_param_default`
306 `{?_MYSQL_PREFIX?}_network_request_params`
308 `network_param_id`=%s
310 array(bigintval($id)), __FUNCTION__, __LINE__);
312 // Do we have an entry?
313 if (SQL_NUMROWS($result) == 1) {
315 $networkRequestData = SQL_FETCHARRAY($result);
319 SQL_FREERESULT($result);
322 return $networkRequestData;
325 // Updates given network (id) with data from array
326 function doNetworkUpdateDataByArray ($id, $networkData) {
327 // Ids lower one are not accepted
329 // Not good, should be fixed
330 debug_report_bug(__FUNCTION__, __LINE__, 'Network id ' . $id . ' is smaller than 1.');
333 // Just call our inner method
334 return adminSaveSettings($networkData, '_network_data', sprintf("`network_id`=%s", bigintval($id)), array(), false, false);
337 // Updates given network type handler (id) with data from array
338 function doNetworkUpdateTypeByArray ($id, $networkTypeData) {
339 // Ids lower one are not accepted
341 // Not good, should be fixed
342 debug_report_bug(__FUNCTION__, __LINE__, 'Network type handler id ' . $id . ' is smaller than 1.');
345 // Just call our inner method
346 return adminSaveSettings($networkTypeData, '_network_types', sprintf("`network_type_id`=%s", bigintval($id)), array(), false, false);
349 // Updates given network request parameters (id) with data from array
350 function doNetworkUpdateParamsByArray ($id, $networkParamData) {
351 // Ids lower one are not accepted
353 // Not good, should be fixed
354 debug_report_bug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $id . ' is smaller than 1.');
357 // Just call our inner method
358 return adminSaveSettings($networkParamData, '_network_request_params', sprintf("`network_param_id`=%s", bigintval($id)), array(), false, false);
361 // Removes given network entry
362 function doAdminRemoveNetworkEntry ($table, $column, $id, $limit = 1) {
364 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_network_%s` WHERE `%s`=%s LIMIT %s",
365 array($table, $column, $id, $limit), __FUNCTION__, __LINE__);
367 // Return affected rows
368 return SQL_AFFECTEDROWS();
371 // Generates a list of networks for given script and returns it
372 function generateAdminNetworkList () {
376 // Query for all networks
377 $result = SQL_QUERY('SELECT
378 `network_id`, `network_short_name`, `network_title`
380 `{?_MYSQL_PREFIX?}_network_data`
382 `network_short_name` ASC', __FUNCTION__, __LINE__);
384 // Do we have entries?
385 if (!SQL_HASZERONUMS($result)) {
388 while ($row = SQL_FETCHARRAY($result)) {
389 // Is this valid, then add it
390 if ((is_array($row)) && (isset($row['network_id']))) {
392 $rows[$row['network_id']] = $row;
396 // Generate the selection box
397 $content = generateSelectionBoxFromArray($rows, 'network', 'network_id');
400 $content = loadTemplate('admin_settings_unsaved', false, '{--ADMIN_ENTRIES_404--}');
404 SQL_FREERESULT($result);
410 // Generator (somewhat getter) for a list of network types for given network id
411 function generateAdminNetworkTypeList ($networkId) {
415 // Query all types of this network
416 $result = SQL_QUERY_ESC("SELECT
417 `network_type_id`, `network_type_handle`
419 `{?_MYSQL_PREFIX?}_network_types`
423 `network_type_handle` ASC",
425 bigintval($networkId)
426 ), __FUNCTION__, __LINE__);
428 // Do we have entries?
429 if (!SQL_HASZERONUMS($result)) {
432 while ($row = SQL_FETCHARRAY($result)) {
433 // Is this valid, then add it
434 if ((is_array($row)) && (isset($row['network_type_id']))) {
436 $rows[$row['network_type_id']] = $row;
440 // Generate the selection box
441 $content = generateSelectionBoxFromArray($rows, 'network_type', 'network_type_id');
444 $content = loadTemplate('admin_settings_unsaved', false, '{--ADMIN_ENTRIES_404--}');
448 SQL_FREERESULT($result);
454 // Generator (somewhat getter) for a list of network types for all types
455 function generateAdminDistinctNetworkTypeList () {
459 // Query all types of this network
460 $result = SQL_QUERY('SELECT
461 t.`network_type_id`, t.`network_type_handle`, d.`network_title`
463 `{?_MYSQL_PREFIX?}_network_types` AS t
465 `{?_MYSQL_PREFIX?}_network_data` AS d
467 t.`network_id`=d.`network_id`
469 d.`network_short_name` ASC,
470 t.`network_type_handle` ASC', __FUNCTION__, __LINE__);
472 // Do we have entries?
473 if (!SQL_HASZERONUMS($result)) {
476 while ($row = SQL_FETCHARRAY($result)) {
477 // Is this valid, then add it
478 if ((is_array($row)) && (isset($row['network_type_id']))) {
480 $rows[$row['network_type_id']] = $row;
484 // Generate the selection box
485 $content = generateSelectionBoxFromArray($rows, 'network_type', 'network_type_id', '', '_title');
488 $content = loadTemplate('admin_settings_unsaved', false, '{--ADMIN_ENTRIES_404--}');
492 SQL_FREERESULT($result);
493 //* DEBUG: */ die('<pre>'.encodeEntities($content).'</pre>');
499 // Generator (somewhat getter) for network type options
500 function generateNetworkTypeOptions ($id) {
501 // Is this an array, then we just came back from edit/delete actions
502 if (is_array($id)) $id = '';
505 if (!isset($GLOBALS[__FUNCTION__][$id])) {
506 // Generate output and cache it
507 $GLOBALS[__FUNCTION__][$id] = generateOptionList(
510 'network_type_handle',
514 "WHERE `network_id`=%s",
515 bigintval(getRequestParameter('network'))
518 'translateNetworkTypeHandler'
523 return $GLOBALS[__FUNCTION__][$id];
526 // Generates an options list of all available (hard-coded) handlers
527 function generateNetworkTypesAvailableOptions () {
529 if (!isset($GLOBALS[__FUNCTION__])) {
531 $GLOBALS[__FUNCTION__] = generateOptionList(
566 $GLOBALS['network_types_disabled'],
567 'translateNetworkTypeHandler'
572 return $GLOBALS[__FUNCTION__];
575 // Generates an options list (somewhat getter) ofr request keys
576 function generateNetworkRequestKeyOptions () {
578 if (!isset($GLOBALS[__FUNCTION__])) {
579 // Generate and cache it
580 $GLOBALS[__FUNCTION__] = generateOptionList(
600 '{--ADMIN_NETWORK_REQUEST_PARAMETER_ID--}',
601 '{--ADMIN_NETWORK_REQUEST_PARAMETER_SID--}',
602 '{--ADMIN_NETWORK_REQUEST_PARAMETER_HASH--}',
603 '{--ADMIN_NETWORK_REQUEST_PARAMETER_PASSWORD--}',
604 '{--ADMIN_NETWORK_REQUEST_PARAMETER_RELOAD--}',
605 '{--ADMIN_NETWORK_REQUEST_PARAMETER_MAXIMUM_STAY--}',
606 '{--ADMIN_NETWORK_REQUEST_PARAMETER_MINIMUM_STAY--}',
607 '{--ADMIN_NETWORK_REQUEST_PARAMETER_CURRENCY--}',
608 '{--ADMIN_NETWORK_REQUEST_PARAMETER_TYPE--}',
609 '{--ADMIN_NETWORK_REQUEST_PARAMETER_REMAIN--}',
610 '{--ADMIN_NETWORK_REQUEST_PARAMETER_REWARD--}',
611 '{--ADMIN_NETWORK_REQUEST_PARAMETER_SIZE--}',
612 '{--ADMIN_NETWORK_REQUEST_PARAMETER_EROTIC--}',
613 '{--ADMIN_NETWORK_REQUEST_PARAMETER_EXTRA--}',
614 '{--ADMIN_NETWORK_REQUEST_PARAMETER_COUNTRY--}'
618 $GLOBALS['network_params_disabled']
623 return $GLOBALS[__FUNCTION__];
626 // Generator (somewhat getter) for (return) array translation
627 function generateNetworkTranslationOptions ($default = '') {
629 if (!isset($GLOBALS[__FUNCTION__][$default])) {
630 // Generate and cache it
631 $GLOBALS[__FUNCTION__][$default] = generateOptionList(
632 'network_translations',
633 'network_translation_id',
634 'network_translation_name',
638 $GLOBALS['network_translation_disabled'],
639 'translateNetworkTranslationName'
644 return $GLOBALS[__FUNCTION__][$default];
647 // Generates an option list of request types
648 function generateNetworkRequestTypeOptions ($default = '') {
650 if (!isset($GLOBALS[__FUNCTION__][$default])) {
652 $GLOBALS[__FUNCTION__][$default] = generateOptionList(
659 '{--ADMIN_NETWORK_REQUEST_TYPE_GET--}',
660 '{--ADMIN_NETWORK_REQUEST_TYPE_POST--}'
667 return $GLOBALS[__FUNCTION__][$default];
670 // Translates 'translate_name' for e.g. templates
671 function translateNetworkTranslationName ($name) {
672 // Get the message id
673 return getMessage('ADMIN_NETWORK_TRANSLATE_' . strtoupper($name) . '_NAME');
676 // Translates the network type handler (e.g. banner, paidmail) for templates
677 function translateNetworkTypeHandler ($type) {
678 // Get the message id
679 return getMessage('ADMIN_NETWORK_TYPES_' . strtoupper($type) . '');
682 // Translates request type
683 function translateNetworkRequestType ($name) {
684 // Get the message id
685 return getMessage('ADMIN_NETWORK_REQUEST_TYPE_' . strtoupper($name) . '');
688 // Translates API index
689 function translateNetworkApiIndex ($index) {
691 if (!isset($GLOBALS['network_api_index'])) {
692 // Get an array of all API array indexes
693 $GLOBALS['network_api_index'] = array();
696 $result = SQL_QUERY('SELECT
697 `network_api_id`, `network_api_index`, `network_translation_name`
699 `{?_MYSQL_PREFIX?}_network_api_translation`
701 `{?_MYSQL_PREFIX?}_network_translations`
703 `network_api_index`=`network_translation_id`
705 `sort` ASC', __FUNCTION__, __LINE__);
707 // Do we have entries?
708 if (SQL_NUMROWS($result) > 0) {
710 while ($row = SQL_FETCHARRAY($result)) {
711 // Add it to our global array
712 $GLOBALS['network_api_index'][$row['network_api_index']] = $row;
717 SQL_FREERESULT($result);
720 // Default name is unknown
723 // Is the entry there?
724 if (isset($GLOBALS['network_api_index'][$index])) {
726 $name = $GLOBALS['network_api_index'][$index]['network_translation_name'];
729 // Return translation
730 return translateNetworkTranslationName($name);
733 //------------------------------------------------------------------------------
734 // Call-back functions
735 //------------------------------------------------------------------------------
737 // Callback function to add new network
738 function doAdminNetworkProcessAddNetwork () {
739 // We can say here, the form is sent, so check if the network is already added
740 if (isNetworkNameValid(postRequestParameter('network_short_name'))) {
742 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_ALREADY_ADDED', postRequestParameter('network_short_name')));
746 // Remove the 'ok' part
747 unsetPostRequestParameter('ok');
749 // Add the whole request to database
750 SQL_QUERY('INSERT INTO
751 `{?_MYSQL_PREFIX?}_network_data`
753 `' . implode('`,`', array_keys(postRequestArray())) . "`
755 '" . implode("','", array_values(postRequestArray())) . "'
756 )", __FUNCTION__, __LINE__);
758 // Add the id for output only
759 setPostRequestParameter('network_id', SQL_INSERTID());
762 if (SQL_AFFECTEDROWS() == 1) {
763 // Successfully added
764 loadTemplate('admin_network_added', false, postRequestArray());
767 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_DATA_NOT_ADDED', postRequestParameter('network_short_name')));
771 // Displays selected networks for editing
772 function doAdminNetworkProcessHandleNetwork () {
773 // Do we have selections?
774 if (ifPostContainsSelections()) {
775 // Something has been selected, so start displaying one by one
777 foreach (postRequestParameter('sel') as $id => $sel) {
780 // Load this network's data
781 $networkData = getNetworkDataById($id);
783 // Do we have found the network?
784 if (count($networkData) > 0) {
785 if (isFormSent('edit')) {
786 // Add row template for editing
787 $OUT .= loadTemplate('admin_edit_networks_row', true, $networkData);
788 } elseif (isFormSent('del')) {
789 // Add row template for deleting
790 $OUT .= loadTemplate('admin_del_networks_row', true, $networkData);
793 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
799 // If we have no rows, we don't need to display the edit form
801 // Output main template
802 if (isFormSent('edit')) {
803 loadTemplate('admin_edit_networks', false, $OUT);
804 } elseif (isFormSent('del')) {
805 loadTemplate('admin_del_networks', false, $OUT);
808 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
811 // Don't display the list/add new form
812 $GLOBALS['network_display'] = false;
814 // Nothing selected/found
815 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_NOTHING_FOUND--}');
820 // Handle network type form
821 function doAdminNetworkProcessHandleNetworkType () {
822 // Do we have selections?
823 if (ifPostContainsSelections()) {
825 $networkData = getNetworkDataById(getRequestParameter('network'));
827 // Something has been selected, so start displaying one by one
829 foreach (postRequestParameter('sel') as $id => $sel) {
832 // Load this network's data
833 $networkTypeData = getNetworkTypeDataById($id);
835 // Do we have found the network?
836 if (count($networkTypeData) > 0) {
837 if (isFormSent('edit')) {
838 // Add row template for deleting
839 $OUT .= loadTemplate('admin_edit_network_types_row', true, $networkTypeData);
840 } elseif (isFormSent('del')) {
841 // Add row template for deleting
842 $OUT .= loadTemplate('admin_del_network_types_row', true, $networkTypeData);
845 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
851 // If we have no rows, we don't need to display the edit form
853 // Output main template
854 if (isFormSent('edit')) {
855 loadTemplate('admin_edit_network_types', false, $OUT);
856 } elseif (isFormSent('del')) {
857 loadTemplate('admin_del_network_types', false, $OUT);
860 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
863 // Don't display the list/add new form
864 $GLOBALS['network_display'] = false;
866 // Nothing selected/found
867 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_TYPES_NOTHING_FOUND--}');
872 // Handle network request parameter form
873 function doAdminNetworkProcessHandleRequestParams () {
874 // Do we have selections?
875 if (ifPostContainsSelections()) {
877 $GLOBALS['network_params_disabled'] = array();
880 $networkData = getNetworkDataById(getRequestParameter('network'));
882 // Something has been selected, so start displaying one by one
884 foreach (postRequestParameter('sel') as $id => $sel) {
887 // Load this network's data
888 $networkRequestData = getNetworkRequestParamsDataById($id);
890 // Do we have found the network?
891 if (count($networkRequestData) > 0) {
892 if (isFormSent('edit')) {
893 // Add row template for deleting
894 $OUT .= loadTemplate('admin_edit_network_params_row', true, $networkRequestData);
895 } elseif (isFormSent('del')) {
897 $networkRequestData['network_type_data'] = getNetworkTypeDataById($networkRequestData['network_type_id']);
899 // Add row template for deleting
900 $OUT .= loadTemplate('admin_del_network_params_row', true, $networkRequestData);
903 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
909 // If we have no rows, we don't need to display the edit form
911 // Output main template
912 if (isFormSent('edit')) {
913 loadTemplate('admin_edit_network_params', false, $OUT);
914 } elseif (isFormSent('del')) {
915 loadTemplate('admin_del_network_params', false, $OUT);
918 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
921 // Don't display the list/add new form
922 $GLOBALS['network_display'] = false;
924 // Nothing selected/found
925 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_FOUND--}');
930 // Changes given networks
931 function doAdminNetworkProcessChangeNetwork () {
932 // Do we have selections?
933 if (ifPostContainsSelections()) {
934 // By default nothing is updated
937 // Something has been selected, so start updating them
938 foreach (postRequestParameter('sel') as $id => $sel) {
939 // Update this entry?
942 $networkData = array();
944 // Transfer whole array, except 'sel'
945 foreach (postRequestArray() as $key => $entry) {
946 // Skip 'sel' and submit button
947 if (in_array($key, array('sel', 'change'))) continue;
949 // Do we have this enty?
950 if (!isset($entry[$id])) {
951 // Not found, needs fixing
952 debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $id . ' found.');
956 $networkData[$key] = $entry[$id];
959 // Update the network data
960 $updated += doNetworkUpdateDataByArray($id, $networkData);
964 // Do we have updates?
967 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_UPDATED', $updated));
970 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_NOTHING_CHANGED--}');
975 // Removes given networks
976 function doAdminNetworkProcessRemoveNetwork () {
977 // Do we have selections?
978 if (ifPostContainsSelections()) {
979 // By default nothing is removed
982 // Something has been selected, so start updating them
983 foreach (postRequestParameter('sel') as $id => $sel) {
984 // Update this entry?
987 $removed += doAdminRemoveNetworkEntry('data', 'network_id', $id);
991 // Do we have removes?
994 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_REMOVED', $removed));
997 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_NOTHING_REMOVED--}');
1002 // Add a network type handler if not yet found
1003 function doAdminNetworkProcessAddNetworkType () {
1004 // Is the network type handle already used with given network?
1005 if (isNetworkTypeHandleValid(postRequestParameter('network_type_handle'), getRequestParameter('network'))) {
1007 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_HANDLE_ALREADY_ADDED', postRequestParameter('network_type_handle')));
1009 // ... so abort here
1013 // Remove the 'ok' part
1014 unsetPostRequestParameter('ok');
1017 setPostRequestParameter('network_id', bigintval(getRequestParameter('network')));
1019 // Is network_type_banner_url set?
1020 if (postRequestParameter('network_type_banner_url') == '') {
1021 // Remove empty value to get a NULL for an optional entry
1022 unsetPostRequestParameter('network_type_banner_url');
1025 // Add the whole request to database
1026 SQL_QUERY('INSERT INTO
1027 `{?_MYSQL_PREFIX?}_network_types`
1029 `' . implode('`,`', array_keys(postRequestArray())) . "`
1031 '" . implode("','", array_values(postRequestArray())) . "'
1032 )", __FUNCTION__, __LINE__);
1035 if (SQL_AFFECTEDROWS() == 1) {
1036 // Successfully added
1037 loadTemplate('admin_network_type_added', false, postRequestArray());
1040 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_NOT_ADDED', postRequestParameter('network_type_handle')));
1044 // Changes given network type handlers
1045 function doAdminNetworkProcessChangeNetworkType () {
1046 // Do we have selections?
1047 if (ifPostContainsSelections()) {
1048 // By default nothing is updated
1051 // Something has been selected, so start updating them
1052 foreach (postRequestParameter('sel') as $id => $sel) {
1053 // Update this entry?
1056 $networkTypeData = array();
1058 // Transfer whole array, except 'sel'
1059 foreach (postRequestArray() as $key => $entry) {
1060 // Skip 'sel' and submit button
1061 if (in_array($key, array('sel', 'change'))) continue;
1063 // Do we have this enty?
1064 if (!isset($entry[$id])) {
1065 // Not found, needs fixing
1066 debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $id . ' found.');
1069 // Fix empty network_type_banner_url to NULL
1070 if (($key == 'network_type_banner_url') && (trim($entry[$id]) == '')) {
1076 $networkTypeData[$key] = $entry[$id];
1079 // Update the network data
1080 $updated += doNetworkUpdateTypeByArray($id, $networkTypeData);
1084 // Do we have updates?
1087 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_UPDATED', $updated));
1090 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_TYPES_NOTHING_CHANGED--}');
1095 // Changes given network request parameters
1096 function doAdminNetworkProcessChangeNetworkParam () {
1097 // Do we have selections?
1098 if (ifPostContainsSelections()) {
1099 // By default nothing is updated
1102 // Something has been selected, so start updating them
1103 foreach (postRequestParameter('sel') as $id => $sel) {
1104 // Update this entry?
1107 $networkParamsData = array();
1109 // Transfer whole array, except 'sel'
1110 foreach (postRequestArray() as $key => $entry) {
1111 // Skip 'sel' and submit button
1112 if (in_array($key, array('sel', 'change'))) continue;
1114 // Do we have this enty?
1115 if (!isset($entry[$id])) {
1116 // Not found, needs fixing
1117 debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $id . ' found.');
1120 // Fix empty request_param_default to NULL
1121 if (($key == 'request_param_default') && (trim($entry[$id]) == '')) {
1127 $networkParamsData[$key] = $entry[$id];
1130 // Update the network data
1131 $updated += doNetworkUpdateParamsByArray($id, $networkParamsData);
1135 // Do we have updates?
1138 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_UPDATED', $updated));
1141 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_CHANGED--}');
1146 // Removes given network type handlers
1147 function doAdminNetworkProcessRemoveNetworkType () {
1148 // Do we have selections?
1149 if (ifPostContainsSelections()) {
1150 // By default nothing is removed
1153 // Something has been selected, so start updating them
1154 foreach (postRequestParameter('sel') as $id => $sel) {
1155 // Update this entry?
1157 // Remove this entry
1158 $removed += doAdminRemoveNetworkEntry('types', 'network_type_id', $id);
1162 // Do we have removes?
1165 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_TYPES_REMOVED', $removed));
1168 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_TYPES_NOTHING_REMOVED--}');
1173 // Removes given network request parameters
1174 function doAdminNetworkProcessRemoveNetworkParam () {
1175 // Do we have selections?
1176 if (ifPostContainsSelections()) {
1177 // By default nothing is removed
1180 // Something has been selected, so start updating them
1181 foreach (postRequestParameter('sel') as $id => $sel) {
1182 // Update this entry?
1184 // Remove this entry
1185 $removed += doAdminRemoveNetworkEntry('request_params', 'network_param_id', $id);
1189 // Do we have removes?
1192 loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_REMOVED', $removed));
1195 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_REMOVED--}');
1200 // Adds a request parameter to given network and type
1201 function doAdminNetworkProcessAddNetworkParam () {
1202 // Is the request parameter already used with given network?
1203 if (isNetworkRequestParameterValid(postRequestParameter('request_param_key'), postRequestParameter('network_type_id'), getRequestParameter('network'))) {
1205 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_ALREADY_ADDED', postRequestParameter('request_param_key')));
1207 // ... so abort here
1211 // Remove the 'ok' part
1212 unsetPostRequestParameter('ok');
1215 setPostRequestParameter('network_id', bigintval(getRequestParameter('network')));
1217 // Is request_param_default set?
1218 if (postRequestParameter('request_param_default') == '') {
1219 // Remove empty value to get a NULL for an optional entry
1220 unsetPostRequestParameter('request_param_default');
1223 // Add the whole request to database
1224 SQL_QUERY('INSERT INTO
1225 `{?_MYSQL_PREFIX?}_network_request_params`
1227 `' . implode('`,`', array_keys(postRequestArray())) . "`
1229 '" . implode("','", array_values(postRequestArray())) . "'
1230 )", __FUNCTION__, __LINE__);
1233 if (SQL_AFFECTEDROWS() == 1) {
1234 // Successfully added
1235 loadTemplate('admin_network_request_param_added', false, postRequestArray());
1238 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_REQUEST_PARAMETER_NOT_ADDED', postRequestParameter('request_param_key')));
1242 // Adds a API response array entry
1243 function doAdminNetworkProcessAddNetworkApiTranslation () {
1244 // Is the request parameter already used with given network?
1245 if (isNetworkApiTranslationValid(postRequestParameter('network_api_index'), postRequestParameter('network_type_id'), getRequestParameter('network'))) {
1247 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_API_TRANSLATION_ALREADY_ADDED', postRequestParameter('network_api_index')));
1249 // ... so abort here
1253 // Remove the 'ok' part
1254 unsetPostRequestParameter('ok');
1257 setPostRequestParameter('network_id', bigintval(getRequestParameter('network')));
1260 setPostRequestParameter('sort', (countSumTotalData(
1261 postRequestParameter('network_id'),
1262 'network_api_translation',
1266 sprintf(" AND `network_type_id`=%s", bigintval(postRequestParameter('network_type_id')))
1269 // Add the whole request to database
1270 SQL_QUERY('INSERT INTO
1271 `{?_MYSQL_PREFIX?}_network_api_translation`
1273 `' . implode('`,`', array_keys(postRequestArray())) . "`
1275 '" . implode("','", array_values(postRequestArray())) . "'
1276 )", __FUNCTION__, __LINE__);
1279 if (SQL_AFFECTEDROWS() == 1) {
1280 // Successfully added
1281 loadTemplate('admin_network_api_translation_added', false, postRequestArray());
1284 loadTemplate('admin_settings_unsaved', false, getMaskedMessage('ADMIN_NETWORK_API_TRANSLATION_NOT_ADDED', postRequestParameter('network_api_index')));
1288 // Do expression code for this extension
1289 function doExpressionNetwork ($data) {
1290 // Construct replacer
1291 $replacer = sprintf(
1292 "{DQUOTE} . %s(%s, '%s') . {DQUOTE}",
1294 $data['matches'][4][$data['key']],
1298 // Replace %network% with the current network id
1299 $replacer = str_replace('%network%', getCurrentNetworkId(), $replacer);
1302 $code = replaceExpressionCode($data, $replacer);