/**
  * Display and manage group memberships
  *
  * @return array client, order, direction [, form (Console\Form\GroupMemberships) if groups are available]
  */
 public function groupsAction()
 {
     $vars = $this->getOrder('GroupName');
     $vars['client'] = $this->_currentClient;
     $vars['memberships'] = array();
     $groups = $this->_groupManager->getGroups(null, null, 'Name');
     if ($groups->count()) {
         $memberships = $this->_currentClient->getGroupMemberships(\Model\Client\Client::MEMBERSHIP_ANY);
         $data = array();
         // Create form data for all groups and actual membership list
         foreach ($groups as $group) {
             $id = $group['Id'];
             $name = $group['Name'];
             if (isset($memberships[$id])) {
                 $type = $memberships[$id];
                 $data['Groups'][$name] = $type;
                 if ($type != \Model\Client\Client::MEMBERSHIP_NEVER) {
                     $vars['memberships'][] = array('GroupName' => $name, 'Membership' => $type);
                 }
             } else {
                 // Default to automatic membership
                 $data['Groups'][$group['Name']] = \Model\Client\Client::MEMBERSHIP_AUTOMATIC;
             }
         }
         $form = $this->_formManager->get('Console\\Form\\GroupMemberships');
         $form->setData($data);
         $form->setAttribute('action', $this->urlFromRoute('client', 'managegroups', array('id' => $this->_currentClient['Id'])));
         $vars['form'] = $form;
     }
     return $vars;
 }