PluginProbe ʕ •ᴥ•ʔ
WooCommerce Square / 5.3.2
WooCommerce Square v5.3.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 / Sync / Job.php
woocommerce-square / includes / Sync Last commit date
Records 1 year ago Catalog_Item.php 8 months ago Helper.php 1 year ago Interval_Polling.php 6 months ago Job.php 2 years ago Manual_Synchronization.php 6 months ago Order_Importer.php 10 months ago Order_Mapper.php 10 months ago Order_Polling.php 10 months ago Product_Import.php 6 months ago Records.php 2 years ago Stepped_Job.php 2 years ago
Job.php
201 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 * @author WooCommerce
20 * @copyright Copyright: (c) 2019, Automattic, Inc.
21 * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
22 */
23
24 namespace WooCommerce\Square\Sync;
25
26 defined( 'ABSPATH' ) || exit;
27
28 /**
29 * Synchronization Job abstract.
30 *
31 * Synchronization jobs should extend this parent method with their own synchronization logic.
32 * @see \WooCommerce\Square\Handlers\Background_Job main handler should be responsible to set and create all Square background jobs
33 *
34 * @since 2.0.0
35 */
36 class Job {
37
38
39 /** @var \stdClass background job object */
40 protected $job;
41
42 /**
43 * Synchronization job constructor.
44 *
45 * @since 2.0.0
46 *
47 * @param null|\stdClass $job background synchronization job object
48 */
49 public function __construct( $job = null ) {
50
51 if ( null === $job ) {
52 $job = new \stdClass();
53 }
54
55 $this->job = $job;
56 }
57
58 /**
59 * Gets an attribute from the underlying job object.
60 *
61 * @since 2.0.0
62 *
63 * @param string $attr_name the attribute name
64 * @param mixed $default_value value if attribute is not found
65 * @return mixed
66 */
67 protected function get_attr( $attr_name, $default_value = null ) {
68 return isset( $this->job->$attr_name ) ? $this->job->$attr_name : $default_value;
69 }
70
71
72 /**
73 * Sets an attribute on the underlying job object.
74 *
75 * @since 2.0.0
76 *
77 * @param string $attr_name the attribute name
78 * @param mixed $attr_value the attribute value
79 * @param bool $update whether to update the job object (defaults to true)
80 */
81 protected function set_attr( $attr_name, $attr_value, $update = true ) {
82
83 $this->job->$attr_name = $attr_value;
84
85 if ( true === $update ) {
86 wc_square()->get_background_job_handler()->update_job( $this->job );
87 }
88 }
89
90
91 /**
92 * Checks if the job is currently locked.
93 *
94 * @since 2.0.0
95 *
96 * @return bool
97 */
98 protected function is_job_locked() {
99
100 return (bool) $this->get_attr( 'locked' );
101 }
102
103
104 /**
105 * Locks the job.
106 *
107 * @since 2.0.0
108 */
109 protected function lock_job() {
110
111 $this->set_attr( 'locked', true );
112 }
113
114
115 /**
116 * Unlocks the job.
117 *
118 * @since 2.0.0
119 */
120 protected function unlock_job() {
121
122 $this->set_attr( 'locked', false );
123 }
124
125
126 /**
127 * Executes the job.
128 *
129 * Child implementation should override this method with their own job processing logic.
130 *
131 * @since 2.0.0
132 *
133 * @return \stdClass the job object
134 */
135 public function run() {
136 wp_set_current_user( $this->get_attr( 'created_by' ) ); // phpcs:ignore Generic.PHP.ForbiddenFunctions.Discouraged -- required for background job processing
137
138 if ( ! defined( 'DOING_SQUARE_SYNC' ) || false === DOING_SQUARE_SYNC ) {
139 define( 'DOING_SQUARE_SYNC', true );
140 }
141
142 return $this->job;
143 }
144
145
146 /**
147 * Completes the job.
148 *
149 * @since 2.0.0
150 *
151 * @return \stdClass the job object
152 */
153 protected function complete() {
154 return $this->job = wc_square()->get_background_job_handler()->complete_job( $this->job );
155 }
156
157
158 /**
159 * Fails the job.
160 *
161 * @since 2.0.0
162 *
163 * @param string $reason failure reason message (optional)
164 * @return \stdClass the job object
165 */
166 protected function fail( $reason = '' ) {
167
168 if ( ! empty( $reason ) ) {
169 wc_square()->log( $reason );
170 }
171
172 return $this->job = wc_square()->get_background_job_handler()->fail_job( $this->job, $reason );
173 }
174
175
176 /**
177 * Checks if this job uses WooCommerce as the SOR.
178 *
179 * @since 2.0.0
180 *
181 * @return bool
182 */
183 public function is_system_of_record_woocommerce() {
184
185 return 'woocommerce' === $this->get_attr( 'system_of_record' );
186 }
187
188
189 /**
190 * Checks if this is job uses square as the SOR.
191 *
192 * @since 2.0.0
193 *
194 * @return bool
195 */
196 public function is_system_of_record_square() {
197
198 return 'square' === $this->get_attr( 'system_of_record' );
199 }
200 }
201