PluginProbe
QuadMenu – Mega Menu / 3.3.6
QuadMenu – Mega Menu v3.3.6
3.3.8 3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 88 releases
quadmenu / vendor / franmastromarino / wp-plugin-feedback / src / Collector.php

Collector.php in QuadMenu – Mega Menu 3.3.6, at vendor/franmastromarino/wp-plugin-feedback/src/Collector.php

84 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace QuadLayers\PluginFeedback;
4
5 class Collector
6 {
7
8 /** @var string */
9 private $pluginBasename = '';
10
11 public function __construct(
12 ?string $pluginBasename = null
13 ) {
14 $this->pluginBasename = $pluginBasename;
15 }
16
17 /**
18 * Collects the necessary feedback data.
19 *
20 * @param string $pluginBasename The plugin slug.
21 * @param bool $isAnonymous If true, no personal data is collected.
22 * @return array The collected data.
23 */
24 public function collectData(string $feedbackReason, string $feedbackDetails, $isAnonymous = false, $hasFeedback = false): array
25 {
26 $data = [
27 'plugin_slug' => $this->getPluginSlug(),
28 'plugin_version' => $this->getPluginVersion(),
29 'server_software' => $_SERVER['SERVER_SOFTWARE'] ?? 'Unknown',
30 'server_php_version' => phpversion(),
31 'server_mysql_version' => $this->getMySQLVersion(),
32 'server_wp_version' => get_bloginfo('version'),
33 'site_url' => get_site_url(),
34 'site_theme' => wp_get_theme()->get('Name'),
35 'site_theme_version' => wp_get_theme()->get('Version'),
36 'site_language' => get_bloginfo('language'),
37 'site_plugins' => $this->getActivePlugins(),
38 'feedback_reason' => $feedbackReason,
39 'feedback_details' => $feedbackDetails,
40 'is_anonymous' => $isAnonymous,
41 'has_feedback' => $hasFeedback,
42 ];
43
44 // If feedback is not anonymous, collect user email
45 if (true !== $isAnonymous) {
46 $data['user_email'] = wp_get_current_user()->user_email;
47 }
48
49 return $data;
50 }
51
52 private function getMySQLVersion(): string
53 {
54 global $wpdb;
55 return $wpdb->get_var("SELECT VERSION()") ?? 'Unknown';
56 }
57
58 private function getActivePlugins(): string
59 {
60 $plugins = get_option('active_plugins', []);
61 $pluginNames = [];
62
63 foreach ($plugins as $plugin) {
64 $pluginData = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin);
65 $pluginNames[] = $pluginData['Name'] . ' ' . $pluginData['Version'];
66 }
67
68 return implode(', ', $pluginNames);
69 }
70
71 private function getPluginSlug()
72 {
73 return dirname($this->pluginBasename);
74 }
75
76 private function getPluginVersion()
77 {
78 $pluginData = get_plugin_data(WP_PLUGIN_DIR . '/' . $this->pluginBasename);
79
80 return $pluginData['Version'];
81
82 }
83 }
84