X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fcallback-functions.php;h=9ce22d67cfa74a181422e39fec43ceb3ddc83987;hp=98f19e24b238f07466233e8031b70c9b0ab95ce4;hb=6dcb879ba3abb21843503cacc65d1fe0848eb90f;hpb=9197694ce183b69384a385a6c4a5e16988c7fb09 diff --git a/inc/callback-functions.php b/inc/callback-functions.php index 98f19e24b2..9ce22d67cf 100644 --- a/inc/callback-functions.php +++ b/inc/callback-functions.php @@ -10,14 +10,9 @@ * -------------------------------------------------------------------- * * 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 - 2011 by Mailer Developer Team * - * For more information visit: http://www.mxchange.org * + * 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 * * it under the terms of the GNU General Public License as published by * @@ -42,66 +37,47 @@ if (!defined('__SECURITY')) { // Handles the XML node 'admin-entry-meta-data' function doXmlAdminEntryMetaData ($resource, $attributes) { - /* - * This node has no attributes by default so it remains just with this - * comment. - */ + // 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 'admin-callback-function' -function doXmlAdminCallbackFunction ($resource, $attributes) { +// Handles the XML node 'member-entry-meta-data' +function doXmlMemberEntryMetaData ($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 'callback-function' +function doXmlCallbackFunction ($resource, $attributes) { // There are two attributes, by default if (count($attributes) != 2) { // Not the right count - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes)); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); } // Add the function name and no attributes by default $GLOBALS['__XML_CALLBACKS']['callbacks'][] = __FUNCTION__; $GLOBALS['__XML_CALLBACKS']['functions'][__FUNCTION__][] = $attributes['VALUE']; $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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); - } - - // Add the POST data index for 'id' - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['id_index'] = $attributes['VALUE']; + $GLOBALS['__COLUMN_INDEX'][__FUNCTION__] = 'column'; } // Handles the XML node 'database-table' @@ -109,67 +85,79 @@ function doXmlDatabaseTable ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } - // Add the database's name - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['database_table'] = $attributes['VALUE']; + // Add the entry to the list + addXmlValueToCallbackAttributes('database_table', $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 - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if // Add an empty list - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['column_list'] = array(); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_list'] = array(); } // 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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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'])) { + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['TABLE'])) { + // 'TABLE' not found + reportBug(__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']); - } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['column_list'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function/database-column-list not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TYPE=' . $attributes['TYPE'] . ',TABLE=' . $attributes['TABLE']); + } elseif (!isset($attributes['ALIAS'])) { + // 'ALIAS' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.'); + } elseif (!isset($attributes['FUNCTION'])) { + // 'FUNCTION' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.'); + } elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) { + // 'ALIAS' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']); + } elseif ((trim($attributes['FUNCTION']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['FUNCTION']))) { + // 'FUNCTION' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/database-column-list not included around this node. Please fix your XML.'); } // Add the entry to the list @@ -179,13 +167,13 @@ 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 - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if // Add an empty list - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['callback_list'] = array(); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['callback_list'] = array(); } // Handles the XML node 'callback-function-list-entry' @@ -193,25 +181,25 @@ function doXmlCallbackFunctionListEntry ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction']['callback_list'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function/callback-function-list not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['callback_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/callback-function-list not included around this node. Please fix your XML.'); } // Add the entry to the list @@ -221,13 +209,13 @@ 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 - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); } // END - if // Add an empty list - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['extra_list'] = array(); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list'] = array(); } // Handles the XML node 'extra-parameter-list-entry' @@ -235,40 +223,106 @@ function doXmlExtraParameterListEntry ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction']['extra_list'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function/extra-parameter-list not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list not included around this node. Please fix your XML.'); } // Add the entry to the list addXmlValueToCallbackAttributes('extra_list', $attributes); } +// Handles the XML node 'time-columns-list' +function doXmlTimeColumnsList ($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 because this is a foo-list node, got ' . count($attributes)); + } // END - if + + // Add an empty list + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['time_columns'] = array(); +} + +// Handles the XML node 'time-columns-list-entry' +function doXmlTimeColumnsListEntry ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['time_columns'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the list + addXmlValueToCallbackAttributes('time_columns', $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'])) { + // This list should be created already + reportBug(__FUNCTION__, __LINE__, 'member_list should be already created.'); + } +} + +// Handles the XML node 'extra-parameter-reload-list' +function doXmlExtraParameterReloadList ($resource, $attributes) { + // There should be no attributes + if (isFilledArray($attributes)) { // 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']['doXmlAdminCallbackFunction']['extra_list']['member_list'])) { + 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'])) { // This list should be created already - debug_report_bug(__FUNCTION__, __LINE__, 'member_list should be already created.'); + reportBug(__FUNCTION__, __LINE__, 'reload_list should be already created.'); + } +} + +// Handles the XML node 'extra-parameter-waiting-list' +function doXmlExtraParameterWaitingList ($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 because this is a foo-list node, got ' . count($attributes)); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['waiting_list'])) { + // This list should be created already + reportBug(__FUNCTION__, __LINE__, 'waiting_list should be already created.'); } } @@ -277,71 +331,218 @@ function doXmlExtraParameterMemberListEntry ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction']['extra_list']['member_list'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function/extra-parameter-list/member-list not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['member_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/member-list not included around this node. Please fix your XML.'); } // Add the entry to the list addXmlValueToCallbackAttributes('extra_list', $attributes, 'member_list'); } +// Handles the XML node 'extra-parameter-reload-list-entry' +function doXmlExtraParameterReloadListEntry ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['reload_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/reload-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the list + addXmlValueToCallbackAttributes('extra_list', $attributes, 'reload_list'); +} + +// Handles the XML node 'extra-parameter-waiting-list-entry' +function doXmlExtraParameterWaitingListEntry ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['waiting_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/waiting-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the list + addXmlValueToCallbackAttributes('extra_list', $attributes, 'waiting_list'); +} + +// Handles the XML node 'extra-parameter-added-list' +function doXmlExtraParameterAddedList ($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 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 + reportBug(__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 + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__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 + reportBug(__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 'extra-parameter-created-list' +function doXmlExtraParameterCreatedList ($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 because this is a foo-list node, got ' . count($attributes)); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['created_list'])) { + // This list should be created already + reportBug(__FUNCTION__, __LINE__, 'created_list should be already created.'); + } +} + +// Handles the XML node 'extra-parameter-created-list-entry' +function doXmlExtraParameterCreatedListEntry ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['created_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/created-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the list + addXmlValueToCallbackAttributes('extra_list', $attributes, 'created_list'); +} + // Handles the XML node 'status-change-column' function doXmlStatusChangeColumn ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } // Add the entry to the list - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['status_list'][$attributes['VALUE']] = array(); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['status_list'][$attributes['VALUE']] = array(); } // 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 - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); - } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['status_list'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function/status-list not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes)); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } + + // Add the entry to the list + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['status_list'] = array(); } // Handles the XML node 'status-change-list-entry' @@ -349,28 +550,28 @@ function doXmlStatusChangeListEntry ($resource, $attributes) { // There are for attributes, by default if (count($attributes) != 4) { // Not the right count - debug_report_bug(__FUNCTION__, __LINE__, 'Expected 4 attributes, got ' . count($attributes)); + reportBug(__FUNCTION__, __LINE__, 'Expected 4 attributes, got ' . count($attributes)); } elseif (!isset($attributes['NAME'])) { // 'NAME' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['OLD'])) { // Not valid/verifyable - debug_report_bug(__FUNCTION__, __LINE__, 'Attribute OLD does not validate. TYPE=' . $attributes['TYPE'] . ',OLD=' . $attributes['OLD']); + reportBug(__FUNCTION__, __LINE__, 'Attribute OLD does not validate. TYPE=' . $attributes['TYPE'] . ',OLD=' . $attributes['OLD']); } 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']['doXmlAdminCallbackFunction']['status_list'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function/extra-parameter-list/member-list not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['status_list'])) { + // doXmlCallbackFunction is missing + reportBug(__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 @@ -382,29 +583,29 @@ function doXmlEnableModifyEntries ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } - // Add the entry to the array - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['enable_modify_entries'] = convertStringToBoolean($attributes['VALUE']); + // Add the entry to the list + addXmlValueToCallbackAttributes('enable_modify_entries', $attributes); } // Handles the XML node 'table-id-column' @@ -412,29 +613,29 @@ function doXmlTableIdColumn ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } // Add the entry to the array - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['table_id_column'] = $attributes['VALUE']; + addXmlValueToCallbackAttributes('table_id_column', $attributes); } // Handles the XML node 'table-userid-column' @@ -442,29 +643,29 @@ function doXmlTableUseridColumn ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } // Add the entry to the array - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['table_userid_column'] = $attributes['VALUE']; + addXmlValueToCallbackAttributes('table_userid_column', $attributes); } // Handles the XML node 'raw-userid-column-key' @@ -472,39 +673,681 @@ function doXmlRawUseridColumnKey ($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)); + reportBug(__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.'); + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); } elseif (!isset($attributes['TYPE'])) { // 'TYPE' not found - debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + reportBug(__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']); + reportBug(__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.'); + reportBug(__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']['doXmlAdminCallbackFunction'])) { - // doXmlAdminCallbackFunction is missing - debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node admin-callback-function not included around this node. Please fix your XML.'); + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); } // Add the entry to the array - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction']['raw_userid_column_key'] = $attributes['VALUE']; + addXmlValueToCallbackAttributes('raw_userid_column_key', $attributes); } -// ---------------------------------------------------------------------------- -// XML type validation -// ---------------------------------------------------------------------------- +// Handles the XML node 'cache-file' +function doXmlCacheFile ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['NAME'])) { + // 'NAME' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('cache_file', $attributes); +} + +//----------------------------------------------------------------------------- +// Call-back functions for listing of data in admin area +//----------------------------------------------------------------------------- + +// Handles the XML node 'admin-list-data' +function doXmlAdminListData ($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 'member-list-data' +function doXmlMemberListData ($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 'data-tables' +function doXmlDataTables ($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 'data-table' +function doXmlDataTable ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['ALIAS'])) { + // 'ALIAS' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. ALIAS=' . $attributes['ALIAS']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + 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 (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'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.'); + } + + // Add an empty list + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'] = array(); +} + +// Handles the XML node 'select-data-from-list-entry' +function doXmlSelectDataFromListEntry ($resource, $attributes) { + // There are five attributes, by default + if (count($attributes) != 5) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isset($attributes['ALIAS'])) { + // 'ALIAS' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.'); + } elseif (!isset($attributes['FUNCTION'])) { + // 'FUNCTION' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.'); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // 'VALUE' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) { + // 'ALIAS' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']); + } elseif ((trim($attributes['FUNCTION']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['FUNCTION']))) { + // 'FUNCTION' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/select-data-from-list not included around this node. Please fix your XML.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('data_column_list', $attributes); +} + +// Handles the XML node 'where-select-from-list' +function doXmlWhereSelectFromList ($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 because this is a foo-list node, got ' . count($attributes)); + } 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.'); + } + + // Add an empty list + $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 + reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['TABLE'])) { + // 'TABLE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.'); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['CONDITION'])) { + // 'CONDITION' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute CONDITION not found.'); + } elseif (!isset($attributes['LOOK-FOR'])) { + // 'LOOK-FOR' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute LOOK-FOR not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif ((trim($attributes['TABLE']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE']))) { + // 'TABLE' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // 'VALUE' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } 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']['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.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('where_select_list', $attributes); +} + +// Handles the XML node 'where-condition' +function doXmlWhereCondition ($resource, $attributes) { + // There are two attributes, by default + if (count($attributes) != 3) { + // Please don't add any attributes to foo-list nodes + reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes because this is a where-condition node, 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 (!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.'); + } + + // Add an empty list + addXmlValueToCallbackAttributes('where_condition', $attributes); +} + +// Handles the XML node 'order-by-list' +function doXmlOrderByList ($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 because this is a foo-list node, got ' . count($attributes)); + } 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.'); + } + + // Add an empty list + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['order_by_list'] = array(); +} + +// Handles the XML node 'order-by-list-entry' +function doXmlOrderByListEntry ($resource, $attributes) { + // There are four attributes, by default + if (count($attributes) != 4) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['ORDER'])) { + // 'ORDER' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute ORDER not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['TABLE'])) { + // 'TABLE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.'); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['ORDER'])) { + // 'ORDER' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute ORDER does not validate. ORDER=' . $attributes['ORDER']); + } elseif ((trim($attributes['TABLE']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE']))) { + // 'TABLE' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']); + } elseif ((trim($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']['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.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('order_by_list', $attributes); +} + +// Handles the XML node 'list-template' +function doXmlListTemplate ($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)); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('list_template', $attributes); +} + +// Handles the XML node 'list-row-template' +function doXmlListRowTemplate ($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)); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('list_row_template', $attributes); +} + +// Handles the XML node 'column-callback-list' +function doXmlColumnCallbackList ($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 because this is a foo-list node, got ' . count($attributes)); + } 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.'); + } + + // Add an empty list + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_callback_list'] = array(); +} + +// Handles the XML node 'column-callback-list-entry' +function doXmlColumnCallbackListEntry ($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 because this is a foo-list node, got ' . count($attributes)); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_callback_list'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/column-callback not included around this node. Please fix your XML.'); + } +} + +// Handles the XML node 'column-callback-data' +function doXmlColumnCallbackData ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isset($attributes['CALLBACK'])) { + // 'CALLBACK' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute CALLBACK not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); + } elseif ((trim($attributes['CALLBACK']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['CALLBACK']))) { + // 'CALLBACK' not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute CALLBACK does not validate. CALLBACK=' . $attributes['CALLBACK']); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('column_callback_list', $attributes); +} + +// Handles the XML node 'callback-extra-parameter-list' +function doXmlCallbackExtraParameterList ($resource, $attributes) { + // There should be no attributes + 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'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/column-callback-list not included around this node. Please fix your XML.'); + } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['__EXTRA_PARAMETER'])) { + // Abort silently here, no one wants to kill this array + return; + } + + // Add an empty list + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['__EXTRA_PARAMETER'] = array(); +} + +// Handles the XML node 'callback-extra-parameter-list-entry' +function doXmlCallbackExtraParameterListEntry ($resource, $attributes) { + // There are three attributes, by default + if (count($attributes) != 3) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['COLUMN'])) { + // 'COLUMN' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute COLUMN not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif ((!isset($attributes['VALUE'])) && (!isset($attributes['DATA']))) { + // 'VALUE' not found + 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/__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 + addXmlValueToCallbackAttributes('__EXTRA_PARAMETER', $attributes); +} + +// Handles the XML node 'no-entry-found-message' +function doXmlNoEntryFoundMessage ($resource, $attributes) { + // There are two attributes, by default + if (count($attributes) != 2) { + // Not the right count + reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes)); + } elseif (!isset($attributes['VALUE'])) { + // 'VALUE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.'); + } elseif (!isset($attributes['TYPE'])) { + // 'TYPE' not found + reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.'); + } elseif (!isInvalidXmlType($attributes['TYPE'])) { + // No valid type + reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']); + } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) { + // Not valid/verifyable + reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']); + } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) { + // doXmlCallbackFunction is missing + reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.'); + } + + // Add the entry to the array + addXmlValueToCallbackAttributes('no_entry_message_id', $attributes); +} + +//----------------------------------------------------------------------------- +// XML type validation +//----------------------------------------------------------------------------- // 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 @@ -522,64 +1365,213 @@ function isXmlTypeBool ($value) { return (($value == 'true') || ($value == 'false')); } -// ---------------------------------------------------------------------------- +// Check for integer type +function isXmlTypeInt ($value) { + // Trim value + $value = trim($value); + + // This value is always a string + 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 = '') { - if ($attributes['TYPE'] == 'array') { + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',key=' . $key . ' - ENTERED!'); + // Is it boolean type? + 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 ((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 ((isset($attributes['TYPE'])) && ($attributes['TYPE'] == 'array')) { // Another nested array - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TYPE=ARRAY, element=' . $element); - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][$attributes['VALUE'] . '_list'] = array(); + //* 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') { - // Then convert VALUE - $attributes['VALUE'] = convertStringToBoolean($attributes['VALUE']); - } // END - if - // Sub-array (one level only) - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE='.$attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE']); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ' - ANALYSING...'); if (trim($attributes['NAME']) == '') { // Numerical index - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE='.$attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][$extraKey][] = $attributes['VALUE']; + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NUMERICAL!'); + if (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey])) { + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey] = array(); + } // END - if + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey][count($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$extraKey])] = $attributes['VALUE']; } elseif (!empty($key)) { // Use from $key - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE='.$attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - KEY! (key=' . $attributes[$key] . ')'); - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][$extraKey][$attributes[$key]] = $attributes['VALUE']; + //* 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 - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE='.$attributes['TYPE'].',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NAME! (name=' . $attributes['NAME'] . ')'); - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][$extraKey][$attributes['NAME']] = $attributes['VALUE']; + //* 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 (trim($attributes['NAME']) == '') { + } elseif ((isset($attributes['FUNCTION'])) && (isset($attributes['ALIAS']))) { + /* + * 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']), + 'name' => trim($attributes['NAME']) + ); + + // 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'] . ')'); + 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])] = $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( + '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'] . ')'); + 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])] = $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-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'] . ')'); + $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'] . ')'); + $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['ORDER']][$attributes['TABLE']] = $attributes['VALUE']; + } 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/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['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 - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE']); - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][] = $attributes['VALUE']; - } elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][$attributes['NAME']])) { + //* 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 - debug_report_bug(__FUNCTION__, __LINE__, 'NAME=' . $attributes['NAME'] . ' already addded to ' . $element . '.'); + reportBug(__FUNCTION__, __LINE__, 'NAME=' . $attributes['NAME'] . ' already addded to ' . $element . ' attributes=
' . print_r($attributes, TRUE) . '
'); + } 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 { - // Use from NAME - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',NAME=' . $attributes['NAME'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE']); - $GLOBALS['__XML_ARGUMENTS']['doXmlAdminCallbackFunction'][$element][$attributes['NAME']] = $attributes['VALUE']; + // 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!'); } -// ---------------------------------------------------------------------------- +//----------------------------------------------------------------------------- // Execute call-back functions -// ---------------------------------------------------------------------------- +//----------------------------------------------------------------------------- -// Execute function for doXmlAdminCallbackFunction() -function doXmlAdminCallbackFunctionExecute ($function, $args) { - // Prepare 'id_index' - $args['id_index'] = postRequestParameter($args['id_index']); +// Execute function for doXmlCallbackFunction() +function doXmlCallbackFunctionExecute ($callbackName, $args, $columnIndex, $content) { + // Is 'id_index' set and form sent? + if ((isset($args['id_index'])) && (isFormSent())) { + // Prepare 'id_index' + $args['id_index'] = postRequestElement($args['id_index']); + } // END - if + + // Add content + $args['_content'] = $content; // Just call it - //* DEBUG: */ die('
'.print_r($args, true).'
'); - call_user_func_array($function, $args); + //* DEBUG: */ die(__FUNCTION__.':callbackFunction=' . $callbackName . ',
columnIndex=' . $columnIndex . ',
args(' . count($args) . ')=
'.print_r($args, TRUE).'
'); + //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'Called!'); + 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]