- if ($request->getParameter('group_changed')) {
- // User changed the group in dropdown.
- // Redirect to self.
- header('Location: plugins.php');
+ // Note: we get here when the Save button is clicked.
+ // We update plugin list for the current group.
+
+ // Prepare plugins string.
+ if ($cl_charts)
+ $plugins .= ',ch';
+ if ($cl_clients)
+ $plugins .= ',cl';
+ if ($cl_invoices)
+ $plugins .= ',iv';
+ if ($cl_paid_status)
+ $plugins .= ',ps';
+ if ($cl_custom_fields)
+ $plugins .= ',cf';
+ if ($cl_expenses)
+ $plugins .= ',ex';
+ if ($cl_tax_expenses)
+ $plugins .= ',et';
+ if ($cl_notifications)
+ $plugins .= ',no';
+ if ($cl_locking)
+ $plugins .= ',lk';
+ if ($cl_quotas)
+ $plugins .= ',mq';
+ if ($cl_week_view)
+ $plugins .= ',wv';
+ if ($cl_work_units)
+ $plugins .= ',wu';
+ if ($cl_approval)
+ $plugins .= ',ap';
+ if ($cl_timesheets)
+ $plugins .= ',ts';
+ if ($cl_templates)
+ $plugins .= ',tp';
+ if ($cl_attachments)
+ $plugins .= ',at';
+ if ($cl_work)
+ $plugins .= ',wk';
+
+ // Recycle week view plugin options as they are not configured on this page.
+ $existing_plugins = explode(',', $user->getPlugins());
+ if (in_array('wvn', $existing_plugins))
+ $plugins .= ',wvn';
+ if (in_array('wvl', $existing_plugins))
+ $plugins .= ',wvl';
+ if (in_array('wvns', $existing_plugins))
+ $plugins .= ',wvns';
+
+ $plugins = trim($plugins, ',');
+
+ // Prepare a new config string.
+ $user->setOption('client_required', $cl_client_required);
+ $user->setOption('tax_expenses', $cl_tax_expenses);
+ $config = $user->getConfig();
+
+ if ($user->updateGroup(array(
+ 'plugins' => $plugins,
+ 'config' => $config))) {
+ header('Location: success.php');