PluginProbe ʕ •ᴥ•ʔ
WooCommerce Square / 5.4.2
WooCommerce Square v5.4.2
5.4.2 5.4.1 5.4.0 trunk 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 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.0.8 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.7.0 2.8.0 2.9.0 2.9.1 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.2.0 3.3.0 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.7.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 4.0.0 4.1.0 4.2.0 4.2.1 4.2.2 4.2.3 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.9.0 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.9.8 4.9.9 5.0.0 5.0.1 5.1.0 5.1.1 5.1.2 5.2.0 5.3.0 5.3.1 5.3.2 5.3.3
woocommerce-square / includes / Gateway / Customer_Helper.php
woocommerce-square / includes / Gateway Last commit date
API 4 months ago Templates 1 year ago API.php 2 months ago Blocks_Handler.php 3 months ago Card_Handler.php 3 years ago Cash_App_Pay_Blocks_Handler.php 3 months ago Cash_App_Pay_Gateway.php 3 months ago Customer_Helper.php 3 years ago Digital_Wallet.php 3 months ago Gift_Card.php 3 months ago Payment_Form.php 3 months ago
Customer_Helper.php
187 lines
1 <?php
2 /**
3 * WooCommerce Square
4 *
5 * This source file is subject to the GNU General Public License v3.0
6 * that is bundled with this package in the file license.txt.
7 * It is also available through the world-wide-web at this URL:
8 * http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
9 * If you did not receive a copy of the license and are unable to
10 * obtain it through the world-wide-web, please send an email
11 * to license@woocommerce.com so we can send you a copy immediately.
12 *
13 * DISCLAIMER
14 *
15 * Do not edit or add to this file if you wish to upgrade WooCommerce Square to newer
16 * versions in the future. If you wish to customize WooCommerce Square for your
17 * needs please refer to https://docs.woocommerce.com/document/woocommerce-square/
18 *
19 */
20
21 namespace WooCommerce\Square\Gateway;
22
23 defined( 'ABSPATH' ) || exit;
24
25 class Customer_Helper {
26
27
28 /**
29 * Adds customers to the local index.
30 *
31 * @since 2.0.0
32 *
33 * @param \Square\Models\Customer[] $customers Square API customers
34 */
35 public static function add_customers( array $customers ) {
36 global $wpdb;
37
38 $placeholders = array();
39 $values = array();
40
41 $query = "INSERT INTO {$wpdb->prefix}woocommerce_square_customers (square_id, email_address) VALUES ";
42
43 foreach ( $customers as $customer ) {
44
45 // skip any bad data
46 if ( ! $customer instanceof \Square\Models\Customer ) {
47 continue;
48 }
49
50 $placeholders[] = '(%s, %s)';
51
52 $values[] = wc_clean( $customer->getId() );
53 $values[] = wc_clean( $customer->getEmailAddress() );
54 }
55
56 $query .= implode( ', ', $placeholders );
57
58 // update the Square ID value when duplicate email addresses are present
59 $query .= " ON DUPLICATE KEY UPDATE email_address = VALUES(email_address)"; //phpcs:ignore Squiz.Strings.DoubleQuoteUsage.NotRequired
60
61 $wpdb->query( $wpdb->prepare( $query, $values ) ); //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
62 }
63
64
65 /**
66 * Adds a customer to the index.
67 *
68 * @since 2.0.0
69 *
70 * @param string $square_id Square customer ID
71 * @param string $email_address customer email address
72 * @param int $user_id WordPress user ID
73 */
74 public static function add_customer( $square_id, $email_address, $user_id = 0 ) {
75 global $wpdb;
76
77 if ( is_email( $email_address ) ) {
78
79 $params = array(
80 'square_id' => wc_clean( $square_id ),
81 'email_address' => wc_clean( $email_address ),
82 );
83
84 if ( $user_id && is_numeric( $user_id ) ) {
85 $params['user_id'] = (int) $user_id;
86 }
87
88 $wpdb->insert(
89 "{$wpdb->prefix}woocommerce_square_customers",
90 $params
91 );
92 }
93 }
94
95
96 /**
97 * Gets a Square customer ID from an email address.
98 *
99 * @param string $email_address customer email address
100 * @return string|null
101 */
102 public static function get_square_id( $email_address ) {
103 global $wpdb;
104
105 $square_id = null;
106
107 if ( is_email( $email_address ) ) {
108
109 $square_id = $wpdb->get_var(
110 $wpdb->prepare(
111 "SELECT square_id FROM {$wpdb->prefix}woocommerce_square_customers WHERE email_address = %s",
112 $email_address
113 )
114 );
115 }
116
117 return $square_id;
118 }
119
120
121 public static function get_customers_by_email( $email_address ) {
122 global $wpdb;
123
124 $square_ids = array();
125
126 if ( is_email( $email_address ) ) {
127
128 $square_ids = $wpdb->get_col(
129 $wpdb->prepare(
130 "SELECT square_id FROM {$wpdb->prefix}woocommerce_square_customers WHERE email_address = %s",
131 $email_address
132 )
133 );
134 }
135
136 return $square_ids;
137 }
138
139
140 /**
141 * Determines if a customer exists in the index.
142 *
143 * @since 2.0.0
144 *
145 * @param string $square_id Square customer ID
146 * @return bool
147 */
148 public static function is_customer_indexed( $square_id ) {
149 global $wpdb;
150
151 $result = $wpdb->get_var(
152 $wpdb->prepare(
153 "SELECT * FROM {$wpdb->prefix}woocommerce_square_customers WHERE square_id = %s",
154 $square_id
155 )
156 );
157
158 return (bool) $result;
159 }
160
161
162 /**
163 * Creates the db table for the customer index.
164 *
165 * @since 2.0.0
166 */
167 public static function create_table() {
168 global $wpdb;
169
170 $wpdb->hide_errors();
171
172 $collate = '';
173
174 if ( $wpdb->has_cap( 'collation' ) ) {
175 $collate = $wpdb->get_charset_collate();
176 }
177
178 $schema = $wpdb->prepare( "CREATE TABLE {$wpdb->prefix}woocommerce_square_customers (`square_id` varchar(191) NOT NULL, `email_address` varchar(200) NOT NULL, `user_id` BIGINT UNSIGNED NOT NULL, PRIMARY KEY (`square_id`) ) %1s", $collate ); //phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder
179
180 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
181
182 dbDelta( $schema );
183 }
184
185
186 }
187