/**
  * Convert contry string (e.g. United States of America) into 2 or 3 letter (e.g. US or USA)
  * Or country 2 or 3 letters code to country string in English
  * Or betweeen country codes: Values for $nbLetters:
  * 3  : country   -> 3 letters
  * 2  : country   -> 2 letters
  * -2 : 2 letters -> country
  * -3 : 3 letters -> country
  * 23 : 2 letters -> 3 letters
  * 32 : 3 letters -> 2 letters
  *
  * @param  string $country    Full text country name (if $nbLetters = 2 or 3) or country code (if $nbLetters = -2 or -3 or 23 or 32)
  * @param  int    $nbLetters  Number of letters code (2 or 3 for full name to code and -2 or -3 for code to name)
  * @return string             2/3/full-letters country name
  */
 protected function countryToLetters($country, $nbLetters)
 {
     $countries = new cbpaidCountries();
     switch ($nbLetters) {
         case 3:
             $ret = $countries->countryToThreeLetters($country);
             break;
         case 2:
             $ret = $countries->countryToTwoLetters($country);
             break;
         case -2:
             $ret = $countries->twoLettersToCountry($country);
             break;
         case -3:
             $ret = $countries->threeLettersToCountry($country);
             break;
         case 23:
             $ret = $countries->twoToThreeLettersCountry($country);
             break;
         case 32:
             $ret = $countries->threeToTwoLettersCountry($country);
             break;
         default:
             trigger_error('Unknown nbLetters in countryToLetters', E_USER_WARNING);
             $ret = null;
             break;
     }
     if ($ret === null) {
         $n = $nbLetters < 0 ? 255 : $nbLetters % 10;
         $ret = substr($country, 0, $n);
     }
     return $ret;
 }
	/**
	 * Computes country from the $this->address_country_code 2-letters country code and stores it into $this->address_country
	 */
	protected function _computeCountryFromTwoLettersCountry( ) {
		$countries						=	new cbpaidCountries();
		$country						=	$countries->twoLettersToCountry( $this->address_country_code );
		if ( $country ) {
			$this->address_country		=	$country;
		}
	}
 /**
  * Gets an invoice address field
  *
  * @param  string  $fieldName  'cb_subs_inv_address_first_name' or last_name, payer_business_name, address_street, address_city, address_zip, address_state, address_country, contact_phone, vat_number
  * @return string          Value (including default value for country if tax plugin is installed)
  */
 public function getInvoiceAddressField($fieldName)
 {
     $cbUser = CBuser::getInstance((int) $this->id);
     $value = isset($cbUser->{$fieldName}) ? $cbUser->{$fieldName} : null;
     if ($value) {
         return $value;
     }
     if ($fieldName != 'cb_subs_inv_address_country') {
         return $value;
     }
     $countries = new cbpaidCountries();
     return $countries->twoLettersToCountry($this->getDefaultInvoiceCountryCode());
 }