/**
  */
 public function createOverrideMenu(PostmanWizardSocket $socket, $winningRecommendation, $userSocketOverride, $userAuthOverride)
 {
     $overrideItem = parent::createOverrideMenu($socket, $winningRecommendation, $userSocketOverride, $userAuthOverride);
     // push the authentication options into the $overrideItem structure
     $overrideItem['auth_items'] = array(array('selected' => true, 'name' => __('API Key', Postman::TEXT_DOMAIN), 'value' => 'api_key'));
     return $overrideItem;
 }
 /**
  */
 public function createOverrideMenu(PostmanWizardSocket $socket, $winningRecommendation, $userSocketOverride, $userAuthOverride)
 {
     $overrideItem = parent::createOverrideMenu($socket, $winningRecommendation, $userSocketOverride, $userAuthOverride);
     $selected = $overrideItem['selected'];
     // only smtp can have multiple auth options
     $overrideAuthItems = array();
     $passwordMode = false;
     $oauth2Mode = false;
     $noAuthMode = false;
     if (isset($userAuthOverride) || isset($userSocketOverride)) {
         if ($userAuthOverride == 'password') {
             $passwordMode = true;
         } elseif ($userAuthOverride == 'oauth2') {
             $oauth2Mode = true;
         } else {
             $noAuthMode = true;
         }
     } else {
         if ($winningRecommendation['display_auth'] == 'password') {
             $passwordMode = true;
         } elseif ($winningRecommendation['display_auth'] == 'oauth2') {
             $oauth2Mode = true;
         } else {
             $noAuthMode = true;
         }
     }
     if ($selected) {
         if ($socket->auth_crammd5 || $socket->auth_login || $socket->authPlain) {
             array_push($overrideAuthItems, array('selected' => $passwordMode, 'name' => __('Password (requires username and password)', Postman::TEXT_DOMAIN), 'value' => 'password'));
         }
         if ($socket->auth_xoauth || $winningRecommendation['auth'] == 'oauth2') {
             array_push($overrideAuthItems, array('selected' => $oauth2Mode, 'name' => __('OAuth 2.0 (requires Client ID and Client Secret)', Postman::TEXT_DOMAIN), 'value' => 'oauth2'));
         }
         if ($socket->auth_none) {
             array_push($overrideAuthItems, array('selected' => $noAuthMode, 'name' => __('None', Postman::TEXT_DOMAIN), 'value' => 'none'));
         }
         // marks at least one item as selected if none are selected
         $atLeastOneSelected = false;
         $firstItem = null;
         // don't use variable reference see http://stackoverflow.com/questions/15024616/php-foreach-change-original-array-values
         foreach ($overrideAuthItems as $key => $field) {
             if (!$firstItem) {
                 $firstItem = $key;
             }
             if ($field['selected']) {
                 $atLeastOneSelected = true;
             }
         }
         if (!$atLeastOneSelected) {
             $this->logger->debug('nothing selected - forcing a selection on the *first* overrided auth item');
             $overrideAuthItems[$firstItem]['selected'] = true;
         }
         // push the authentication options into the $overrideItem structure
         $overrideItem['auth_items'] = $overrideAuthItems;
     }
     return $overrideItem;
 }