Back to ExtensionHelper class

Method getExtensionRecord

public static \stdClass|null
getExtensionRecord
(string $element, string $type, ?int $clientId = null, ?string $folder = null)
Returns an extension record for the given name.
Parameters
  • string $element The extension element
  • string $type The extension type
  • int|null $clientId The client ID
  • string|null $folder Plugin folder
Returns
  • \stdClass|null The object or null if not found.
Since
  • 4.0.0
-
  • \InvalidArgumentException

Method getExtensionRecord - Source code

/**
 * Returns an extension record for the given name.
 *
 * @param   string        $element   The extension element
 * @param   string        $type      The extension type
 * @param   integer|null  $clientId  The client ID
 * @param   string|null   $folder    Plugin folder
 *
 * @return  \stdClass|null  The object or null if not found.
 *
 * @since   4.0.0
 * @throws  \InvalidArgumentException
 */
public static function getExtensionRecord(string $element, string $type, ?int $clientId = null, ?string $folder = null) : ?\stdClass
{
    if ($type === 'plugin' && $folder === null) {
        throw new \InvalidArgumentException(sprintf('`$folder` is required when `$type` is `plugin` in %s()', __METHOD__));
    }
    if (\in_array($type, ['module', 'language', 'template'], true) && $clientId === null) {
        throw new \InvalidArgumentException(sprintf('`$clientId` is required when `$type` is `module`, `language` or `template` in %s()', __METHOD__));
    }
    $key = $element . '.' . $type . '.' . $clientId . '.' . $folder;
    if (!\array_key_exists($key, self::$loadedExtensions)) {
        $db = Factory::getDbo();
        $query = $db->getQuery(true)->select('*')->from($db->quoteName('#__extensions'))->where([$db->quoteName('element') . ' = :element', $db->quoteName('type') . ' = :type'])->bind(':element', $element)->bind(':type', $type);
        if ($clientId !== null) {
            $query->where($db->quoteName('client_id') . ' = :clientId')->bind(':clientId', $clientId, ParameterType::INTEGER);
        }
        if ($folder !== null) {
            $query->where($db->quoteName('folder') . ' = :folder')->bind(':folder', $folder);
        }
        $query->setLimit(1);
        $db->setQuery($query);
        self::$loadedExtensions[$key] = $db->loadObject();
    }
    return self::$loadedExtensions[$key];
}