PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 All 506 releases
jetpack / modules / simple-payments / simple-payments.php

simple-payments.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-a.5, at modules/simple-payments/simple-payments.php

274 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Simple Payments lets users embed a PayPal button fully integrated with wpcom to sell products on the site.
4 * This is not a proper module yet, because not all the pieces are in place. Until everything is shipped, it can be turned
5 * into module that can be enabled/disabled.
6 *
7 * @package automattic/jetpack
8 */
9
10 use Automattic\Jetpack\Paypal_Payments\Simple_Payments as PayPal_Simple_Payments;
11
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit( 0 );
14 }
15
16 /**
17 * Jetpack_Simple_Payments
18 */
19 class Jetpack_Simple_Payments {
20 // These have to be under 20 chars because that is CPT limit.
21
22 /**
23 * Post type order.
24 *
25 * @var string
26 */
27 public static $post_type_order = 'jp_pay_order';
28
29 /**
30 * Post type product.
31 *
32 * @var string
33 */
34 public static $post_type_product = 'jp_pay_product';
35
36 /**
37 * Define simple payment shortcode.
38 *
39 * @var string
40 */
41 public static $shortcode = 'simple-payment';
42
43 /**
44 * Define simple payment CSS prefix.
45 *
46 * @var string
47 */
48 public static $css_classname_prefix = 'jetpack-simple-payments';
49
50 /**
51 * Which plan the user is on.
52 *
53 * @var string value_bundle or jetpack_premium
54 */
55 public static $required_plan;
56
57 /**
58 * Instance of the class.
59 *
60 * @var Jetpack_Simple_Payments
61 */
62 private static $instance;
63
64 /**
65 * Construction function.
66 */
67 private function __construct() {}
68
69 /**
70 * Original singleton.
71 *
72 * @todo Remove this when nothing calles getInstance anymore.
73 */
74 public static function getInstance() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
75 return self::get_instance();
76 }
77
78 /**
79 * Create instance of class.
80 */
81 public static function get_instance() {
82 if ( ! self::$instance ) {
83 self::$instance = new self();
84 self::$instance->init_hook_action();
85 self::$required_plan = ( defined( 'IS_WPCOM' ) && IS_WPCOM ) ? 'value_bundle' : 'jetpack_premium';
86 }
87 return self::$instance;
88 }
89
90 /**
91 * Actions that are run on init.
92 */
93 public function init_hook_action() {
94 return PayPal_Simple_Payments::get_instance()->init_hook_action();
95 }
96
97 /**
98 * Enqueue the static assets needed in the frontend.
99 */
100 public function enqueue_frontend_assets() {
101 return PayPal_Simple_Payments::get_instance()->enqueue_frontend_assets();
102 }
103
104 /**
105 * Add an inline script for setting up the PayPal checkout button.
106 *
107 * @param int $id Product ID.
108 * @param int $dom_id ID of the DOM element with the purchase message.
109 * @param boolean $is_multiple Whether multiple items of the same product can be purchased.
110 */
111 public function setup_paypal_checkout_button( $id, $dom_id, $is_multiple ) {
112 return PayPal_Simple_Payments::get_instance()->setup_paypal_checkout_button( $id, $dom_id, $is_multiple );
113 }
114
115 /**
116 * Remove auto paragraph from product description.
117 *
118 * @param string $content - the content of the post.
119 */
120 public function remove_auto_paragraph_from_product_description( $content ) {
121 return PayPal_Simple_Payments::get_instance()->remove_auto_paragraph_from_product_description( $content );
122 }
123
124 /** Return the blog ID */
125 public function get_blog_id() {
126 return PayPal_Simple_Payments::get_instance()->get_blog_id();
127 }
128
129 /**
130 * Used to check whether Simple Payments are enabled for given site.
131 *
132 * @return bool True if Simple Payments are enabled, false otherwise.
133 */
134 public function is_enabled_jetpack_simple_payments() {
135 return PayPal_Simple_Payments::is_enabled_jetpack_simple_payments();
136 }
137
138 /**
139 * Creates the content from a shortcode
140 *
141 * @param array $attrs Shortcode attributes.
142 * @param mixed $content unused.
143 *
144 * @return string|void
145 */
146 public function parse_shortcode( $attrs, $content = false ) {
147 return PayPal_Simple_Payments::get_instance()->parse_shortcode( $attrs, $content );
148 }
149
150 /**
151 * Output an admin warning if user can't use Pay with PayPal.
152 *
153 * @param array $data unused.
154 */
155 public function output_admin_warning( $data ) {
156 return PayPal_Simple_Payments::get_instance()->output_admin_warning( $data );
157 }
158
159 /**
160 * Get the HTML output to use as PayPal purchase box.
161 *
162 * @param string $dom_id ID of the DOM element with the purchase message.
163 * @param boolean $is_multiple Whether multiple items of the same product can be purchased.
164 *
165 * @return string
166 */
167 public function output_purchase_box( $dom_id, $is_multiple ) {
168 return PayPal_Simple_Payments::get_instance()->output_purchase_box( $dom_id, $is_multiple );
169 }
170
171 /**
172 * Get the HTML output to replace the `simple-payments` shortcode.
173 *
174 * @param array $data Product data.
175 * @return string
176 */
177 public function output_shortcode( $data ) {
178 return PayPal_Simple_Payments::get_instance()->output_shortcode( $data );
179 }
180
181 /**
182 * Allows custom post types to be used by REST API.
183 *
184 * @param array $post_types - the allows post types.
185 * @see hook 'rest_api_allowed_post_types'
186 * @return array
187 */
188 public function allow_rest_api_types( $post_types ) {
189 return PayPal_Simple_Payments::get_instance()->allow_rest_api_types( $post_types );
190 }
191
192 /**
193 * Merge $post_meta with additional meta information.
194 *
195 * @param array $post_meta - the post's meta information.
196 */
197 public function allow_sync_post_meta( $post_meta ) {
198 return PayPal_Simple_Payments::get_instance()->allow_sync_post_meta( $post_meta );
199 }
200
201 /**
202 * Enable Simple payments custom meta values for access through the REST API.
203 * Field's value will be exposed on a .meta key in the endpoint response,
204 * and WordPress will handle setting up the callbacks for reading and writing
205 * to that meta key.
206 *
207 * @link https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/
208 */
209 public function register_meta_fields_in_rest_api() {
210 return PayPal_Simple_Payments::get_instance()->register_meta_fields_in_rest_api();
211 }
212
213 /**
214 * Sanitize three-character ISO-4217 Simple payments currency
215 *
216 * List has to be in sync with list at the block's client side and widget's backend side:
217 *
218 * @param array $currency - list of currencies.
219 * @link https://github.com/Automattic/jetpack/blob/31efa189ad223c0eb7ad085ac0650a23facf9ef5/extensions/blocks/simple-payments/constants.js#L9-L39
220 * @link https://github.com/Automattic/jetpack/blob/31efa189ad223c0eb7ad085ac0650a23facf9ef5/modules/widgets/simple-payments.php#L19-L44
221 *
222 * Currencies should be supported by PayPal:
223 * @link https://developer.paypal.com/docs/api/reference/currency-codes/
224 *
225 * Indian Rupee (INR) not supported because at the time of the creation of this file
226 * because it's limited to in-country PayPal India accounts only.
227 * Discussion: https://github.com/Automattic/wp-calypso/pull/28236
228 */
229 public static function sanitize_currency( $currency ) {
230 return PayPal_Simple_Payments::sanitize_currency( $currency );
231 }
232
233 /**
234 * Sanitize price:
235 *
236 * Positive integers and floats
237 * Supports two decimal places.
238 * Maximum length: 10.
239 *
240 * See `price` from PayPal docs:
241 *
242 * @link https://developer.paypal.com/docs/api/orders/v1/#definition-item
243 *
244 * @param string $price - the price we want to sanitize.
245 * @return null|string
246 */
247 public static function sanitize_price( $price ) {
248 return PayPal_Simple_Payments::sanitize_price( $price );
249 }
250
251 /**
252 * Sets up the custom post types for the module.
253 */
254 public function setup_cpts() {
255 return PayPal_Simple_Payments::get_instance()->setup_cpts();
256 }
257
258 /**
259 * Validate the block attributes
260 *
261 * @param array $attrs The block attributes, expected to contain:
262 * * email - an email address.
263 * * price - a float between 0.01 and 9999999999.99.
264 * * productId - the ID of the product being paid for.
265 *
266 * @return bool
267 */
268 public function is_valid( $attrs ) {
269 return PayPal_Simple_Payments::get_instance()->is_valid( $attrs );
270 }
271 }
272
273 PayPal_Simple_Payments::get_instance();
274