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 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
    $debugLogger = new MyLogger();
40
    $driver = XML_Query2XML_Driver::factory($db);
41
    $query2xml = XML_Query2XML::factory(new MyDriver($driver, $debugLogger));
42
    $query2xml->enableDebugLog($debugLogger);
43
    $dom =& $query2xml->getXML(
44
        'SELECT * FROM artist UNION ALL SELECT * FROM artist',
45
        array(
46
            'rootTag' => 'music_library',
47
            'rowTag' => 'artist',
48
            'idColumn' => 'artistid',
49
            'elements' => array(
50
                'artistid',
51
                'name',
52
                'birth_year',
53
                'birth_place',
54
                'genre',
55
                'albums' => array(
56
                    'sql' => array(
57
                        'data' => array(
58
                            'artistid'
59
                        ),
60
                        'query' => 'SELECT * FROM album WHERE artist_id = ?'
61
                    ),
62
                    'sql_options' => array(
63
                        'cached' => true
64
                    ),
65
                    'rootTag' => 'albums',
66
                    'rowTag' => 'album',
67
                    'idColumn' => 'albumid',
68
                    'elements' => array(
69
                        'albumid',
70
                        'title',
71
                        'published_year',
72
                        'comment'
73
                    )
74
                )
75
            )
76
        )
77
    );
78
    $query2xml->disableDebugLog();
79
    echo $debugLogger->data;
80
?>
81
--EXPECT--
82
QUERY: SELECT * FROM artist UNION ALL SELECT * FROM artist
83
FROM DB: SELECT * FROM artist UNION ALL SELECT * FROM artist
84
DONE
85
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
86
FROM DB: SELECT * FROM album WHERE artist_id = ?
87
DONE
88
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
89
FROM DB: SELECT * FROM album WHERE artist_id = ?
90
DONE
91
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
92
FROM DB: SELECT * FROM album WHERE artist_id = ?
93
DONE
94
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:1
95
DONE
96
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:2
97
DONE
98
QUERY: SELECT * FROM album WHERE artist_id = ? (USING CACHING); DATA:3
99
DONE