PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.1 5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / woocommerce / action-scheduler / classes / WP_CLI / System_Command.php
mailpoet / vendor / woocommerce / action-scheduler / classes / WP_CLI Last commit date
Action 1 year ago ActionScheduler_WPCLI_Clean_Command.php 1 year ago ActionScheduler_WPCLI_QueueRunner.php 1 year ago ActionScheduler_WPCLI_Scheduler_command.php 1 year ago Action_Command.php 1 year ago Migration_Command.php 1 year ago ProgressBar.php 1 year ago System_Command.php 1 year ago index.php 3 years ago
System_Command.php
140 lines
1 <?php
2 namespace Action_Scheduler\WP_CLI;
3 if (!defined('ABSPATH')) exit;
4 // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaping output is not necessary in WP CLI.
5 use ActionScheduler_SystemInformation;
6 use WP_CLI;
7 use function \WP_CLI\Utils\get_flag_value;
8 class System_Command {
9 protected $store;
10 public function __construct() {
11 $this->store = \ActionScheduler::store();
12 }
13 public function datastore( array $args, array $assoc_args ) {
14 echo $this->get_current_datastore();
15 }
16 public function runner( array $args, array $assoc_args ) {
17 echo $this->get_current_runner();
18 }
19 public function status( array $args, array $assoc_args ) {
20 $runner_enabled = has_action( 'action_scheduler_run_queue', array( \ActionScheduler::runner(), 'run' ) );
21 \WP_CLI::line( sprintf( 'Data store: %s', $this->get_current_datastore() ) );
22 \WP_CLI::line( sprintf( 'Runner: %s%s', $this->get_current_runner(), ( $runner_enabled ? '' : ' (disabled)' ) ) );
23 \WP_CLI::line( sprintf( 'Version: %s', $this->get_latest_version() ) );
24 $rows = array();
25 $action_counts = $this->store->action_counts();
26 $oldest_and_newest = $this->get_oldest_and_newest( array_keys( $action_counts ) );
27 foreach ( $action_counts as $status => $count ) {
28 $rows[] = array(
29 'status' => $status,
30 'count' => $count,
31 'oldest' => $oldest_and_newest[ $status ]['oldest'],
32 'newest' => $oldest_and_newest[ $status ]['newest'],
33 );
34 }
35 $formatter = new \WP_CLI\Formatter( $assoc_args, array( 'status', 'count', 'oldest', 'newest' ) );
36 $formatter->display_items( $rows );
37 }
38 public function version( array $args, array $assoc_args ) {
39 $all = (bool) get_flag_value( $assoc_args, 'all' );
40 $latest = $this->get_latest_version();
41 if ( ! $all ) {
42 echo $latest;
43 \WP_CLI::halt( 0 );
44 }
45 $instance = \ActionScheduler_Versions::instance();
46 $versions = $instance->get_versions();
47 $rows = array();
48 foreach ( $versions as $version => $callback ) {
49 $active = $version === $latest;
50 $rows[ $version ] = array(
51 'version' => $version,
52 'callback' => $callback,
53 'active' => $active ? 'yes' : 'no',
54 );
55 }
56 uksort( $rows, 'version_compare' );
57 $formatter = new \WP_CLI\Formatter( $assoc_args, array( 'version', 'callback', 'active' ) );
58 $formatter->display_items( $rows );
59 }
60 public function source( array $args, array $assoc_args ) {
61 $all = (bool) get_flag_value( $assoc_args, 'all' );
62 $fullpath = (bool) get_flag_value( $assoc_args, 'fullpath' );
63 $source = ActionScheduler_SystemInformation::active_source_path();
64 $path = $source;
65 if ( ! $fullpath ) {
66 $path = str_replace( ABSPATH, '', $path );
67 }
68 if ( ! $all ) {
69 echo $path;
70 \WP_CLI::halt( 0 );
71 }
72 $sources = ActionScheduler_SystemInformation::get_sources();
73 if ( empty( $sources ) ) {
74 WP_CLI::log( __( 'Detailed information about registered sources is not currently available.', 'action-scheduler' ) );
75 return;
76 }
77 $rows = array();
78 foreach ( $sources as $check_source => $version ) {
79 $active = dirname( $check_source ) === $source;
80 $path = $check_source;
81 if ( ! $fullpath ) {
82 $path = str_replace( ABSPATH, '', $path );
83 }
84 $rows[ $check_source ] = array(
85 'source' => $path,
86 'version' => $version,
87 'active' => $active ? 'yes' : 'no',
88 );
89 }
90 ksort( $rows );
91 \WP_CLI::log( PHP_EOL . 'Please note there can only be one unique registered instance of Action Scheduler per ' . PHP_EOL . 'version number, so this list may not include all the currently present copies of ' . PHP_EOL . 'Action Scheduler.' . PHP_EOL );
92 $formatter = new \WP_CLI\Formatter( $assoc_args, array( 'source', 'version', 'active' ) );
93 $formatter->display_items( $rows );
94 }
95 protected function get_current_datastore() {
96 return get_class( $this->store );
97 }
98 protected function get_latest_version( $instance = null ) {
99 if ( is_null( $instance ) ) {
100 $instance = \ActionScheduler_Versions::instance();
101 }
102 return $instance->latest_version();
103 }
104 protected function get_current_runner() {
105 return get_class( \ActionScheduler::runner() );
106 }
107 protected function get_oldest_and_newest( $status_keys ) {
108 $oldest_and_newest = array();
109 foreach ( $status_keys as $status ) {
110 $oldest_and_newest[ $status ] = array(
111 'oldest' => '&ndash;',
112 'newest' => '&ndash;',
113 );
114 if ( 'in-progress' === $status ) {
115 continue;
116 }
117 $oldest_and_newest[ $status ]['oldest'] = $this->get_action_status_date( $status, 'oldest' );
118 $oldest_and_newest[ $status ]['newest'] = $this->get_action_status_date( $status, 'newest' );
119 }
120 return $oldest_and_newest;
121 }
122 protected function get_action_status_date( $status, $date_type = 'oldest' ) {
123 $order = 'oldest' === $date_type ? 'ASC' : 'DESC';
124 $args = array(
125 'claimed' => false,
126 'status' => $status,
127 'per_page' => 1,
128 'order' => $order,
129 );
130 $action = $this->store->query_actions( $args );
131 if ( ! empty( $action ) ) {
132 $date_object = $this->store->get_date( $action[0] );
133 $action_date = $date_object->format( 'Y-m-d H:i:s O' );
134 } else {
135 $action_date = '&ndash;';
136 }
137 return $action_date;
138 }
139 }
140