Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
--TEST--
2
XML_Query2XML::enableDebugLog() with single XML_Query2XML_Driver_Caching instance used for multiple driver options
3
--SKIPIF--
4
<?php require_once dirname(dirname(__FILE__)) . '/skipif.php'; ?>
5
--FILE--
6
<?php
7
    require_once 'XML/Query2XML.php';
8
    require_once dirname(dirname(__FILE__)) . '/db_init.php';
9
 
10
    class MyLogger
11
    {
12
        public $data = '';
13
        public function log($str)
14
        {
15
            $this->data .= $str . "\n";
16
        }
17
    }
18
 
19
    class MyDriver extends XML_Query2XML_Driver
20
    {
21
        public function __construct($driver, $logger)
22
        {
23
            $this->_driver = $driver;
24
            $this->_logger = $logger;
25
        }
26
 
27
        public function getAllRecords($sql, $configPath)
28
        {
29
            // this allows us to notice when the results are fetched from the DB
30
            $this->_logger->log('FROM DB: ' . $sql['query']);
31
            return $this->_driver->getAllRecords($sql, $configPath);
32
        }
33
 
34
        public function preprocessQuery(&$query, $configPath)
35
        {
36
            return $this->_driver->preprocessQuery($query, $configPath);
37
        }
38
    }
39
 
40
    $query2xml =& XML_Query2XML::factory($db);
41
    $debugLogger = new MyLogger();
42
    $driver = XML_Query2XML_Driver::factory($db);
43
    $query2xml->enableDebugLog($debugLogger);
44
    require_once 'XML/Query2XML/Driver/Caching.php';
45
    $myDriver = new XML_Query2XML_Driver_Caching(new MyDriver($driver, $debugLogger));
46
    $dom =& $query2xml->getXML(
47
        'SELECT * FROM artist UNION ALL SELECT * FROM artist',
48
        array(
49
            'rootTag' => 'music_library',
50
            'rowTag' => 'artist',
51
            'idColumn' => 'artistid',
52
            'elements' => array(
53
                'artistid',
54
                'name',
55
                'birth_year',
56
                'birth_place',
57
                'genre',
58
                'albums' => array(
59
                    'sql' => array(
60
                        'data' => array(
61
                            'artistid'
62
                        ),
63
                        'query' => 'SELECT * FROM album WHERE artist_id = ?',
64
                        'driver' => $myDriver
65
                    ),
66
                    'sql_options' => array(
67
                        'cached' => true
68
                    ),
69
                    'rootTag' => 'albums',
70
                    'rowTag' => 'album',
71
                    'idColumn' => 'albumid',
72
                    'elements' => array(
73
                        'albumid',
74
                        'title',
75
                        'published_year',
76
                        'comment'
77
                    )
78
                ),
79
                'albums2' => array(
80
                    'sql' => array(
81
                        'data' => array(
82
                            'artistid'
83
                        ),
84
                        'query' => 'SELECT * FROM album WHERE artist_id = ?',
85
                        'driver' => $myDriver
86
                    ),
87
                    'sql_options' => array(
88
                        'cached' => true
89
                    ),
90
                    'rootTag' => 'albums2',
91
                    'rowTag' => 'album',
92
                    'idColumn' => 'albumid',
93
                    'elements' => array(
94
                        'albumid',
95
                        'title',
96
                        'published_year',
97
                        'comment'
98
                    )
99
                )
100
            )
101
        )
102
    );
103
    $query2xml->disableDebugLog();
104
    echo $debugLogger->data;
105
?>
106
--EXPECT--
107
QUERY: SELECT * FROM artist UNION ALL SELECT * FROM artist
108
DONE
109
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
110
FROM DB: SELECT * FROM album WHERE artist_id = ?
111
DONE
112
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
113
DONE
114
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
115
FROM DB: SELECT * FROM album WHERE artist_id = ?
116
DONE
117
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
118
DONE
119
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
120
FROM DB: SELECT * FROM album WHERE artist_id = ?
121
DONE
122
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
123
DONE
124
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
125
DONE
126
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
127
DONE
128
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
129
DONE
130
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
131
DONE
132
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
133
DONE
134
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
135
DONE