PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 2.10.0
Translate and Go multilingual – Automatic AI translation – wpLingua v2.10.0
2.16.6 2.16.5 2.16.4 2.16.3 2.16.2 2.16.1 2.16.0 2.15.2 2.15.1 2.15.0 2.14.3 2.14.2 2.14.1 2.14.0 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 trunk 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 All 111 releases
wplingua / inc / api-call / request-api-key.php

request-api-key.php in Translate and Go multilingual – Automatic AI translation – wpLingua 2.10.0, at inc/api-call/request-api-key.php

188 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if ( ! defined( 'WPINC' ) ) {
5 die;
6 }
7
8
9 /**
10 * Request an API key for wpLingua API
11 *
12 * Return an error message with error code
13 * or a confirmation for the API key creation
14 *
15 * API terms : https://wplingua.com/terms/
16 *
17 * ---------------------------------------------------
18 * Data sent :
19 * ---------------------------------------------------
20 * - request : 'register'
21 * - mail_address : A email address
22 * - language_original : A language ID
23 * - languages_target : An array of languages ID
24 * - accept_eula : Boolean
25 *
26 * ---------------------------------------------------
27 * Data received if successful :
28 * ---------------------------------------------------
29 * - register : true
30 *
31 * ---------------------------------------------------
32 * Data received in case of failure
33 * ---------------------------------------------------
34 * - error : true
35 * - code : An integer
36 * - message : Error description
37 *
38 * @param array $data
39 * @return array API validation or error after API key registration
40 */
41 function wplng_api_call_request_api_key( $data ) {
42
43 /**
44 * Sanitize and check data
45 */
46
47 // Check if needed data is present
48
49 if ( empty( $data['request'] )
50 || $data['request'] !== 'register'
51 || empty( $data['mail_address'] )
52 || empty( $data['website'] )
53 || empty( $data['language_original'] )
54 || empty( $data['languages_target'] )
55 || empty( $data['accept_eula'] )
56 || $data['accept_eula'] !== true
57 ) {
58 return array(
59 'error' => true,
60 'message' => __( 'Error - Invalid data.', 'wplingua' ),
61 );
62 }
63
64 // Sanitize and check mail address
65
66 $mail_address = sanitize_email( $data['mail_address'] );
67
68 if ( ! is_email( $mail_address ) ) {
69 return array(
70 'error' => true,
71 'message' => __( 'Error - Invalid data (email address).', 'wplingua' ),
72 );
73 }
74
75 // Sanitize and check website URL
76
77 $website = sanitize_url( $data['website'] );
78
79 if ( $website !== $data['website'] ) {
80 return array(
81 'error' => true,
82 'message' => __( 'Error - Invalid data (website URL).', 'wplingua' ),
83 );
84 }
85
86 // Sanitize and check original and target language
87
88 $language_original = sanitize_key( $data['language_original'] );
89 $languages_target = sanitize_key( $data['languages_target'] );
90
91 if ( ! wplng_is_valid_language_id( $language_original )
92 || ! wplng_is_valid_language_id( $languages_target )
93 || ( $language_original === $languages_target )
94 ) {
95 return array(
96 'error' => true,
97 'message' => __( 'Error - Invalid data (languages).', 'wplingua' ),
98 );
99 }
100
101 /**
102 * Get the API call
103 */
104
105 $body = array(
106 'request' => 'register',
107 'version' => WPLNG_API_VERSION,
108 'website' => $website,
109 'mail_address' => $mail_address,
110 'language_original' => $language_original,
111 'languages_target' => array( $languages_target ),
112 'accept_eula' => true,
113 );
114
115 $args = array(
116 'method' => 'POST',
117 'timeout' => 5,
118 'sslverify' => WPLNG_API_SSLVERIFY,
119 'body' => $body,
120 );
121
122 $request = wp_remote_post(
123 WPLNG_API_URL . '/account/',
124 $args
125 );
126
127 /**
128 * Check if the API call worked
129 */
130
131 if ( is_wp_error( $request )
132 || wp_remote_retrieve_response_code( $request ) != 200
133 ) {
134 return array(
135 'error' => true,
136 'message' => __( 'Error - The API could not be called.', 'wplingua' ),
137 );
138 }
139
140 /**
141 * Check and sanitize the API response
142 */
143
144 $response_checked = array();
145 $response = json_decode(
146 wp_remote_retrieve_body( $request ),
147 true
148 );
149
150 if ( isset( $response['register'] )
151 && ( true === $response['register'] )
152 ) {
153
154 // API returning confirmation of key creation
155
156 $response_checked = array(
157 'register' => true,
158 );
159
160 } elseif ( ! empty( $response['error'] )
161 && ( true === $response['error'] )
162 && isset( $response['code'] )
163 && is_int( $response['code'] )
164 && ! empty( $response['message'] )
165 && is_string( $response['message'] )
166 ) {
167
168 // API returning a valid error
169
170 $response_checked = array(
171 'error' => true,
172 'message' => sanitize_text_field( $response['message'] ),
173 );
174
175 } else {
176
177 // API returned an unexpected response
178
179 $response_checked = array(
180 'error' => true,
181 'message' => __( 'Error - API response not valid.', 'wplingua' ),
182 );
183
184 }
185
186 return $response_checked;
187 }
188