@@ -122,12 +122,6 @@ public function rest_endpoints( $endpoints ) {
122122 'permission_callback ' => array ( $ this , 'rest_can_manage_options ' ),
123123 );
124124
125- $ endpoints ['process ' ] = array (
126- 'method ' => \WP_REST_Server::CREATABLE ,
127- 'callback ' => array ( $ this , 'process_sync ' ),
128- 'args ' => array (),
129- );
130-
131125 $ endpoints ['queue ' ] = array (
132126 'method ' => \WP_REST_Server::CREATABLE ,
133127 'callback ' => array ( $ this , 'process_queue ' ),
@@ -158,7 +152,7 @@ public function rest_get_queue_status() {
158152 return rest_ensure_response (
159153 array (
160154 'success ' => true ,
161- 'data ' => $ this ->queue ->get_queue_status (),
155+ 'data ' => $ this ->queue ->is_running (),
162156 )
163157 );
164158 }
@@ -172,17 +166,18 @@ public function rest_get_queue_status() {
172166 */
173167 public function rest_start_sync ( \WP_REST_Request $ request ) {
174168
175- $ stop = $ request ->get_param ( 'stop ' );
176- $ status = $ this ->queue ->get_queue_status ();
177- if ( empty ( $ status ['pending ' ] ) || ! empty ( $ stop ) ) {
169+ $ type = $ request ->get_param ( 'type ' );
170+ $ start = $ this ->queue ->is_enabled ();
171+ $ state = array (
172+ 'success ' => false ,
173+ );
174+ if ( empty ( $ start ) ) {
178175 $ this ->queue ->stop_queue ();
179-
180- return $ this ->rest_get_queue_status (); // Nothing to sync.
176+ } else {
177+ $ state [ ' success ' ] = $ this ->queue -> start_queue ( $ type );
181178 }
182179
183- $ this ->queue ->start_queue ();
184-
185- return $ this ->rest_get_queue_status ();
180+ return rest_ensure_response ( $ state );
186181 }
187182
188183 /**
@@ -217,61 +212,37 @@ public function process_assets( $attachments = array() ) {
217212
218213 // Create synced post meta as a way to search for synced / unsynced items.
219214 update_post_meta ( $ attachment_id , Sync::META_KEYS ['public_id ' ], $ this ->media ->get_public_id ( $ attachment_id ) );
220- }
221-
222- return $ stat ;
223- }
224-
225- /**
226- * Process assets to sync vai WP REST API.
227- *
228- * @param \WP_REST_Request $request The request.
229- *
230- * @return mixed|\WP_REST_Response
231- */
232- public function process_sync ( \WP_REST_Request $ request ) {
233- $ process_key = $ request ->get_param ( 'process_key ' );
234- $ note = 'no process key ' ;
235- if ( ! empty ( $ process_key ) ) {
236- $ attachments = get_transient ( $ process_key );
237- if ( ! empty ( $ attachments ) ) {
238- delete_transient ( $ process_key );
239215
240- return rest_ensure_response (
241- array (
242- 'success ' => true ,
243- 'data ' => $ this ->process_assets ( $ attachments ),
244- )
245- );
216+ $ sync_thread = get_post_meta ( $ attachment_id , Sync::META_KEYS ['queued ' ], true );
217+ if ( ! empty ( $ sync_thread ) ) {
218+ delete_post_meta ( $ attachment_id , Sync::META_KEYS ['queued ' ] );
219+ delete_post_meta ( $ attachment_id , $ sync_thread );
246220 }
247- $ note = 'no attachments ' ;
248221 }
249222
250- return rest_ensure_response (
251- array (
252- 'success ' => false ,
253- 'note ' => $ note ,
254- )
255- );
223+ return $ stat ;
256224 }
257225
258226 /**
259227 * Resume the bulk sync.
260228 *
261229 * @param \WP_REST_Request $request The request.
262- *
263- * @return void
264230 */
265231 public function process_queue ( \WP_REST_Request $ request ) {
266- $ thread = $ request ->get_param ( 'thread ' );
267- $ queue = $ this ->queue ->get_thread_queue ( $ thread );
268-
269- if ( ! empty ( $ queue ) && $ this ->queue ->is_running () ) {
232+ $ thread = $ request ->get_param ( 'thread ' );
233+ $ thread_type = $ this ->queue ->get_thread_type ( $ thread );
234+ $ queue = $ this -> queue -> get_thread_queue ( $ thread );
235+ if ( ! empty ( $ queue[ ' next ' ] ) && ( $ this ->queue ->is_running ( $ thread_type ) ) ) {
270236 while ( $ attachment_id = $ this ->queue ->get_post ( $ thread ) ) { // phpcs:ignore WordPress.CodeAnalysis.AssignmentInCondition
237+ // translators: variable is thread name and asset ID.
238+ $ action_message = sprintf ( __ ( '%1$s: Syncing asset %2$d ' , 'cloudinary ' ), $ thread , $ attachment_id );
239+ do_action ( '_cloudinary_queue_action ' , $ action_message );
271240 $ this ->process_assets ( $ attachment_id );
272- $ this ->queue ->mark ( $ attachment_id , 'done ' );
273241 }
274- $ this ->queue ->stop_maybe ();
242+ $ this ->queue ->stop_maybe ( $ thread_type );
275243 }
244+ // translators: variable is thread name.
245+ $ action_message = sprintf ( __ ( 'Ending thread %s ' , 'cloudinary ' ), $ thread );
246+ do_action ( '_cloudinary_queue_action ' , $ action_message );
276247 }
277248}
0 commit comments