PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 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 All 508 releases
← All changes | modules/simple-payments/simple-payments.php +273 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,273 @@
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();