Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 49
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
VideoPress_CLI
0.00% covered (danger)
0.00%
0 / 45
0.00% covered (danger)
0.00%
0 / 6
420
0.00% covered (danger)
0.00%
0 / 1
 import
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
 cleanup_videos
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 list_crons
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
42
 cron_status
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
20
 activate_cron
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
 deactivate_cron
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
1<?php // phpcs:ignore WordPress.Files.FileName
2/**
3 * VideoPress CLI
4 *
5 * @package automattic/jetpack
6 */
7
8if ( ! defined( 'ABSPATH' ) ) {
9    exit( 0 );
10}
11
12if ( defined( 'WP_CLI' ) && WP_CLI ) {
13
14    /**
15     * VideoPress command line utilities.
16     */
17    class VideoPress_CLI extends WP_CLI_Command {
18        /**
19         * Import a VideoPress Video
20         *
21         * ## OPTIONS
22         *
23         * <guid>: Import the video with the specified guid
24         *
25         * ## EXAMPLES
26         *
27         * wp videopress import kUJmAcSf
28         *
29         * @param array $args CLI arguments.
30         */
31        public function import( $args ) {
32            $guid          = $args[0];
33            $attachment_id = create_local_media_library_for_videopress_guid( $guid );
34            if ( $attachment_id && ! is_wp_error( $attachment_id ) ) {
35                /* translators: %d: attachment id */
36                WP_CLI::success( sprintf( __( 'The video has been imported as Attachment ID %d', 'jetpack' ), $attachment_id ) );
37            } else {
38                WP_CLI::error( __( 'An error has been encountered.', 'jetpack' ) );
39            }
40        }
41
42        /**
43         * Manually runs the job to cleanup videos from the media library that failed during the upload process.
44         *
45         * ## EXAMPLES
46         *
47         * wp videopress cleanup_videos
48         */
49        public function cleanup_videos() {
50            $num_cleaned = videopress_cleanup_media_library();
51
52            /* translators: %d: number of videos cleaned */
53            WP_CLI::success( sprintf( _n( 'Cleaned up %d video.', 'Cleaned up a total of %d videos.', $num_cleaned, 'jetpack' ), $num_cleaned ) );
54        }
55
56        /**
57         * List out all of the crons that can be run.
58         *
59         * ## EXAMPLES
60         *
61         * wp videopress list_crons
62         */
63        public function list_crons() {
64
65            $scheduler   = VideoPress_Scheduler::init();
66            $crons       = $scheduler->get_crons();
67            $crons_count = is_countable( $crons ) ? count( $crons ) : 0;
68
69            $schedules = wp_get_schedules();
70
71            if ( $crons_count === 0 ) {
72                WP_CLI::success( __( 'Found no available cron jobs.', 'jetpack' ) );
73
74            } else {
75                /* translators: %d is the number of crons */
76                WP_CLI::success( sprintf( _n( 'Found %d available cron job.', 'Found %d available cron jobs.', $crons_count, 'jetpack' ), $crons_count ) );
77            }
78
79            foreach ( $crons as $cron_name => $cron ) {
80                $interval  = isset( $schedules[ $cron['interval'] ]['display'] ) ? $schedules[ $cron['interval'] ]['display'] : $cron['interval'];
81                $runs_next = $scheduler->check_cron( $cron_name );
82                $status    = $runs_next ? sprintf( 'Scheduled - Runs Next at %s GMT', gmdate( 'Y-m-d H:i:s', $runs_next ) ) : 'Not Scheduled';
83
84                WP_CLI::log( 'Name: ' . $cron_name );
85                WP_CLI::log( 'Method: ' . $cron['method'] );
86                WP_CLI::log( 'Interval: ' . $interval );
87                WP_CLI::log( 'Status: ' . $status );
88            }
89        }
90
91        /**
92         * Checks for the current status of a cron job.
93         *
94         * ## OPTIONS
95         *
96         * <cron_name>: The name of the cron job to check
97         *
98         * ## EXAMPLES
99         *
100         * wp videopress cron_status cleanup
101         *
102         * @param array $args CLI args.
103         */
104        public function cron_status( $args ) {
105
106            if ( ! isset( $args[0] ) ) {
107                return WP_CLI::error( __( 'You need to provide the name of the cronjob to schedule.', 'jetpack' ) );
108            }
109
110            $scheduler = VideoPress_Scheduler::init();
111
112            if ( ! $scheduler->is_cron_valid( $args[0] ) ) {
113                /* translators: name of a cron job */
114                WP_CLI::error( sprintf( __( 'There is no cron named %s.', 'jetpack' ), $args[0] ) );
115            }
116
117            $time = $scheduler->check_cron( $args[0] );
118
119            if ( ! $time ) {
120                WP_CLI::success( __( 'The cron is not scheduled to run.', 'jetpack' ) );
121
122            } else {
123                /* translators: date/time */
124                WP_CLI::success( sprintf( __( 'Cron will run at: %s GMT', 'jetpack' ), gmdate( 'Y-m-d H:i:s', $time ) ) );
125            }
126        }
127
128        /**
129         * Actives the given cron job
130         *
131         * ## OPTIONS
132         *
133         * <cron_name>: The name of the cron job to check
134         *
135         * ## EXAMPLES
136         *
137         * wp videopress activate_cron cleanup
138         *
139         * @param array $args CLI args.
140         */
141        public function activate_cron( $args ) {
142
143            if ( ! isset( $args[0] ) ) {
144                WP_CLI::error( __( 'You need to provide the name of the cronjob to schedule.', 'jetpack' ) );
145            }
146
147            $scheduler = VideoPress_Scheduler::init();
148
149            if ( ! $scheduler->is_cron_valid( $args[0] ) ) {
150                /* translators: name of a cron job */
151                WP_CLI::error( sprintf( __( 'There is no cron named %s.', 'jetpack' ), $args[0] ) );
152            }
153
154            $scheduler->activate_cron( $args[0] );
155
156            /* translators: name of a cron job */
157            WP_CLI::success( sprintf( __( 'The cron named `%s` was scheduled.', 'jetpack' ), $args[0] ) );
158        }
159
160        /**
161         * Actives the given cron job
162         *
163         * ## OPTIONS
164         *
165         * <cron_name>: The name of the cron job to check
166         *
167         * ## EXAMPLES
168         *
169         * wp videopress deactivate_cron cleanup
170         *
171         * @param array $args CLI args.
172         */
173        public function deactivate_cron( $args ) {
174
175            if ( ! isset( $args[0] ) ) {
176                WP_CLI::error( __( 'You need to provide the name of the cronjob to schedule.', 'jetpack' ) );
177            }
178
179            $scheduler = VideoPress_Scheduler::init();
180
181            if ( ! $scheduler->is_cron_valid( $args[0] ) ) {
182                /* translators: name of a cron job */
183                WP_CLI::error( sprintf( __( 'There is no cron named %s.', 'jetpack' ), $args[0] ) );
184            }
185
186            $scheduler->deactivate_cron( $args[0] );
187
188            /* translators: name of a cron job */
189            WP_CLI::success( sprintf( __( 'The cron named `%s` was removed from the schedule.', 'jetpack' ), $args[0] ) );
190        }
191    }
192
193    WP_CLI::add_command( 'videopress', 'VideoPress_CLI' );
194}