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
                        'limit' => 1
70
                    ),
71
                    'sql_options' => array(
72
                        'cached' => true
73
                    ),
74
                    'rootTag' => 'albums',
75
                    'rowTag' => 'album',
76
                    'idColumn' => 'albumid',
77
                    'elements' => array(
78
                        'albumid',
79
                        'title',
80
                        'published_year',
81
                        'comment'
82
                    )
83
                )
84
            )
85
        )
86
    );
87
    $query2xml->disableDebugLog();
88
    echo $debugLogger->data;
89
?>
90
--EXPECT--
91
QUERY: SELECT * FROM artist UNION ALL SELECT * FROM artist
92
FROM DB: SELECT * FROM artist UNION ALL SELECT * FROM artist
93
DONE
94
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:1
95
FROM DB: SELECT * FROM album WHERE artist_id = ?
96
DONE
97
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:2
98
FROM DB: SELECT * FROM album WHERE artist_id = ?
99
DONE
100
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:3
101
FROM DB: SELECT * FROM album WHERE artist_id = ?
102
DONE
103
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:1
104
DONE
105
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:2
106
DONE
107
QUERY: SELECT * FROM album WHERE artist_id = ?; LIMIT:1; OFFSET:0 (USING CACHING); DATA:3
108
DONE