Как получить список ролей в конфиге плагина.

Я написал свой плагин.
Плагин срабатывает только для ролей — Publisher.
Теперь хочется универсальности, а именно редактировать для каких ролей срабатывает плагин в конфигурации плагина.
Наверно плохо искал. Не нашел как сделать динамичный список в конфигурации плагина?
Например сейчас три роли, потом добавляется новая роль и в конфигурации плагина отображается новая роль.
Как такое сделать?

9 комментариев

avatar
Написать плагин на событие OnPluginFormPrerender, который будет подменять конфиг плагина))))
avatar
А точно спасибо! Прямо в этом плагине это событие и обработаю. Сейчас подумал сейчас наверно в ручную OnPluginFormSave надо обработать тоже.
Комментарий отредактирован 2020-01-21 11:28:36 пользователем Redduck
avatar
Вот на сохранение юзверя… Но можно и на что либо другое)
if ($modx->Event->name=='OnUserFormSave')
{
	$name_pligin = $modx->Event->activePlugin;
	$properties_json = $modx->db->getValue('Select properties from '.$modx->getFullTableName('site_plugins').' where name="'.$modx->db->escape($name_pligin).'"');
	$properties = json_decode($properties_json,true);
	$properties['role'][0]['options'] = $modx->db->getValue('Select GROUP_CONCAT(name) from '.$modx->getFullTableName('user_roles'));
	$properties_json = $modx->db->escape(json_encode($properties, JSON_UNESCAPED_UNICODE));
	$modx->db->update(array('properties'=>$properties_json),$modx->getFullTableName('site_plugins'),'name="'.$modx->db->escape($name_pligin).'"');	
}
avatar
Да, конфиг такой…
{
  "role": [
    {
      "label": "Role",
      "type": "list",
      "value": "default",
      "options": "",
      "default": "default",
      "desc": ""
    }
  ]
}
avatar
Хотя в каждой шутке, есть доля шутки: можно на сохранение и удаление пользователей повесить плагин, который будет модифицировать конфиг нужного тебе плагина…
avatar
Спасибо, идея понятна. А где берешь информацию по доступным $modx->Event->*?
avatar
Light:
$modx->logEvent(0, 3, '<pre>'.print_r($modx->Event,1).'</pre>', 'what_is_event');

OldSchool:
echo '<pre>';
print_r($modx->Event,1);
echo '</pre>';
exit();
avatar
Спасибо.
Я думал что где-то задокументировано это с примерами и так далее.
Ни каких претензий у меня нет.
А то бывает не так меня понимают :)
Комментарий отредактирован 2020-01-21 12:02:31 пользователем Redduck
avatar
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.