in agent/php/ElasticApm/Impl/AutoInstrument/WordPressAutoInstrumentation.php [168:216]
public static function findAddonInfoFromFilePath(string $filePath, LoggerFactory $loggerFactory, /* out */ ?string &$groupKind, /* out */ ?string &$groupName): void
{
$logger = null;
$loggerProxyTrace = null;
if ($loggerFactory->isEnabledForLevel(Level::TRACE)) {
$logger = $loggerFactory->loggerForClass(LogCategory::AUTO_INSTRUMENTATION, __NAMESPACE__, __CLASS__, __FILE__)->addContext('filePath', $filePath);
$loggerProxyTrace = $logger->ifTraceLevelEnabledNoLine(__FUNCTION__);
}
$loggerProxyTrace && $loggerProxyTrace->log(__LINE__, 'Entered');
$adaptedFilePath = str_replace('\\', '/', $filePath);
$logger && $logger->addContext('adaptedFilePath', $adaptedFilePath);
$groupKind = self::CALLBACK_GROUP_KIND_CORE;
$groupName = null;
$currentGroupKind = null;
/** @var ?int $posAfterAddonsSubDir */
$posAfterAddonsSubDir = null;
foreach (self::CALLBACK_SUBDIR_SUBPATH_TO_GROUP_KIND as $subDirSubPath => $currentGroupKind) {
$pluginsSubDirPos = strpos($adaptedFilePath, $subDirSubPath);
if ($pluginsSubDirPos !== false) {
$posAfterAddonsSubDir = $pluginsSubDirPos + strlen($subDirSubPath);
break;
}
}
if ($posAfterAddonsSubDir === null) {
$loggerProxyTrace && $loggerProxyTrace->log(__LINE__, 'Not found any of the known sub-paths in the given path');
return;
}
$logger && $logger->addContext('posAfterAddonsSubDir', $posAfterAddonsSubDir);
$dirSeparatorAfterPluginPos = strpos($adaptedFilePath, '/', $posAfterAddonsSubDir);
if ($dirSeparatorAfterPluginPos !== false && $dirSeparatorAfterPluginPos > $posAfterAddonsSubDir) {
$groupKind = $currentGroupKind;
$groupName = substr($adaptedFilePath, $posAfterAddonsSubDir, $dirSeparatorAfterPluginPos - $posAfterAddonsSubDir);
return;
}
$fileExtAfterPluginPos = strpos($adaptedFilePath, '.php', $posAfterAddonsSubDir);
if ($fileExtAfterPluginPos !== false && $fileExtAfterPluginPos > $posAfterAddonsSubDir) {
$groupKind = $currentGroupKind;
$groupName = substr($adaptedFilePath, $posAfterAddonsSubDir, $fileExtAfterPluginPos - $posAfterAddonsSubDir);
return;
}
$loggerProxyTrace && $loggerProxyTrace->log(__LINE__, 'Found one of the known sub-paths but the suffix is not as expected');
}