mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			352 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			352 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * SelectCountry.php
 | |
|  * Copyright (c) 2017 thegrumpydictator@gmail.com
 | |
|  *
 | |
|  * This file is part of Firefly III.
 | |
|  *
 | |
|  * Firefly III is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * Firefly III is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| namespace FireflyIII\Support\Import\Configuration\Spectre;
 | |
| 
 | |
| 
 | |
| use FireflyIII\Models\ImportJob;
 | |
| use FireflyIII\Models\SpectreProvider;
 | |
| use FireflyIII\Support\Import\Configuration\ConfigurationInterface;
 | |
| 
 | |
| /**
 | |
|  * Class SelectCountry
 | |
|  */
 | |
| class SelectCountry implements ConfigurationInterface
 | |
| {
 | |
|     /**
 | |
|      * @var array
 | |
|      */
 | |
|     public static $allCountries
 | |
|         = [
 | |
|             'AF' => 'Afghanistan',
 | |
|             'AX' => 'Aland Islands',
 | |
|             'AL' => 'Albania',
 | |
|             'DZ' => 'Algeria',
 | |
|             'AS' => 'American Samoa',
 | |
|             'AD' => 'Andorra',
 | |
|             'AO' => 'Angola',
 | |
|             'AI' => 'Anguilla',
 | |
|             'AQ' => 'Antarctica',
 | |
|             'AG' => 'Antigua and Barbuda',
 | |
|             'AR' => 'Argentina',
 | |
|             'AM' => 'Armenia',
 | |
|             'AW' => 'Aruba',
 | |
|             'AU' => 'Australia',
 | |
|             'AT' => 'Austria',
 | |
|             'AZ' => 'Azerbaijan',
 | |
|             'BS' => 'Bahamas',
 | |
|             'BH' => 'Bahrain',
 | |
|             'BD' => 'Bangladesh',
 | |
|             'BB' => 'Barbados',
 | |
|             'BY' => 'Belarus',
 | |
|             'BE' => 'Belgium',
 | |
|             'BZ' => 'Belize',
 | |
|             'BJ' => 'Benin',
 | |
|             'BM' => 'Bermuda',
 | |
|             'BT' => 'Bhutan',
 | |
|             'BO' => 'Bolivia',
 | |
|             'BQ' => 'Bonaire, Saint Eustatius and Saba',
 | |
|             'BA' => 'Bosnia and Herzegovina',
 | |
|             'BW' => 'Botswana',
 | |
|             'BV' => 'Bouvet Island',
 | |
|             'BR' => 'Brazil',
 | |
|             'IO' => 'British Indian Ocean Territory',
 | |
|             'VG' => 'British Virgin Islands',
 | |
|             'BN' => 'Brunei',
 | |
|             'BG' => 'Bulgaria',
 | |
|             'BF' => 'Burkina Faso',
 | |
|             'BI' => 'Burundi',
 | |
|             'KH' => 'Cambodia',
 | |
|             'CM' => 'Cameroon',
 | |
|             'CA' => 'Canada',
 | |
|             'CV' => 'Cape Verde',
 | |
|             'KY' => 'Cayman Islands',
 | |
|             'CF' => 'Central African Republic',
 | |
|             'TD' => 'Chad',
 | |
|             'CL' => 'Chile',
 | |
|             'CN' => 'China',
 | |
|             'CX' => 'Christmas Island',
 | |
|             'CC' => 'Cocos Islands',
 | |
|             'CO' => 'Colombia',
 | |
|             'KM' => 'Comoros',
 | |
|             'CK' => 'Cook Islands',
 | |
|             'CR' => 'Costa Rica',
 | |
|             'HR' => 'Croatia',
 | |
|             'CU' => 'Cuba',
 | |
|             'CW' => 'Curacao',
 | |
|             'CY' => 'Cyprus',
 | |
|             'CZ' => 'Czech Republic',
 | |
|             'CD' => 'Democratic Republic of the Congo',
 | |
|             'DK' => 'Denmark',
 | |
|             'DJ' => 'Djibouti',
 | |
|             'DM' => 'Dominica',
 | |
|             'DO' => 'Dominican Republic',
 | |
|             'TL' => 'East Timor',
 | |
|             'EC' => 'Ecuador',
 | |
|             'EG' => 'Egypt',
 | |
|             'SV' => 'El Salvador',
 | |
|             'GQ' => 'Equatorial Guinea',
 | |
|             'ER' => 'Eritrea',
 | |
|             'EE' => 'Estonia',
 | |
|             'ET' => 'Ethiopia',
 | |
|             'FK' => 'Falkland Islands',
 | |
|             'FO' => 'Faroe Islands',
 | |
|             'FJ' => 'Fiji',
 | |
|             'FI' => 'Finland',
 | |
|             'FR' => 'France',
 | |
|             'GF' => 'French Guiana',
 | |
|             'PF' => 'French Polynesia',
 | |
|             'TF' => 'French Southern Territories',
 | |
|             'GA' => 'Gabon',
 | |
|             'GM' => 'Gambia',
 | |
|             'GE' => 'Georgia',
 | |
|             'DE' => 'Germany',
 | |
|             'GH' => 'Ghana',
 | |
|             'GI' => 'Gibraltar',
 | |
|             'GR' => 'Greece',
 | |
|             'GL' => 'Greenland',
 | |
|             'GD' => 'Grenada',
 | |
|             'GP' => 'Guadeloupe',
 | |
|             'GU' => 'Guam',
 | |
|             'GT' => 'Guatemala',
 | |
|             'GG' => 'Guernsey',
 | |
|             'GN' => 'Guinea',
 | |
|             'GW' => 'Guinea-Bissau',
 | |
|             'GY' => 'Guyana',
 | |
|             'HT' => 'Haiti',
 | |
|             'HM' => 'Heard Island and McDonald Islands',
 | |
|             'HN' => 'Honduras',
 | |
|             'HK' => 'Hong Kong',
 | |
|             'HU' => 'Hungary',
 | |
|             'IS' => 'Iceland',
 | |
|             'IN' => 'India',
 | |
|             'ID' => 'Indonesia',
 | |
|             'IR' => 'Iran',
 | |
|             'IQ' => 'Iraq',
 | |
|             'IE' => 'Ireland',
 | |
|             'IM' => 'Isle of Man',
 | |
|             'IL' => 'Israel',
 | |
|             'IT' => 'Italy',
 | |
|             'CI' => 'Ivory Coast',
 | |
|             'JM' => 'Jamaica',
 | |
|             'JP' => 'Japan',
 | |
|             'JE' => 'Jersey',
 | |
|             'JO' => 'Jordan',
 | |
|             'KZ' => 'Kazakhstan',
 | |
|             'KE' => 'Kenya',
 | |
|             'KI' => 'Kiribati',
 | |
|             'XK' => 'Kosovo',
 | |
|             'KW' => 'Kuwait',
 | |
|             'KG' => 'Kyrgyzstan',
 | |
|             'LA' => 'Laos',
 | |
|             'LV' => 'Latvia',
 | |
|             'LB' => 'Lebanon',
 | |
|             'LS' => 'Lesotho',
 | |
|             'LR' => 'Liberia',
 | |
|             'LY' => 'Libya',
 | |
|             'LI' => 'Liechtenstein',
 | |
|             'LT' => 'Lithuania',
 | |
|             'LU' => 'Luxembourg',
 | |
|             'MO' => 'Macao',
 | |
|             'MK' => 'Macedonia',
 | |
|             'MG' => 'Madagascar',
 | |
|             'MW' => 'Malawi',
 | |
|             'MY' => 'Malaysia',
 | |
|             'MV' => 'Maldives',
 | |
|             'ML' => 'Mali',
 | |
|             'MT' => 'Malta',
 | |
|             'MH' => 'Marshall Islands',
 | |
|             'MQ' => 'Martinique',
 | |
|             'MR' => 'Mauritania',
 | |
|             'MU' => 'Mauritius',
 | |
|             'YT' => 'Mayotte',
 | |
|             'MX' => 'Mexico',
 | |
|             'FM' => 'Micronesia',
 | |
|             'MD' => 'Moldova',
 | |
|             'MC' => 'Monaco',
 | |
|             'MN' => 'Mongolia',
 | |
|             'ME' => 'Montenegro',
 | |
|             'MS' => 'Montserrat',
 | |
|             'MA' => 'Morocco',
 | |
|             'MZ' => 'Mozambique',
 | |
|             'MM' => 'Myanmar',
 | |
|             'NA' => 'Namibia',
 | |
|             'NR' => 'Nauru',
 | |
|             'NP' => 'Nepal',
 | |
|             'NL' => 'Netherlands',
 | |
|             'NC' => 'New Caledonia',
 | |
|             'NZ' => 'New Zealand',
 | |
|             'NI' => 'Nicaragua',
 | |
|             'NE' => 'Niger',
 | |
|             'NG' => 'Nigeria',
 | |
|             'NU' => 'Niue',
 | |
|             'NF' => 'Norfolk Island',
 | |
|             'KP' => 'North Korea',
 | |
|             'MP' => 'Northern Mariana Islands',
 | |
|             'NO' => 'Norway',
 | |
|             'OM' => 'Oman',
 | |
|             'PK' => 'Pakistan',
 | |
|             'PW' => 'Palau',
 | |
|             'PS' => 'Palestinian Territory',
 | |
|             'PA' => 'Panama',
 | |
|             'PG' => 'Papua New Guinea',
 | |
|             'PY' => 'Paraguay',
 | |
|             'PE' => 'Peru',
 | |
|             'PH' => 'Philippines',
 | |
|             'PN' => 'Pitcairn',
 | |
|             'PL' => 'Poland',
 | |
|             'PT' => 'Portugal',
 | |
|             'PR' => 'Puerto Rico',
 | |
|             'QA' => 'Qatar',
 | |
|             'CG' => 'Republic of the Congo',
 | |
|             'RE' => 'Reunion',
 | |
|             'RO' => 'Romania',
 | |
|             'RU' => 'Russia',
 | |
|             'RW' => 'Rwanda',
 | |
|             'BL' => 'Saint Barthelemy',
 | |
|             'SH' => 'Saint Helena',
 | |
|             'KN' => 'Saint Kitts and Nevis',
 | |
|             'LC' => 'Saint Lucia',
 | |
|             'MF' => 'Saint Martin',
 | |
|             'PM' => 'Saint Pierre and Miquelon',
 | |
|             'VC' => 'Saint Vincent and the Grenadines',
 | |
|             'WS' => 'Samoa',
 | |
|             'SM' => 'San Marino',
 | |
|             'ST' => 'Sao Tome and Principe',
 | |
|             'SA' => 'Saudi Arabia',
 | |
|             'SN' => 'Senegal',
 | |
|             'RS' => 'Serbia',
 | |
|             'SC' => 'Seychelles',
 | |
|             'SL' => 'Sierra Leone',
 | |
|             'SG' => 'Singapore',
 | |
|             'SX' => 'Sint Maarten',
 | |
|             'SK' => 'Slovakia',
 | |
|             'SI' => 'Slovenia',
 | |
|             'SB' => 'Solomon Islands',
 | |
|             'SO' => 'Somalia',
 | |
|             'ZA' => 'South Africa',
 | |
|             'GS' => 'South Georgia and the South Sandwich Islands',
 | |
|             'KR' => 'South Korea',
 | |
|             'SS' => 'South Sudan',
 | |
|             'ES' => 'Spain',
 | |
|             'LK' => 'Sri Lanka',
 | |
|             'SD' => 'Sudan',
 | |
|             'SR' => 'Suriname',
 | |
|             'SJ' => 'Svalbard and Jan Mayen',
 | |
|             'SZ' => 'Swaziland',
 | |
|             'SE' => 'Sweden',
 | |
|             'CH' => 'Switzerland',
 | |
|             'SY' => 'Syria',
 | |
|             'TW' => 'Taiwan',
 | |
|             'TJ' => 'Tajikistan',
 | |
|             'TZ' => 'Tanzania',
 | |
|             'TH' => 'Thailand',
 | |
|             'TG' => 'Togo',
 | |
|             'TK' => 'Tokelau',
 | |
|             'TO' => 'Tonga',
 | |
|             'TT' => 'Trinidad and Tobago',
 | |
|             'TN' => 'Tunisia',
 | |
|             'TR' => 'Turkey',
 | |
|             'TM' => 'Turkmenistan',
 | |
|             'TC' => 'Turks and Caicos Islands',
 | |
|             'TV' => 'Tuvalu',
 | |
|             'VI' => 'U.S. Virgin Islands',
 | |
|             'UG' => 'Uganda',
 | |
|             'UA' => 'Ukraine',
 | |
|             'AE' => 'United Arab Emirates',
 | |
|             'GB' => 'United Kingdom',
 | |
|             'US' => 'United States',
 | |
|             'UM' => 'United States Minor Outlying Islands',
 | |
|             'UY' => 'Uruguay',
 | |
|             'UZ' => 'Uzbekistan',
 | |
|             'VU' => 'Vanuatu',
 | |
|             'VA' => 'Vatican',
 | |
|             'VE' => 'Venezuela',
 | |
|             'VN' => 'Vietnam',
 | |
|             'WF' => 'Wallis and Futuna',
 | |
|             'EH' => 'Western Sahara',
 | |
|             'YE' => 'Yemen',
 | |
|             'ZM' => 'Zambia',
 | |
|             'ZW' => 'Zimbabwe',
 | |
|             'XF' => 'Fake Country (for testing)',
 | |
|             'XO' => 'Other financial applications',
 | |
|         ];
 | |
|     /** @var ImportJob */
 | |
|     private $job;
 | |
| 
 | |
|     /**
 | |
|      * Get the data necessary to show the configuration screen.
 | |
|      *
 | |
|      * @return array
 | |
|      */
 | |
|     public function getData(): array
 | |
|     {
 | |
|         $providers = SpectreProvider::get();
 | |
|         $countries = [];
 | |
|         /** @var SpectreProvider $provider */
 | |
|         foreach ($providers as $provider) {
 | |
|             $countries[$provider->country_code] = self::$allCountries[$provider->country_code] ?? $provider->country_code;
 | |
|         }
 | |
|         asort($countries);
 | |
| 
 | |
|         return compact('countries');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Return possible warning to user.
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function getWarningMessage(): string
 | |
|     {
 | |
|         return '';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param ImportJob $job
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function setJob(ImportJob $job)
 | |
|     {
 | |
|         $this->job = $job;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Store the result.
 | |
|      *
 | |
|      * @param array $data
 | |
|      *
 | |
|      * @return bool
 | |
|      */
 | |
|     public function storeConfiguration(array $data): bool
 | |
|     {
 | |
|         $config                   = $this->job->configuration;
 | |
|         $config['country']        = $data['country_code'] ?? 'XF'; // default to fake country.
 | |
|         $config['selected-country'] = true;
 | |
|         $this->job->configuration = $config;
 | |
|         $this->job->save();
 | |
| 
 | |
|         return true;
 | |
|     }
 | |
| } |