PluginProbe
WooCommerce / 11.1.0-beta.1
WooCommerce v11.1.0-beta.1
11.1.0 11.1.0-rc.2 11.1.0-rc.1 11.1.0-beta.2 11.1.0-beta.1 11.0.1 11.0.0 11.0.0-rc.3 11.0.0-rc.2 11.0.0-rc.1 11.0.0-beta.2 11.0.0-beta.1 10.9.4 10.9.3 10.9.2 10.9.1 10.9.0 10.9.0-rc.1 10.9.0-beta.2 10.9.0-beta.1 10.8.1 10.8.0 10.8.0-rc.1 10.8.0-beta.2 10.8.0-beta.1 All 648 releases
woocommerce / packages / action-scheduler / classes / ActionScheduler_SystemInformation.php
ActionScheduler_SystemInformation.php
94 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Provides information about active and registered instances of Action Scheduler.
5 */
6 class ActionScheduler_SystemInformation {
7 /**
8 * Returns information about the plugin or theme which contains the current active version
9 * of Action Scheduler.
10 *
11 * If this cannot be determined, or if Action Scheduler is being loaded via some other
12 * method, then it will return an empty array. Otherwise, if populated, the array will
13 * look like the following:
14 *
15 * [
16 * 'type' => 'plugin', # or 'theme'
17 * 'name' => 'Name',
18 * ]
19 *
20 * @return array
21 */
22 public static function active_source(): array {
23 $plugins = get_plugins();
24 $plugin_files = array_keys( $plugins );
25
26 foreach ( $plugin_files as $plugin_file ) {
27 $plugin_path = trailingslashit( WP_PLUGIN_DIR ) . dirname( $plugin_file );
28 $plugin_file = trailingslashit( WP_PLUGIN_DIR ) . $plugin_file;
29
30 if ( 0 !== strpos( dirname( __DIR__ ), $plugin_path ) ) {
31 continue;
32 }
33
34 $plugin_data = get_plugin_data( $plugin_file );
35
36 if ( ! is_array( $plugin_data ) || empty( $plugin_data['Name'] ) ) {
37 continue;
38 }
39
40 return array(
41 'type' => 'plugin',
42 'name' => $plugin_data['Name'],
43 );
44 }
45
46 $themes = (array) search_theme_directories();
47
48 foreach ( $themes as $slug => $data ) {
49 $needle = trailingslashit( $data['theme_root'] ) . $slug . '/';
50
51 if ( 0 !== strpos( __FILE__, $needle ) ) {
52 continue;
53 }
54
55 $theme = wp_get_theme( $slug );
56
57 if ( ! is_object( $theme ) || ! is_a( $theme, \WP_Theme::class ) ) {
58 continue;
59 }
60
61 return array(
62 'type' => 'theme',
63 // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
64 'name' => $theme->Name,
65 );
66 }
67
68 return array();
69 }
70
71 /**
72 * Returns the directory path for the currently active installation of Action Scheduler.
73 *
74 * @return string
75 */
76 public static function active_source_path(): string {
77 return trailingslashit( dirname( __DIR__ ) );
78 }
79
80 /**
81 * Get registered sources.
82 *
83 * It is not always possible to obtain this information. For instance, if earlier versions (<=3.9.0) of
84 * Action Scheduler register themselves first, then the necessary data about registered sources will
85 * not be available.
86 *
87 * @return array<string, string>
88 */
89 public static function get_sources() {
90 $versions = ActionScheduler_Versions::instance();
91 return method_exists( $versions, 'get_sources' ) ? $versions->get_sources() : array();
92 }
93 }
94