forked from cahyadsn/wilayah
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrefactor.php
117 lines (99 loc) · 3.07 KB
/
refactor.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/php
<?php
// Disable script timeout
set_time_limit(0);
if (php_sapi_name() !== 'cli') {
echo 'This script is only can running in CLI mode';
exit(1);
}
try {
$mysqli = mysqli_connect(
'127.0.0.1',
'root',
'12345678',
'wilayah',
3306
);
} catch (\Throwable $th) {
echo 'Connection failed : [' . $th->getCode() . '] ' . $th->getMessage() . "\n";
exit(1);
}
if (!file_exists('csv')) {
mkdir('csv');
}
if (! is_writable('csv')) {
echo 'CSV folder is not writeable !';
exit(1);
}
function writeCsv(string $fileName, mysqli_result $result, callable $callback = null): void {
$f = fopen('csv/' . $fileName . '.csv', 'w');
foreach ($result->fetch_all(MYSQLI_NUM) as $row) {
if (is_callable($callback)) {
$row = $callback($row);
}
$row[1] = preg_replace('/\s+/', ' ', $row[1]);
$codesArr = explode('.', $row[0]);
$codesLength = count($codesArr) - 1;
if ($codesLength > 0) {
$codes = [
implode('', $codesArr),
implode('', array_slice($codesArr, 0, -1))
];
$row = array_merge($codes, [$row[1]]);
}
fputcsv($f, $row);
}
fclose($f);
}
// Generate Provinces
echo "Generate provinces file\n";
/**
* Penjelasan urutan kolom
*
* Kolom 1 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk provinsi yang tertera
* Kolom 2 berisi nama provinsi
*/
writeCsv(
'provinces',
$mysqli->query("SELECT * FROM `wilayah_2022` WHERE `kode` REGEXP '^[0-9]{2}$' ORDER BY kode ASC")
);
echo "Generate cities file\n";
/**
* Penjelasan urutan kolom
*
* Kolom 1 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk kabupaten yang tertera
* Kolom 2 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk provinsi pada kabupaten tersebut
* Kolom 3 berisi nama kabupaten
*/
writeCsv(
'cities',
$mysqli->query("SELECT * FROM `wilayah_2022` WHERE `kode` REGEXP '^[0-9]{2}\.[0-9]{2}$' ORDER BY kode ASC"),
function ($row) {
$row[1] = preg_replace('/(KAB)(\.)?/', 'KABUPATEN', $row[1]);
return $row;
}
);
echo "Generate districts file\n";
/**
* Penjelasan urutan kolom
*
* Kolom 1 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk kecamatan yang tertera
* Kolom 2 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk kabupaten pada kecamatan tersebut
* Kolom 3 berisi nama kecamatan
*/
writeCsv(
'districts',
$mysqli->query("SELECT * FROM `wilayah_2022` WHERE `kode` REGEXP '^[0-9]{2}\.[0-9]{2}\.[0-9]{2}$' ORDER BY kode ASC")
);
echo "Generate villages file\n";
/**
* Penjelasan urutan kolom
*
* Kolom 1 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk desa yang tertera
* Kolom 2 berisi kode wilayah administrasi pemerintahan (Kemendagri) untuk kecamatan pada desa tersebut
* Kolom 3 berisi nama desa
*/
writeCsv(
'villages',
$mysqli->query("SELECT * FROM `wilayah_2022` WHERE `kode` REGEXP '^[0-9]{2}\.[0-9]{2}\.[0-9]{2}\.[0-9]{4}$' ORDER BY kode ASC")
);