theme.php (5103B)
1 <?php 2 namespace Elementor\Modules\System_Info\Reporters; 3 4 if ( ! defined( 'ABSPATH' ) ) { 5 exit; // Exit if accessed directly. 6 } 7 8 /** 9 * Elementor theme report. 10 * 11 * Elementor system report handler class responsible for generating a report for 12 * the theme. 13 * 14 * @since 1.0.0 15 */ 16 class Theme extends Base { 17 18 /** 19 * Theme. 20 * 21 * Holds the sites theme object. 22 * 23 * @since 1.0.0 24 * @access private 25 * 26 * @var \WP_Theme WordPress theme object. 27 */ 28 private $theme = null; 29 30 /** 31 * Get theme reporter title. 32 * 33 * Retrieve theme reporter title. 34 * 35 * @since 1.0.0 36 * @access public 37 * 38 * @return string Reporter title. 39 */ 40 public function get_title() { 41 return 'Theme'; 42 } 43 44 /** 45 * Get theme report fields. 46 * 47 * Retrieve the required fields for the theme report. 48 * 49 * @since 1.0.0 50 * @access public 51 * 52 * @return array Required report fields with field ID and field label. 53 */ 54 public function get_fields() { 55 $fields = [ 56 'name' => 'Name', 57 'version' => 'Version', 58 'author' => 'Author', 59 'is_child_theme' => 'Child Theme', 60 ]; 61 62 if ( $this->get_parent_theme() ) { 63 $parent_fields = [ 64 'parent_name' => 'Parent Theme Name', 65 'parent_version' => 'Parent Theme Version', 66 'parent_author' => 'Parent Theme Author', 67 ]; 68 $fields = array_merge( $fields, $parent_fields ); 69 } 70 71 return $fields; 72 } 73 74 /** 75 * Get theme. 76 * 77 * Retrieve the theme. 78 * 79 * @since 1.0.0 80 * @access protected 81 * @deprecated 3.1.0 82 * 83 * @return \WP_Theme WordPress theme object. 84 */ 85 protected function _get_theme() { 86 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0', __CLASS__ . '::get_theme()' ); 87 88 return $this->get_theme(); 89 } 90 91 /** 92 * Get theme. 93 * 94 * Retrieve the theme. 95 * 96 * @since 3.1.0 97 * @access private 98 * 99 * @return \WP_Theme WordPress theme object. 100 */ 101 private function get_theme() { 102 if ( is_null( $this->theme ) ) { 103 $this->theme = wp_get_theme(); 104 } 105 return $this->theme; 106 } 107 108 /** 109 * Get parent theme. 110 * 111 * Retrieve the parent theme. 112 * 113 * @since 1.0.0 114 * @access protected 115 * 116 * @return \WP_Theme|false WordPress theme object, or false if the current theme is not a child theme. 117 */ 118 protected function get_parent_theme() { 119 return $this->get_theme()->parent(); 120 } 121 122 /** 123 * Get theme name. 124 * 125 * Retrieve the theme name. 126 * 127 * @since 1.0.0 128 * @access public 129 * 130 * @return array { 131 * Report data. 132 * 133 * @type string $value The theme name. 134 * } 135 */ 136 public function get_name() { 137 return [ 138 'value' => $this->get_theme()->get( 'Name' ), 139 ]; 140 } 141 142 /** 143 * Get theme author. 144 * 145 * Retrieve the theme author. 146 * 147 * @since 1.0.0 148 * @access public 149 * 150 * @return array { 151 * Report data. 152 * 153 * @type string $value The theme author. 154 * } 155 */ 156 public function get_author() { 157 return [ 158 'value' => $this->get_theme()->get( 'Author' ), 159 ]; 160 } 161 162 /** 163 * Get theme version. 164 * 165 * Retrieve the theme version. 166 * 167 * @since 1.0.0 168 * @access public 169 * 170 * @return array { 171 * Report data. 172 * 173 * @type string $value The theme version. 174 * } 175 */ 176 public function get_version() { 177 return [ 178 'value' => $this->get_theme()->get( 'Version' ), 179 ]; 180 } 181 182 /** 183 * Is the theme is a child theme. 184 * 185 * Whether the theme is a child theme. 186 * 187 * @since 1.0.0 188 * @access public 189 * 190 * @return array { 191 * Report data. 192 * 193 * @type string $value Yes if the theme is a child theme, No otherwise. 194 * @type string $recommendation Theme source code modification recommendation. 195 * } 196 */ 197 public function get_is_child_theme() { 198 $is_child_theme = is_child_theme(); 199 200 $result = [ 201 'value' => $is_child_theme ? 'Yes' : 'No', 202 ]; 203 204 if ( ! $is_child_theme ) { 205 $result['recommendation'] = sprintf( 206 /* translators: %s: Codex URL */ 207 _x( 'If you want to modify the source code of your theme, we recommend using a <a href="%s">child theme</a>.', 'System Info', 'elementor' ), 208 'https://go.elementor.com/wordpress-child-themes/' 209 ); 210 } 211 212 return $result; 213 } 214 215 /** 216 * Get parent theme version. 217 * 218 * Retrieve the parent theme version. 219 * 220 * @since 1.0.0 221 * @access public 222 * 223 * @return array { 224 * Report data. 225 * 226 * @type string $value The parent theme version. 227 * } 228 */ 229 public function get_parent_version() { 230 return [ 231 'value' => $this->get_parent_theme()->get( 'Version' ), 232 ]; 233 } 234 235 /** 236 * Get parent theme author. 237 * 238 * Retrieve the parent theme author. 239 * 240 * @since 1.0.0 241 * @access public 242 * 243 * @return array { 244 * Report data. 245 * 246 * @type string $value The parent theme author. 247 * } 248 */ 249 public function get_parent_author() { 250 return [ 251 'value' => $this->get_parent_theme()->get( 'Author' ), 252 ]; 253 } 254 255 /** 256 * Get parent theme name. 257 * 258 * Retrieve the parent theme name. 259 * 260 * @since 1.0.0 261 * @access public 262 * 263 * @return array { 264 * Report data. 265 * 266 * @type string $value The parent theme name. 267 * } 268 */ 269 public function get_parent_name() { 270 return [ 271 'value' => $this->get_parent_theme()->get( 'Name' ), 272 ]; 273 } 274 }