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 * -------------------------------------------------------------------- *
18 * Copyright (c) 2003 - 2009 by Roland Haeder *
19 * Copyright (c) 2009 - 2011 by Mailer Developer Team *
20 * For more information visit: http://mxchange.org *
22 * This program is free software; you can redistribute it and/or modify *
23 * it under the terms of the GNU General Public License as published by *
24 * the Free Software Foundation; either version 2 of the License, or *
25 * (at your option) any later version. *
27 * This program is distributed in the hope that it will be useful, *
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
30 * GNU General Public License for more details. *
32 * You should have received a copy of the GNU General Public License *
33 * along with this program; if not, write to the Free Software *
34 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
36 ************************************************************************/
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
43 // Private setter for current network id
44 function setCurrentNetworkId ($networkId) {
45 $GLOBALS['current_network_id'] = bigintval($networkId);
48 // Private getter for current network id
49 function getCurrentNetworkId () {
50 return $GLOBALS['current_network_id'];
53 // Handle a (maybe) sent form here
54 function doNetworkHandleForm () {
56 if ((isFormSent()) || (isFormSent('edit')) || (isFormSent('delete')) || (isFormSent('do_edit')) || (isFormSent('do_delete'))) {
58 if (isGetRequestElementSet('do')) {
59 // Process the request
60 doAdminNetworkProcessForm();
63 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_DO_404--}');
68 // Processes an admin form
69 function doAdminNetworkProcessForm () {
71 if ((!isFormSent()) && (!isFormSent('edit')) && (!isFormSent('delete')) && (!isFormSent('do_edit')) && (!isFormSent('do_delete'))) {
73 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_FORM_NOT_SENT--}');
75 } elseif (!isGetRequestElementSet('do')) {
77 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_DO_404--}');
81 // Create function name
82 $functionName = sprintf("doAdminNetworkProcess%s", capitalizeUnderscoreString(getRequestElement('do')));
84 // Is the function valid?
85 if (!function_exists($functionName)) {
86 // Invalid function name
87 debug_report_bug(__FUNCTION__, __LINE__, 'Invalid do ' . getRequestElement('do') . ', function ' . $functionName .' does not exist.', false);
90 // Call-back the method handling our request
91 call_user_func($functionName);
94 // Checks wether the (short) network name is already used (valid)
95 function isNetworkNameValid ($name) {
97 $result = SQL_QUERY_ESC("SELECT `network_id` FROM `{?_MYSQL_PREFIX?}_network_data` WHERE `network_short_name`='%s' LIMIT 1",
98 array($name), __FUNCTION__, __LINE__);
101 $isValid = (SQL_NUMROWS($result) == 1);
104 SQL_FREERESULT($result);
110 // Checks wether the given network type is already used (valid)
111 function isNetworkTypeHandleValid ($type, $networkId) {
113 $result = SQL_QUERY_ESC("SELECT `network_type_id` FROM `{?_MYSQL_PREFIX?}_network_types` WHERE `network_id`=%s AND `network_type_handle`='%s' LIMIT 1",
114 array($networkId, $type), __FUNCTION__, __LINE__);
117 $isValid = (SQL_NUMROWS($result) == 1);
120 SQL_FREERESULT($result);
126 // Checks wether the given network request parameter is already used (valid)
127 function isNetworkRequestElementValid ($key, $type, $networkId) {
129 $result = SQL_QUERY_ESC("SELECT `network_param_id` FROM `{?_MYSQL_PREFIX?}_network_request_params` WHERE `network_id`=%s AND `network_type_id`=%s AND `network_request_param_key`='%s' LIMIT 1",
130 array($networkId, $type, $key), __FUNCTION__, __LINE__);
133 $isValid = (SQL_NUMROWS($result) == 1);
136 SQL_FREERESULT($result);
142 // Checks wether the given network API array translation
143 function isNetworkApiTranslationValid ($key, $type, $networkId) {
145 $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",
146 array($networkId, $type, $key), __FUNCTION__, __LINE__);
149 $isValid = (SQL_NUMROWS($result) == 1);
152 SQL_FREERESULT($result);
158 // "Getter" for a network's data by provided id number
159 function getNetworkDataById ($networkId, $column = '') {
160 // Ids lower one are not accepted
161 if ($networkId < 1) {
162 // Not good, should be fixed
163 debug_report_bug(__FUNCTION__, __LINE__, 'Network id ' . $networkId . ' is smaller than 1.');
166 // Set current network id
167 setCurrentNetworkId($networkId);
170 if (!isset($GLOBALS['network_data'][$networkId])) {
171 // By default we have no data
172 $GLOBALS['network_data'][$networkId] = array();
174 // Query for the network data
175 $result = SQL_QUERY_ESC("SELECT
177 `network_short_name`,
180 `network_data_separator`,
181 `network_row_separator`,
182 `network_request_type`,
184 `network_require_id_card`,
185 `network_query_amount`
187 `{?_MYSQL_PREFIX?}_network_data`
191 array(bigintval($networkId)), __FUNCTION__, __LINE__);
193 // Do we have an entry?
194 if (SQL_NUMROWS($result) == 1) {
196 $GLOBALS['network_data'][$networkId] = SQL_FETCHARRAY($result);
200 SQL_FREERESULT($result);
204 if (empty($column)) {
206 return $GLOBALS['network_data'][$networkId];
209 return $GLOBALS['network_data'][$networkId][$column];
213 // "Getter" for a network's data by provided type id number
214 function getNetworkDataByTypeId ($networkId, $column = '') {
215 // Ids lower one are not accepted
216 if ($networkId < 1) {
217 // Not good, should be fixed
218 debug_report_bug(__FUNCTION__, __LINE__, 'Network type id ' . $networkId . ' is smaller than 1.');
221 // Set current network id
222 setCurrentNetworkId($networkId);
225 if (!isset($GLOBALS['network_data'][$networkId])) {
226 // By default we have no data
227 $GLOBALS['network_data'][$networkId] = array();
229 // Query for the network data
230 $result = SQL_QUERY_ESC("SELECT
232 d.`network_short_name`,
235 d.`network_data_separator`,
236 d.`network_row_separator`,
237 d.`network_request_type`,
239 d.`network_require_id_card`,
240 d.`network_query_amount`,
241 t.`network_type_handle`,
242 t.`network_type_api_url`,
243 t.`network_type_click_url`,
244 t.`network_type_banner_url`
246 `{?_MYSQL_PREFIX?}_network_data` AS d
248 `{?_MYSQL_PREFIX?}_network_types` AS t
250 d.`network_id`=t.`network_id`
252 t.`network_type_id`=%s
254 array(bigintval($networkId)), __FUNCTION__, __LINE__);
256 // Do we have an entry?
257 if (SQL_NUMROWS($result) == 1) {
259 $GLOBALS['network_data'][$networkId] = SQL_FETCHARRAY($result);
263 SQL_FREERESULT($result);
267 if (empty($column)) {
269 return $GLOBALS['network_data'][$networkId];
272 return $GLOBALS['network_data'][$networkId][$column];
276 // "Getter" for a network type data by provided id number
277 function getNetworkTypeDataById ($networkId) {
278 // Ids lower one are not accepted
279 if ($networkId < 1) {
280 // Not good, should be fixed
281 debug_report_bug(__FUNCTION__, __LINE__, 'Network type id ' . $networkId . ' is smaller than 1.');
284 // By default we have no data
285 $GLOBALS['network_type_data'][$networkId] = array();
287 // Query for the network data
288 $result = SQL_QUERY_ESC("SELECT
291 `network_type_handle`,
292 `network_type_api_url`,
293 `network_type_click_url`,
294 `network_type_banner_url`
296 `{?_MYSQL_PREFIX?}_network_types`
300 array(bigintval($networkId)), __FUNCTION__, __LINE__);
302 // Do we have an entry?
303 if (SQL_NUMROWS($result) == 1) {
305 $GLOBALS['network_type_data'][$networkId] = SQL_FETCHARRAY($result);
309 SQL_FREERESULT($result);
312 return $GLOBALS['network_type_data'][$networkId];
315 // "Getter" for a network request parameter data by provided id number
316 function getNetworkRequestParamsDataById ($networkId) {
317 // Ids lower one are not accepted
318 if ($networkId < 1) {
319 // Not good, should be fixed
320 debug_report_bug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $networkId . ' is smaller than 1.');
323 // By default we have no data
324 $networkRequestData = array();
326 // Query for the network data
327 $result = SQL_QUERY_ESC("SELECT
331 `network_request_param_key`,
332 `network_request_param_value`,
333 `network_request_param_default`
335 `{?_MYSQL_PREFIX?}_network_request_params`
337 `network_param_id`=%s
339 array(bigintval($networkId)), __FUNCTION__, __LINE__);
341 // Do we have an entry?
342 if (SQL_NUMROWS($result) == 1) {
344 $networkRequestData = SQL_FETCHARRAY($result);
348 SQL_FREERESULT($result);
351 return $networkRequestData;
354 // Updates given network (id) with data from array
355 function doNetworkUpdateDataByArray ($networkId, $networkData) {
356 // Ids lower one are not accepted
357 if ($networkId < 1) {
358 // Not good, should be fixed
359 debug_report_bug(__FUNCTION__, __LINE__, 'Network id ' . $networkId . ' is smaller than 1.');
362 // Just call our inner method
363 return adminSaveSettings($networkData, '_network_data', sprintf("`network_id`=%s", bigintval($networkId)), array(), false, false);
366 // Updates given network type handler (id) with data from array
367 function doNetworkUpdateTypeByArray ($networkId, $networkTypeData) {
368 // Ids lower one are not accepted
369 if ($networkId < 1) {
370 // Not good, should be fixed
371 debug_report_bug(__FUNCTION__, __LINE__, 'Network type handler id ' . $networkId . ' is smaller than 1.');
374 // Just call our inner method
375 return adminSaveSettings($networkTypeData, '_network_types', sprintf("`network_type_id`=%s", bigintval($networkId)), array(), false, false);
378 // Updates given network request parameters (id) with data from array
379 function doNetworkUpdateParamsByArray ($networkId, $networkParamData) {
380 // Ids lower one are not accepted
381 if ($networkId < 1) {
382 // Not good, should be fixed
383 debug_report_bug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $networkId . ' is smaller than 1.');
386 // Just call our inner method
387 return adminSaveSettings($networkParamData, '_network_request_params', sprintf("`network_param_id`=%s", bigintval($networkId)), array(), false, false);
390 // Removes given network entry
391 function doAdminRemoveNetworkEntry ($table, $column, $networkId, $limit = 1) {
393 SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_network_%s` WHERE `%s`=%s LIMIT %s",
394 array($table, $column, $networkId, $limit), __FUNCTION__, __LINE__);
396 // Return affected rows
397 return SQL_AFFECTEDROWS();
400 // Generates a list of networks for given script and returns it
401 function generateAdminNetworkList () {
405 // Query for all networks
406 $result = SQL_QUERY('SELECT
407 `network_id`,`network_short_name`,`network_title`
409 `{?_MYSQL_PREFIX?}_network_data`
411 `network_short_name` ASC', __FUNCTION__, __LINE__);
413 // Do we have entries?
414 if (!SQL_HASZERONUMS($result)) {
417 while ($row = SQL_FETCHARRAY($result)) {
418 // Is this valid, then add it
419 if ((is_array($row)) && (isset($row['network_id']))) {
421 $rows[$row['network_id']] = $row;
425 // Generate the selection box
426 $content = generateSelectionBoxFromArray($rows, 'network', 'network_id');
429 $content = loadTemplate('admin_settings_unsaved', false, '{--ADMIN_ENTRIES_404--}');
433 SQL_FREERESULT($result);
439 // Generator (somewhat getter) for a list of network types for given network id
440 function generateAdminNetworkTypeList ($networkId) {
444 // Query all types of this network
445 $result = SQL_QUERY_ESC("SELECT
446 `network_type_id`,`network_type_handle`
448 `{?_MYSQL_PREFIX?}_network_types`
452 `network_type_handle` ASC",
454 bigintval($networkId)
455 ), __FUNCTION__, __LINE__);
457 // Do we have entries?
458 if (!SQL_HASZERONUMS($result)) {
461 while ($row = SQL_FETCHARRAY($result)) {
462 // Is this valid, then add it
463 if ((is_array($row)) && (isset($row['network_type_id']))) {
465 $rows[$row['network_type_id']] = $row;
469 // Generate the selection box
470 $content = generateSelectionBoxFromArray($rows, 'network_type', 'network_type_id');
473 $content = loadTemplate('admin_settings_unsaved', false, '{--ADMIN_ENTRIES_404--}');
477 SQL_FREERESULT($result);
483 // Generator (somewhat getter) for a list of network types for all types
484 function generateAdminDistinctNetworkTypeList () {
488 // Query all types of this network
489 $result = SQL_QUERY('SELECT
490 t.`network_type_id`, t.`network_type_handle`, d.`network_title`
492 `{?_MYSQL_PREFIX?}_network_types` AS t
494 `{?_MYSQL_PREFIX?}_network_data` AS d
496 t.`network_id`=d.`network_id`
498 d.`network_short_name` ASC,
499 t.`network_type_handle` ASC', __FUNCTION__, __LINE__);
501 // Do we have entries?
502 if (!SQL_HASZERONUMS($result)) {
505 while ($row = SQL_FETCHARRAY($result)) {
506 // Is this valid, then add it
507 if ((is_array($row)) && (isset($row['network_type_id']))) {
509 $rows[$row['network_type_id']] = $row;
513 // Generate the selection box
514 $content = generateSelectionBoxFromArray($rows, 'network_type', 'network_type_id', '', '_title');
517 $content = loadTemplate('admin_settings_unsaved', false, '{--ADMIN_ENTRIES_404--}');
521 SQL_FREERESULT($result);
522 //* DEBUG: */ die('<pre>'.encodeEntities($content).'</pre>');
528 // Generator (somewhat getter) for network type options
529 function generateNetworkTypeOptions ($networkId) {
530 // Is this an array, then we just came back from edit/delete actions
531 if (is_array($networkId)) {
536 if (!isset($GLOBALS[__FUNCTION__][$networkId])) {
537 // Generate output and cache it
538 $GLOBALS[__FUNCTION__][$networkId] = generateOptionList(
541 'network_type_handle',
545 "WHERE `network_id`=%s",
546 bigintval(getRequestElement('network'))
549 'translateNetworkTypeHandler'
554 return $GLOBALS[__FUNCTION__][$networkId];
557 // Generates an options list of all available (hard-coded) handlers
558 function generateNetworkTypesAvailableOptions () {
560 if (!isset($GLOBALS[__FUNCTION__])) {
562 $GLOBALS[__FUNCTION__] = generateOptionList(
598 $GLOBALS['network_types_disabled'],
599 'translateNetworkTypeHandler'
604 return $GLOBALS[__FUNCTION__];
607 // Generates an options list (somewhat getter) ofr request keys
608 function generateNetworkRequestKeyOptions () {
610 if (!isset($GLOBALS[__FUNCTION__])) {
611 // Generate and cache it
612 $GLOBALS[__FUNCTION__] = generateOptionList(
634 $GLOBALS['network_params_disabled'],
635 'translateNetworkRequestElement'
640 return $GLOBALS[__FUNCTION__];
643 // Generator (somewhat getter) for (return) array translation
644 function generateNetworkTranslationOptions ($default = '') {
646 if (!isset($GLOBALS[__FUNCTION__][$default])) {
647 // Generate and cache it
648 $GLOBALS[__FUNCTION__][$default] = generateOptionList(
649 'network_translations',
650 'network_translation_id',
651 'network_translation_name',
655 $GLOBALS['network_translation_disabled'],
656 'translateNetworkTranslationName'
661 return $GLOBALS[__FUNCTION__][$default];
664 // Generates an option list of request types
665 function generateNetworkRequestTypeOptions ($default = '') {
667 if (!isset($GLOBALS[__FUNCTION__][$default])) {
669 $GLOBALS[__FUNCTION__][$default] = generateOptionList(
676 '{--ADMIN_NETWORK_REQUEST_TYPE_GET--}',
677 '{--ADMIN_NETWORK_REQUEST_TYPE_POST--}'
684 return $GLOBALS[__FUNCTION__][$default];
687 // Generates an option list of network_api_active
688 function generateNetworkApiActiveOptions ($default = '') {
690 if (!isset($GLOBALS[__FUNCTION__][$default])) {
692 $GLOBALS[__FUNCTION__][$default] = generateYesNoOptionList($default);
696 return $GLOBALS[__FUNCTION__][$default];
699 // Translates 'translate_name' for e.g. templates
700 function translateNetworkTranslationName ($name) {
701 // Get the message id
702 return '{--ADMIN_NETWORK_TRANSLATE_' . strtoupper($name) . '_NAME--}';
705 // Translates the network type handler (e.g. banner, paidmail) for templates
706 function translateNetworkTypeHandler ($type) {
707 // Get the message id
708 return '{--ADMIN_NETWORK_TYPES_' . strtoupper($type) . '--}';
711 // Translates request type
712 function translateNetworkRequestType ($type) {
713 // Get the message id
714 return '{--ADMIN_NETWORK_REQUEST_TYPE_' . strtoupper($type) . '--}';
717 // Translates request parameter
718 function translateNetworkRequestElement ($param) {
719 // Get the message id
720 return '{--ADMIN_NETWORK_REQUEST_PARAMETER_' . strtoupper($param) . '--}';
723 // Translates API index
724 function translateNetworkApiIndex ($index) {
726 if (!isset($GLOBALS['network_api_index'])) {
727 // Get an array of all API array indexes
728 $GLOBALS['network_api_index'] = array();
731 $result = SQL_QUERY('SELECT
732 `network_api_id`,`network_api_index`,`network_translation_name`
734 `{?_MYSQL_PREFIX?}_network_api_translation`
736 `{?_MYSQL_PREFIX?}_network_translations`
738 `network_api_index`=`network_translation_id`
740 `sort` ASC', __FUNCTION__, __LINE__);
742 // Do we have entries?
743 if (!SQL_HASZERONUMS($result)) {
745 while ($row = SQL_FETCHARRAY($result)) {
746 // Add it to our global array
747 $GLOBALS['network_api_index'][$row['network_api_index']] = $row;
752 SQL_FREERESULT($result);
755 // Default name is unknown
758 // Is the entry there?
759 if (isset($GLOBALS['network_api_index'][$index])) {
761 $name = $GLOBALS['network_api_index'][$index]['network_translation_name'];
764 // Return translation
765 return translateNetworkTranslationName($name);
768 // Translates network API configuration status (see function isNetworkApiConfigured()) by given id
769 function translateNetworkApiConfiguredStatusById ($networkId) {
771 if (!isset($GLOBALS[__FUNCTION__][$networkId])) {
772 // By default it is not configured
773 $GLOBALS[__FUNCTION__][$networkId] = '{--ADMIN_NETWORK_API_NOT_CONFIGURED--}';
775 // So is it configured?
776 if (isNetworkApiConfigured($networkId)) {
778 $GLOBALS[__FUNCTION__][$networkId] = '{--ADMIN_NETWORK_API_CONFIGURED--}';
783 return $GLOBALS[__FUNCTION__][$networkId];
786 // Checks if the given network is configured by looking its API configuration entry up
787 function isNetworkApiConfigured ($networkId) {
789 if (!isset($GLOBALS[__FUNCTION__][$networkId])) {
790 // Check for an entry in network_api_config
791 $GLOBALS[__FUNCTION__][$networkId] = (countSumTotalData(
792 bigintval($networkId),
793 'network_api_config',
801 return $GLOBALS[__FUNCTION__][$networkId];
804 //------------------------------------------------------------------------------
805 // Call-back functions
806 //------------------------------------------------------------------------------
808 // Callback function to add new network
809 function doAdminNetworkProcessAddNetwork () {
810 // We can say here, the form is sent, so check if the network is already added
811 if (isNetworkNameValid(postRequestElement('network_short_name'))) {
813 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_ALREADY_ADDED=' . postRequestElement('network_short_name') . '%}');
817 // Remove the 'ok' part
818 unsetPostRequestElement('ok');
820 // Add the whole request to database
821 SQL_QUERY(getInsertSqlFromArray(postRequestArray(), 'network_data'), __FUNCTION__, __LINE__);
823 // Add the id for output only
824 setPostRequestElement('network_id', SQL_INSERTID());
827 if (!SQL_HASZEROAFFECTED()) {
828 // Successfully added
829 loadTemplate('admin_network_added', false, postRequestArray());
832 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_DATA_NOT_ADDED=' . postRequestElement('network_short_name') . '%}');
836 // Displays selected networks for editing
837 function doAdminNetworkProcessHandleNetwork () {
838 // Do we have selections?
839 if (ifPostContainsSelections()) {
840 // Something has been selected, so start displaying one by one
842 foreach (postRequestElement('sel') as $networkId => $sel) {
845 // Load this network's data
846 $networkData = getNetworkDataById($networkId);
848 // Do we have found the network?
849 if (count($networkData) > 0) {
850 if (isFormSent('edit')) {
851 // Add row template for editing
852 $OUT .= loadTemplate('admin_edit_networks_row', true, $networkData);
853 } elseif (isFormSent('delete')) {
854 // Add row template for deleting
855 $OUT .= loadTemplate('admin_delete_networks_row', true, $networkData);
858 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
864 // If we have no rows, we don't need to display the edit form
866 // Output main template
867 if (isFormSent('edit')) {
868 loadTemplate('admin_edit_networks', false, $OUT);
869 } elseif (isFormSent('delete')) {
870 loadTemplate('admin_delete_networks', false, $OUT);
873 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
876 // Don't display the list/add new form
877 $GLOBALS['network_display'] = false;
879 // Nothing selected/found
880 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_NOTHING_FOUND--}');
885 // Handle network type form
886 function doAdminNetworkProcessHandleNetworkType () {
887 // Do we have selections?
888 if (ifPostContainsSelections()) {
890 $networkData = getNetworkDataById(getRequestElement('network'));
892 // Something has been selected, so start displaying one by one
894 foreach (postRequestElement('sel') as $networkId => $sel) {
897 // Load this network's data
898 $networkTypeData = getNetworkTypeDataById($networkId);
900 // Do we have found the network?
901 if (count($networkTypeData) > 0) {
902 if (isFormSent('edit')) {
903 // Add row template for deleting
904 $OUT .= loadTemplate('admin_edit_network_types_row', true, $networkTypeData);
905 } elseif (isFormSent('delete')) {
906 // Add row template for deleting
907 $OUT .= loadTemplate('admin_delete_network_types_row', true, $networkTypeData);
910 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
916 // If we have no rows, we don't need to display the edit form
918 // Output main template
919 if (isFormSent('edit')) {
920 loadTemplate('admin_edit_network_types', false, $OUT);
921 } elseif (isFormSent('delete')) {
922 loadTemplate('admin_delete_network_types', false, $OUT);
925 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
928 // Don't display the list/add new form
929 $GLOBALS['network_display'] = false;
931 // Nothing selected/found
932 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_TYPES_NOTHING_FOUND--}');
937 // Handle network request parameter form
938 function doAdminNetworkProcessHandleRequestParams () {
939 // Do we have selections?
940 if (ifPostContainsSelections()) {
942 $GLOBALS['network_params_disabled'] = array();
945 $networkData = getNetworkDataById(getRequestElement('network'));
947 // Something has been selected, so start displaying one by one
949 foreach (postRequestElement('sel') as $networkId => $sel) {
952 // Load this network's data
953 $networkRequestData = getNetworkRequestParamsDataById($networkId);
955 // Do we have found the network?
956 if (count($networkRequestData) > 0) {
957 if (isFormSent('edit')) {
958 // Add row template for deleting
959 $OUT .= loadTemplate('admin_edit_network_params_row', true, $networkRequestData);
960 } elseif (isFormSent('delete')) {
962 $networkRequestData['network_type_data'] = getNetworkTypeDataById($networkRequestData['network_type_id']);
964 // Add row template for deleting
965 $OUT .= loadTemplate('admin_delete_network_params_row', true, $networkRequestData);
968 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
974 // If we have no rows, we don't need to display the edit form
976 // Output main template
977 if (isFormSent('edit')) {
978 loadTemplate('admin_edit_network_params', false, $OUT);
979 } elseif (isFormSent('delete')) {
980 loadTemplate('admin_delete_network_params', false, $OUT);
983 debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
986 // Don't display the list/add new form
987 $GLOBALS['network_display'] = false;
989 // Nothing selected/found
990 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_FOUND--}');
995 // Changes given networks
996 function doAdminNetworkProcessChangeNetwork () {
997 // Do we have selections?
998 if (ifPostContainsSelections()) {
999 // By default nothing is updated
1002 // Something has been selected, so start updating them
1003 foreach (postRequestElement('sel') as $networkId => $sel) {
1004 // Update this entry?
1007 $networkData = array();
1009 // Transfer whole array, except 'sel'
1010 foreach (postRequestArray() as $key => $entry) {
1011 // Skip 'sel' and submit button
1012 if (in_array($key, array('sel', 'do_edit'))) {
1016 // Do we have this enty?
1017 if (!isset($entry[$networkId])) {
1018 // Not found, needs fixing
1019 debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
1023 $networkData[$key] = $entry[$networkId];
1026 // Update the network data
1027 $updated += doNetworkUpdateDataByArray($networkId, $networkData);
1031 // Do we have updates?
1034 displayMessage('{%message,ADMIN_NETWORK_UPDATED=' . $updated . '%}');
1037 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_NOTHING_CHANGED--}');
1042 // Removes given networks
1043 function doAdminNetworkProcessRemoveNetwork () {
1044 // Do we have selections?
1045 if (ifPostContainsSelections()) {
1046 // By default nothing is removed
1049 // Something has been selected, so start updating them
1050 foreach (postRequestElement('sel') as $networkId => $sel) {
1051 // Update this entry?
1053 // Remove this entry
1054 $removed += doAdminRemoveNetworkEntry('data', 'network_id', $networkId);
1058 // Do we have removes?
1061 displayMessage('{%message,ADMIN_NETWORK_REMOVED=' . $removed . '%}');
1064 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_NOTHING_REMOVED--}');
1069 // Add a network type handler if not yet found
1070 function doAdminNetworkProcessAddNetworkType () {
1071 // Is the network type handle already used with given network?
1072 if (isNetworkTypeHandleValid(postRequestElement('network_type_handle'), getRequestElement('network'))) {
1074 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_TYPES_HANDLE_ALREADY_ADDED=' . postRequestElement('network_type_handle') . '%}');
1076 // ... so abort here
1080 // Remove the 'ok' part
1081 unsetPostRequestElement('ok');
1084 setPostRequestElement('network_id', bigintval(getRequestElement('network')));
1086 // Is network_type_banner_url set?
1087 if (postRequestElement('network_type_banner_url') == '') {
1088 // Remove empty value to get a NULL for an optional entry
1089 unsetPostRequestElement('network_type_banner_url');
1092 // Add the whole request to database
1093 SQL_QUERY(getInsertSqlFromArray(postRequestArray(), 'network_types'), __FUNCTION__, __LINE__);
1096 if (!SQL_HASZEROAFFECTED()) {
1097 // Successfully added
1098 loadTemplate('admin_network_type_added', false, postRequestArray());
1101 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_TYPES_NOT_ADDED=' . postRequestElement('network_type_handle') . '%}');
1105 // Changes given network type handlers
1106 function doAdminNetworkProcessChangeNetworkType () {
1107 // Do we have selections?
1108 if (ifPostContainsSelections()) {
1109 // By default nothing is updated
1112 // Something has been selected, so start updating them
1113 foreach (postRequestElement('sel') as $networkId => $sel) {
1114 // Update this entry?
1117 $networkTypeData = array();
1119 // Transfer whole array, except 'sel'
1120 foreach (postRequestArray() as $key => $entry) {
1121 // Skip 'sel' and submit button
1122 if (in_array($key, array('sel', 'do_edit'))) {
1126 // Do we have this enty?
1127 if (!isset($entry[$networkId])) {
1128 // Not found, needs fixing
1129 debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
1132 // Fix empty network_type_banner_url to NULL
1133 if (($key == 'network_type_banner_url') && (trim($entry[$networkId]) == '')) {
1135 $entry[$networkId] = NULL;
1139 $networkTypeData[$key] = $entry[$networkId];
1142 // Update the network data
1143 $updated += doNetworkUpdateTypeByArray($networkId, $networkTypeData);
1147 // Do we have updates?
1150 displayMessage('{%message,ADMIN_NETWORK_TYPES_UPDATED=' . $updated . '%}');
1153 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_TYPES_NOTHING_CHANGED--}');
1158 // Changes given network request parameters
1159 function doAdminNetworkProcessChangeNetworkParam () {
1160 // Do we have selections?
1161 if (ifPostContainsSelections()) {
1162 // By default nothing is updated
1165 // Something has been selected, so start updating them
1166 foreach (postRequestElement('sel') as $networkId => $sel) {
1167 // Update this entry?
1170 $networkParamsData = array();
1172 // Transfer whole array, except 'sel'
1173 foreach (postRequestArray() as $key => $entry) {
1174 // Skip 'sel' and submit button
1175 if (in_array($key, array('sel', 'do_edit'))) {
1179 // Do we have this enty?
1180 if (!isset($entry[$networkId])) {
1181 // Not found, needs fixing
1182 debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
1185 // Fix empty network_request_param_default to NULL
1186 if (($key == 'network_request_param_default') && (trim($entry[$networkId]) == '')) {
1188 $entry[$networkId] = NULL;
1192 $networkParamsData[$key] = $entry[$networkId];
1195 // Update the network data
1196 $updated += doNetworkUpdateParamsByArray($networkId, $networkParamsData);
1200 // Do we have updates?
1203 displayMessage('{%message,ADMIN_NETWORK_REQUEST_PARAMETER_UPDATED=' . $updated . '%}');
1206 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_CHANGED--}');
1211 // Removes given network type handlers
1212 function doAdminNetworkProcessRemoveNetworkType () {
1213 // Do we have selections?
1214 if (ifPostContainsSelections()) {
1215 // By default nothing is removed
1218 // Something has been selected, so start updating them
1219 foreach (postRequestElement('sel') as $networkId => $sel) {
1220 // Update this entry?
1222 // Remove this entry
1223 $removed += doAdminRemoveNetworkEntry('types', 'network_type_id', $networkId);
1227 // Do we have removes?
1230 displayMessage('{%message,ADMIN_NETWORK_TYPES_REMOVED=' . $removed . '%}');
1233 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_TYPES_NOTHING_REMOVED--}');
1238 // Removes given network request parameters
1239 function doAdminNetworkProcessRemoveNetworkParam () {
1240 // Do we have selections?
1241 if (ifPostContainsSelections()) {
1242 // By default nothing is removed
1245 // Something has been selected, so start updating them
1246 foreach (postRequestElement('sel') as $networkId => $sel) {
1247 // Update this entry?
1249 // Remove this entry
1250 $removed += doAdminRemoveNetworkEntry('request_params', 'network_param_id', $networkId);
1254 // Do we have removes?
1257 displayMessage('{%message,ADMIN_NETWORK_REQUEST_PARAMETER_REMOVED=' . $removed . '%}');
1260 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_NETWORK_REQUEST_PARAMETER_NOTHING_REMOVED--}');
1265 // Adds a request parameter to given network and type
1266 function doAdminNetworkProcessAddNetworkParam () {
1267 // Is the request parameter already used with given network?
1268 if (isNetworkRequestElementValid(postRequestElement('network_request_param_key'), postRequestElement('network_type_id'), getRequestElement('network'))) {
1270 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_REQUEST_PARAMETER_ALREADY_ADDED=' . postRequestElement('network_request_param_key') . '%}');
1272 // ... so abort here
1276 // Remove the 'ok' part
1277 unsetPostRequestElement('ok');
1280 setPostRequestElement('network_id', bigintval(getRequestElement('network')));
1282 // Is network_request_param_default set?
1283 if (postRequestElement('network_request_param_default') == '') {
1284 // Remove empty value to get a NULL for an optional entry
1285 unsetPostRequestElement('network_request_param_default');
1288 // Add the whole request to database
1289 SQL_QUERY(getInsertSqlFromArray(postRequestArray(), 'network_request_params'), __FUNCTION__, __LINE__);
1292 if (!SQL_HASZEROAFFECTED()) {
1293 // Successfully added
1294 loadTemplate('admin_network_network_request_param_added', false, postRequestArray());
1297 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_REQUEST_PARAMETER_NOT_ADDED=' . postRequestElement('network_request_param_key') . '%}');
1301 // Adds a API response array entry
1302 function doAdminNetworkProcessAddNetworkApiTranslation () {
1303 // Is the request parameter already used with given network?
1304 if (isNetworkApiTranslationValid(postRequestElement('network_api_index'), postRequestElement('network_type_id'), getRequestElement('network'))) {
1306 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_API_TRANSLATION_ALREADY_ADDED=' . postRequestElement('network_api_index') . '%}');
1308 // ... so abort here
1312 // Remove the 'ok' part
1313 unsetPostRequestElement('ok');
1316 setPostRequestElement('network_id', bigintval(getRequestElement('network')));
1319 setPostRequestElement('sort', (countSumTotalData(
1320 bigintval(postRequestElement('network_id')),
1321 'network_api_translation',
1325 sprintf(" AND `network_type_id`=%s", bigintval(postRequestElement('network_type_id')))
1328 // Add the whole request to database
1329 SQL_QUERY(getInsertSqlFromArray(postRequestArray(), 'network_api_translation'), __FUNCTION__, __LINE__);
1332 if (!SQL_HASZEROAFFECTED()) {
1333 // Successfully added
1334 loadTemplate('admin_network_api_translation_added', false, postRequestArray());
1337 loadTemplate('admin_settings_unsaved', false, '{%message,ADMIN_NETWORK_API_TRANSLATION_NOT_ADDED=' . postRequestElement('network_api_index') . '%}');
1341 // Adds/update network API configuration
1342 function doAdminNetworkProcessNetworkApiConfig () {
1343 // Remove the 'ok' part
1344 unsetPostRequestElement('ok');
1347 setPostRequestElement('network_id', bigintval(getRequestElement('network')));
1349 // Is network_api_referral_button set?
1350 if (postRequestElement('network_api_referral_button') == '') {
1351 // Remove empty value to get a NULL for an optional entry
1352 unsetPostRequestElement('network_api_referral_button');
1355 // Is there already an entry?
1356 if (isNetworkApiConfigured(getRequestElement('network'))) {
1357 // Generate SQL query
1358 $SQL = getUpdateSqlFromArray(postRequestArray(), 'network_api_config', 'network_id', postRequestElement('network_id'), array('network_id'));
1361 $SQL = getInsertSqlFromArray(postRequestArray(), 'network_api_config');
1365 SQL_QUERY($SQL, __FUNCTION__, __LINE__);
1368 if (!SQL_HASZEROAFFECTED()) {
1369 // Successfully added
1370 displayMessage('{--ADMIN_CONFIG_NETWORK_API_SAVED--}');
1373 loadTemplate('admin_settings_unsaved', false, '{--ADMIN_CONFIG_NETWORK_API_NOT_SAVED--}');
1377 // Do expression code for this extension
1378 function doExpressionNetwork ($data) {
1379 // Construct replacer
1380 $replacer = sprintf(
1381 "{DQUOTE} . %s(%s, '%s') . {DQUOTE}",
1383 $data['matches'][4][$data['key']],
1387 // Replace %network% with the current network id
1388 $replacer = str_replace('%network%', getCurrentNetworkId(), $replacer);
1391 $code = replaceExpressionCode($data, $replacer);