<?php
function get_random_string($length = 10) {
$key = '';
$keys = array_merge(range(0, 9), range('a', 'z'));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
/**
* Dosya içeriğini güvenli bir şekilde okur
*/
function getFile($filename)
{
if (!file_exists($filename)) {
return '';
}
return file_get_contents($filename);
}
/**
* Dosyayı güvenli bir şekilde yazar (Klasör yoksa oluşturur)
*/
function writeFile($filename, $buffer)
{
$dir = dirname($filename);
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
return file_put_contents($filename, $buffer);
}
/**
* SQL dosyasındaki tablo ön ekini değiştirir
*/
function setSqlWithDbPrefix($rawFilePath, $filePath, $prefix)
{
$sql = getFile($rawFilePath);
if (empty($sql)) {
return '';
}
$sql = str_replace('<<prefix>>', $prefix, $sql);
writeFile($filePath, $sql);
return $sql;
}
/**
* SQL dosyasını satır satır okuyarak veritabanına aktarır (Büyük dosyalar için güvenli)
*/
function importSql($con, $filePath)
{
if (!file_exists($filePath)) {
return false;
}
try {
$errorDetect = false;
$tmpline = '';
// Dosyayı bellek dostu yöntemle (satır satır) aç
$handle = fopen($filePath, "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
// Yorum satırlarını ve boşlukları atla
if (substr(trim($line), 0, 2) == '--' || trim($line) == '' || substr(trim($line), 0, 2) == '/*') {
continue;
}
$tmpline .= $line;
// Eğer satır sonu ";" ile bitiyorsa sorguyu çalıştır
if (substr(trim($line), -1, 1) == ';') {
if (!$con->query($tmpline)) {
echo "<pre>Sorgu Hatası: " . $con->error . "\nKod: " . $tmpline . "</pre>";
$errorDetect = true;
}
$tmpline = '';
}
}
fclose($handle);
}
// İşlem bittikten sonra geçici SQL dosyasını sil
@unlink($filePath);
return !$errorDetect;
} catch (\Exception $e) {
echo '<pre>Veri aktarım hatası: ' . $e->getMessage() . '</pre>';
return false;
}
}
/**
* Ülke veritabanını içe aktarır
*/
function importGeonamesSql($con, $prefix, $default_country)
{
if (empty($default_country)) return false;
$filename = 'database/countries/' . strtolower($default_country) . '.sql';
$rawFilePath = '../storage/' . $filename;
$filePath = '../storage/installed-db/' . $filename;
setSqlWithDbPrefix($rawFilePath, $filePath, $prefix);
return importSql($con, $filePath);
}
/**
* Veritabanı şemasını (Tablo yapılarını) oluşturur
*/
function importSchemaSql($con, $prefix)
{
$filename = 'database/schema.sql';
$rawFilePath = $filename;
$filePath = 'installed-db/' . $filename;
setSqlWithDbPrefix($rawFilePath, $filePath, $prefix);
return importSql($con, $filePath);
}
/**
* Varsayılan verileri yükler
*/
function importDataSql($con, $prefix)
{
$filename = 'database/data.sql';
$rawFilePath = $filename;
$filePath = 'installed-db/' . $filename;
setSqlWithDbPrefix($rawFilePath, $filePath, $prefix);
return importSql($con, $filePath);
}
function get_all_country_list(){
return array(
'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', 'BA' => 'Bosnia and Herzegovina',
'BW' => 'Botswana', 'BR' => 'Brazil', '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', 'CO' => 'Colombia',
'KM' => 'Comoros', 'CG' => 'Congo', 'CR' => 'Costa Rica', 'HR' => 'Croatia',
'CU' => 'Cuba', 'CY' => 'Cyprus', 'CZ' => 'Czech Republic', 'DK' => 'Denmark',
'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Dominican Republic', 'EC' => 'Ecuador',
'EG' => 'Egypt', 'SV' => 'El Salvador', 'EE' => 'Estonia', 'ET' => 'Ethiopia',
'FI' => 'Finland', 'FR' => 'France', 'GA' => 'Gabon', 'GM' => 'Gambia',
'GE' => 'Georgia', 'DE' => 'Germany', 'GH' => 'Ghana', 'GR' => 'Greece',
'GT' => 'Guatemala', 'GN' => 'Guinea', 'HT' => 'Haiti', 'HN' => 'Honduras',
'HU' => 'Hungary', 'IS' => 'Iceland', 'IN' => 'India', 'ID' => 'Indonesia',
'IR' => 'Iran', 'IQ' => 'Iraq', 'IE' => 'Ireland', 'IL' => 'Israel',
'IT' => 'Italy', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JO' => 'Jordan',
'KZ' => 'Kazakhstan', 'KE' => 'Kenya', 'KR' => 'Korea', 'KW' => 'Kuwait',
'KG' => 'Kyrgyzstan', 'LV' => 'Latvia', 'LB' => 'Lebanon', 'LY' => 'Libya',
'LT' => 'Lithuania', 'LU' => 'Luxembourg', 'MK' => 'Macedonia', 'MG' => 'Madagascar',
'MY' => 'Malaysia', 'ML' => 'Mali', 'MT' => 'Malta', 'MX' => 'Mexico',
'MD' => 'Moldova', 'MC' => 'Monaco', 'MN' => 'Mongolia', 'ME' => 'Montenegro',
'MA' => 'Morocco', 'MZ' => 'Mozambique', 'NA' => 'Namibia', 'NP' => 'Nepal',
'NL' => 'Netherlands', 'NZ' => 'New Zealand', 'NI' => 'Nicaragua', 'NE' => 'Niger',
'NG' => 'Nigeria', 'NO' => 'Norway', 'OM' => 'Oman', 'PK' => 'Pakistan',
'PA' => 'Panama', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Philippines',
'PL' => 'Poland', 'PT' => 'Portugal', 'QA' => 'Qatar', 'RO' => 'Romania',
'RU' => 'Russia', 'RW' => 'Rwanda', 'SA' => 'Saudi Arabia', 'SN' => 'Senegal',
'RS' => 'Serbia', 'SG' => 'Singapore', 'SK' => 'Slovakia', 'SI' => 'Slovenia',
'ZA' => 'South Africa', 'ES' => 'Spain', 'LK' => 'Sri Lanka', 'SD' => 'Sudan',
'SE' => 'Sweden', 'CH' => 'Switzerland', 'SY' => 'Syria', 'TW' => 'Taiwan',
'TJ' => 'Tajikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailand', 'TN' => 'Tunisia',
'TR' => 'Turkey', 'TM' => 'Turkmenistan', 'UA' => 'Ukraine', 'AE' => 'United Arab Emirates',
'UK' => 'United Kingdom', 'US' => 'United States', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan',
'VE' => 'Venezuela', 'VN' => 'Vietnam', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe'
);
}