JSON API - Version 1.1.0

Version Description

Minor bugfixes

Download this release

Release Info

Developer dphiffer
Plugin Icon wp plugin JSON API
Version 1.1.0
Comparing to
See all releases

Code changes from version 1.0.9 to 1.1.0

json-api.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: JSON API
4
Plugin URI: http://wordpress.org/plugins/json-api/
5
Description: A RESTful API for WordPress
6
- Version: 1.0.9
7
Author: Dan Phiffer
8
Author URI: http://phiffer.org/
9
*/
3
Plugin Name: JSON API
4
Plugin URI: http://wordpress.org/plugins/json-api/
5
Description: A RESTful API for WordPress
6
+ Version: 1.1.0
7
Author: Dan Phiffer
8
Author URI: http://phiffer.org/
9
*/
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: dphiffer
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DH4MEG99JR2WE
4
Tags: json, api, ajax, cms, admin, integration, moma
5
Requires at least: 2.8
6
- Tested up to: 3.5.1
7
- Stable tag: 1.0.9
8
9
A RESTful API for WordPress
10
@@ -689,7 +689,7 @@ The following arguments modify how you get results back from the API. The redire
689
* Setting `redirect` to a URL will cause the user's browser to redirect to the specified URL with a `status` value appended to the query vars (see the *Response objects* section below for an explanation of status values).
690
* Setting `redirect_[status]` allows you to control the resulting browser redirection depending on the `status` value.
691
* Setting `dev` to a non-empty value adds whitespace for readability and responds with `text/plain`
692
- * Setting `json_encode_options` will let you specify an integer bitmask to modify the behavior of [PHP's `json_encode`](http://php.net/manual/en/function.json-encode.php)
693
* Setting `json_unescaped_unicode` will replace unicode-escaped characters with their unescaped equivalents (e.g., `\u00e1` becomes á)
694
* Omitting all of the above arguments will result in a standard JSON response.
695
@@ -1034,6 +1034,10 @@ You should see the test results print out culminating in a summary:
1034
1035
== Changelog ==
1036
1037
= 1.0.9 (2013-06-21): =
1038
* Added `update_post` and `delete_post` methods to Post controller
1039
* Added two JSON encoding arguments: `json_encode_options` and `json_unescaped_unicode`
@@ -1158,6 +1162,9 @@ You should see the test results print out culminating in a summary:
1158
1159
== Upgrade Notice ==
1160
1161
= 1.0.9 =
1162
Update/delete post methods and some other bugfixes and improvements
1163
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DH4MEG99JR2WE
4
Tags: json, api, ajax, cms, admin, integration, moma
5
Requires at least: 2.8
6
+ Tested up to: 3.5.2
7
+ Stable tag: 1.1.0
8
9
A RESTful API for WordPress
10
689
* Setting `redirect` to a URL will cause the user's browser to redirect to the specified URL with a `status` value appended to the query vars (see the *Response objects* section below for an explanation of status values).
690
* Setting `redirect_[status]` allows you to control the resulting browser redirection depending on the `status` value.
691
* Setting `dev` to a non-empty value adds whitespace for readability and responds with `text/plain`
692
+ * Setting `json_encode_options` will let you specify an integer bitmask to modify the behavior of [PHP's `json_encode`](http://php.net/manual/en/function.json-encode.php) (Note: this option is only recognized in PHP version 5.3+)
693
* Setting `json_unescaped_unicode` will replace unicode-escaped characters with their unescaped equivalents (e.g., `\u00e1` becomes á)
694
* Omitting all of the above arguments will result in a standard JSON response.
695
1034
1035
== Changelog ==
1036
1037
+ = 1.1.0 (2013-06-22): =
1038
+ * Bugfix for `json_encode` compatibility with PHP < 5.3
1039
+ * Bugfix for `get_author_index` warnings in WordPress > 3.5
1040
+
1041
= 1.0.9 (2013-06-21): =
1042
* Added `update_post` and `delete_post` methods to Post controller
1043
* Added two JSON encoding arguments: `json_encode_options` and `json_unescaped_unicode`
1162
1163
== Upgrade Notice ==
1164
1165
+ = 1.1.0 =
1166
+ Minor bugfixes
1167
+
1168
= 1.0.9 =
1169
Update/delete post methods and some other bugfixes and improvements
1170
singletons/introspector.php CHANGED
@@ -171,14 +171,14 @@ class JSON_API_Introspector {
171
172
public function get_authors() {
173
global $wpdb;
174
- $author_ids = $wpdb->get_col($wpdb->prepare("
175
SELECT u.ID, m.meta_value AS last_name
176
FROM $wpdb->users AS u,
177
$wpdb->usermeta AS m
178
WHERE m.user_id = u.ID
179
AND m.meta_key = 'last_name'
180
ORDER BY last_name
181
- "));
182
$all_authors = array_map(array(&$this, 'get_author_by_id'), $author_ids);
183
$active_authors = array_filter($all_authors, array(&$this, 'is_active_author'));
184
return $active_authors;
171
172
public function get_authors() {
173
global $wpdb;
174
+ $author_ids = $wpdb->get_col("
175
SELECT u.ID, m.meta_value AS last_name
176
FROM $wpdb->users AS u,
177
$wpdb->usermeta AS m
178
WHERE m.user_id = u.ID
179
AND m.meta_key = 'last_name'
180
ORDER BY last_name
181
+ ");
182
$all_authors = array_map(array(&$this, 'get_author_by_id'), $author_ids);
183
$active_authors = array_filter($all_authors, array(&$this, 'is_active_author'));
184
return $active_authors;
singletons/response.php CHANGED
@@ -33,11 +33,15 @@ class JSON_API_Response {
33
34
if (function_exists('json_encode')) {
35
// Use the built-in json_encode function if it's available
36
- $json_encode_options = 0;
37
- if ($json_api->query->json_encode_options) {
38
- $json_encode_options = $json_api->query->json_encode_options;
39
}
40
- $json = json_encode($data, $json_encode_options);
41
} else {
42
// Use PEAR's Services_JSON encoder otherwise
43
if (!class_exists('Services_JSON')) {
@@ -48,6 +52,7 @@ class JSON_API_Response {
48
$json = $json_service->encode($data);
49
}
50
51
if ($json_api->query->json_unescaped_unicode) {
52
$callback = array($this, 'replace_unicode_escape_sequence');
53
$json = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', $callback, $json);
33
34
if (function_exists('json_encode')) {
35
// Use the built-in json_encode function if it's available
36
+ if (version_compare(PHP_VERSION, '5.3') < 0) {
37
+ $json = json_encode($data);
38
+ } else {
39
+ $json_encode_options = 0;
40
+ if ($json_api->query->json_encode_options) {
41
+ $json_encode_options = $json_api->query->json_encode_options;
42
+ }
43
+ $json = json_encode($data, $json_encode_options);
44
}
45
} else {
46
// Use PEAR's Services_JSON encoder otherwise
47
if (!class_exists('Services_JSON')) {
52
$json = $json_service->encode($data);
53
}
54
55
+ // Thanks to Stack Overflow user Gumbo stackoverflow.com/questions/2934563
56
if ($json_api->query->json_unescaped_unicode) {
57
$callback = array($this, 'replace_unicode_escape_sequence');
58
$json = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', $callback, $json);
tests/core.info-01.phpt CHANGED
@@ -10,14 +10,12 @@ $response = $http->currentResponse();
10
$response = json_decode($response['body']);
11
12
echo "Response status: $response->status\n";
13
- echo "Version: $response->json_api_version\n";
14
echo "Controllers:\n";
15
var_dump($response->controllers);
16
17
?>
18
--EXPECT--
19
Response status: ok
20
- Version: 1.0.8
21
Controllers:
22
array(4) {
23
[0]=>
10
$response = json_decode($response['body']);
11
12
echo "Response status: $response->status\n";
13
echo "Controllers:\n";
14
var_dump($response->controllers);
15
16
?>
17
--EXPECT--
18
Response status: ok
19
Controllers:
20
array(4) {
21
[0]=>