Dump.php
3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?PHP
/**
* Base class for patTemplate dumpers
*
* $Id: Dump.php,v 1.9 2004/05/25 20:38:38 schst Exp $
*
* The dump functionality is separated from the main class
* for performance reasons.
*
* @package patTemplate
* @subpackage Dump
* @author Stephan Schmidt <schst@php.net>
*/
/**
* Base class for patTemplate dumpers
*
* The dump functionality is separated from the main class
* for performance reasons.
*
* @abstract
* @package patTemplate
* @subpackage Dump
* @author Stephan Schmidt <schst@php.net>
*/
class patTemplate_Dump extends patTemplate_Module
{
/**
* reference to the patTemplate object that instantiated the module
*
* @access protected
* @var object
*/
var $_tmpl;
/**
* set a reference to the patTemplate object that instantiated the reader
*
* @access public
* @param object patTemplate object
*/
function setTemplateReference( &$tmpl )
{
$this->_tmpl = &$tmpl;
}
/**
* display the header
*
* @access public
*/
function displayHeader()
{
}
/**
* dump the global variables
*
* @access public
* @param array array containing all global variables
* @abstract
*/
function dumpGlobals( $globals )
{
}
/**
* dump the templates
*
* This method has to be implemented in the dumpers.
*
* @access public
* @abstract
* @param array templates
* @param array variables
*/
function dumpTemplates( $templates, $vars )
{
}
/**
* display the footer
*
* @access public
*/
function displayFooter()
{
}
/**
* flatten the variables
*
* This will convert the variable definitions
* to a one-dimensional array. If there are
* rows defined, they will be converted to a string
* where the values are seperated with commas.
*
* @access private
* @param array variable definitions
* @return array flattened variables
*/
function _flattenVars( $vars )
{
$flatten = array();
foreach( $vars['scalar'] as $var => $value )
{
$flatten[$var] = $value;
}
foreach( $vars['rows'] as $row )
{
foreach( $row as $var => $value )
{
if( !isset( $flatten[$var] ) || !is_array( $flatten[$var] ) )
$flatten[$var] = array();
array_push( $flatten[$var], $value );
}
}
foreach( $flatten as $var => $value )
{
if( !is_array( $value ) )
continue;
$flatten[$var] = '['.count($value).' rows] ('.implode( ', ', $value ).')';
}
return $flatten;
}
/**
* extract all variables from a template
*
* @access private
* @param string template content
* @return array array containing all variables
*/
function _extractVars( $template )
{
$pattern = '/'.$this->_tmpl->getStartTag().'([^a-z]+)'.$this->_tmpl->getEndTag().'/U';
$matches = array();
$result = preg_match_all( $pattern, $template, $matches );
if( $result == false )
return array();
$vars = array();
foreach( $matches[1] as $var )
{
if( strncmp( $var, 'TMPL:', 5 ) === 0 )
continue;
array_push( $vars, $var );
}
return array_unique( $vars );
}
}
?>