public function groups()
{
$result = array();
foreach ($this->groups as $name => $info) {
$settings = array();
foreach ($info['settings'] as $name) {
$settings[$name] = $this->settings[$name];
$settings[$name]['default'] = self::get_default_for($name);
$settings[$name]['callback'] = !empty($this->settings[$name]['callback']) ? $this->settings[$name]['callback'] : '';
}
$result[$name] = array('label' => $info['label'], 'description' => empty($info['description']) ? null : $info['description'], 'settings' => $settings);
}
return $result;
}