X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=inc%2Fcallback-functions.php;h=9ce22d67cfa74a181422e39fec43ceb3ddc83987;hb=6dcb879ba3abb21843503cacc65d1fe0848eb90f;hp=ba91f20d62aec30d6b0c3016163bde97e6a5b037;hpb=df37ef84794acd14f02c5a46053936149df62a49;p=mailer.git diff --git a/inc/callback-functions.php b/inc/callback-functions.php index ba91f20d62..9ce22d67cf 100644 --- a/inc/callback-functions.php +++ b/inc/callback-functions.php @@ -10,13 +10,8 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Call-Back-Funktionen fuer XML-Templates * * -------------------------------------------------------------------- * - * $Revision:: $ * - * $Date:: $ * - * $Tag:: 0.2.1-FINAL $ * - * $Author:: $ * - * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2012 by Mailer Developer Team * + * Copyright (c) 2009 - 2016 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -43,7 +38,7 @@ if (!defined('__SECURITY')) { // Handles the XML node 'admin-entry-meta-data' function doXmlAdminEntryMetaData ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); } // END - if @@ -52,7 +47,7 @@ function doXmlAdminEntryMetaData ($resource, $attributes) { // Handles the XML node 'member-entry-meta-data' function doXmlMemberEntryMetaData ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); } // END - if @@ -118,7 +113,7 @@ function doXmlDatabaseTable ($resource, $attributes) { // Handles the XML node 'database-column-list' function doXmlDatabaseColumnList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if @@ -172,7 +167,7 @@ function doXmlDatabaseColumnListEntry ($resource, $attributes) { // Handles the XML node 'callback-function-list' function doXmlCallbackFunctionList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if @@ -214,7 +209,7 @@ function doXmlCallbackFunctionListEntry ($resource, $attributes) { // Handles the XML node 'extra-parameter-list' function doXmlExtraParameterList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if @@ -256,7 +251,7 @@ function doXmlExtraParameterListEntry ($resource, $attributes) { // Handles the XML node 'time-columns-list' function doXmlTimeColumnsList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if @@ -298,7 +293,7 @@ function doXmlTimeColumnsListEntry ($resource, $attributes) { // Handles the XML node 'extra-parameter-member-list' function doXmlExtraParameterMemberList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['member_list'])) { @@ -310,7 +305,7 @@ function doXmlExtraParameterMemberList ($resource, $attributes) { // Handles the XML node 'extra-parameter-reload-list' function doXmlExtraParameterReloadList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['reload_list'])) { @@ -322,7 +317,7 @@ function doXmlExtraParameterReloadList ($resource, $attributes) { // Handles the XML node 'extra-parameter-waiting-list' function doXmlExtraParameterWaitingList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['waiting_list'])) { @@ -424,7 +419,7 @@ function doXmlExtraParameterWaitingListEntry ($resource, $attributes) { // Handles the XML node 'extra-parameter-added-list' function doXmlExtraParameterAddedList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__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'])) { @@ -466,7 +461,7 @@ function doXmlExtraParameterAddedListEntry ($resource, $attributes) { // Handles the XML node 'extra-parameter-created-list' function doXmlExtraParameterCreatedList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['created_list'])) { @@ -538,7 +533,7 @@ function doXmlStatusChangeColumn ($resource, $attributes) { // Handles the XML node 'status-change-list' function doXmlStatusChangeList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { @@ -740,7 +735,7 @@ function doXmlCacheFile ($resource, $attributes) { // Handles the XML node 'admin-list-data' function doXmlAdminListData ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); } // END - if @@ -749,7 +744,7 @@ function doXmlAdminListData ($resource, $attributes) { // Handles the XML node 'member-list-data' function doXmlMemberListData ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); } // END - if @@ -758,7 +753,7 @@ function doXmlMemberListData ($resource, $attributes) { // Handles the XML node 'data-tables' function doXmlDataTables ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); } // END - if @@ -793,14 +788,172 @@ function doXmlDataTable ($resource, $attributes) { reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } + // Init array + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'] = array(); + // Add the entry to the array addXmlValueToCallbackAttributes('data_table', $attributes); } +// Handles the XML node 'table-join-condition' +function doXmlTableJoinCondition ($resource, $attributes) { + // There should be no attributes + if (isFilledArray($attributes)) { + // Please don't add any attributes to foo-list nodes + reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); + } // END - if +} + +// Handles the XML node 'table-join-type' +function doXmlTableJoinType ($resource, $attributes) { + if (count($attributes) != 1) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 1 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['table_join_type'])) { + // Array is already defined + reportBug(__FUNCTION__, __LINE__, 'Required XML node table-join-type already set. Only one JOIN is currently supported.'); + } + + // Init array + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['table_join_type'] = array(); + + // Add the entry to the array + addXmlValueToCallbackAttributes('table_join_type', $attributes); +} + +// Handles the XML node 'table-join-name' +function doXmlTableJoinName ($resource, $attributes) { + if (count($attributes) != 2) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['ALIAS'])) { + // 'ALIAS' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.'); + } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['table_join_name'])) { + // Array is already defined + reportBug(__FUNCTION__, __LINE__, 'Required XML node table-join-name already set. Only one JOIN is currently supported.'); + } + + // Init array + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['table_join_name'] = array(); + + // Add the entry to the array + addXmlValueToCallbackAttributes('table_join_name', $attributes); +} + +// Handles the XML node 'join-on' +function doXmlJoinOn ($resource, $attributes) { + // There should be no attributes + if (isFilledArray($attributes)) { + // Please don't add any attributes to foo-list nodes + reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes)); + } // END - if +} + +// Handles the XML node 'join-on-left-table' +function doXmlJoinOnLeftTable ($resource, $attributes) { + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['COLUMN'])) { + // 'COLUMN' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute COLUMN not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['NAME'])) { + // 'NAME' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute NAME does not validate. NAME=' . $attributes['NAME']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['COLUMN'])) { + // 'COLUMN' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute COLUMN does not validate. COLUMN=' . $attributes['COLUMN']); + } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['join_on_left_table'])) { + // Array is already defined + reportBug(__FUNCTION__, __LINE__, 'Required XML node join-on-left-table already set. Only one JOIN is currently supported.'); + } + + // Init array + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['join_on_left_table'] = array(); + + // Add the entry to the array + addXmlValueToCallbackAttributes('join_on_left_table', $attributes); +} + +// Handles the XML node 'join-on-right-table' +function doXmlJoinOnRightTable ($resource, $attributes) { + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['COLUMN'])) { + // 'COLUMN' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute COLUMN not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['NAME'])) { + // 'NAME' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute NAME does not validate. NAME=' . $attributes['NAME']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['COLUMN'])) { + // 'COLUMN' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute COLUMN does not validate. COLUMN=' . $attributes['COLUMN']); + } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['join_on_right_table'])) { + // Array is already defined + reportBug(__FUNCTION__, __LINE__, 'Required XML node join-on-right-table already set. Only one JOIN is currently supported.'); + } + + // Init array + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['join_on_right_table'] = array(); + + // Add the entry to the array + addXmlValueToCallbackAttributes('join_on_right_table', $attributes); +} + +// Handles the XML node 'join-on-condition' +function doXmlJoinOnCondition ($resource, $attributes) { + if (count($attributes) != 2) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['CONDITION'])) { + // 'CONDITION' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute CONDITION not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['CONDITION'])) { + // 'CONDITION' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION does not validate. CONDITION=' . $attributes['CONDITION']); + } elseif (!isXmlConditionValid($attributes['CONDITION'])) { + // 'CONDITION' is not known + reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. CONDITION=' . $attributes['CONDITION']); + } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['join_on_condition'])) { + // Array is already defined + reportBug(__FUNCTION__, __LINE__, 'Required XML node join-on-condition already set. Only one JOIN is currently supported.'); + } + + // Init array + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['join_on_condition'] = array(); + + // Add the entry to the array + //die('
'.print_r($attributes,true).'
'); + addXmlValueToCallbackAttributes('join_on_condition', $attributes); +} + // Handles the XML node 'select-data-from-list' function doXmlSelectDataFromList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) { @@ -854,7 +1007,7 @@ function doXmlSelectDataFromListEntry ($resource, $attributes) { // Handles the XML node 'where-select-from-list' function doXmlWhereSelectFromList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) { @@ -901,7 +1054,7 @@ function doXmlWhereSelectFromListEntry ($resource, $attributes) { reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION does not validate. CONDITION=' . $attributes['CONDITION']); } elseif (!isXmlConditionValid($attributes['CONDITION'])) { // 'CONDITION' is not known - reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. LOOK-FOR=' . $attributes['CONDITION']); + reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. CONDITION=' . $attributes['CONDITION']); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) { // doXmlCallbackFunction is missing reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-column-list not included around this node. Please fix your XML.'); @@ -926,6 +1079,12 @@ function doXmlWhereCondition ($resource, $attributes) { } elseif (!isset($attributes['NAME'])) { // 'NAME' not found reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['CONDITION'])) { + // 'CONDITION' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION does not validate. CONDITION=' . $attributes['CONDITION']); + } elseif ((!empty($attributes['CONDITION'])) && (!isXmlConditionValid($attributes['CONDITION']))) { + // 'CONDITION' is not known + reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. CONDITION=' . $attributes['CONDITION']); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) { // doXmlCallbackFunction is missing reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.'); @@ -938,7 +1097,7 @@ function doXmlWhereCondition ($resource, $attributes) { // Handles the XML node 'order-by-list' function doXmlOrderByList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) { @@ -1046,7 +1205,7 @@ function doXmlListRowTemplate ($resource, $attributes) { // Handles the XML node 'column-callback-list' function doXmlColumnCallbackList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) { @@ -1061,7 +1220,7 @@ function doXmlColumnCallbackList ($resource, $attributes) { // Handles the XML node 'column-callback-list-entry' function doXmlColumnCallbackListEntry ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_callback_list'])) { @@ -1106,7 +1265,7 @@ function doXmlColumnCallbackData ($resource, $attributes) { // Handles the XML node 'callback-extra-parameter-list' function doXmlCallbackExtraParameterList ($resource, $attributes) { // There should be no attributes - if (count($attributes) > 0) { + if (isFilledArray($attributes)) { // Please don't add any attributes to foo-list nodes reportBug(__FUNCTION__, __LINE__, 'Expected 1 attributes because this is a named foo-list node, got ' . count($attributes)); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_callback_list'])) { @@ -1126,7 +1285,7 @@ function doXmlCallbackExtraParameterListEntry ($resource, $attributes) { // There are three attributes, by default if (count($attributes) != 3) { // Not the right count - reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); } elseif (!isset($attributes['COLUMN'])) { // 'COLUMN' not found reportBug(__FUNCTION__, __LINE__, 'Required attribute COLUMN not found.'); @@ -1136,15 +1295,18 @@ function doXmlCallbackExtraParameterListEntry ($resource, $attributes) { } elseif (!isInvalidXmlType($attributes['TYPE'])) { // No valid type reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); - } elseif (!isset($attributes['VALUE'])) { + } elseif ((!isset($attributes['VALUE'])) && (!isset($attributes['DATA']))) { // 'VALUE' not found - reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); - } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE/DATA not found.'); + } elseif ((isset($attributes['VALUE'])) && (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE']))) { // 'VALUE' not valid/verifyable reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['__EXTRA_PARAMETER'])) { - // doXmlCallbackFunction is missing + // doXmlCallbackFunction/__EXTRA_PARAMETER is missing reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/__EXTRA_PARAMETER not included around this node. Please fix your XML.'); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) { + // doXmlCallbackFunction/data_column_list is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data_column_list not included around this node.'); } // Add the entry to the array @@ -1156,7 +1318,7 @@ function doXmlNoEntryFoundMessage ($resource, $attributes) { // There are two attributes, by default if (count($attributes) != 2) { // Not the right count - reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes)); } elseif (!isset($attributes['VALUE'])) { // 'VALUE' not found reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); @@ -1185,7 +1347,7 @@ function doXmlNoEntryFoundMessage ($resource, $attributes) { // Checks for string without any added extra data function isXmlTypeString ($value) { // Just let SQL_ESCAPE() do the job - return ($value == SQL_ESCAPE($value)); + return ($value == sqlEscapeString($value)); } // Fake-check for array type @@ -1229,18 +1391,18 @@ function isXmlTypeCallback ($value) { 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']))) { + if ((isset($attributes['TYPE'])) && ($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') { + } elseif ((isset($attributes['TYPE'])) && ($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? - if ($attributes['TYPE'] == 'array') { + if ((isset($attributes['TYPE'])) && ($attributes['TYPE'] == 'array')) { // Another nested array //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TYPE=' . $attributes['TYPE'] . ',element=' . $element); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['VALUE'] . '_list'] = array(); @@ -1275,7 +1437,7 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', } // END - if // Init array - $array = array( + $array = array( 'column' => trim($attributes['VALUE']), 'alias' => trim($attributes['ALIAS']), 'function' => trim($attributes['FUNCTION']), @@ -1289,10 +1451,26 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element] = array(); } // END - if $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $array; + } elseif ((isset($attributes['NAME'])) && (isset($attributes['ALIAS']))) { + // NAME/ALIAS detected + $array = array( + 'name' => trim($attributes['NAME']), + 'alias' => trim($attributes['ALIAS']) + ); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',NAME=' . $attributes['NAME'] . ',ALIAS[' . gettype($attributes['ALIAS']) . ']=' . $attributes['ALIAS']); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $array; + } elseif ((isset($attributes['VALUE'])) && (isset($attributes['ALIAS']))) { + // NAME/ALIAS detected + $array = array( + 'value' => trim($attributes['VALUE']), + 'alias' => trim($attributes['ALIAS']) + ); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',NAME=' . $attributes['VALUE'] . ',ALIAS[' . gettype($attributes['ALIAS']) . ']=' . $attributes['ALIAS']); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $array; } elseif ((isset($attributes['CONDITION'])) && (isset($attributes['LOOK-FOR']))) { // CONDITION/LOOK-FOR detected // Init array - $array = array( + $array = array( 'column' => trim($attributes['VALUE']), 'table' => trim($attributes['TABLE']), 'condition' => convertXmlContion(trim($attributes['CONDITION'])), @@ -1306,8 +1484,12 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $array; } elseif ((isset($attributes['CONDITION'])) && (isset($attributes['NAME']))) { // CONDITION/NAME detected - //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CONDITION[' . gettype($attributes['CONDITION']) . ']=' . $attributes['CONDITION'] . ',NAME[' . gettype($attributes['NAME']) . ']=' . $attributes['NAME'] . ' - CONDITION!'); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CONDITION[' . gettype($attributes['CONDITION']) . ']=' . $attributes['CONDITION'] . ',NAME[' . gettype($attributes['NAME']) . ']=' . $attributes['NAME'] . ' - CONDITION-NAME!'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['NAME']] = $attributes['CONDITION']; + } elseif (isset($attributes['CONDITION'])) { + // CONDITION detected + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CONDITION[' . gettype($attributes['CONDITION']) . ']=' . $attributes['CONDITION'] . ' - CONDITION!'); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = convertXmlContion(trim($attributes['CONDITION'])); } 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'] . ')'); @@ -1316,27 +1498,50 @@ function addXmlValueToCallbackAttributes ($element, $attributes, $extraKey = '', // 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'] . ')'); $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['ORDER']][$attributes['TABLE']] = $attributes['VALUE']; - } elseif (isset($attributes['COLUMN'])) { + } elseif ((isset($attributes['TYPE'])) && (isset($attributes['NAME'])) && (isset($attributes['COLUMN']))) { + // TYPE/NAME/COLUMN detected + // Init array + $array = array( + 'name' => trim($attributes['NAME']), + 'column' => trim($attributes['COLUMN']) + ); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',NAME[' . gettype($attributes['NAME']) . ']=' . $attributes['NAME'] . ' - TYPE-COLUMN! (COLUMN=' . $attributes['COLUMN'] . ')'); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $array; + } elseif ((isset($attributes['COLUMN'])) && (isset($attributes['VALUE']))) { // 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/VALUE!'); if (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']])) { $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']] = array(); } // END - if $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']])] = $attributes['VALUE']; - } elseif ((!isset($attributes['NAME'])) || (trim($attributes['NAME']) == '')) { + } elseif ((isset($attributes['COLUMN'])) && (isset($attributes['DATA']))) { + // COLUMN/DATA detected + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',DATA[' . gettype($attributes['DATA']) . ']=' . $attributes['DATA'] . ',COLUMN[' . gettype($attributes['COLUMN']) . ']=' . $attributes['COLUMN'] . ' - COLUMN/DATA!'); + if (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']])) { + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']] = array(); + } // END - if + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['COLUMN']])] = $attributes['VALUE']; + } elseif (((!isset($attributes['NAME'])) || (trim($attributes['NAME']) == '')) && (isset($attributes['VALUE']))) { // Numerical index //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); if (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])) { $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element] = array(); } // END - if $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $attributes['VALUE']; + } elseif ((count($attributes) == 1) && (isset($attributes['TYPE']))) { + // Only TYPE found + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',TYPE[' . gettype($attributes['TYPE']) . ']=' . $attributes['TYPE'] . ' - TYPE-ONLY!'); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element])] = $attributes['TYPE']; } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['NAME']])) { // Already created reportBug(__FUNCTION__, __LINE__, 'NAME=' . $attributes['NAME'] . ' already addded to ' . $element . ' attributes=
' . print_r($attributes, TRUE) . '
'); - } else { - // Use from NAME + } elseif ((isset($attributes['NAME'])) && (isset($attributes['VALUE']))) { + // Use from NAME/VALUE //* 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']; + } else { + // Unknown stage + reportBug(__FUNCTION__, __LINE__, 'Unexpected stage detected. element=' . $element . ',attributes()=' . count($attributes)); } //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',key=' . $key . ' - EXIT!'); } @@ -1362,5 +1567,12 @@ function doXmlCallbackFunctionExecute ($callbackName, $args, $columnIndex, $cont call_user_func_array($callbackName, $args); } +// For 'doing' add referral level, the column-index is required +function addXmlSpecialAdminAddDoReferralLevels () { + // So set it all here + $GLOBALS['__COLUMN_INDEX']['doXmlCallbackFunction'] = 'column'; + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_index'] = 'column'; +} + // [EOF] ?>