/**
  * Create and return settings fields.
  *
  * @return void
  */
 public function ghu_tokens()
 {
     $ghu_options_keys = array();
     $ghu_tokens = array_merge(self::$ghu_plugins, self::$ghu_themes);
     foreach ($ghu_tokens as $token) {
         $type = '';
         $setting_field = array();
         $ghu_options_keys[$token->repo] = null;
         // Check to see if it's a private repo
         if ($token->private) {
             if (false !== strpos($token->type, 'github') && !self::$github_private) {
                 self::$github_private = true;
             }
             if (false !== strpos($token->type, 'bitbucket') && !self::$bitbucket_private) {
                 self::$bitbucket_private = true;
             }
         }
         // Next if not a private repo
         if (!$token->private) {
             continue;
         }
         if (false !== strpos($token->type, 'theme')) {
             $type = __('Theme: ', 'github-updater');
         }
         $setting_field['id'] = $token->repo;
         $setting_field['title'] = $type . $token->name;
         $setting_field['page'] = 'github-updater';
         if (false !== strpos($token->type, 'github')) {
             $setting_field['section'] = 'github_id';
         }
         if (false !== strpos($token->type, 'bitbucket')) {
             $setting_field['section'] = 'bitbucket_id';
         }
         add_settings_field($setting_field['id'], $setting_field['title'], array($this, 'token_callback'), $setting_field['page'], $setting_field['section'], $setting_field['id']);
         register_setting('github_updater', $setting_field['id'], array($this, 'sanitize'));
     }
     // Unset options that are no longer present
     $ghu_unset_keys = array_diff_key(parent::$options, $ghu_options_keys);
     if (!empty($ghu_unset_keys)) {
         foreach ($ghu_unset_keys as $key => $value) {
             unset(parent::$options[$key]);
         }
         update_site_option('github_updater', parent::$options);
     }
 }