Проверьте производителя расширений

Есть ли способ проверить, есть ли в Joomla! Существуют ли расширения от конкретного поставщика? В плагине мне нужно применять различные процедуры, если есть определенные продукты поставщика. Может быть, запрос db для имени автора? Просьба сообщить.

1 голос | спросил n.h. 18 J000000Saturday15 2015, 15:21:38

2 ответа


2

Автор сохраняется в manifest_cache в #__extensions. Поэтому вам нужно запросить db, чтобы получить эти поля и json_decode значения (или передать их в JRegistry) и искать автора.

ответил Bakual 18 J000000Saturday15 2015, 21:18:37
2

На основе ответа Bakual я придумал этот код. Это приведет только к поиску расширений типа «компонент» и «шаблон».

$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')
            );
        }
    }
}

сделал тест с именем «joomla» в качестве имени поставщика и генерирует такой массив

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
    )
)
ответил n.h. 19 J000000Sunday15 2015, 21:59:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132