public static function get_file_component($file)
{
# @TODO turn this into a class (eg QM_File_Component)
$file = self::standard_dir($file);
if (isset(self::$file_components[$file])) {
return self::$file_components[$file];
}
foreach (self::get_file_dirs() as $type => $dir) {
if ($dir && 0 === strpos($file, $dir)) {
break;
}
}
$context = $type;
switch ($type) {
case 'plugin':
case 'mu-plugin':
$plug = plugin_basename($file);
if (strpos($plug, '/')) {
$plug = explode('/', $plug);
$plug = reset($plug);
} else {
$plug = basename($plug);
}
$name = sprintf(__('Plugin: %s', 'query-monitor'), $plug);
$context = $plug;
break;
case 'go-plugin':
case 'vip-plugin':
$plug = str_replace(self::$file_dirs[$type], '', $file);
$plug = trim($plug, '/');
if (strpos($plug, '/')) {
$plug = explode('/', $plug);
$plug = reset($plug);
} else {
$plug = basename($plug);
}
$name = sprintf(__('VIP Plugin: %s', 'query-monitor'), $plug);
$context = $plug;
break;
case 'stylesheet':
if (is_child_theme()) {
$name = __('Child Theme', 'query-monitor');
} else {
$name = __('Theme', 'query-monitor');
}
break;
case 'template':
$name = __('Parent Theme', 'query-monitor');
break;
case 'other':
$name = self::standard_dir($file, '');
$context = $file;
break;
case 'core':
$name = __('Core', 'query-monitor');
break;
case 'unknown':
default:
$name = __('Unknown', 'query-monitor');
break;
}
return self::$file_components[$file] = (object) compact('type', 'name', 'context');
}