1<?php
2
3namespace DDDBL;
4
5require_once __DIR__ . '/inc/DataObjectPool.class.php';
6require_once __DIR__ . '/inc/DataObject.class.php';
7require_once __DIR__ . '/inc/Singleton.class.php';
8require_once __DIR__ . '/inc/Queue.class.php';
9
10require_once __DIR__ . '/inc/exceptions/UnexpectedParameterTypeException.class.php';
11require_once __DIR__ . '/inc/exceptions/QueryException.class.php';
12
13require_once __DIR__ . '/inc/database.func.php';
14
15# position of handler, which gets the active database-connection into the queue
16define('QUEUE_GET_DB_CONNECTION_POSITION', 10);
17define('QUEUE_GET_QUERY_POSITION',         20);
18define('QUEUE_BIND_DATA_TYPE_POSITION',    30);
19define('QUEUE_PREPARE_QUERY_POSITION',     40);
20define('QUEUE_EXECUTE_QUERY_POSITION',     50);
21define('QUEUE_FORMAT_RESULT_POSITION',     60);
22define('QUEUE_CLOSE_CURSOR_POSITION',      70);
23
24###############################################
25### set validator for "Database-Definition" ###
26###############################################
27
28$objDBDefinitionValidator = function ($arrValues) {
29
30  foreach(array('CONNECTION', 'USER', 'PASS') AS $strDefinitionField)
31    if(!isset($arrValues[$strDefinitionField]) || !is_string($arrValues[$strDefinitionField]))
32      return false;
33
34  if(isset($arrValues['PDO']) && !is_a($arrValues['PDO'], '\PDO'))
35    return false;
36
37  return true;
38
39};
40
41$objDataObjectPool = new DataObjectPool('Database-Definition');
42$objDataObjectPool->setValidator($objDBDefinitionValidator);
43
44############################################
45### set validator for "Query-Definition" ###
46############################################
47
48$objQueryDefinitionValidator = function ($arrValues) {
49
50  if(!isset($arrValues['QUERY']) || !is_string($arrValues['QUERY']))
51    return false;
52
53  if(isset($arrValues['HANDLER']) && !is_string($arrValues['HANDLER']))
54    return false;
55
56  return true;
57
58};
59
60$objDataObjectPool = new DataObjectPool('Query-Definition');
61$objDataObjectPool->setValidator($objQueryDefinitionValidator);
62
63##########################################
64### set validator for "Result-Handler" ###
65##########################################
66
67$objResultHandlerValidator = function ($arrValues) {
68
69  if(!isset($arrValues['HANDLER']) || !is_callable($arrValues['HANDLER']))
70    return false;
71
72  return true;
73};
74
75$objDataObjectPool = new DataObjectPool('Result-Handler');
76$objDataObjectPool->setValidator($objResultHandlerValidator);
77
78#########################################
79### register queue and result handler ###
80#########################################
81
82require_once __DIR__ . '/handler/register_queue_handler.inc.php';
83require_once __DIR__ . '/handler/register_result_handler.inc.php';
84