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 $options['sql_options']['cached'] = true
3
--SKIPIF--
4
<?php $db_layers = array('MDB2', 'DB'); 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
            if (strpos($sql['query'], '?') !== false) {
31
                $query = substr($sql['query'], 0, strpos($sql['query'], '?')+1);
32
            } else {
33
                $query = $sql['query'];
34
            }
35
            $this->_logger->log(
36
                'FROM DB: ' . $query
37
            );
38
            return $this->_driver->getAllRecords($sql, $configPath);
39
        }
40
 
41
        public function preprocessQuery(&$query, $configPath)
42
        {
43
            return $this->_driver->preprocessQuery($query, $configPath);
44
        }
45
    }
46
 
47
    $driver = XML_Query2XML_Driver::factory($db);
48
    $debugLogger = new MyLogger();
49
    $query2xml =& XML_Query2XML::factory(new MyDriver($driver, $debugLogger));
50
    $query2xml->enableDebugLog($debugLogger);
51
    $dom = $query2xml->getXML(
52
        'SELECT * FROM artist UNION ALL SELECT * FROM artist',
53
        array(
54
            'rootTag' => 'music_library',
55
            'rowTag' => 'artist',
56
            'idColumn' => 'artistid',
57
            'elements' => array(
58
                'artistid',
59
                'name',
60
                'birth_year',
61
                'birth_place',
62
                'genre',
63
                'albums' => array(
64
                    'sql' => array(
65
                        'data' => array(
66
                            'artistid'
67
                        ),
68
                        'query' => 'SELECT * FROM album WHERE artist_id = ?'
69
                    ),
70
                    'sql_options' => array(
71
                        'cached' => true
72
                    ),
73
                    'rootTag' => 'albums',
74
                    'rowTag' => 'album',
75
                    'idColumn' => 'albumid',
76
                    'elements' => array(
77
                        'albumid',
78
                        'title',
79
                        'published_year',
80
                        'comment'
81
                    )
82
                ),
83
                'albums2' => array(
84
                    'sql' => array(
85
                        'data' => array(
86
                            'artistid'
87
                        ),
88
                        'query' => 'SELECT * FROM album WHERE artist_id = ?',
89
                        'limit' => 1
90
                    ),
91
                    'sql_options' => array(
92
                        'cached' => true
93
                    ),
94
                    'rootTag' => 'albums2',
95
                    'rowTag' => 'album',
96
                    'idColumn' => 'albumid',
97
                    'elements' => array(
98
                        'albumid',
99
                        'title',
100
                        'published_year',
101
                        'comment'
102
                    )
103
                )
104
            )
105
        )
106
    );
107
    $query2xml->disableDebugLog();
108
    echo $debugLogger->data;
109
?>
110
--EXPECT--
111
QUERY: SELECT * FROM artist UNION ALL SELECT * FROM artist
112
FROM DB: SELECT * FROM artist UNION ALL SELECT * FROM artist
113
DONE
114
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
115
FROM DB: SELECT * FROM album WHERE artist_id = ?
116
DONE
117
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:1
118
FROM DB: SELECT * FROM album WHERE artist_id = ?
119
DONE
120
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
121
FROM DB: SELECT * FROM album WHERE artist_id = ?
122
DONE
123
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:2
124
FROM DB: SELECT * FROM album WHERE artist_id = ?
125
DONE
126
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
127
FROM DB: SELECT * FROM album WHERE artist_id = ?
128
DONE
129
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:3
130
FROM DB: SELECT * FROM album WHERE artist_id = ?
131
DONE
132
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
133
DONE
134
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:1
135
DONE
136
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
137
DONE
138
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:2
139
DONE
140
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
141
DONE
142
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:3
143
DONE