Plesk SDK API позволяет добавлять персональные данные к спискам объектов Plesk (таких как домены, тарифные планы и так далее).

Примечание: Это API работает только для страниц Zend (страниц, URL-адреса которых содержат /admin или /smb)

Чтобы добавлять данные в списки, которые уже существуют в графическом интерфейсе Plesk GUI, создайте абстрактный класс pm_Hook_SimpleList. Он содержит следующие методы:

  • isEnabled($controller, $action, $activeList) – определяет, какие списки будут обрабатываться хуком.

  • getDataProvider($controller, $action, $activeList, $data) – расширяет или заменяет оригинальный поставщик данных. Поставщик данных может быть массивом или экземпляром Zend_Db_Select.

    Примечание: Вы не можете изменить тип $data из массива на Zend_Db_Select и наоборот. Этот метод в первую очередь используется для добавления и/или удаления строк в наборе данных.

  • getData($controller, $action, $activeList, $data) – расширяет или заменяет оригинальный набор данных перед тем, как отправить его клиенту. Этот метод в основном используется для небольших изменений, таких как фильтрация и сортировка данных на текущей странице.

    Мы настоятельно рекомендуем вам использовать префикс (например, ext<YourExtensionId>) для именования полей.

  • getColumns($controller, $action, $activeList) – описывает колонки, которые будут добавлены к списку.

    Колонки определяются аналогично методу pm_View_List_Simple::setColumns().

    По умолчанию новая колонке будет добавлена в конце списка. Чтобы определить местоположение новой колонки, вы можете указать значения параметров insertBefore или insertAfter в определении колонки. Эти параметры могут принимать следующие значения:

    • Положительное целое число – номер колонки с начала списка.
    • Отрицательное целое число – номер колонки с конца списка.
    • Строка – свойство dataIndex существующей колонки.
  • getColumnsOverride($controller, $action, $activeList) – описывает способ, которым будут изменены некоторые существующие колонки.

Примеры

Определение того, какой список будет управляться хуком

src/plib/hooks/SimpleList.php

<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
    public function isEnabled($controller, $action, $activeList)
    {
        // Modify only domains lists
        return $controller === 'domain' && $action === 'list'
            || $controller === 'customer' && $action === 'domains'
            || $controller === 'reseller' && $action === 'domains';
    }
}

image 77249

Скрытие всех доменов, принадлежащих клиенту Ganesh Kamala

src/plib/hooks/SimpleList.php

<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
    public function getDataProvider($controller, $action, $activeList, $data)
    {
        // Hide all domains for client with id 5
        $data->where('c.id <> ?', 5);

        return $data;
    }
}

image 77250

Увеличение значений в колонке „Использование диска“

src/plib/hooks/SimpleList.php

<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
    public function getData($controller, $action, $activeList, $data)
    {
        foreach ($data as &$row) {
             $row['realSize'] += 1048576;
        }

        return $data;
    }
}

image 77251

Изменение названия колонки с «Подписчик» на «Владелец»

src/plib/hooks/SimpleList.php

<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
    ...
    public function getColumnsOverride($controller, $action, $activeList)
    {
        return [
            'ownerName' => [
                'title' => 'Owner',
            ],
        ];
    }
    ...
}

image 77252

Скрытие колонки „Дата создания“

src/plib/hooks/SimpleList.php

<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
    ...
    public function getColumnsOverride($controller, $action, $activeList)
    {
        return [
            'setupDate' => [
               'isVisible' => false,
            ],
        ];
    }
    ...
}

image 77253

Добавление четвертой справа колонки с названием „Random“, содержащей случайные числа от 0 до 100

src/plib/hooks/SimpleList.php

<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
    ...
    public function getData($controller, $action, $activeList, $data)
    {
         foreach ($data as &$row) {
             $row['extHookSimplelistRand'] = rand(0, 100);
        }

        return $data;
    }
    public function getColumns($controller, $action, $activeList)
    {
        return [
            'extHookSimplelistRand' => [
                'title' => 'Random',
                'insertBefore' => -3,
            ],
        ];
    }
    ...
}

image 77255

Вы можете найти пример расширения, иллюстрирующий этот подход, здесь.