X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fcallback-functions.php;h=ecd9dec87d4d9a2b045e92bfec1ee570f4bcc76b;hb=633a140f85d91f9d52b95e4c091f725d4943e2c7;hp=0d7456a6983215d735040fbb23a7f20bbfcf76c4;hpb=be79afde3071dfc4d6fe845ddb75abf13534eadb;p=mailer.git diff --git a/inc/callback-functions.php b/inc/callback-functions.php index 0d7456a698..ecd9dec87d 100644 --- a/inc/callback-functions.php +++ b/inc/callback-functions.php @@ -17,7 +17,7 @@ * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * * Copyright (c) 2009 - 2011 by Mailer Developer Team * - * For more information visit: http://www.mxchange.org * + * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -121,9 +121,9 @@ function doXmlDatabaseColumnList ($resource, $attributes) { // Handles the XML node 'database-column-list-entry' function doXmlDatabaseColumnListEntry ($resource, $attributes) { // There are three attributes, by default - if (count($attributes) != 3) { + if (count($attributes) != 6) { // Not the right count - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + debug_report_bug(__FUNCTION__, __LINE__, 'Expected 6 attributes, got ' . count($attributes)); } elseif (!isset($attributes['NAME'])) { // 'NAME' not found debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); @@ -133,12 +133,24 @@ function doXmlDatabaseColumnListEntry ($resource, $attributes) { } elseif (!isInvalidXmlType($attributes['TYPE'])) { // No valid type debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); - } elseif (!isset($attributes['VALUE'])) { - // 'VALUE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); - } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + } elseif (!isset($attributes['TABLE'])) { + // 'TABLE' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE'])) { // Not valid/verifyable - debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TYPE=' . $attributes['TYPE'] . ',TABLE=' . $attributes['TABLE']); + } elseif (!isset($attributes['ALIAS'])) { + // 'ALIAS' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.'); + } elseif (!isset($attributes['FUNCTION'])) { + // 'FUNCTION' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.'); + } elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) { + // 'ALIAS' not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']); + } elseif ((trim($attributes['FUNCTION']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['FUNCTION']))) { + // 'FUNCTION' not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_list'])) { // doXmlCallbackFunction is missing debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/database-column-list not included around this node. Please fix your XML.'); @@ -274,6 +286,48 @@ function doXmlExtraParameterMemberListEntry ($resource, $attributes) { addXmlValueToCallbackAttributes('extra_list', $attributes, 'member_list'); } +// Handles the XML node 'extra-parameter-added-list' +function doXmlExtraParameterAddedList ($resource, $attributes) { + // There should be no attributes + if (count($attributes) > 0) { + // Please don't add any attributes to foo-list nodes + debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['added_list'])) { + // This list should be created already + debug_report_bug(__FUNCTION__, __LINE__, 'added_list should be already created.'); + } +} + +// Handles the XML node 'extra-parameter-added-list-entry' +function doXmlExtraParameterAddedListEntry ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['added_list'])) { + // doXmlCallbackFunction is missing + debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/added-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the list + addXmlValueToCallbackAttributes('extra_list', $attributes, 'added_list'); +} + // Handles the XML node 'status-change-column' function doXmlStatusChangeColumn ($resource, $attributes) { // There are three attributes, by default @@ -342,7 +396,7 @@ function doXmlStatusChangeListEntry ($resource, $attributes) { debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['status_list'])) { // doXmlCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/member-list not included around this node. Please fix your XML.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/change-list not included around this node. Please fix your XML.'); } // Add the entry to the list @@ -955,12 +1009,6 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TYPE=' . $attributes['TYPE'] . ',element=' . $element); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['VALUE'] . '_list'] = array(); } elseif (!empty($extraKey)) { - // Is it bool? - if (($attributes['TYPE'] == 'bool') && (isset($attributes['VALUE']))) { - // Then convert VALUE - $attributes['VALUE'] = convertStringToBoolean($attributes['VALUE']); - } // END - if - // Sub-array (one level only) //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ' - ANALYSING...'); if (trim($attributes['NAME']) == '') { @@ -981,12 +1029,19 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', * ALIAS and FUNCTION detected? This may happen with SQL queries * like: UNIX_TIMESTAMP(`foo_timestamp`) AS `foo_timestamp` */ + + // Fix missing 'NAME' + if (!isset($attributes['NAME'])) { + $attributes['NAME'] = ''; + } // END - if + // Init array $array = array( 'column' => trim($attributes['VALUE']), 'alias' => trim($attributes['ALIAS']), 'function' => trim($attributes['FUNCTION']), - 'table' => trim($attributes['TABLE']) + 'table' => trim($attributes['TABLE']), + 'name' => trim($attributes['NAME']) ); // Add the entry @@ -1040,7 +1095,7 @@ function doXmlCallbackFunctionExecute ($callbackFunction, $args) { // Is 'id_index' set and form sent? if ((isset($args['id_index'])) && (isFormSent())) { // Prepare 'id_index' - $args['id_index'] = postRequestParameter($args['id_index']); + $args['id_index'] = postRequestElement($args['id_index']); } // END - if // Just call it