PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.7.5
GiveWP – Donation Plugin and Fundraising Platform v2.7.5
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / libraries / googlechartlib / GoogleChartApi.php
give / includes / libraries / googlechartlib Last commit date
icons 8 years ago markers 8 years ago GoogleChart.php 8 years ago GoogleChartApi.php 8 years ago GoogleChartAxis.php 8 years ago GoogleChartData.php 8 years ago GoogleChartIcon.php 8 years ago GoogleChartMarker.php 8 years ago LICENSE 8 years ago
GoogleChartApi.php
265 lines
1 <?php
2
3 /** @file
4 * This file is part of Google Chart PHP library.
5 *
6 * Copyright (c) 2010 Rémi Lanvin <remi@cloudconnected.fr>
7 *
8 * Licensed under the MIT license.
9 *
10 * For the full copyright and license information, please view the LICENSE file.
11 */
12
13 /**
14 * Basic feature to query the API.
15 *
16 * This class implement basic features to query Google Chart API using GET or
17 * POST, as well as a simple way to set/get parameters.
18 *
19 * Every object that behave like a chart (regular charts, freestanding icons),
20 * must inherit from this class.
21 *
22 * @internal
23 */
24 class GoogleChartApi
25 {
26 /**
27 * Google Chart API base url.
28 */
29 const BASE_URL = 'http://chart.apis.google.com/chart';
30
31 // HTTPS url = https://chart.googleapis.com/chart
32
33 /**
34 * GET method
35 */
36 const GET = 0;
37
38 /**
39 * POST method
40 */
41 const POST = 1;
42
43 /**
44 * An array to store every additional parameters for the final request.
45 * Everything written in this array will be added to the final request without
46 * processing. It can be used to override any parameter.
47 */
48 protected $parameters = array();
49
50 /**
51 * GET or POST
52 */
53 protected $query_method = self::POST;
54
55 /**
56 * Set a parameter.
57 *
58 * @param $name (string)
59 * @param $value (mixed)
60 */
61 public function __set($name, $value)
62 {
63 $this->parameters[$name] = $value;
64 }
65
66 /**
67 * Return a parameter value.
68 *
69 * @param $name (string)
70 * @return mixed
71 */
72 public function __get($name)
73 {
74 return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
75 }
76
77 /**
78 * Unset a parameter.
79 *
80 * @param $name (string)
81 */
82 public function __unset($name)
83 {
84 unset($this->parameters[$name]);
85 }
86
87 /**
88 * Compute the whole query as an array.
89 *
90 * This function here does nothing (only returns the parameters array).
91 * It has to be overrided by child classes in order to add some logic.
92 *
93 * @internal
94 */
95 protected function computeQuery()
96 {
97 return $this->parameters;
98 }
99
100
101 /**
102 * @name Function to query Google Chart API
103 */
104 //@{
105
106 /**
107 * Set whether you want the class to use GET or POST for querying the API.
108 *
109 * Default method is POST.
110 *
111 * @param $method One of the following:
112 * - GoogleChart::GET
113 * - GoogleChart::POST
114 * @return $this
115 */
116 public function setQueryMethod($method)
117 {
118 if ( $method !== self::POST && $method !== self::GET )
119 throw new Exception(sprintf(
120 'Query method must be either GoogleChart::POST or GoogleChart::GET, "%s" given.',
121 $method
122 ));
123
124 $this->query_method = $method;
125 return $this;
126 }
127
128 /**
129 * Returns the full URL.
130 *
131 * Use this method if you need to link Google's URL directly, or if you
132 * prefer to use your own library to GET the chart.
133 *
134 * @return string
135 */
136 public function getUrl($escape_amp = true)
137 {
138 $q = $this->computeQuery();
139 $url = self::BASE_URL.'?'.http_build_query($q, '', $escape_amp? '&amp;' : '&');
140 return $url;
141 }
142
143 /**
144 * Returns the query parameters as an array.
145 *
146 * Use this method if you want to do the POST yourself, or for troubleshooting
147 * a chart.
148 *
149 * @return array
150 */
151 public function getQuery()
152 {
153 return $this->computeQuery();
154 }
155
156 /**
157 * Return an HTML img tag with Google's URL.
158 *
159 * Use this for troubleshooting or rapid application development.
160 *
161 * @return string
162 */
163 public function toHtml()
164 {
165 $str = sprintf(
166 '<img src="%s" alt="" />',
167 $this->getUrl()
168 );
169 return $str;
170 }
171
172 /**
173 * Query Google Chart and returns the image.
174 *
175 * @see setQueryMethod
176 *
177 * @return binary image
178 */
179 public function getImage()
180 {
181 $image = null;
182
183 switch ( $this->query_method ) {
184 case self::GET:
185 $url = $this->getUrl(false);
186 $image = file_get_contents($url);
187 break;
188 case self::POST:
189 $image = self::post($this->computeQuery());
190 break;
191 }
192
193 return $image;
194 }
195
196 /**
197 * Returns the image as a GD resource.
198 * @return ressource or false
199 * @since 0.6
200 */
201 public function getImageGD()
202 {
203 return imagecreatefromstring($this->getImage());
204 }
205
206 /**
207 * Shortcut for getImage().
208 */
209 public function __toString()
210 {
211 try {
212 return (string) $this->getImage();
213 } catch (Exception $e) {
214 trigger_error($e->getMessage(), E_USER_ERROR);
215 }
216 }
217 //@}
218
219 /**
220 * Performs a POST.
221 */
222 static public function post(array $q = array())
223 {
224 $context = stream_context_create(array(
225 'http' => array(
226 'method' => 'POST',
227 'header' => 'Content-type: application/x-www-form-urlencoded',
228 'content' => http_build_query($q, '', '&')
229 )
230 ));
231
232 return file_get_contents(self::BASE_URL, false, $context);
233 }
234
235 /**
236 * Check if a color is valid RRGGBB format.
237 *
238 * @param $color (string)
239 * @return bool
240 */
241 static public function validColor($color)
242 {
243 return preg_match('/^[0-9A-F]{6}$/i', $color);
244 }
245
246 /* --------------------------------------------------------------------------
247 * Debug
248 * -------------------------------------------------------------------------- */
249
250 public function getValidationUrl($escape_amp = true)
251 {
252 $q = $this->computeQuery();
253 $q['chof'] = 'validate';
254 $url = self::BASE_URL.'?'.http_build_query($q, '', $escape_amp?'&amp;':'&');
255 return $url;
256 }
257
258 public function validate()
259 {
260 $q = $this->computeQuery();
261 $q['chof'] = 'validate';
262 return self::post($q);
263 }
264 }
265