'Albania Lek', 'AFN' => 'Afghanistan Afghani', 'ARS' => 'Argentina Peso', 'AWG' => 'Aruba Guilder', 'AUD' => 'Australia Dollar', 'AZN' => 'Azerbaijan New Manat', 'BSD' => 'Bahamas Dollar', 'BBD' => 'Barbados Dollar', 'BDT' => 'Bangladeshi taka', 'BYR' => 'Belarus Ruble', 'BZD' => 'Belize Dollar', 'BMD' => 'Bermuda Dollar', 'BOB' => 'Bolivia Boliviano', 'BAM' => 'Bosnia and Herzegovina Convertible Marka', 'BWP' => 'Botswana Pula', 'BGN' => 'Bulgaria Lev', 'BRL' => 'Brazil Real', 'BND' => 'Brunei Darussalam Dollar', 'KHR' => 'Cambodia Riel', 'CAD' => 'Canada Dollar', 'KYD' => 'Cayman Islands Dollar', 'CLP' => 'Chile Peso', 'CNY' => 'China Yuan Renminbi', 'COP' => 'Colombia Peso', 'CRC' => 'Costa Rica Colon', 'HRK' => 'Croatia Kuna', 'CUP' => 'Cuba Peso', 'CZK' => 'Czech Republic Koruna', 'DKK' => 'Denmark Krone', 'DOP' => 'Dominican Republic Peso', 'XCD' => 'East Caribbean Dollar', 'EGP' => 'Egypt Pound', 'SVC' => 'El Salvador Colon', 'EEK' => 'Estonia Kroon', 'EUR' => 'Euro Member Countries', 'FKP' => 'Falkland Islands (Malvinas) Pound', 'FJD' => 'Fiji Dollar', 'GHC' => 'Ghana Cedis', 'GIP' => 'Gibraltar Pound', 'GTQ' => 'Guatemala Quetzal', 'GGP' => 'Guernsey Pound', 'GYD' => 'Guyana Dollar', 'HNL' => 'Honduras Lempira', 'HKD' => 'Hong Kong Dollar', 'HUF' => 'Hungary Forint', 'ISK' => 'Iceland Krona', 'INR' => 'India Rupee', 'IDR' => 'Indonesia Rupiah', 'IRR' => 'Iran Rial', 'IMP' => 'Isle of Man Pound', 'ILS' => 'Israel Shekel', 'JMD' => 'Jamaica Dollar', 'JPY' => 'Japan Yen', 'JEP' => 'Jersey Pound', 'KZT' => 'Kazakhstan Tenge', 'KPW' => 'Korea (North) Won', 'KRW' => 'Korea (South) Won', 'KGS' => 'Kyrgyzstan Som', 'LAK' => 'Laos Kip', 'LVL' => 'Latvia Lat', 'LBP' => 'Lebanon Pound', 'LRD' => 'Liberia Dollar', 'LTL' => 'Lithuania Litas', 'MKD' => 'Macedonia Denar', 'MYR' => 'Malaysia Ringgit', 'MUR' => 'Mauritius Rupee', 'MXN' => 'Mexico Peso', 'MNT' => 'Mongolia Tughrik', 'MZN' => 'Mozambique Metical', 'NAD' => 'Namibia Dollar', 'NPR' => 'Nepal Rupee', 'ANG' => 'Netherlands Antilles Guilder', 'NZD' => 'New Zealand Dollar', 'NIO' => 'Nicaragua Cordoba', 'NGN' => 'Nigeria Naira', 'NOK' => 'Norway Krone', 'OMR' => 'Oman Rial', 'PKR' => 'Pakistan Rupee', 'PAB' => 'Panama Balboa', 'PYG' => 'Paraguay Guarani', 'PEN' => 'Peru Nuevo Sol', 'PHP' => 'Philippines Peso', 'PLN' => 'Poland Zloty', 'QAR' => 'Qatar Riyal', 'RON' => 'Romania New Leu', 'RUB' => 'Russia Ruble', 'SHP' => 'Saint Helena Pound', 'SAR' => 'Saudi Arabia Riyal', 'RSD' => 'Serbia Dinar', 'SCR' => 'Seychelles Rupee', 'SGD' => 'Singapore Dollar', 'SBD' => 'Solomon Islands Dollar', 'SOS' => 'Somalia Shilling', 'ZAR' => 'South Africa Rand', 'LKR' => 'Sri Lanka Rupee', 'SEK' => 'Sweden Krona', 'CHF' => 'Switzerland Franc', 'SRD' => 'Suriname Dollar', 'SYP' => 'Syria Pound', 'TWD' => 'Taiwan New Dollar', 'THB' => 'Thailand Baht', 'TTD' => 'Trinidad and Tobago Dollar', 'TRY' => 'Turkey Lira', 'TRL' => 'Turkey Lira', 'TVD' => 'Tuvalu Dollar', 'UAH' => 'Ukraine Hryvna', 'GBP' => 'United Kingdom Pound', 'USD' => 'United States Dollar', 'UYU' => 'Uruguay Peso', 'UZS' => 'Uzbekistan Som', 'VEF' => 'Venezuela Bolivar', 'VND' => 'Viet Nam Dong', 'YER' => 'Yemen Rial', 'ZWD' => 'Zimbabwe Dollar' ); // List of locales $locales_array = [ 'af_NA' => 'Afrikaans (Namibia)', 'af_ZA' => 'Afrikaans (South Africa)', 'af' => 'Afrikaans', 'ak_GH' => 'Akan (Ghana)', 'ak' => 'Akan', 'sq_AL' => 'Albanian (Albania)', 'sq' => 'Albanian', 'am_ET' => 'Amharic (Ethiopia)', 'am' => 'Amharic', 'ar_DZ' => 'Arabic (Algeria)', 'ar_BH' => 'Arabic (Bahrain)', 'ar_EG' => 'Arabic (Egypt)', 'ar_IQ' => 'Arabic (Iraq)', 'ar_JO' => 'Arabic (Jordan)', 'ar_KW' => 'Arabic (Kuwait)', 'ar_LB' => 'Arabic (Lebanon)', 'ar_LY' => 'Arabic (Libya)', 'ar_MA' => 'Arabic (Morocco)', 'ar_OM' => 'Arabic (Oman)', 'ar_QA' => 'Arabic (Qatar)', 'ar_SA' => 'Arabic (Saudi Arabia)', 'ar_SD' => 'Arabic (Sudan)', 'ar_SY' => 'Arabic (Syria)', 'ar_TN' => 'Arabic (Tunisia)', 'ar_AE' => 'Arabic (United Arab Emirates)', 'ar_YE' => 'Arabic (Yemen)', 'ar' => 'Arabic', 'hy_AM' => 'Armenian (Armenia)', 'hy' => 'Armenian', 'as_IN' => 'Assamese (India)', 'as' => 'Assamese', 'asa_TZ' => 'Asu (Tanzania)', 'asa' => 'Asu', 'az_Cyrl' => 'Azerbaijani (Cyrillic)', 'az_Cyrl_AZ' => 'Azerbaijani (Cyrillic, Azerbaijan)', 'az_Latn' => 'Azerbaijani (Latin)', 'az_Latn_AZ' => 'Azerbaijani (Latin, Azerbaijan)', 'az' => 'Azerbaijani', 'bm_ML' => 'Bambara (Mali)', 'bm' => 'Bambara', 'eu_ES' => 'Basque (Spain)', 'eu' => 'Basque', 'be_BY' => 'Belarusian (Belarus)', 'be' => 'Belarusian', 'bem_ZM' => 'Bemba (Zambia)', 'bem' => 'Bemba', 'bez_TZ' => 'Bena (Tanzania)', 'bez' => 'Bena', 'bn_BD' => 'Bengali (Bangladesh)', 'bn_IN' => 'Bengali (India)', 'bn' => 'Bengali', 'bs_BA' => 'Bosnian (Bosnia and Herzegovina)', 'bs' => 'Bosnian', 'bg_BG' => 'Bulgarian (Bulgaria)', 'bg' => 'Bulgarian', 'my_MM' => 'Burmese (Myanmar [Burma])', 'my' => 'Burmese', 'ca_ES' => 'Catalan (Spain)', 'ca' => 'Catalan', 'tzm_Latn' => 'Central Morocco Tamazight (Latin)', 'tzm_Latn_MA' => 'Central Morocco Tamazight (Latin, Morocco)', 'tzm' => 'Central Morocco Tamazight', 'chr_US' => 'Cherokee (United States)', 'chr' => 'Cherokee', 'cgg_UG' => 'Chiga (Uganda)', 'cgg' => 'Chiga', 'zh_Hans' => 'Chinese (Simplified Han)', 'zh_Hans_CN' => 'Chinese (Simplified Han, China)', 'zh_Hans_HK' => 'Chinese (Simplified Han, Hong Kong SAR China)', 'zh_Hans_MO' => 'Chinese (Simplified Han, Macau SAR China)', 'zh_Hans_SG' => 'Chinese (Simplified Han, Singapore)', 'zh_Hant' => 'Chinese (Traditional Han)', 'zh_Hant_HK' => 'Chinese (Traditional Han, Hong Kong SAR China)', 'zh_Hant_MO' => 'Chinese (Traditional Han, Macau SAR China)', 'zh_Hant_TW' => 'Chinese (Traditional Han, Taiwan)', 'zh' => 'Chinese', 'kw_GB' => 'Cornish (United Kingdom)', 'kw' => 'Cornish', 'hr_HR' => 'Croatian (Croatia)', 'hr' => 'Croatian', 'cs_CZ' => 'Czech (Czech Republic)', 'cs' => 'Czech', 'da_DK' => 'Danish (Denmark)', 'da' => 'Danish', 'nl_BE' => 'Dutch (Belgium)', 'nl_NL' => 'Dutch (Netherlands)', 'nl' => 'Dutch', 'ebu_KE' => 'Embu (Kenya)', 'ebu' => 'Embu', 'en_AS' => 'English (American Samoa)', 'en_AU' => 'English (Australia)', 'en_BE' => 'English (Belgium)', 'en_BZ' => 'English (Belize)', 'en_BW' => 'English (Botswana)', 'en_CA' => 'English (Canada)', 'en_GU' => 'English (Guam)', 'en_HK' => 'English (Hong Kong SAR China)', 'en_IN' => 'English (India)', 'en_IE' => 'English (Ireland)', 'en_JM' => 'English (Jamaica)', 'en_MT' => 'English (Malta)', 'en_MH' => 'English (Marshall Islands)', 'en_MU' => 'English (Mauritius)', 'en_NA' => 'English (Namibia)', 'en_NZ' => 'English (New Zealand)', 'en_MP' => 'English (Northern Mariana Islands)', 'en_PK' => 'English (Pakistan)', 'en_PH' => 'English (Philippines)', 'en_SG' => 'English (Singapore)', 'en_ZA' => 'English (South Africa)', 'en_TT' => 'English (Trinidad and Tobago)', 'en_UM' => 'English (U.S. Minor Outlying Islands)', 'en_VI' => 'English (U.S. Virgin Islands)', 'en_GB' => 'English (United Kingdom)', 'en_US' => 'English (United States)', 'en_ZW' => 'English (Zimbabwe)', 'en' => 'English', 'eo' => 'Esperanto', 'et_EE' => 'Estonian (Estonia)', 'et' => 'Estonian', 'ee_GH' => 'Ewe (Ghana)', 'ee_TG' => 'Ewe (Togo)', 'ee' => 'Ewe', 'fo_FO' => 'Faroese (Faroe Islands)', 'fo' => 'Faroese', 'fil_PH' => 'Filipino (Philippines)', 'fil' => 'Filipino', 'fi_FI' => 'Finnish (Finland)', 'fi' => 'Finnish', 'fr_BE' => 'French (Belgium)', 'fr_BJ' => 'French (Benin)', 'fr_BF' => 'French (Burkina Faso)', 'fr_BI' => 'French (Burundi)', 'fr_CM' => 'French (Cameroon)', 'fr_CA' => 'French (Canada)', 'fr_CF' => 'French (Central African Republic)', 'fr_TD' => 'French (Chad)', 'fr_KM' => 'French (Comoros)', 'fr_CG' => 'French (Congo - Brazzaville)', 'fr_CD' => 'French (Congo - Kinshasa)', 'fr_CI' => 'French (Côte d’Ivoire)', 'fr_DJ' => 'French (Djibouti)', 'fr_GQ' => 'French (Equatorial Guinea)', 'fr_FR' => 'French (France)', 'fr_GA' => 'French (Gabon)', 'fr_GP' => 'French (Guadeloupe)', 'fr_GN' => 'French (Guinea)', 'fr_LU' => 'French (Luxembourg)', 'fr_MG' => 'French (Madagascar)', 'fr_ML' => 'French (Mali)', 'fr_MQ' => 'French (Martinique)', 'fr_MC' => 'French (Monaco)', 'fr_NE' => 'French (Niger)', 'fr_RW' => 'French (Rwanda)', 'fr_RE' => 'French (Réunion)', 'fr_BL' => 'French (Saint Barthélemy)', 'fr_MF' => 'French (Saint Martin)', 'fr_SN' => 'French (Senegal)', 'fr_CH' => 'French (Switzerland)', 'fr_TG' => 'French (Togo)', 'fr' => 'French', 'ff_SN' => 'Fulah (Senegal)', 'ff' => 'Fulah', 'gl_ES' => 'Galician (Spain)', 'gl' => 'Galician', 'lg_UG' => 'Ganda (Uganda)', 'lg' => 'Ganda', 'ka_GE' => 'Georgian (Georgia)', 'ka' => 'Georgian', 'de_AT' => 'German (Austria)', 'de_BE' => 'German (Belgium)', 'de_DE' => 'German (Germany)', 'de_LI' => 'German (Liechtenstein)', 'de_LU' => 'German (Luxembourg)', 'de_CH' => 'German (Switzerland)', 'de' => 'German', 'el_CY' => 'Greek (Cyprus)', 'el_GR' => 'Greek (Greece)', 'el' => 'Greek', 'gu_IN' => 'Gujarati (India)', 'gu' => 'Gujarati', 'guz_KE' => 'Gusii (Kenya)', 'guz' => 'Gusii', 'ha_Latn' => 'Hausa (Latin)', 'ha_Latn_GH' => 'Hausa (Latin, Ghana)', 'ha_Latn_NE' => 'Hausa (Latin, Niger)', 'ha_Latn_NG' => 'Hausa (Latin, Nigeria)', 'ha' => 'Hausa', 'haw_US' => 'Hawaiian (United States)', 'haw' => 'Hawaiian', 'he_IL' => 'Hebrew (Israel)', 'he' => 'Hebrew', 'hi_IN' => 'Hindi (India)', 'hi' => 'Hindi', 'hu_HU' => 'Hungarian (Hungary)', 'hu' => 'Hungarian', 'is_IS' => 'Icelandic (Iceland)', 'is' => 'Icelandic', 'ig_NG' => 'Igbo (Nigeria)', 'ig' => 'Igbo', 'id_ID' => 'Indonesian (Indonesia)', 'id' => 'Indonesian', 'ga_IE' => 'Irish (Ireland)', 'ga' => 'Irish', 'it_IT' => 'Italian (Italy)', 'it_CH' => 'Italian (Switzerland)', 'it' => 'Italian', 'ja_JP' => 'Japanese (Japan)', 'ja' => 'Japanese', 'kea_CV' => 'Kabuverdianu (Cape Verde)', 'kea' => 'Kabuverdianu', 'kab_DZ' => 'Kabyle (Algeria)', 'kab' => 'Kabyle', 'kl_GL' => 'Kalaallisut (Greenland)', 'kl' => 'Kalaallisut', 'kln_KE' => 'Kalenjin (Kenya)', 'kln' => 'Kalenjin', 'kam_KE' => 'Kamba (Kenya)', 'kam' => 'Kamba', 'kn_IN' => 'Kannada (India)', 'kn' => 'Kannada', 'kk_Cyrl' => 'Kazakh (Cyrillic)', 'kk_Cyrl_KZ' => 'Kazakh (Cyrillic, Kazakhstan)', 'kk' => 'Kazakh', 'km_KH' => 'Khmer (Cambodia)', 'km' => 'Khmer', 'ki_KE' => 'Kikuyu (Kenya)', 'ki' => 'Kikuyu', 'rw_RW' => 'Kinyarwanda (Rwanda)', 'rw' => 'Kinyarwanda', 'kok_IN' => 'Konkani (India)', 'kok' => 'Konkani', 'ko_KR' => 'Korean (South Korea)', 'ko' => 'Korean', 'khq_ML' => 'Koyra Chiini (Mali)', 'khq' => 'Koyra Chiini', 'ses_ML' => 'Koyraboro Senni (Mali)', 'ses' => 'Koyraboro Senni', 'lag_TZ' => 'Langi (Tanzania)', 'lag' => 'Langi', 'lv_LV' => 'Latvian (Latvia)', 'lv' => 'Latvian', 'lt_LT' => 'Lithuanian (Lithuania)', 'lt' => 'Lithuanian', 'luo_KE' => 'Luo (Kenya)', 'luo' => 'Luo', 'luy_KE' => 'Luyia (Kenya)', 'luy' => 'Luyia', 'mk_MK' => 'Macedonian (Macedonia)', 'mk' => 'Macedonian', 'jmc_TZ' => 'Machame (Tanzania)', 'jmc' => 'Machame', 'kde_TZ' => 'Makonde (Tanzania)', 'kde' => 'Makonde', 'mg_MG' => 'Malagasy (Madagascar)', 'mg' => 'Malagasy', 'ms_BN' => 'Malay (Brunei)', 'ms_MY' => 'Malay (Malaysia)', 'ms' => 'Malay', 'ml_IN' => 'Malayalam (India)', 'ml' => 'Malayalam', 'mt_MT' => 'Maltese (Malta)', 'mt' => 'Maltese', 'gv_GB' => 'Manx (United Kingdom)', 'gv' => 'Manx', 'mr_IN' => 'Marathi (India)', 'mr' => 'Marathi', 'mas_KE' => 'Masai (Kenya)', 'mas_TZ' => 'Masai (Tanzania)', 'mas' => 'Masai', 'mer_KE' => 'Meru (Kenya)', 'mer' => 'Meru', 'mfe_MU' => 'Morisyen (Mauritius)', 'mfe' => 'Morisyen', 'naq_NA' => 'Nama (Namibia)', 'naq' => 'Nama', 'ne_IN' => 'Nepali (India)', 'ne_NP' => 'Nepali (Nepal)', 'ne' => 'Nepali', 'nd_ZW' => 'North Ndebele (Zimbabwe)', 'nd' => 'North Ndebele', 'nb_NO' => 'Norwegian Bokmål (Norway)', 'nb' => 'Norwegian Bokmål', 'nn_NO' => 'Norwegian Nynorsk (Norway)', 'nn' => 'Norwegian Nynorsk', 'nyn_UG' => 'Nyankole (Uganda)', 'nyn' => 'Nyankole', 'or_IN' => 'Oriya (India)', 'or' => 'Oriya', 'om_ET' => 'Oromo (Ethiopia)', 'om_KE' => 'Oromo (Kenya)', 'om' => 'Oromo', 'ps_AF' => 'Pashto (Afghanistan)', 'ps' => 'Pashto', 'fa_AF' => 'Persian (Afghanistan)', 'fa_IR' => 'Persian (Iran)', 'fa' => 'Persian', 'pl_PL' => 'Polish (Poland)', 'pl' => 'Polish', 'pt_BR' => 'Portuguese (Brazil)', 'pt_GW' => 'Portuguese (Guinea-Bissau)', 'pt_MZ' => 'Portuguese (Mozambique)', 'pt_PT' => 'Portuguese (Portugal)', 'pt' => 'Portuguese', 'pa_Arab' => 'Punjabi (Arabic)', 'pa_Arab_PK' => 'Punjabi (Arabic, Pakistan)', 'pa_Guru' => 'Punjabi (Gurmukhi)', 'pa_Guru_IN' => 'Punjabi (Gurmukhi, India)', 'pa' => 'Punjabi', 'ro_MD' => 'Romanian (Moldova)', 'ro_RO' => 'Romanian (Romania)', 'ro' => 'Romanian', 'rm_CH' => 'Romansh (Switzerland)', 'rm' => 'Romansh', 'rof_TZ' => 'Rombo (Tanzania)', 'rof' => 'Rombo', 'ru_MD' => 'Russian (Moldova)', 'ru_RU' => 'Russian (Russia)', 'ru_UA' => 'Russian (Ukraine)', 'ru' => 'Russian', 'rwk_TZ' => 'Rwa (Tanzania)', 'rwk' => 'Rwa', 'saq_KE' => 'Samburu (Kenya)', 'saq' => 'Samburu', 'sg_CF' => 'Sango (Central African Republic)', 'sg' => 'Sango', 'seh_MZ' => 'Sena (Mozambique)', 'seh' => 'Sena', 'sr_Cyrl' => 'Serbian (Cyrillic)', 'sr_Cyrl_BA' => 'Serbian (Cyrillic, Bosnia and Herzegovina)', 'sr_Cyrl_ME' => 'Serbian (Cyrillic, Montenegro)', 'sr_Cyrl_RS' => 'Serbian (Cyrillic, Serbia)', 'sr_Latn' => 'Serbian (Latin)', 'sr_Latn_BA' => 'Serbian (Latin, Bosnia and Herzegovina)', 'sr_Latn_ME' => 'Serbian (Latin, Montenegro)', 'sr_Latn_RS' => 'Serbian (Latin, Serbia)', 'sr' => 'Serbian', 'sn_ZW' => 'Shona (Zimbabwe)', 'sn' => 'Shona', 'ii_CN' => 'Sichuan Yi (China)', 'ii' => 'Sichuan Yi', 'si_LK' => 'Sinhala (Sri Lanka)', 'si' => 'Sinhala', 'sk_SK' => 'Slovak (Slovakia)', 'sk' => 'Slovak', 'sl_SI' => 'Slovenian (Slovenia)', 'sl' => 'Slovenian', 'xog_UG' => 'Soga (Uganda)', 'xog' => 'Soga', 'so_DJ' => 'Somali (Djibouti)', 'so_ET' => 'Somali (Ethiopia)', 'so_KE' => 'Somali (Kenya)', 'so_SO' => 'Somali (Somalia)', 'so' => 'Somali', 'es_AR' => 'Spanish (Argentina)', 'es_BO' => 'Spanish (Bolivia)', 'es_CL' => 'Spanish (Chile)', 'es_CO' => 'Spanish (Colombia)', 'es_CR' => 'Spanish (Costa Rica)', 'es_DO' => 'Spanish (Dominican Republic)', 'es_EC' => 'Spanish (Ecuador)', 'es_SV' => 'Spanish (El Salvador)', 'es_GQ' => 'Spanish (Equatorial Guinea)', 'es_GT' => 'Spanish (Guatemala)', 'es_HN' => 'Spanish (Honduras)', 'es_419' => 'Spanish (Latin America)', 'es_MX' => 'Spanish (Mexico)', 'es_NI' => 'Spanish (Nicaragua)', 'es_PA' => 'Spanish (Panama)', 'es_PY' => 'Spanish (Paraguay)', 'es_PE' => 'Spanish (Peru)', 'es_PR' => 'Spanish (Puerto Rico)', 'es_ES' => 'Spanish (Spain)', 'es_US' => 'Spanish (United States)', 'es_UY' => 'Spanish (Uruguay)', 'es_VE' => 'Spanish (Venezuela)', 'es' => 'Spanish', 'sw_KE' => 'Swahili (Kenya)', 'sw_TZ' => 'Swahili (Tanzania)', 'sw' => 'Swahili', 'sv_FI' => 'Swedish (Finland)', 'sv_SE' => 'Swedish (Sweden)', 'sv' => 'Swedish', 'gsw_CH' => 'Swiss German (Switzerland)', 'gsw' => 'Swiss German', 'shi_Latn' => 'Tachelhit (Latin)', 'shi_Latn_MA' => 'Tachelhit (Latin, Morocco)', 'shi_Tfng' => 'Tachelhit (Tifinagh)', 'shi_Tfng_MA' => 'Tachelhit (Tifinagh, Morocco)', 'shi' => 'Tachelhit', 'dav_KE' => 'Taita (Kenya)', 'dav' => 'Taita', 'ta_IN' => 'Tamil (India)', 'ta_LK' => 'Tamil (Sri Lanka)', 'ta' => 'Tamil', 'te_IN' => 'Telugu (India)', 'te' => 'Telugu', 'teo_KE' => 'Teso (Kenya)', 'teo_UG' => 'Teso (Uganda)', 'teo' => 'Teso', 'th_TH' => 'Thai (Thailand)', 'th' => 'Thai', 'bo_CN' => 'Tibetan (China)', 'bo_IN' => 'Tibetan (India)', 'bo' => 'Tibetan', 'ti_ER' => 'Tigrinya (Eritrea)', 'ti_ET' => 'Tigrinya (Ethiopia)', 'ti' => 'Tigrinya', 'to_TO' => 'Tonga (Tonga)', 'to' => 'Tonga', 'tr_TR' => 'Turkish (Turkey)', 'tr' => 'Turkish', 'uk_UA' => 'Ukrainian (Ukraine)', 'uk' => 'Ukrainian', 'ur_IN' => 'Urdu (India)', 'ur_PK' => 'Urdu (Pakistan)', 'ur' => 'Urdu', 'uz_Arab' => 'Uzbek (Arabic)', 'uz_Arab_AF' => 'Uzbek (Arabic, Afghanistan)', 'uz_Cyrl' => 'Uzbek (Cyrillic)', 'uz_Cyrl_UZ' => 'Uzbek (Cyrillic, Uzbekistan)', 'uz_Latn' => 'Uzbek (Latin)', 'uz_Latn_UZ' => 'Uzbek (Latin, Uzbekistan)', 'uz' => 'Uzbek', 'vi_VN' => 'Vietnamese (Vietnam)', 'vi' => 'Vietnamese', 'vun_TZ' => 'Vunjo (Tanzania)', 'vun' => 'Vunjo', 'cy_GB' => 'Welsh (United Kingdom)', 'cy' => 'Welsh', 'yo_NG' => 'Yoruba (Nigeria)', 'yo' => 'Yoruba', 'zu_ZA' => 'Zulu (South Africa)', 'zu' => 'Zulu', ]; if(isset($_POST['add_database'])){ // Check if database has been setup already. If it has, direct user to edit directly instead. if(file_exists('config.php')){ $_SESSION['alert_message'] = "Database already configured. Any further changes should be made by editing the config.php file."; header("Location: setup.php?user"); exit; } $host = $_POST['host']; $database = $_POST['database']; $username = $_POST['username']; $password = $_POST['password']; $config_base_url = $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']); $new_config = array(); $new_config[] = " 2097152){ $file_error = 1; } if($file_error == 0){ // directory in which the uploaded file will be moved $upload_file_dir = "uploads/users/$user_id/"; $dest_path = $upload_file_dir . $new_file_name; move_uploaded_file($file_tmp_path, $dest_path); //Set Avatar mysqli_query($mysqli,"UPDATE users SET user_avatar = '$new_file_name' WHERE user_id = $user_id"); $_SESSION['alert_message'] = 'File successfully uploaded.'; }else{ $_SESSION['alert_message'] = 'There was an error moving the file to upload directory. Please make sure the upload directory is writable by web server.'; } } //Create Settings mysqli_query($mysqli,"INSERT INTO user_settings SET user_id = $user_id, user_role = 3, user_default_company = 1"); $_SESSION['alert_message'] = "User $name created!"; header("Location: setup.php?company"); exit; } if(isset($_POST['add_company_settings'])){ $sql = mysqli_query($mysqli,"SELECT user_id FROM users"); $row = mysqli_fetch_array($sql); $user_id = $row['user_id']; $name = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['name']))); $country = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['country']))); $address = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['address']))); $city = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['city']))); $state = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['state']))); $zip = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['zip']))); $phone = preg_replace("/[^0-9]/", '',$_POST['phone']); $email = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['email']))); $website = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['website']))); $locale = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['locale']))); $currency_code = trim(strip_tags(mysqli_real_escape_string($mysqli,$_POST['currency_code']))); mysqli_query($mysqli,"INSERT INTO companies SET company_name = '$name', company_address = '$address', company_city = '$city', company_state = '$state', company_zip = '$zip', company_country = '$country', company_phone = '$phone', company_email = '$email', company_website = '$website', company_locale = '$locale', company_currency = '$currency_code', company_created_at = NOW()"); $company_id = mysqli_insert_id($mysqli); $config_base_url = $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']); mkdir_missing("uploads/clients/$company_id"); file_put_contents("uploads/clients/$company_id/index.php", ""); mkdir_missing("uploads/expenses/$company_id"); file_put_contents("uploads/expenses/$company_id/index.php", ""); mkdir_missing("uploads/settings/$company_id"); file_put_contents("uploads/settings/$company_id/index.php", ""); mkdir_missing("uploads/tmp/$company_id"); file_put_contents("uploads/tmp/$company_id/index.php", ""); //Check to see if a file is attached if($_FILES['file']['tmp_name'] != ''){ // get details of the uploaded file $file_error = 0; $file_tmp_path = $_FILES['file']['tmp_name']; $file_name = $_FILES['file']['name']; $file_size = $_FILES['file']['size']; $file_type = $_FILES['file']['type']; $file_extension = strtolower(end(explode('.',$_FILES['file']['name']))); // sanitize file-name $new_file_name = md5(time() . $file_name) . '.' . $file_extension; // check if file has one of the following extensions $allowed_file_extensions = array('jpg', 'gif', 'png'); if(in_array($file_extension,$allowed_file_extensions) === false){ $file_error = 1; } //Check File Size if($file_size > 2097152){ $file_error = 1; } if($file_error == 0){ // directory in which the uploaded file will be moved $upload_file_dir = "uploads/settings/$company_id/"; $dest_path = $upload_file_dir . $new_file_name; move_uploaded_file($file_tmp_path, $dest_path); mysqli_query($mysqli,"UPDATE companies SET company_logo = '$new_file_name' WHERE company_id = $company_id"); $_SESSION['alert_message'] = 'File successfully uploaded.'; }else{ $_SESSION['alert_message'] = 'There was an error moving the file to upload directory. Please make sure the upload directory is writable by web server.'; } } //Set User Company Permissions mysqli_query($mysqli,"INSERT INTO user_companies SET user_id = $user_id, company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO settings SET company_id = $company_id, config_invoice_prefix = 'INV-', config_invoice_next_number = 1, config_recurring_prefix = 'REC-', config_recurring_next_number = 1, config_invoice_overdue_reminders = '1,3,7', config_quote_prefix = 'QUO-', config_quote_next_number = 1, config_recurring_auto_send_invoice = 1, config_default_net_terms = 7, config_send_invoice_reminders = 1, config_enable_cron = 0, config_ticket_next_number = 1, config_base_url = '$config_base_url'"); //Create Some Data mysqli_query($mysqli,"INSERT INTO accounts SET account_name = 'Cash', opening_balance = 0, account_currency_code = '$currency_code', account_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Office Supplies', category_type = 'Expense', category_color = 'blue', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Travel', category_type = 'Expense', category_color = 'red', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Advertising', category_type = 'Expense', category_color = 'green', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Service', category_type = 'Income', category_color = 'blue', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Friend', category_type = 'Referral', category_color = 'blue', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Search Engine', category_type = 'Referral', category_color = 'red', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Cash', category_type = 'Payment Method', category_color = 'blue', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO categories SET category_name = 'Check', category_type = 'Payment Method', category_color = 'red', category_created_at = NOW(), company_id = $company_id"); mysqli_query($mysqli,"INSERT INTO calendars SET calendar_name = 'Default', calendar_color = 'blue', calendar_created_at = NOW(), company_id = $company_id"); $_SESSION['alert_message'] = "Company $name created!"; header("Location: setup.php?telemetry"); } if(isset($_POST['add_telemetry'])){ if($_POST['share_data'] == 1){ $comments = trim(strip_tags($_POST['comments'])); $sql = mysqli_query($mysqli,"SELECT * FROM companies LIMIT 1"); $row = mysqli_fetch_array($sql); $company_name = $row['company_name']; $city = $row['company_city']; $state = $row['company_state']; $country = $row['company_country']; $currency = $row['company_currency']; $postdata = http_build_query( array( 'company_name' => "$company_name", 'city' => "$city", 'state' => "$state", 'country' => "$country", 'currency' => "$currency", 'comments' => "$comments" ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents('https://telemetry.itflow.org', false, $context); echo $result; } //final setup stages $myfile = fopen("config.php", "a"); $txt = "\$config_enable_setup = 0;\n\n"; fwrite($myfile, $txt); fclose($myfile); header("Location: login.php"); exit; } ?>
Thank you for choosing to try ITFlow! Feel free to reach out on the forums if you have any questions.
A database must be created before proceeding - click on the button below to get started!
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
Warning: config.php is not writable. Ensure the webserver process has write access. Check the docs for info.