PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.0.1
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.0.1
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 3.10.4 All 148 releases
visualizer / classes / Visualizer / Source.php

Source.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 1.0.1, at classes/Visualizer/Source.php

167 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // +----------------------------------------------------------------------+
4 // | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
5 // +----------------------------------------------------------------------+
6 // | This program is free software; you can redistribute it and/or modify |
7 // | it under the terms of the GNU General Public License, version 2, as |
8 // | published by the Free Software Foundation. |
9 // | |
10 // | This program is distributed in the hope that it will be useful, |
11 // | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 // | GNU General Public License for more details. |
14 // | |
15 // | You should have received a copy of the GNU General Public License |
16 // | along with this program; if not, write to the Free Software |
17 // | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
18 // | MA 02110-1301 USA |
19 // +----------------------------------------------------------------------+
20 // | Author: Eugene Manuilov <eugene@manuilov.org> |
21 // +----------------------------------------------------------------------+
22
23 /**
24 * The abstract class for source managers.
25 *
26 * @category Visualizer
27 * @package Source
28 *
29 * @since 1.0.0
30 * @abstract
31 */
32 abstract class Visualizer_Source {
33
34 /**
35 * The array of data.
36 *
37 * @since 1.0.0
38 *
39 * @access protected
40 * @var array
41 */
42 protected $_data = array();
43
44 /**
45 * The array of series.
46 *
47 * @since 1.0.0
48 *
49 * @access protected
50 * @var array
51 */
52 protected $_series = array();
53
54 /**
55 * Returns source name.
56 *
57 * @since 1.0.0
58 *
59 * @abstract
60 * @access public
61 * @return string The name of source.
62 */
63 public abstract function getSourceName();
64
65 /**
66 * Fetches information from source, parses it and builds series and data arrays.
67 *
68 * @since 1.0.0
69 *
70 * @abstract
71 * @access public
72 */
73 public abstract function fetch();
74
75 /**
76 * Returns series parsed from source.
77 *
78 * @since 1.0.0
79 *
80 * @access public
81 * @return array The array of series.
82 */
83 public function getSeries() {
84 return $this->_series;
85 }
86
87 /**
88 * Returns data parsed from source.
89 *
90 * @since 1.0.0
91 *
92 * @access public
93 * @return string The serialized array of data.
94 */
95 public function getData() {
96 return serialize( $this->_data );
97 }
98
99 /**
100 * Normalizes values according to series' type.
101 *
102 * @since 1.0.0
103 *
104 * @access protected
105 * @param array $data The row of data.
106 * @return array Normalized row of data.
107 */
108 protected function _normalizeData( $data ) {
109 // normalize values
110 foreach ( $this->_series as $i => $series ) {
111 // if no value exists for the seires, then add null
112 if ( !isset( $data[$i] ) ) {
113 $data[$i] = null;
114 }
115
116 if ( is_null( $data[$i] ) ) {
117 continue;
118 }
119
120 switch ( $series['type'] ) {
121 case 'number':
122 $data[$i] = is_float( $data[$i] )
123 ? floatval( $data[$i] )
124 : intval( $data[$i] );
125 break;
126 case 'boolean':
127 $data[$i] = filter_validate( $data[$i], FILTER_VALIDATE_BOOLEAN );
128 break;
129 case 'timeofday':
130 $date = new DateTime( '1984-03-16T' . $data[$i] );
131 if ( $date ) {
132 $data[$i] = array(
133 intval( $date->format( 'H' ) ),
134 intval( $date->format( 'i' ) ),
135 intval( $date->format( 's' ) ),
136 0,
137 );
138 }
139 break;
140 }
141 }
142
143 return $data;
144 }
145
146 /**
147 * Validates series tyeps.
148 *
149 * @since 1.0.1
150 *
151 * @static
152 * @access protected
153 * @param array $types The icoming series types.
154 * @return boolean TRUE if sereis types are valid, otherwise FALSE.
155 */
156 protected static function _validateTypes( $types ) {
157 $allowed_types = array( 'string', 'number', 'boolean', 'date', 'datetime', 'timeofday' );
158 foreach ( $types as $type ) {
159 if ( !in_array( $type, $allowed_types ) ) {
160 return false;
161 }
162 }
163
164 return true;
165 }
166
167 }