class-tracking-plugin-data.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * WPSEO plugin file.
  4. *
  5. * @package WPSEO\Admin\Tracking
  6. */
  7. /**
  8. * Represents the plugin data.
  9. */
  10. class WPSEO_Tracking_Plugin_Data implements WPSEO_Collection {
  11. /**
  12. * Returns the collection data.
  13. *
  14. * @return array The collection data.
  15. */
  16. public function get() {
  17. return [
  18. 'plugins' => $this->get_plugin_data(),
  19. ];
  20. }
  21. /**
  22. * Returns all plugins.
  23. *
  24. * @return array The formatted plugins.
  25. */
  26. protected function get_plugin_data() {
  27. if ( ! function_exists( 'get_plugin_data' ) ) {
  28. require_once ABSPATH . 'wp-admin/includes/plugin.php';
  29. }
  30. $plugins = wp_get_active_and_valid_plugins();
  31. $plugins = array_map( 'get_plugin_data', $plugins );
  32. $plugins = array_map( [ $this, 'format_plugin' ], $plugins );
  33. $plugin_data = [];
  34. foreach ( $plugins as $plugin ) {
  35. $plugin_key = sanitize_title( $plugin['name'] );
  36. $plugin_data[ $plugin_key ] = $plugin;
  37. }
  38. return $plugin_data;
  39. }
  40. /**
  41. * Formats the plugin array.
  42. *
  43. * @param array $plugin The plugin details.
  44. *
  45. * @return array The formatted array.
  46. */
  47. protected function format_plugin( array $plugin ) {
  48. return [
  49. 'name' => $plugin['Name'],
  50. 'version' => $plugin['Version'],
  51. ];
  52. }
  53. }