X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fcallback-functions.php;h=0d7456a6983215d735040fbb23a7f20bbfcf76c4;hb=0e104a9282a1cdc7d769bbccb03bd3462aa8f4e0;hp=59c06e66ec95ca9315fa8b414ba01067d1e5673f;hpb=d6417790061e18fc1a9770ff93bb4e9d106b2f6e;p=mailer.git diff --git a/inc/callback-functions.php b/inc/callback-functions.php index 59c06e66ec..0d7456a698 100644 --- a/inc/callback-functions.php +++ b/inc/callback-functions.php @@ -75,37 +75,6 @@ function doXmlCallbackFunction ($resource, $attributes) { $GLOBALS['__XML_ARGUMENTS'][__FUNCTION__] = array(); } -// Handles the XML node 'post-data-identify-index' -function doXmlPostDataIdentifyIndex ($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'])) { - // doXmlCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); - } - - // Add the POST data index for 'id' - addXmlValueToCallbackAttributes('id_index', $attributes); - //$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['id_index'] = $attributes['VALUE']; -} - // Handles the XML node 'database-table' function doXmlDatabaseTable ($resource, $attributes) { // There are three attributes, by default @@ -628,6 +597,54 @@ function doXmlWhereSelectFromList ($resource, $attributes) { $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['where_select_list'] = array(); } +// Handles the XML node 'where-select-from-list-entry' +function doXmlWhereSelectFromListEntry ($resource, $attributes) { + // There are five attributes, by default + if (count($attributes) != 5) { + // Not the right count + debug_report_bug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['TABLE'])) { + // 'TABLE' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.'); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['CONDITION'])) { + // 'CONDITION' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute CONDITION not found.'); + } elseif (!isset($attributes['LOOK-FOR'])) { + // 'LOOK-FOR' not found + debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute LOOK-FOR not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif ((trim($attributes['TABLE']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE']))) { + // 'TABLE' not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // 'VALUE' not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['CONDITION'])) { + // 'CONDITION' not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute CONDITION does not validate. CONDITION=' . $attributes['CONDITION']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['LOOK-FOR'])) { + // 'LOOK-FOR' not valid/verifyable + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute LOOK-FOR does not validate. LOOK-FOR=' . $attributes['LOOK-FOR']); + } elseif (!isXmlConditionValid($attributes['CONDITION'])) { + // 'CONDITION' is not known + debug_report_bug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. LOOK-FOR=' . $attributes['CONDITION']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) { + // doXmlCallbackFunction is missing + debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-column-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('where_select_list', $attributes); +} + // Handles the XML node 'order-by-list' function doXmlOrderByList ($resource, $attributes) { // There should be no attributes @@ -655,15 +672,15 @@ function doXmlOrderByListEntry ($resource, $attributes) { } 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['TABLE'])) { // 'TABLE' not found debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.'); } elseif (!isset($attributes['VALUE'])) { // 'VALUE' not found debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['ORDER'])) { // 'ORDER' not valid/verifyable debug_report_bug(__FUNCTION__, __LINE__, 'Attribute ORDER does not validate. ORDER=' . $attributes['ORDER']); @@ -905,17 +922,37 @@ function isXmlTypeInt ($value) { return (bigintval($value) == $value); } +// Check for callback type +function isXmlTypeCallback ($value) { + // Trim value + $value = trim($value); + + // This value is always a string + return (function_exists($value)); +} + //----------------------------------------------------------------------------- // Private XML functions //----------------------------------------------------------------------------- // Adds given attribut to element function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', $key = '') { + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',key=' . $key . ' - ENTERED!'); + // Is it boolean type? + if (($attributes['TYPE'] == 'bool') && (isset($attributes['VALUE']))) { + // Then convert VALUE + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TYPE=' . $attributes['TYPE'] . ',element=' . $element . ' - CONVERTING!'); + $attributes['VALUE'] = convertStringToBoolean($attributes['VALUE']); + } elseif ($attributes['TYPE'] == 'callback') { + // It is a simple call-back type + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TYPE=' . $attributes['TYPE'] . ',element=' . $element . ' - CALLING!'); + $attributes['VALUE'] = call_user_func($attributes['VALUE']); + } + // What do we need to add? - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',key=' . $key . ' - ENTERED!'); if ($attributes['TYPE'] == 'array') { // Another nested array - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TYPE=ARRAY, element=' . $element); + //* 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? @@ -925,18 +962,18 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', } // END - if // Sub-array (one level only) - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ' - ANALYSING...'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ' - ANALYSING...'); if (trim($attributes['NAME']) == '') { // Numerical index - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey][] = $attributes['VALUE']; } elseif (!empty($key)) { // Use from $key - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - KEY! (key=' . $attributes[$key] . ')'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - KEY! (key=' . $attributes[$key] . ')'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey][$attributes[$key]] = $attributes['VALUE']; } else { // Use from NAME - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NAME! (NAME=' . $attributes['NAME'] . ')'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NAME! (NAME=' . $attributes['NAME'] . ')'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey][$attributes['NAME']] = $attributes['VALUE']; } } elseif ((isset($attributes['FUNCTION'])) && (isset($attributes['ALIAS']))) { @@ -953,33 +990,45 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', ); // Add the entry - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'].',ALIAS[' . gettype($attributes['ALIAS']) . ']=' . $attributes['ALIAS'] . ',FUNCTION[' . gettype($attributes['FUNCTION']) . ']=' . $attributes['FUNCTION'] . ' - FUNCTION! (VALUE=' . $attributes['VALUE'] . ')'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',ALIAS[' . gettype($attributes['ALIAS']) . ']=' . $attributes['ALIAS'] . ',FUNCTION[' . gettype($attributes['FUNCTION']) . ']=' . $attributes['FUNCTION'] . ' - FUNCTION! (VALUE=' . $attributes['VALUE'] . ')'); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][] = $array; + } elseif ((isset($attributes['CONDITION'])) && (isset($attributes['LOOK-FOR']))) { + // CONDITION/LOOK-FOR detected + // Init array + $array = array( + 'column' => trim($attributes['VALUE']), + 'table' => trim($attributes['TABLE']), + 'condition' => convertXmlContion(trim($attributes['CONDITION'])), + 'look_for' => trim($attributes['LOOK-FOR']) + ); + + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CONDITION[' . gettype($attributes['CONDITION']) . ']=' . $attributes['CONDITION'] . ',LOOK-FOR[' . gettype($attributes['LOOK-FOR']) . ']=' . $attributes['LOOK-FOR'] . ' - CONDITION! (VALUE=' . $attributes['VALUE'] . ')'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][] = $array; } elseif (isset($attributes['CALLBACK'])) { // CALLBACK/VALUE detected - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'].',CALLBACK[' . gettype($attributes['CALLBACK']) . ']=' . $attributes['CALLBACK'] . ' - CALLBACK! (VALUE=' . $attributes['VALUE'] . ')'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CALLBACK[' . gettype($attributes['CALLBACK']) . ']=' . $attributes['CALLBACK'] . ' - CALLBACK! (VALUE=' . $attributes['VALUE'] . ')'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['VALUE']] = $attributes['CALLBACK']; } elseif (isset($attributes['ORDER'])) { // ORDER/TABLE detected - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'].',ORDER[' . gettype($attributes['ORDER']) . ']=' . $attributes['ORDER'] . ' - ORDER! (VALUE=' . $attributes['VALUE'] . ')'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',ORDER[' . gettype($attributes['ORDER']) . ']=' . $attributes['ORDER'] . ' - ORDER! (VALUE=' . $attributes['VALUE'] . ')'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['ORDER']][$attributes['TABLE']] = $attributes['VALUE']; } elseif (isset($attributes['COLUMN'])) { // COLUMN/VALUE detected - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ',COLUMN[' . gettype($attributes['COLUMN']) . ']=' . $attributes['COLUMN'] . ' - COLUMN!'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ',COLUMN[' . gettype($attributes['COLUMN']) . ']=' . $attributes['COLUMN'] . ' - COLUMN!'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']][] = $attributes['VALUE']; } elseif ((!isset($attributes['NAME'])) || (trim($attributes['NAME']) == '')) { // Numerical index - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][] = $attributes['VALUE']; } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['NAME']])) { // Already created debug_report_bug(__FUNCTION__, __LINE__, 'NAME=' . $attributes['NAME'] . ' already addded to ' . $element . ' attributes=
' . print_r($attributes, true) . '
'); } else { // Use from NAME - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',NAME=' . $attributes['NAME'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NAME!'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',NAME=' . $attributes['NAME'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NAME!'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['NAME']] = $attributes['VALUE']; } - /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',key=' . $key . ' - EXIT!'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',key=' . $key . ' - EXIT!'); } //----------------------------------------------------------------------------- @@ -987,7 +1036,7 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', //----------------------------------------------------------------------------- // Execute function for doXmlCallbackFunction() -function doXmlCallbackFunctionExecute ($function, $args) { +function doXmlCallbackFunctionExecute ($callbackFunction, $args) { // Is 'id_index' set and form sent? if ((isset($args['id_index'])) && (isFormSent())) { // Prepare 'id_index' @@ -995,8 +1044,8 @@ function doXmlCallbackFunctionExecute ($function, $args) { } // END - if // Just call it - //* DEBUG: */ die('
'.print_r($args, true).'
'); - call_user_func_array($function, $args); + //* DEBUG: */ die('callbackFunction=' . $callbackFunction . ',args=
'.print_r($args, true).'
'); + call_user_func_array($callbackFunction, $args); } // [EOF]