Настройки плагина LimeSurvey

В своей прошлой статье я создал простой плагин для LimeSurvey,
который используется в командной строке, что может быть полезно для cronjobs.

Следующим шагом могут быть некоторые настройки плагина. Существует два типа.

Глобальные настройки плагина

Глобальные настройки плагина определяются в переменной $settings.

protected $settings = [
    'setting1' => [
        'type' => 'string',
        'label' => 'Setting One',
        'help' => 'This might be a useful hint',
        'default' => '' 
    ]
];
Вход в полноэкранный режим Выйти из полноэкранного режима

Вы можете получить доступ к этой настройке через:

var_dump($this->get('setting1'));
Войти в полноэкранный режим Выйти из полноэкранного режима

Настройки плагина уровня опроса

Чтобы создать некоторые настройки на уровне опроса, необходимо подписаться на два события в методе init().

public function init()
{
    /* @see https://manual.limesurvey.org/BeforeSurveySettings */
    $this->subscribe('beforeSurveySettings');
    /* @see https://manual.limesurvey.org/NewSurveySettings */
    $this->subscribe('newSurveySettings');
}
Вход в полноэкранный режим Выход из полноэкранного режима

Далее мы определим поле isActive типа boolean.
Существует несколько типов. Смотрите несколько примеров здесь:

public function beforeSurveySettings()
{
    $event = $this->event;
    $surveyId = $event->get('survey');

    $event->set("surveysettings.{$this->id}", [
        'name' => get_class($this),
        'settings' => [
            'isActive' => [
                'type' => 'boolean',
                'label' => 'enable plugin for this survey',
                'current' => $this->get('isActive', 'Survey', $surveyId, false),
                'help' => 'some useful hint'
            ]
        ]
     ]);
}
Вход в полноэкранный режим Выход из полноэкранного режима

Следующий код необходим для сохранения настроек опроса:

public function newSurveySettings()
{
    $event = $this->event;
    foreach ($event->get('settings') as $name => $value) {
        $this->set($name, $value, 'Survey', $event->get('survey'));
    }
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Вот и все.
Пока!

Оцените статью
Procodings.ru
Добавить комментарий