it-swarm.com.de

Überprüfen Sie den Hersteller der Erweiterungen

Gibt es eine Möglichkeit zu überprüfen, ob in einem Joomla! Installation gibt es Erweiterungen von einem bestimmten Anbieter? In einem Plugin, das ich habe, muss ich verschiedene Verfahren anwenden, wenn ein bestimmter Anbieter Produkte vorhanden sind. Vielleicht fragst du db nach dem Namen des Autors? Bitte beraten.

1
n.h.

Der Autor wird in der manifest_cache - Tabelle in der #__extensions - Tabelle gespeichert. Sie müssen also die Datenbank abfragen, um diese Felder zu erhalten, und json_decode, um die Werte zu erhalten (oder um sie an JRegistry zu übergeben) und nach dem Autor zu suchen.

2
Bakual

Basierend auf Bakuals Antwort habe ich mir diesen Code ausgedacht. Dabei wird nur nach Erweiterungen des Typs "Komponente" und "Vorlage" gesucht.

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$fields = array(
    $db->quoteName('extension_id'),
    $db->quoteName('manifest_cache')
);

$query->select($fields)->from($db->quoteName('#__extensions'));
$db->setQuery($query);
$vendors = $db->loadObjectList();

$extensions = array();

foreach($vendors as $vendor)
{
    $temp = new JRegistry;
    $temp->loadString($vendor->manifest_cache, 'JSON');

    $excList = array('joomla'); //This array will contain a extension list

    foreach($excList as $ext)
    {
        if ((stripos($temp->get('author'), $ext) !== false) && $temp->get('type') == 'component' || (stripos($temp->get('author'), $ext) !== false) && $temp->get('type') == 'template')
        {
            $extensions[] = array(
                'id'   => $vendor->extension_id,
                'type' => $temp->get('type'),
                'name' => $temp->get('name')
            );
        }
    }
}

hat einen Test mit 'joomla' als Herstellername durchgeführt und ein Array wie dieses erzeugt

Array
(
[0] => Array
    (
        [id] => 1
        [type] => component
        [name] => com_mailto
    )

[1] => Array
    (
        [id] => 2
        [type] => component
        [name] => com_wrapper
    )

[2] => Array
    (
        [id] => 3
        [type] => component
        [name] => com_admin
    )

...

[29] => Array
    (
        [id] => 502
        [type] => template
        [name] => bluestork
    )

[30] => Array
    (
        [id] => 10067
        [type] => component
        [name] => com_joomlaupdate
    )
)
2
n.h.