Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
ImageSideloadTask
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 5
110
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 execute
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
42
 get_post_id
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 get_image_urls
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 get_id
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace NewfoldLabs\WP\Module\Onboarding\Tasks;
4
5use NewfoldLabs\WP\Module\Onboarding\Services\SiteGenImageService;
6
7/**
8 * Task for sideloading images to WordPress media library
9 */
10class ImageSideloadTask {
11
12    /**
13     * The post ID to attach images to
14     *
15     * @var int
16     */
17    private $post_id;
18
19    /**
20     * Array of image URLs to sideload
21     *
22     * @var array
23     */
24    private $image_urls;
25
26    /**
27     * Constructor
28     *
29     * @param int   $post_id    The post ID to attach images to
30     * @param array $image_urls Array of image URLs to sideload
31     */
32    public function __construct( $post_id, $image_urls ) {
33        $this->post_id    = $post_id;
34        $this->image_urls = $image_urls;
35    }
36
37    /**
38     * Execute the task
39     *
40     * @return bool|\WP_Error True on success, WP_Error on failure
41     */
42    public function execute() {
43        try {
44            // Upload images to WordPress media library
45            $result = SiteGenImageService::upload_images_to_wp_media_library( $this->image_urls, $this->post_id );
46
47            if ( is_wp_error( $result ) ) {
48                return $result;
49            }
50
51            if ( false === $result ) {
52                return new \WP_Error( 'upload_failed', 'Image upload returned false' );
53            }
54
55            // Update post content with new image URLs
56            if ( ! empty( $result ) ) {
57                $content_updated = SiteGenImageService::update_post_content_with_new_image_urls( $this->post_id, $result );
58                if ( ! $content_updated ) {
59                    return new \WP_Error( 'content_update_failed', 'Failed to update post content with new image URLs' );
60                }
61            }
62
63            return true;
64        } catch ( \Exception $e ) {
65            return new \WP_Error( 'image_sideload_failed', $e->getMessage() );
66        }
67    }
68
69    /**
70     * Get the post ID
71     *
72     * @return int
73     */
74    public function get_post_id() {
75        return $this->post_id;
76    }
77
78    /**
79     * Get the image URLs
80     *
81     * @return array
82     */
83    public function get_image_urls() {
84        return $this->image_urls;
85    }
86
87    /**
88     * Get a unique identifier for this task
89     *
90     * @return string
91     */
92    public function get_id() {
93        return 'image_sideload_' . $this->post_id . '_' . md5( maybe_serialize( $this->image_urls ) );
94    }
95}