· 8 years ago · May 18, 2018, 06:26 PM
1<?php class Database_model extends CI_Model{
2
3 private $engine = 'InnoDB';
4 /* define versi opensid dan script migrasi yang harus dijalankan */
5 private $versionMigrate = array(
6 '2.4' => array('migrate' => 'migrasi_24_ke_25','nextVersion' => '2.5'),
7 'pra-2.5' => array('migrate' => 'migrasi_24_ke_25','nextVersion' => '2.5'),
8 '2.5' => array('migrate' => 'migrasi_25_ke_26','nextVersion' => '2.6'),
9 '2.6' => array('migrate' => 'migrasi_26_ke_27','nextVersion' => '2.7'),
10 '2.7' => array('migrate' => 'migrasi_27_ke_28','nextVersion' => '2.8'),
11 '2.8' => array('migrate' => 'migrasi_28_ke_29','nextVersion' => '2.9'),
12 '2.9' => array('migrate' => 'migrasi_29_ke_210','nextVersion' => '2.10'),
13 '2.10' => array('migrate' => 'migrasi_210_ke_211','nextVersion' => '2.11'),
14 '2.11' => array('migrate' => 'migrasi_211_ke_1806','nextVersion' => NULL),
15 '2.12' => array('migrate' => 'migrasi_211_ke_1806','nextVersion' => NULL)
16 );
17
18 function __construct(){
19 parent::__construct();
20
21 $this->cek_engine_db();
22 $this->load->dbforge();
23 $this->load->model('folder_desa_model');
24 $this->load->model('surat_master_model');
25 $this->load->model('analisis_import_model');
26 }
27
28 function cek_engine_db() {
29 $this->db->db_debug = FALSE; //disable debugging for queries
30
31 $query = $this->db->query("SELECT `engine` FROM INFORMATION_SCHEMA.TABLES WHERE table_schema= '". $this->db->database ."' AND table_name = 'user'");
32 if($this->db->error()['code'] != 0) {
33 $this->engine = $query->row()->engine;
34 }
35
36 $this->db->db_debug = $db_debug; //restore setting
37 }
38
39 function reset_setting_aplikasi() {
40 $this->db->truncate('setting_aplikasi');
41 $query = "
42 INSERT INTO setting_aplikasi (`id`, `key`, `value`, `keterangan`, `jenis`,`kategori`) VALUES
43 (1, 'sebutan_kabupaten','kabupaten','Pengganti sebutan wilayah kabupaten','',''),
44 (2, 'sebutan_kabupaten_singkat','kab.','Pengganti sebutan singkatan wilayah kabupaten','',''),
45 (3, 'sebutan_kecamatan','kecamatan','Pengganti sebutan wilayah kecamatan','',''),
46 (4, 'sebutan_kecamatan_singkat','kec.','Pengganti sebutan singkatan wilayah kecamatan','',''),
47 (5, 'sebutan_desa','desa','Pengganti sebutan wilayah desa','',''),
48 (6, 'sebutan_dusun','dusun','Pengganti sebutan wilayah dusun','',''),
49 (7, 'sebutan_camat','camat','Pengganti sebutan jabatan camat','',''),
50 (8, 'website_title','Website Resmi','Judul tab browser modul web','','web'),
51 (9, 'login_title','OpenSID', 'Judul tab browser halaman login modul administrasi','',''),
52 (10, 'admin_title','Sistem Informasi Desa','Judul tab browser modul administrasi','',''),
53 (11, 'web_theme', 'default','Tema penampilan modul web','','web'),
54 (12, 'offline_mode',FALSE,'Apakah modul web akan ditampilkan atau tidak','boolean',''),
55 (13, 'enable_track',TRUE,'Apakah akan mengirimkan data statistik ke tracker','boolean',''),
56 (14, 'dev_tracker','','Host untuk tracker pada development','','development'),
57 (15, 'nomor_terakhir_semua_surat', FALSE,'Gunakan nomor surat terakhir untuk seluruh surat tidak per jenis surat','boolean',''),
58 (16, 'google_key','','Google API Key untuk Google Maps','','web'),
59 (17, 'libreoffice_path','','Path tempat instal libreoffice di server SID','','')
60 ";
61 $this->db->query($query);
62 }
63 function migrasi_db_cri(){
64 $versi = $this->getCurrentVersion();
65 $nextVersion = $versi;
66 $versionMigrate = $this->versionMigrate;
67 if(isset($versionMigrate[$versi])){
68 while(!empty($nextVersion) AND !empty($versionMigrate[$nextVersion]['migrate'])){
69 $migrate = $versionMigrate[$nextVersion]['migrate'];
70 log_message('error','Jalankan '.$migrate);
71 $nextVersion = $versionMigrate[$nextVersion]['nextVersion'];
72 call_user_func(__NAMESPACE__ .'\Database_model::'.$migrate);
73 }
74 }else{
75 $this->_migrasi_db_cri();
76 }
77 $this->folder_desa_model->amankan_folder_desa();
78 $this->surat_master_model->impor_surat_desa();
79 /*
80 Update current_version di db.
81 'pasca-<versi>' disimpan sebagai '<versi>'
82 */
83 $prefix = 'pasca-';
84 $versi = AmbilVersi();
85 if (substr($versi, 0, strlen($prefix)) == $prefix) {
86 $versi = substr($versi, strlen($prefix));
87 }
88 $newVersion = array(
89 'value' => $versi
90 );
91 $this->db->where(array('key'=>'current_version'))->update('setting_aplikasi',$newVersion);
92 $_SESSION['success'] = 1;
93 }
94
95 private function getCurrentVersion(){
96 // Untuk kasus tabel setting_aplikasi belum ada
97 if (!$this->db->table_exists('setting_aplikasi')) return NULL;
98
99 $result = NULL;
100 $_result = $this->db->where(array('key' => 'current_version'))->get('setting_aplikasi')->row();
101 if(!empty($_result)){
102 $result = $_result->value;
103 }
104 return $result;
105 }
106
107 function _migrasi_db_cri() {
108 $this->migrasi_cri_lama();
109 $this->migrasi_03_ke_04();
110 $this->migrasi_08_ke_081();
111 $this->migrasi_082_ke_09();
112 $this->migrasi_092_ke_010();
113 $this->migrasi_010_ke_10();
114 $this->migrasi_10_ke_11();
115 $this->migrasi_111_ke_12();
116 $this->migrasi_124_ke_13();
117 $this->migrasi_13_ke_14();
118 $this->migrasi_14_ke_15();
119 $this->migrasi_15_ke_16();
120 $this->migrasi_16_ke_17();
121 $this->migrasi_17_ke_18();
122 $this->migrasi_18_ke_19();
123 $this->migrasi_19_ke_110();
124 $this->migrasi_110_ke_111();
125 $this->migrasi_111_ke_112();
126 $this->migrasi_112_ke_113();
127 $this->migrasi_113_ke_114();
128 $this->migrasi_114_ke_115();
129 $this->migrasi_115_ke_116();
130 $this->migrasi_116_ke_117();
131 $this->migrasi_117_ke_20();
132 $this->migrasi_20_ke_21();
133 $this->migrasi_21_ke_22();
134 $this->migrasi_22_ke_23();
135 $this->migrasi_23_ke_24();
136 $this->migrasi_24_ke_25();
137 $this->migrasi_25_ke_26();
138 $this->migrasi_26_ke_27();
139 $this->migrasi_27_ke_28();
140 $this->migrasi_28_ke_29();
141 $this->migrasi_29_ke_210();
142 $this->migrasi_210_ke_211();
143 $this->migrasi_211_ke_213();
144 $this->migrasi_211_ke_1086();
145 }
146
147 function migrasi_211_ke_1086(){
148 //Config default yang baru pasca migrasi ke OSM map
149 $configBaru = array(
150 'lat' => '-8.488005310891758',
151 'lng' => '116.0406072534065',
152 'zoom' => '10',
153 'path' => '[[[-8.218243848094088,116.30538940429689],[-8.335116747617612,116.17630004882812],[-8.416635329665104,116.04721069335938],[-8.503569568490278,116.03897094726564],[-8.631218429399759,116.07467651367189],[-8.745251131282627,116.04446411132814],[-8.734392370718524,115.83023071289064],[-8.834823791818028,115.83572387695312],[-8.891813259674505,115.99502563476564],[-8.891813259674505,116.12136840820314],[-8.918947988392826,116.23123168945314],[-8.924374692337135,116.39602661132814],[-8.924374692337135,116.56356811523439],[-8.726248092777304,116.56356811523439],[-8.487270894705782,116.68441772460938],[-8.35685670467133,116.72836303710939],[-8.291633210738375,116.67068481445314],[-8.25629929420485,116.52786254882814],[-8.223680564304502,116.44546508789064]]]'
154 );
155 $this->db->where('id', 1)->update($configBaru);
156
157 //Penambahan widget peta wilayah desa sebagai widget sistem
158 $peta_wilayah = array(
159 'isi' => 'peta_wilayah_desa.php',
160 'enabled' => 1,
161 'judul' => 'peta_wilayah_desa.php',
162 'jenis_widget' => 1,
163 'urut' => 1,
164 'form_admin' => 'hom_desa'
165 );
166 $this->db->insert('widget', $peta_wilayah);
167 }
168
169 function migrasi_211_ke_213(){
170 // Tambahkan perubahan database di sini
171
172 //ubah icon kecil dan besar untuk modul Sekretariat
173 $this->db->where('url','sekretariat')->update('setting_modul',array('ikon'=>'document-open-8.png', 'ikon_kecil'=>'fa fa-file fa-lg'));
174 // Hapus kolom yg tidak digunakan
175 if ($this->db->field_exists('alamat_tempat_lahir', 'tweb_penduduk'))
176 $this->dbforge->drop_column('tweb_penduduk', 'alamat_tempat_lahir');
177 }
178
179 function migrasi_210_ke_211(){
180 // Tambah kolom jenis untuk analisis_master
181 $fields = array();
182 if (!$this->db->field_exists('jenis', 'analisis_master')) {
183 $fields['jenis'] = array(
184 'type' => 'tinyint',
185 'constraint' => 2,
186 'null' => FALSE,
187 'default' => 2 // bukan bawaan sistem
188 );
189 }
190 $this->dbforge->add_column('analisis_master', $fields);
191 // Impor analisis Data Dasar Keluarga kalau belum ada.
192 // Ubah versi pra-rilis yang sudah diganti menjadi non-sistem
193 $ddk_lama = $this->db->where('kode_analisis','DDKPD')->where('jenis',1)
194 ->get('analisis_master')->row();
195 if($ddk_lama){
196 $this->db->where('id',$ddk_lama->id)
197 ->update('analisis_master',array('jenis' => 2, 'nama' => '[kadaluarsa] '.$ddk_lama->nama));
198 }
199 $query = $this->db->where('kode_analisis','DDK02')
200 ->get('analisis_master')->result_array();
201 if(count($query) == 0){
202 $file_analisis = FCPATH . 'assets/import/analisis_DDK_Profil_Desa.xls';
203 $this->analisis_import_model->import_excel($file_analisis,'DDK02',$jenis=1);
204 }
205 // Impor analisis Data Anggota Keluarga kalau belum ada
206 // Ubah versi pra-rilis yang sudah diganti menjadi non-sistem
207 $dak_lama = $this->db->where('kode_analisis','DAKPD')->where('jenis',1)
208 ->get('analisis_master')->row();
209 if($dak_lama){
210 $this->db->where('id',$dak_lama->id)
211 ->update('analisis_master',array('jenis' => 2, 'nama' => '[kadaluarsa] '.$dak_lama->nama));
212 }
213 $dak = $this->db->where('kode_analisis','DAK02')
214 ->get('analisis_master')->row();
215 if(empty($dak)){
216 $file_analisis = FCPATH . 'assets/import/analisis_DAK_Profil_Desa.xls';
217 $id_dak = $this->analisis_import_model->import_excel($file_analisis,'DAK02',$jenis=1);
218 } else $id_dak = $dak->id;
219 // Tambah kolom is_teks pada analisis_indikator
220 $fields = array();
221 if (!$this->db->field_exists('is_teks', 'analisis_indikator')) {
222 $fields['is_teks'] = array(
223 'type' => 'tinyint',
224 'constraint' => 1,
225 'null' => FALSE,
226 'default' => 0 // isian pertanyaan menggunakan kode
227 );
228 }
229 $this->dbforge->add_column('analisis_indikator', $fields);
230 // Ubah pertanyaan2 DAK profil desa menggunakan teks
231 $pertanyaan = array(
232 'Cacat Fisik',
233 'Cacat Mental',
234 'Kedudukan Anggota Keluarga sebagai Wajib Pajak dan Retribusi',
235 'Lembaga Pemerintahan Yang Diikuti Anggota Keluarga',
236 'Lembaga Kemasyarakatan Yang Diikuti Anggota Keluarga',
237 'Lembaga Ekonomi Yang Dimiliki Anggota Keluarga'
238 );
239 $list_pertanyaan = sql_in_list($pertanyaan);
240 $this->db->where('id_master',$id_dak)->where("pertanyaan in($list_pertanyaan)")
241 ->update('analisis_indikator',array('is_teks' => 1));
242 }
243
244 function migrasi_29_ke_210(){
245 // Tambah kolom untuk format impor respon untuk analisis_master
246 $fields = array();
247 if (!$this->db->field_exists('format_impor', 'analisis_master')) {
248 $fields['format_impor'] = array(
249 'type' => 'tinyint',
250 'constraint' => 2
251 );
252 }
253 $this->dbforge->add_column('analisis_master', $fields);
254 // Tambah setting timezone
255 $setting = $this->db->where('key','timezone')->get('setting_aplikasi')->row()->id;
256 if(!$setting){
257 $this->db->insert('setting_aplikasi',array('key'=>'timezone','value'=>'Asia/Jakarta','keterangan'=>'Zona waktu perekaman waktu dan tanggal'));
258 }
259 // Tambah tabel inventaris
260 if (!$this->db->table_exists('jenis_barang') ) {
261 $query = "
262 CREATE TABLE jenis_barang (
263 id int NOT NULL AUTO_INCREMENT,
264 nama varchar(30),
265 keterangan varchar(100),
266 PRIMARY KEY (id)
267 );
268 ";
269 $this->db->query($query);
270 }
271 if (!$this->db->table_exists('inventaris') ) {
272 $query = "
273 CREATE TABLE inventaris (
274 id int NOT NULL AUTO_INCREMENT,
275 id_jenis_barang int(6),
276 asal_sendiri int(6),
277 asal_pemerintah int(6),
278 asal_provinsi int(6),
279 asal_kab int(6),
280 asal_sumbangan int(6),
281 hapus_rusak int(6),
282 hapus_dijual int(6),
283 hapus_sumbangkan int(6),
284 tanggal_mutasi date NOT NULL,
285 jenis_mutasi int(6),
286 keterangan varchar(100),
287 PRIMARY KEY (id),
288 FOREIGN KEY (id_jenis_barang)
289 REFERENCES jenis_barang(id)
290 ON DELETE CASCADE
291 );
292 ";
293 $this->db->query($query);
294 }
295 // Perubahan pada pra-rilis
296 // Hapus kolom
297 $daftar_kolom = array('asal_sendiri','asal_pemerintah','asal_provinsi','asal_kab','asal_sumbangan','tanggal_mutasi','jenis_mutasi','hapus_rusak','hapus_dijual','hapus_sumbangkan');
298 foreach($daftar_kolom as $kolom){
299 if ($this->db->field_exists($kolom, 'inventaris'))
300 $this->dbforge->drop_column('inventaris', $kolom);
301 }
302 // Tambah kolom
303 $fields = array();
304 if (!$this->db->field_exists('tanggal_pengadaan', 'inventaris')) {
305 $fields['tanggal_pengadaan'] = array(
306 'type' => 'date',
307 'null' => FALSE
308 );
309 }
310 if (!$this->db->field_exists('nama_barang', 'inventaris')) {
311 $fields['nama_barang'] = array(
312 'type' => 'VARCHAR',
313 'constraint' => 100
314 );
315 }
316 if (!$this->db->field_exists('asal_barang', 'inventaris')) {
317 $fields['asal_barang'] = array(
318 'type' => 'tinyint',
319 'constraint' => 2
320 );
321 }
322 if (!$this->db->field_exists('jml_barang', 'inventaris')) {
323 $fields['jml_barang'] = array(
324 'type' => 'int',
325 'constraint' => 6
326 );
327 }
328 $this->dbforge->add_column('inventaris', $fields);
329 if (!$this->db->table_exists('mutasi_inventaris') ) {
330 $query = "
331 CREATE TABLE mutasi_inventaris (
332 id int NOT NULL AUTO_INCREMENT,
333 id_barang int(6),
334 tanggal_mutasi date NOT NULL,
335 jenis_mutasi tinyint(2),
336 jenis_penghapusan tinyint(2),
337 jml_mutasi int(6),
338 keterangan varchar(100),
339 PRIMARY KEY (id),
340 FOREIGN KEY (id_barang)
341 REFERENCES inventaris(id)
342 ON DELETE CASCADE
343 );
344 ";
345 $this->db->query($query);
346 }
347 // Ubah url modul program_bantuan
348 $this->db->where('url','program_bantuan')->update('setting_modul',array('url'=>'program_bantuan/clear'));
349 }
350
351 function migrasi_28_ke_29(){
352 // Tambah data kelahiran ke tweb_penduduk
353 $fields = array();
354 if (!$this->db->field_exists('waktu_lahir', 'tweb_penduduk')) {
355 $fields['waktu_lahir'] = array(
356 'type' => 'VARCHAR',
357 'constraint' => 5
358 );
359 }
360 if (!$this->db->field_exists('tempat_dilahirkan', 'tweb_penduduk')) {
361 $fields['tempat_dilahirkan'] = array(
362 'type' => 'tinyint',
363 'constraint' => 2
364 );
365 }
366 if (!$this->db->field_exists('alamat_tempat_lahir', 'tweb_penduduk')) {
367 $fields['alamat_tempat_lahir'] = array(
368 'type' => 'VARCHAR',
369 'constraint' => 100
370 );
371 }
372 if (!$this->db->field_exists('jenis_kelahiran', 'tweb_penduduk')) {
373 $fields['jenis_kelahiran'] = array(
374 'type' => 'tinyint',
375 'constraint' => 2
376 );
377 }
378 if (!$this->db->field_exists('kelahiran_anak_ke', 'tweb_penduduk')) {
379 $fields['kelahiran_anak_ke'] = array(
380 'type' => 'tinyint',
381 'constraint' => 2
382 );
383 }
384 if (!$this->db->field_exists('penolong_kelahiran', 'tweb_penduduk')) {
385 $fields['penolong_kelahiran'] = array(
386 'type' => 'tinyint',
387 'constraint' => 2
388 );
389 }
390 if (!$this->db->field_exists('berat_lahir', 'tweb_penduduk')) {
391 $fields['berat_lahir'] = array(
392 'type' => 'varchar',
393 'constraint' => 10
394 );
395 }
396 if (!$this->db->field_exists('panjang_lahir', 'tweb_penduduk')) {
397 $fields['panjang_lahir'] = array(
398 'type' => 'varchar',
399 'constraint' => 10
400 );
401 }
402 $this->dbforge->add_column('tweb_penduduk', $fields);
403
404 // Hapus kolom yg tidak digunakan
405 if ($this->db->field_exists('pendidikan_id', 'tweb_penduduk'))
406 $this->dbforge->drop_column('tweb_penduduk', 'pendidikan_id');
407 // Tambah kolom e-ktp di tabel tweb_penduduk
408 if (!$this->db->field_exists('ktp_el', 'tweb_penduduk')) {
409 $fields = array(
410 'ktp_el' => array(
411 'type' => tinyint,
412 'constraint' => 4
413 )
414 );
415 $this->dbforge->add_column('tweb_penduduk', $fields);
416 }
417 if (!$this->db->field_exists('status_rekam', 'tweb_penduduk')) {
418 $fields = array(
419 'status_rekam' => array(
420 'type' => tinyint,
421 'constraint' => 4,
422 'null' => FALSE,
423 'default' => 0
424 )
425 );
426 $this->dbforge->add_column('tweb_penduduk', $fields);
427 }
428 // Tambah tabel status_rekam
429 $query = "DROP TABLE IF EXISTS tweb_status_ktp;";
430 $this->db->query($query);
431
432 $query = "
433 CREATE TABLE tweb_status_ktp (
434 id tinyint(5) NOT NULL AUTO_INCREMENT,
435 nama varchar(50) NOT NULL,
436 ktp_el tinyint(4) NOT NULL,
437 status_rekam varchar(50) NOT NULL,
438 PRIMARY KEY (id)
439 ) ENGINE=".$this->engine." AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
440 ";
441 $this->db->query($query);
442
443 $query = "
444 INSERT INTO tweb_status_ktp (id, nama, ktp_el, status_rekam) VALUES
445 (1, 'BELUM REKAM', 1, '2'),
446 (2, 'SUDAH REKAM', 2, '3'),
447 (3, 'CARD PRINTED', 2, '4'),
448 (4, 'PRINT READY RECORD', 2 ,'5'),
449 (5, 'CARD SHIPPED', 2, '6'),
450 (6, 'SENT FOR CARD PRINTING', 2, '7'),
451 (7, 'CARD ISSUED', 2, '8');
452 ";
453 $this->db->query($query);
454 }
455
456 function migrasi_27_ke_28(){
457 if (!$this->db->table_exists('suplemen') ) {
458 $query = "
459 CREATE TABLE suplemen (
460 id int NOT NULL AUTO_INCREMENT,
461 nama varchar(100),
462 sasaran tinyint(4),
463 keterangan varchar(300),
464 PRIMARY KEY (id)
465 );
466 ";
467 $this->db->query($query);
468 }
469 if (!$this->db->table_exists('suplemen_terdata') ) {
470 $query = "
471 CREATE TABLE suplemen_terdata (
472 id int NOT NULL AUTO_INCREMENT,
473 id_suplemen int(10),
474 id_terdata varchar(20),
475 sasaran tinyint(4),
476 keterangan varchar(100),
477 PRIMARY KEY (id),
478 FOREIGN KEY (id_suplemen)
479 REFERENCES suplemen(id)
480 ON DELETE CASCADE
481 );
482 ";
483 $this->db->query($query);
484 }
485 // Hapus surat permohonan perubahan kk (yang telah diubah menjadi kartu keluarga)
486 $data = array(
487 'nama'=>'Permohonan Perubahan Kartu Keluarga',
488 'url_surat'=>'surat_permohonan_perubahan_kartu_keluarga',
489 'kode_surat'=>'S-41',
490 'lampiran'=>'f-1.16.php,f-1.01.php',
491 'jenis'=>1);
492 $hasil = $this->db->where('url_surat','surat_permohonan_perubahan_kk')->get('tweb_surat_format');
493 if ($hasil->num_rows() > 0) {
494 $this->db->where('url_surat','surat_permohonan_perubahan_kk')->update('tweb_surat_format', $data);
495 } else {
496 // Tambah surat permohonan perubahan kartu keluarga
497 $sql = $this->db->insert_string('tweb_surat_format', $data);
498 $sql .= " ON DUPLICATE KEY UPDATE
499 nama = VALUES(nama),
500 url_surat = VALUES(url_surat),
501 kode_surat = VALUES(kode_surat),
502 lampiran = VALUES(lampiran),
503 jenis = VALUES(jenis)";
504 $this->db->query($sql);
505 }
506 }
507
508 function migrasi_26_ke_27(){
509 // Sesuaikan judul kelompok umur dengan SID 3.10 versi Okt 2017
510 $this->db->truncate('tweb_penduduk_umur');
511 $sql = '
512 INSERT INTO tweb_penduduk_umur VALUES
513 ("1","BALITA","0","5","0"),
514 ("2","ANAK-ANAK","6","17","0"),
515 ("3","DEWASA","18","30","0"),
516 ("4","TUA","31","120","0"),
517 ("6","Di bawah 1 Tahun","0","1","1"),
518 ("9","2 s/d 4 Tahun","2","4","1"),
519 ("12","5 s/d 9 Tahun","5","9","1"),
520 ("13","10 s/d 14 Tahun","10","14","1"),
521 ("14","15 s/d 19 Tahun","15","19","1"),
522 ("15","20 s/d 24 Tahun","20","24","1"),
523 ("16","25 s/d 29 Tahun","25","29","1"),
524 ("17","30 s/d 34 Tahun","30","34","1"),
525 ("18","35 s/d 39 Tahun ","35","39","1"),
526 ("19","40 s/d 44 Tahun","40","44","1"),
527 ("20","45 s/d 49 Tahun","45","49","1"),
528 ("21","50 s/d 54 Tahun","50","54","1"),
529 ("22","55 s/d 59 Tahun","55","59","1"),
530 ("23","60 s/d 64 Tahun","60","64","1"),
531 ("24","65 s/d 69 Tahun","65","69","1"),
532 ("25","70 s/d 74 Tahun","70","74","1"),
533 ("26","Di atas 75 Tahun","75","99999","1");
534 ';
535 $this->db->query($sql);
536 // Tambah tombol media sosial Instagram
537 $query = "
538 INSERT INTO media_sosial (id, gambar, link, nama, enabled) VALUES ('5', 'ins.png', '', 'Instagram', '1')
539 ON DUPLICATE KEY UPDATE
540 gambar = VALUES(gambar),
541 nama = VALUES(nama)";
542 $this->db->query($query);
543 // Ganti kelas sosial dengan tingkatan keluarga sejahtera dari BKKBN
544 if ($this->db->table_exists('ref_kelas_sosial') ) {
545 $this->dbforge->drop_table('ref_kelas_sosial');
546 }
547 if (!$this->db->table_exists('tweb_keluarga_sejahtera') ) {
548 $query = "
549 CREATE TABLE `tweb_keluarga_sejahtera` (
550 `id` int(10),
551 `nama` varchar(100),
552 PRIMARY KEY (`id`)
553 );
554 ";
555 $this->db->query($query);
556 $query = "
557 INSERT INTO `tweb_keluarga_sejahtera` (`id`, `nama`) VALUES
558 (1, 'Keluarga Pra Sejahtera'),
559 (2, 'Keluarga Sejahtera I'),
560 (3, 'Keluarga Sejahtera II'),
561 (4, 'Keluarga Sejahtera III'),
562 (5, 'Keluarga Sejahtera III Plus')
563 ";
564 $this->db->query($query);
565 }
566 // Tambah surat izin orang tua/suami/istri
567 $data = array(
568 'nama'=>'Keterangan Izin Orang Tua/Suami/Istri',
569 'url_surat'=>'surat_izin_orangtua_suami_istri',
570 'kode_surat'=>'S-39',
571 'jenis'=>1);
572 $sql = $this->db->insert_string('tweb_surat_format', $data);
573 $sql .= " ON DUPLICATE KEY UPDATE
574 nama = VALUES(nama),
575 url_surat = VALUES(url_surat),
576 kode_surat = VALUES(kode_surat),
577 jenis = VALUES(jenis)";
578 $this->db->query($sql);
579 // Tambah surat sporadik
580 $data = array(
581 'nama'=>'Pernyataan Penguasaan Fisik Bidang Tanah (SPORADIK)',
582 'url_surat'=>'surat_sporadik',
583 'kode_surat'=>'S-40',
584 'jenis'=>1);
585 $sql = $this->db->insert_string('tweb_surat_format', $data);
586 $sql .= " ON DUPLICATE KEY UPDATE
587 nama = VALUES(nama),
588 url_surat = VALUES(url_surat),
589 kode_surat = VALUES(kode_surat),
590 jenis = VALUES(jenis)";
591 $this->db->query($sql);
592 }
593
594 function migrasi_25_ke_26(){
595 // Tambah tabel provinsi
596 if (!$this->db->table_exists('provinsi') ) {
597 $query = "
598 CREATE TABLE `provinsi` (
599 `kode` tinyint(2),
600 `nama` varchar(100),
601 PRIMARY KEY (`kode`)
602 );
603 ";
604 $this->db->query($query);
605 $query = "
606 INSERT INTO `provinsi` (`kode`, `nama`) VALUES
607 (11, 'Aceh'),
608 (12, 'Sumatera Utara'),
609 (13, 'Sumatera Barat'),
610 (14, 'Riau'),
611 (15, 'Jambi'),
612 (16, 'Sumatera Selatan'),
613 (17, 'Bengkulu'),
614 (18, 'Lampung'),
615 (19, 'Kepulauan Bangka Belitung'),
616 (21, 'Kepulauan Riau'),
617 (31, 'DKI Jakarta'),
618 (32, 'Jawa Barat'),
619 (33, 'Jawa Tengah'),
620 (34, 'DI Yogyakarta'),
621 (35, 'Jawa Timur'),
622 (36, 'Banten'),
623 (51, 'Bali'),
624 (52, 'Nusa Tenggara Barat'),
625 (53, 'Nusa Tenggara Timur'),
626 (61, 'Kalimantan Barat'),
627 (62, 'Kalimantan Tengah'),
628 (63, 'Kalimantan Selatan'),
629 (64, 'Kalimantan Timur'),
630 (65, 'Kalimantan Utara'),
631 (71, 'Sulawesi Utara'),
632 (72, 'Sulawesi Tengah'),
633 (73, 'Sulawesi Selatan'),
634 (74, 'Sulawesi Tenggara'),
635 (75, 'Gorontalo'),
636 (76, 'Sulawesi Barat'),
637 (81, 'Maluku'),
638 (82, 'Maluku Utara'),
639 (91, 'Papua'),
640 (92, 'Papua Barat')
641 ";
642 $this->db->query($query);
643 }
644 // Konversi nama provinsi tersimpan di identitas desa
645 $konversi = array(
646 "ntb" => "Nusa Tenggara Barat",
647 "ntt" => "Nusa Tenggara Timur",
648 "daerah istimewa yogyakarta" => "DI Yogyakarta",
649 "diy" => "DI Yogyakarta",
650 "yogyakarta" => "DI Yogyakarta",
651 "jabar" => "Jawa Barat",
652 "jawabarat" => "Jawa Barat",
653 "jateng" => "Jawa Tengah",
654 "jatim" => "Jawa Timur",
655 "jatimi" => "Jawa Timur",
656 "jawa timu" => "Jawa Timur",
657 "nad" => "Aceh",
658 "kalimatnan barat" => "Kalimantan Barat",
659 "sulawesi teanggara" => "Sulawesi Tenggara"
660 );
661 $nama_propinsi = $this->db->select('nama_propinsi')->where('id', '1')->get('config')->row()->nama_propinsi;
662 foreach ($konversi as $salah => $benar) {
663 if(strtolower($nama_propinsi) == $salah) {
664 $this->db->where('id', '1')->update('config', array('nama_propinsi' => $benar));
665 break;
666 }
667 }
668 // Tambah lampiran untuk Surat Keterangan Kematian
669 $this->db->where('url_surat','surat_ket_kematian')->update('tweb_surat_format',array('lampiran'=>'f-2.29.php'));
670 // Ubah nama lampiran untuk Surat Keterangan Kelahiran
671 $this->db->where('url_surat','surat_ket_kelahiran')->update('tweb_surat_format',array('lampiran'=>'f-2.01.php'));
672 // Tambah modul Sekretariat di urutan sesudah Cetak Surat
673 $list_modul = array(
674 "5" => 6, // Analisis
675 "6" => 7, // Bantuan
676 "7" => 8, // Persil
677 "8" => 9, // Plan
678 "9" => 10, // Peta
679 "10" => 11, // SMS
680 "11" => 12, // Pengguna
681 "12" => 13, // Database
682 "13" => 14, // Admin Web
683 "14" => 15); // Laporan
684 foreach ($list_modul as $key => $value) {
685 $this->db->where('id',$key)->update('setting_modul', array('urut' => $value));
686 }
687 $query = "
688 INSERT INTO setting_modul (id, modul, url, aktif, ikon, urut, level, hidden, ikon_kecil) VALUES
689 ('15','Sekretariat','sekretariat','1','applications-office-5.png','5','2','0','fa fa-print fa-lg')
690 ON DUPLICATE KEY UPDATE
691 modul = VALUES(modul),
692 url = VALUES(url)";
693 $this->db->query($query);
694 // Tambah folder desa/upload/media
695 if (!file_exists('/desa/upload/media')){
696 mkdir('desa/upload/media');
697 xcopy('desa-contoh/upload/media', 'desa/upload/media');
698 }
699 if (!file_exists('/desa/upload/thumbs')){
700 mkdir('desa/upload/thumbs');
701 xcopy('desa-contoh/upload/thumbs', 'desa/upload/thumbs');
702 }
703 // Tambah kolom kode di tabel kelompok
704 if (!$this->db->field_exists('kode', 'kelompok')) {
705 $fields = array(
706 'kode' => array(
707 'type' => 'VARCHAR',
708 'constraint' => 16,
709 'null' => FALSE
710 )
711 );
712 $this->dbforge->add_column('kelompok', $fields);
713 }
714 // Tambah kolom no_anggota di tabel kelompok_anggota
715 if (!$this->db->field_exists('no_anggota', 'kelompok_anggota')) {
716 $fields = array(
717 'no_anggota' => array(
718 'type' => 'VARCHAR',
719 'constraint' => 20,
720 'null' => FALSE
721 )
722 );
723 $this->dbforge->add_column('kelompok_anggota', $fields);
724 }
725 }
726
727 function migrasi_24_ke_25(){
728 // Tambah setting current_version untuk migrasi
729 $setting = $this->db->where('key','current_version')->get('setting_aplikasi')->row()->id;
730 if(!$setting){
731 $this->db->insert('setting_aplikasi',array('key'=>'current_version','value'=>'2.4','keterangan'=>'Versi sekarang untuk migrasi'));
732 }
733 // Tambah kolom ikon_kecil di tabel setting_modul
734 if (!$this->db->field_exists('ikon_kecil', 'setting_modul')) {
735 $fields = array(
736 'ikon_kecil' => array(
737 'type' => 'VARCHAR',
738 'constraint' => 50
739 )
740 );
741 $this->dbforge->add_column('setting_modul', $fields);
742 $list_modul = array(
743 "1" => "fa fa-home fa-lg", // SID Home
744 "2" => "fa fa-group fa-lg", // Penduduk
745 "3" => "fa fa-bar-chart fa-lg", // Statistik
746 "4" => "fa fa-print fa-lg", // Cetak Surat
747 "5" => "fa fa-dashboard fa-lg", // Analisis
748 "6" => "fa fa-folder-open fa-lg", // Bantuan
749 "7" => "fa fa-road fa-lg", // Persil
750 "8" => "fa fa-sitemap fa-lg", // Plan
751 "9" => "fa fa-map fa-lg", // Peta
752 "10" => "fa fa-envelope-o fa-lg", // SMS
753 "11" => "fa fa-user-plus fa-lg", // Pengguna
754 "12" => "fa fa-database fa-lg", // Database
755 "13" => "fa fa-cloud fa-lg", // Admin Web
756 "14" => "fa fa-comments fa-lg"); // Laporan
757 foreach ($list_modul as $key => $value) {
758 $this->db->where('id',$key)->update('setting_modul', array('ikon_kecil' => $value));
759 }
760 }
761 // Tambah kolom id_pend di tabel tweb_penduduk_mandiri
762 if (!$this->db->field_exists('id_pend', 'tweb_penduduk_mandiri')) {
763 $fields = array(
764 'id_pend' => array(
765 'type' => 'int',
766 'constraint' => 9,
767 'null' => FALSE,
768 'first' => TRUE
769 )
770 );
771 $this->dbforge->add_column('tweb_penduduk_mandiri', $fields);
772 }
773 // Isi kolom id_pend
774 $mandiri = $this->db->select('nik')->get('tweb_penduduk_mandiri')->result_array();
775 foreach ($mandiri as $individu) {
776 $id_pend = $this->db->select('id')->where('nik', $individu['nik'])->get('tweb_penduduk')->row()->id;
777 if (empty($id_pend))
778 $this->db->where('nik',$individu['nik'])->delete('tweb_penduduk_mandiri');
779 else
780 $this->db->where('nik',$individu['nik'])->update('tweb_penduduk_mandiri',array('id_pend' => $id_pend));
781 }
782 // Buat id_pend menjadi primary key
783 $sql = "ALTER TABLE tweb_penduduk_mandiri
784 DROP PRIMARY KEY,
785 ADD PRIMARY KEY (id_pend)";
786 $this->db->query($sql);
787 // Tambah kolom kategori di tabel dokumen
788 if (!$this->db->field_exists('kategori', 'dokumen')) {
789 $fields = array(
790 'kategori' => array(
791 'type' => 'tinyint',
792 'constraint' => 3,
793 'default' => 1
794 )
795 );
796 $this->dbforge->add_column('dokumen', $fields);
797 }
798 // Tambah kolom attribute dokumen
799 if (!$this->db->field_exists('attr', 'dokumen')) {
800 $fields = array(
801 'attr' => array(
802 'type' => 'text'
803 )
804 );
805 $this->dbforge->add_column('dokumen', $fields);
806 }
807 }
808
809 function migrasi_23_ke_24(){
810 // Tambah surat keterangan beda identitas KIS
811 $data = array(
812 'nama'=>'Keterangan Beda Identitas KIS',
813 'url_surat'=>'surat_ket_beda_identitas_kis',
814 'kode_surat'=>'S-38',
815 'jenis'=>1);
816 $sql = $this->db->insert_string('tweb_surat_format', $data);
817 $sql .= " ON DUPLICATE KEY UPDATE
818 nama = VALUES(nama),
819 url_surat = VALUES(url_surat),
820 kode_surat = VALUES(kode_surat),
821 jenis = VALUES(jenis)";
822 $this->db->query($sql);
823 // Tambah setting sebutan kepala dusun
824 $setting = $this->db->where('key','sebutan_singkatan_kadus')->get('setting_aplikasi')->row()->id;
825 if(!$setting){
826 $this->db->insert('setting_aplikasi',array('key'=>'sebutan_singkatan_kadus','value'=>'kawil','keterangan'=>'Sebutan singkatan jabatan kepala dusun'));
827 }
828 }
829
830 function migrasi_22_ke_23(){
831 // Tambah widget menu_left untuk menampilkan menu kategori
832 $widget = $this->db->select('id')->where('isi','menu_kategori.php')->get('widget')->row();
833 if (!$widget->id) {
834 $menu_kategori = array('judul'=>'Menu Kategori','isi'=>'menu_kategori.php','enabled'=>1,'urut'=>1,'jenis_widget'=>1);
835 $this->db->insert('widget',$menu_kategori);
836 }
837 // Tambah tabel surat_masuk
838 if (!$this->db->table_exists('surat_masuk') ) {
839 $query = "
840 CREATE TABLE `surat_masuk` (
841 `id` int NOT NULL AUTO_INCREMENT,
842 `nomor_urut` smallint(5),
843 `tanggal_penerimaan` date NOT NULL,
844 `nomor_surat` varchar(20),
845 `kode_surat` varchar(10),
846 `tanggal_surat` date NOT NULL,
847 `pengirim` varchar(100),
848 `isi_singkat` varchar(200),
849 `disposisi_kepada` varchar(50),
850 `isi_disposisi` varchar(200),
851 `berkas_scan` varchar(100),
852 PRIMARY KEY (`id`)
853 );
854 ";
855 $this->db->query($query);
856 }
857 // Artikel bisa di-comment atau tidak
858 if (!$this->db->field_exists('boleh_komentar', 'artikel')) {
859 $fields = array(
860 'boleh_komentar' => array(
861 'type' => 'tinyint',
862 'constraint' => 1,
863 'default' => 1
864 )
865 );
866 $this->dbforge->add_column('artikel', $fields);
867 }
868
869 }
870
871 function migrasi_21_ke_22(){
872 // Tambah lampiran untuk Surat Keterangan Kelahiran
873 $this->db->where('url_surat','surat_ket_kelahiran')->update('tweb_surat_format',array('lampiran'=>'f-kelahiran.php'));
874 // Tambah setting sumber gambar slider
875 $pilihan_sumber = $this->db->where('key','sumber_gambar_slider')->get('setting_aplikasi')->row()->id;
876 if(!$pilihan_sumber){
877 $this->db->insert('setting_aplikasi',array('key'=>'sumber_gambar_slider','value'=>1,'keterangan'=>'Sumber gambar slider besar'));
878 }
879 // Tambah gambar kartu peserta program bantuan
880 if (!$this->db->field_exists('kartu_peserta', 'program_peserta')) {
881 $fields = array(
882 'kartu_peserta' => array(
883 'type' => 'VARCHAR',
884 'constraint' => 100
885 )
886 );
887 $this->dbforge->add_column('program_peserta', $fields);
888 }
889 }
890
891 function migrasi_20_ke_21(){
892 if (!$this->db->table_exists('widget') ) {
893 $query = "
894 CREATE TABLE `widget` (
895 `id` int NOT NULL AUTO_INCREMENT,
896 `isi` text,
897 `enabled` int(2),
898 `judul` varchar(100),
899 `jenis_widget` tinyint(2) NOT NULL DEFAULT 3,
900 `urut` int(5),
901 PRIMARY KEY (`id`)
902 );
903 ";
904 $this->db->query($query);
905 // Pindahkan data widget dari tabel artikel ke tabel widget
906 $widgets = $this->db->select('isi, enabled, judul, jenis_widget, urut')->where('id_kategori', 1003)->get('artikel')->result_array();
907 foreach($widgets as $widget) {
908 $this->db->insert('widget', $widget);
909 }
910 // Hapus kolom widget dari tabel artikel
911 $kolom_untuk_dihapus = array("urut", "jenis_widget");
912 foreach ($kolom_untuk_dihapus as $kolom){
913 $this->dbforge->drop_column('artikel', $kolom);
914 }
915 }
916 // Hapus setiap kali migrasi, karena ternyata masih ada di database contoh s/d v2.4
917 // TODO: pindahkan ini jika nanti ada kategori dengan nilai 1003.
918 $this->db->where('id_kategori',1003)->delete('artikel');
919 // Tambah tautan ke form administrasi widget
920 if (!$this->db->field_exists('form_admin', 'widget')) {
921 $fields = array(
922 'form_admin' => array(
923 'type' => 'VARCHAR',
924 'constraint' => 100
925 )
926 );
927 $this->dbforge->add_column('widget', $fields);
928 $this->db->where('isi','layanan_mandiri.php')->update('widget',array('form_admin'=>'mandiri'));
929 $this->db->where('isi','aparatur_desa.php')->update('widget',array('form_admin'=>'pengurus'));
930 $this->db->where('isi','agenda.php')->update('widget',array('form_admin'=>'web/index/1000'));
931 $this->db->where('isi','galeri.php')->update('widget',array('form_admin'=>'gallery'));
932 $this->db->where('isi','komentar.php')->update('widget',array('form_admin'=>'komentar'));
933 $this->db->where('isi','media_sosial.php')->update('widget',array('form_admin'=>'sosmed'));
934 $this->db->where('isi','peta_lokasi_kantor.php')->update('widget',array('form_admin'=>'hom_desa'));
935 }
936 // Tambah kolom setting widget
937 if (!$this->db->field_exists('setting', 'widget')) {
938 $fields = array(
939 'setting' => array(
940 'type' => 'text'
941 )
942 );
943 $this->dbforge->add_column('widget', $fields);
944 }
945 // Ubah nama widget menjadi sinergi_program
946 $this->db->select('id')->where('isi','sinergitas_program.php')->update('widget', array('isi'=>'sinergi_program.php', 'judul'=>'Sinergi Program','form_admin'=>'web_widget/admin/sinergi_program'));
947 // Tambah widget sinergi_program
948 $widget = $this->db->select('id')->where('isi','sinergi_program.php')->get('widget')->row();
949 if (!$widget->id) {
950 $widget_baru = array('judul'=>'Sinergi Program','isi'=>'sinergi_program.php','enabled'=>1,'urut'=>1,'jenis_widget'=>1,'form_admin'=>'web_widget/admin/sinergi_program');
951 $this->db->insert('widget',$widget_baru);
952 }
953 }
954
955 function migrasi_117_ke_20(){
956 if (!$this->db->table_exists('setting_aplikasi') ) {
957 $query = "
958 CREATE TABLE `setting_aplikasi` (
959 `id` int NOT NULL AUTO_INCREMENT,
960 `key` varchar(50),
961 `value` varchar(200),
962 `keterangan` varchar(200),
963 `jenis` varchar(30),
964 `kategori` varchar(30),
965 PRIMARY KEY (`id`)
966 );
967 ";
968 $this->db->query($query);
969
970 $this->reset_setting_aplikasi();
971 }
972 // Update untuk tambahan offline mode 2, sesudah masuk pra-rilis (ada yang sudah migrasi)
973 $this->db->where('id',12)->update('setting_aplikasi',array('value'=>'0','jenis'=>''));
974 // Update media_sosial
975 $this->db->where('id',3)->update('media_sosial',array('nama'=>'Google Plus'));
976 $this->db->where('id',4)->update('media_sosial',array('nama'=>'YouTube'));
977 // Tambah widget aparatur_desa
978 $widget = $this->db->select('id')->where(array('isi'=>'aparatur_desa.php', 'id_kategori'=>1003))->get('artikel')->row();
979 if (!$widget->id) {
980 $aparatur_desa = array('judul'=>'Aparatur Desa','isi'=>'aparatur_desa.php','enabled'=>1,'id_kategori'=>1003,'urut'=>1,'jenis_widget'=>1);
981 $this->db->insert('artikel',$aparatur_desa);
982 }
983 // Tambah foto aparatur desa
984 if (!$this->db->field_exists('foto', 'tweb_desa_pamong')) {
985 $fields = array(
986 'foto' => array(
987 'type' => 'VARCHAR',
988 'constraint' => 100
989 )
990 );
991 $this->dbforge->add_column('tweb_desa_pamong', $fields);
992 }
993 }
994
995 function migrasi_116_ke_117(){
996 // Tambah kolom log_penduduk
997 if (!$this->db->field_exists('no_kk', 'log_penduduk')) {
998 $query = "ALTER TABLE log_penduduk ADD no_kk decimal(16,0)";
999 $this->db->query($query);
1000 }
1001 if (!$this->db->field_exists('nama_kk', 'log_penduduk')) {
1002 $query = "ALTER TABLE log_penduduk ADD nama_kk varchar(100)";
1003 $this->db->query($query);
1004 }
1005 // Hapus surat_ubah_sesuaikan
1006 $this->db->where('url_surat', 'surat_ubah_sesuaikan')->delete('tweb_surat_format');
1007 // Tambah kolom log_surat untuk surat non-warga
1008 if (!$this->db->field_exists('nik_non_warga', 'log_surat')) {
1009 $query = "ALTER TABLE log_surat ADD nik_non_warga decimal(16,0)";
1010 $this->db->query($query);
1011 }
1012 if (!$this->db->field_exists('nama_non_warga', 'log_surat')) {
1013 $query = "ALTER TABLE log_surat ADD nama_non_warga varchar(100)";
1014 $this->db->query($query);
1015 }
1016 $query = "ALTER TABLE log_surat MODIFY id_pend int(11) DEFAULT NULL";
1017 $this->db->query($query);
1018 // Tambah contoh surat non-warga
1019 $query = "
1020 INSERT INTO tweb_surat_format(nama, url_surat, kode_surat, jenis) VALUES
1021 ('Domisili Usaha Non-Warga', 'surat_domisili_usaha_non_warga', 'S-37', 1)
1022 ON DUPLICATE KEY UPDATE
1023 nama = VALUES(nama),
1024 url_surat = VALUES(url_surat),
1025 kode_surat = VALUES(kode_surat),
1026 jenis = VALUES(jenis);
1027 ";
1028 $this->db->query($query);
1029 }
1030
1031 function migrasi_115_ke_116(){
1032 // Ubah surat N-1 menjadi surat gabungan N-1 s/d N-7
1033 $this->db->where('url_surat','surat_ket_nikah')->update('tweb_surat_format',array('nama'=>'Keterangan Untuk Nikah (N-1 s/d N-7)'));
1034 // Hapus surat N-2 s/d N-7 yang sudah digabungkan ke surat_ket_nikah
1035 $this->db->where('url_surat','surat_ket_asalusul')->delete('tweb_surat_format');
1036 $this->db->where('url_surat','surat_persetujuan_mempelai')->delete('tweb_surat_format');
1037 $this->db->where('url_surat','surat_ket_orangtua')->delete('tweb_surat_format');
1038 $this->db->where('url_surat','surat_izin_orangtua')->delete('tweb_surat_format');
1039 $this->db->where('url_surat','surat_ket_kematian_suami_istri')->delete('tweb_surat_format');
1040 $this->db->where('url_surat','surat_kehendak_nikah')->delete('tweb_surat_format');
1041 $this->db->where('url_surat','surat_ket_wali')->delete('tweb_surat_format');
1042 // Tambah kolom untuk penandatangan surat
1043 if (!$this->db->field_exists('pamong_ttd', 'tweb_desa_pamong')) {
1044 $query = "ALTER TABLE tweb_desa_pamong ADD pamong_ttd tinyint(1)";
1045 $this->db->query($query);
1046 }
1047 // Hapus surat_pindah_antar_kab_prov
1048 $this->db->where('url_surat','surat_pindah_antar_kab_prov')->delete('tweb_surat_format');
1049 }
1050
1051 function migrasi_114_ke_115(){
1052 // Tambah kolom untuk peserta program
1053 if (!$this->db->field_exists('kartu_nik', 'program_peserta')) {
1054 $query = "ALTER TABLE program_peserta ADD kartu_nik decimal(16,0)";
1055 $this->db->query($query);
1056 }
1057 if (!$this->db->field_exists('kartu_nama', 'program_peserta')) {
1058 $query = "ALTER TABLE program_peserta ADD kartu_nama varchar(100)";
1059 $this->db->query($query);
1060 }
1061 if (!$this->db->field_exists('kartu_tempat_lahir', 'program_peserta')) {
1062 $query = "ALTER TABLE program_peserta ADD kartu_tempat_lahir varchar(100)";
1063 $this->db->query($query);
1064 }
1065 if (!$this->db->field_exists('kartu_tanggal_lahir', 'program_peserta')) {
1066 $query = "ALTER TABLE program_peserta ADD kartu_tanggal_lahir date";
1067 $this->db->query($query);
1068 }
1069 if (!$this->db->field_exists('kartu_alamat', 'program_peserta')) {
1070 $query = "ALTER TABLE program_peserta ADD kartu_alamat varchar(200)";
1071 $this->db->query($query);
1072 }
1073 }
1074
1075 function migrasi_113_ke_114(){
1076 // Tambah kolom untuk slider
1077 if (!$this->db->field_exists('slider', 'gambar_gallery')) {
1078 $query = "ALTER TABLE gambar_gallery ADD slider tinyint(1)";
1079 $this->db->query($query);
1080 }
1081 }
1082
1083 function migrasi_112_ke_113(){
1084 // Tambah data desa
1085 if (!$this->db->field_exists('nip_kepala_desa', 'config')) {
1086 $query = "ALTER TABLE config ADD nip_kepala_desa decimal(18,0)";
1087 $this->db->query($query);
1088 }
1089 if (!$this->db->field_exists('email_desa', 'config')) {
1090 $query = "ALTER TABLE config ADD email_desa varchar(50)";
1091 $this->db->query($query);
1092 }
1093 if (!$this->db->field_exists('telepon', 'config')) {
1094 $query = "ALTER TABLE config ADD telepon varchar(50)";
1095 $this->db->query($query);
1096 }
1097 if (!$this->db->field_exists('website', 'config')) {
1098 $query = "ALTER TABLE config ADD website varchar(100)";
1099 $this->db->query($query);
1100 }
1101 // Gabung F-1.15 dan F-1.01 menjadi satu lampiran surat_permohonan_kartu_keluarga
1102 $this->db->where('url_surat','surat_permohonan_kartu_keluarga')->update('tweb_surat_format',array('lampiran'=>'f-1.15.php,f-1.01.php'));
1103 }
1104
1105 // Berdasarkan analisa database yang dikirim oleh AdJie Reverb Impulse
1106 function migrasi_cri_lama(){
1107 if (!$this->db->field_exists('enabled', 'kategori')) {
1108 $query = "ALTER TABLE kategori ADD enabled tinyint(4) DEFAULT 1";
1109 $this->db->query($query);
1110 }
1111 if (!$this->db->field_exists('parrent', 'kategori')) {
1112 $query = "ALTER TABLE kategori ADD parrent tinyint(4) DEFAULT 0";
1113 $this->db->query($query);
1114 }
1115 if (!$this->db->field_exists('kode_surat', 'tweb_surat_format')) {
1116 $query = "ALTER TABLE tweb_surat_format ADD kode_surat varchar(10)";
1117 $this->db->query($query);
1118 }
1119 }
1120
1121 function migrasi_03_ke_04(){
1122 $query = "
1123 CREATE TABLE IF NOT EXISTS `tweb_penduduk_mandiri` (
1124 `nik` decimal(16,0) NOT NULL,
1125 `pin` char(32) NOT NULL,
1126 `last_login` datetime,
1127 `tanggal_buat` date NOT NULL,
1128 PRIMARY KEY (`nik`)
1129 );
1130 ";
1131 $this->db->query($query);
1132
1133 $query = "
1134 CREATE TABLE IF NOT EXISTS `program` (
1135 `id` int NOT NULL AUTO_INCREMENT,
1136 `nama` varchar(100) NOT NULL,
1137 `sasaran` tinyint,
1138 `ndesc` varchar(200),
1139 `sdate` date NOT NULL,
1140 `edate` date NOT NULL,
1141 `userid` mediumint NOT NULL,
1142 `status` int(10),
1143 PRIMARY KEY (`id`)
1144 );
1145 ";
1146 $this->db->query($query);
1147
1148 $query = "
1149 CREATE TABLE IF NOT EXISTS `program_peserta` (
1150 `id` int NOT NULL AUTO_INCREMENT,
1151 `peserta` decimal(16,0) NOT NULL,
1152 `program_id` int NOT NULL,
1153 `sasaran` tinyint,
1154 PRIMARY KEY (`id`)
1155 );
1156 ";
1157 $this->db->query($query);
1158
1159 $query = "
1160 CREATE TABLE IF NOT EXISTS `data_persil` (
1161 `id` int NOT NULL AUTO_INCREMENT,
1162 `nik` decimal(16,0) NOT NULL,
1163 `nama` varchar(100) NOT NULL,
1164 `persil_jenis_id` int NOT NULL,
1165 `id_clusterdesa` int NOT NULL,
1166 `luas` int,
1167 `no_sppt_pbb` int,
1168 `kelas` varchar(50),
1169 `persil_peruntukan_id` int NOT NULL,
1170 `alamat_ext` varchar(100),
1171 `userID` mediumint,
1172 PRIMARY KEY (`id`)
1173 );
1174 ";
1175 $this->db->query($query);
1176
1177 $query = "
1178 CREATE TABLE IF NOT EXISTS `data_persil_peruntukan` (
1179 `id` int NOT NULL AUTO_INCREMENT,
1180 `nama` varchar(100) NOT NULL,
1181 `ndesc` varchar(200),
1182 PRIMARY KEY (`id`)
1183 );
1184 ";
1185 $this->db->query($query);
1186
1187 $query = "
1188 CREATE TABLE IF NOT EXISTS `data_persil_jenis` (
1189 `id` int NOT NULL AUTO_INCREMENT,
1190 `nama` varchar(100) NOT NULL,
1191 `ndesc` varchar(200),
1192 PRIMARY KEY (`id`)
1193 );
1194 ";
1195 $this->db->query($query);
1196 }
1197
1198 function migrasi_08_ke_081() {
1199 if (!$this->db->field_exists('nama_surat', 'log_surat')) {
1200 $query = "ALTER TABLE `log_surat` ADD `nama_surat` varchar(100)";
1201 $this->db->query($query);
1202 }
1203 }
1204
1205 function migrasi_082_ke_09() {
1206 if (!$this->db->field_exists('catatan', 'log_penduduk')) {
1207 $query = "ALTER TABLE `log_penduduk` ADD `catatan` text";
1208 $this->db->query($query);
1209 }
1210 }
1211
1212 function migrasi_092_ke_010() {
1213 // CREATE UNIQUE INDEX migrasi_0_10_url_surat ON tweb_surat_format (url_surat);
1214
1215 // Hapus surat duplikat
1216 $kriteria = array('id' => 19, 'url_surat' => 'surat_ket_kehilangan');
1217 $this->db->where($kriteria);
1218 $this->db->delete('tweb_surat_format');
1219
1220 $query = "
1221 INSERT INTO `tweb_surat_format` (`id`, `nama`, `url_surat`, `kode_surat`) VALUES
1222 (1, 'Keterangan Pengantar', 'surat_ket_pengantar', 'S-01'),
1223 (2, 'Keterangan Penduduk', 'surat_ket_penduduk', 'S-02'),
1224 (3, 'Biodata Penduduk', 'surat_bio_penduduk', 'S-03'),
1225 (5, 'Keterangan Pindah Penduduk', 'surat_ket_pindah_penduduk', 'S-04'),
1226 (6, 'Keterangan Jual Beli', 'surat_ket_jual_beli', 'S-05'),
1227 (7, 'Pengantar Pindah Antar Kabupaten/ Provinsi', 'surat_pindah_antar_kab_prov', 'S-06'),
1228 (8, 'Pengantar Surat Keterangan Catatan Kepolisian', 'surat_ket_catatan_kriminal', 'S-07'),
1229 (9, 'Keterangan KTP dalam Proses', 'surat_ket_ktp_dalam_proses', 'S-08'),
1230 (10, 'Keterangan Beda Identitas', 'surat_ket_beda_nama', 'S-09'),
1231 (11, 'Keterangan Bepergian / Jalan', 'surat_jalan', 'S-10'),
1232 (12, 'Keterangan Kurang Mampu', 'surat_ket_kurang_mampu', 'S-11'),
1233 (13, 'Pengantar Izin Keramaian', 'surat_izin_keramaian', 'S-12'),
1234 (14, 'Pengantar Laporan Kehilangan', 'surat_ket_kehilangan', 'S-13'),
1235 (15, 'Keterangan Usaha', 'surat_ket_usaha', 'S-14'),
1236 (16, 'Keterangan JAMKESOS', 'surat_ket_jamkesos', 'S-15'),
1237 (17, 'Keterangan Domisili Usaha', 'surat_ket_domisili_usaha', 'S-16'),
1238 (18, 'Keterangan Kelahiran', 'surat_ket_kelahiran', 'S-17'),
1239 (20, 'Permohonan Akta Lahir', 'surat_permohonan_akta', 'S-18'),
1240 (21, 'Pernyataan Belum Memiliki Akta Lahir', 'surat_pernyataan_akta', 'S-19'),
1241 (22, 'Permohonan Duplikat Kelahiran', 'surat_permohonan_duplikat_kelahiran', 'S-20'),
1242 (24, 'Keterangan Kematian', 'surat_ket_kematian', 'S-21'),
1243 (25, 'Keterangan Lahir Mati', 'surat_ket_lahir_mati', 'S-22'),
1244 (26, 'Keterangan Untuk Nikah (N-1)', 'surat_ket_nikah', 'S-23'),
1245 (27, 'Keterangan Asal Usul (N-2)', 'surat_ket_asalusul', 'S-24'),
1246 (28, 'Persetujuan Mempelai (N-3)', 'surat_persetujuan_mempelai', 'S-25'),
1247 (29, 'Keterangan Tentang Orang Tua (N-4)', 'surat_ket_orangtua', 'S-26'),
1248 (30, 'Keterangan Izin Orang Tua(N-5)', 'surat_izin_orangtua', 'S-27'),
1249 (31, 'Keterangan Kematian Suami/Istri(N-6)', 'surat_ket_kematian_suami_istri', 'S-28'),
1250 (32, 'Pemberitahuan Kehendak Nikah (N-7)', 'surat_kehendak_nikah', 'S-29'),
1251 (33, 'Keterangan Pergi Kawin', 'surat_ket_pergi_kawin', 'S-30'),
1252 (34, 'Keterangan Wali', 'surat_ket_wali', 'S-31'),
1253 (35, 'Keterangan Wali Hakim', 'surat_ket_wali_hakim', 'S-32'),
1254 (36, 'Permohonan Duplikat Surat Nikah', 'surat_permohonan_duplikat_surat_nikah', 'S-33'),
1255 (37, 'Permohonan Cerai', 'surat_permohonan_cerai', 'S-34'),
1256 (38, 'Keterangan Pengantar Rujuk/Cerai', 'surat_ket_rujuk_cerai', 'S-35')
1257 ON DUPLICATE KEY UPDATE
1258 nama = VALUES(nama),
1259 url_surat = VALUES(url_surat);
1260 ";
1261 $this->db->query($query);
1262 // surat_ubah_sesuaikan perlu ditangani berbeda, karena ada pengguna di mana
1263 // url surat_ubah_sesuaikan memiliki id yang bukan 39, sedangkan id 39 juga dipakai untuk surat lain
1264 $this->db->where('url_surat', 'surat_ubah_sesuaikan');
1265 $query = $this->db->get('tweb_surat_format');
1266 // Tambahkan surat_ubah_sesuaikan apabila belum ada
1267 if($query->num_rows()==0){
1268 $data = array(
1269 'nama' => 'Ubah Sesuaikan',
1270 'url_surat' => 'surat_ubah_sesuaikan',
1271 'kode_surat' => 'S-36'
1272 );
1273 $this->db->insert('tweb_surat_format', $data);
1274 }
1275
1276 // DROP INDEX migrasi_0_10_url_surat ON tweb_surat_format;
1277
1278 /* Jangan buat index unik kode_surat, karena kolom ini digunakan
1279 untuk merekam klasifikasi surat yang tidak unik. */
1280 // $db = $this->db->database;
1281 // $query = "
1282 // SELECT COUNT(1) IndexIsThere FROM INFORMATION_SCHEMA.STATISTICS
1283 // WHERE table_schema=? AND table_name='tweb_surat_format' AND index_name='kode_surat';
1284 // ";
1285 // $hasil = $this->db->query($query, $db);
1286 // $data = $hasil->row_array();
1287 // if ($data['IndexIsThere'] == 0) {
1288 // $query = "
1289 // CREATE UNIQUE INDEX kode_surat ON tweb_surat_format (kode_surat);
1290 // ";
1291 // $this->db->query($query);
1292 // }
1293
1294 if (!$this->db->field_exists('tgl_cetak_kk', 'tweb_keluarga')) {
1295 $query = "ALTER TABLE tweb_keluarga ADD tgl_cetak_kk datetime";
1296 $this->db->query($query);
1297 }
1298 $query = "ALTER TABLE tweb_penduduk_mandiri MODIFY tanggal_buat datetime";
1299 $this->db->query($query);
1300 }
1301
1302 function migrasi_010_ke_10() {
1303 $query = "
1304 INSERT INTO tweb_penduduk_pekerjaan(id, nama) VALUES (89, 'LAINNYA')
1305 ON DUPLICATE KEY UPDATE
1306 id = VALUES(id),
1307 nama = VALUES(nama);
1308 ";
1309 $this->db->query($query);
1310 }
1311
1312 function migrasi_10_ke_11() {
1313 if (!$this->db->field_exists('kk_lk', 'log_bulanan')) {
1314 $query = "ALTER TABLE log_bulanan ADD kk_lk int(11)";
1315 $this->db->query($query);
1316 }
1317 if (!$this->db->field_exists('kk_pr', 'log_bulanan')) {
1318 $query = "ALTER TABLE log_bulanan ADD kk_pr int(11)";
1319 $this->db->query($query);
1320 }
1321
1322 if (!$this->db->field_exists('urut', 'artikel')) {
1323 $query = "ALTER TABLE artikel ADD urut int(5)";
1324 $this->db->query($query);
1325 }
1326 if (!$this->db->field_exists('jenis_widget', 'artikel')) {
1327 $query = "ALTER TABLE artikel ADD jenis_widget tinyint(2) NOT NULL DEFAULT 3";
1328 $this->db->query($query);
1329 }
1330
1331 if (!$this->db->table_exists('log_keluarga') ) {
1332 $query = "
1333 CREATE TABLE `log_keluarga` (
1334 `id` int(10) NOT NULL AUTO_INCREMENT,
1335 `id_kk` int(11) NOT NULL,
1336 `kk_sex` tinyint(2) NOT NULL,
1337 `id_peristiwa` int(4) NOT NULL,
1338 `tgl_peristiwa` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
1339 PRIMARY KEY (`id`),
1340 UNIQUE KEY `id_kk` (`id_kk`,`id_peristiwa`,`tgl_peristiwa`)
1341 ) ENGINE=".$this->engine." AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
1342 ";
1343 $this->db->query($query);
1344 }
1345
1346 $query = "
1347 DROP VIEW IF EXISTS data_surat;
1348 ";
1349 $this->db->query($query);
1350
1351 $query = "
1352 DROP TABLE IF EXISTS data_surat;
1353 ";
1354 $this->db->query($query);
1355
1356 $query = "
1357 CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `data_surat` AS select `u`.`id` AS `id`,`u`.`nama` AS `nama`,`x`.`nama` AS `sex`,`u`.`tempatlahir` AS `tempatlahir`,`u`.`tanggallahir` AS `tanggallahir`,(select (date_format(from_days((to_days(now()) - to_days(`tweb_penduduk`.`tanggallahir`))),'%Y') + 0) from `tweb_penduduk` where (`tweb_penduduk`.`id` = `u`.`id`)) AS `umur`,`w`.`nama` AS `status_kawin`,`f`.`nama` AS `warganegara`,`a`.`nama` AS `agama`,`d`.`nama` AS `pendidikan`,`j`.`nama` AS `pekerjaan`,`u`.`nik` AS `nik`,`c`.`rt` AS `rt`,`c`.`rw` AS `rw`,`c`.`dusun` AS `dusun`,`k`.`no_kk` AS `no_kk`,(select `tweb_penduduk`.`nama` from `tweb_penduduk` where (`tweb_penduduk`.`id` = `k`.`nik_kepala`)) AS `kepala_kk` from ((((((((`tweb_penduduk` `u` left join `tweb_penduduk_sex` `x` on((`u`.`sex` = `x`.`id`))) left join `tweb_penduduk_kawin` `w` on((`u`.`status_kawin` = `w`.`id`))) left join `tweb_penduduk_agama` `a` on((`u`.`agama_id` = `a`.`id`))) left join `tweb_penduduk_pendidikan_kk` `d` on((`u`.`pendidikan_kk_id` = `d`.`id`))) left join `tweb_penduduk_pekerjaan` `j` on((`u`.`pekerjaan_id` = `j`.`id`))) left join `tweb_wil_clusterdesa` `c` on((`u`.`id_cluster` = `c`.`id`))) left join `tweb_keluarga` `k` on((`u`.`id_kk` = `k`.`id`))) left join `tweb_penduduk_warganegara` `f` on((`u`.`warganegara_id` = `f`.`id`)));
1358 ";
1359 $this->db->query($query);
1360
1361 $system_widgets = array(
1362 'Layanan Mandiri' => 'layanan_mandiri.php',
1363 'Agenda' => 'agenda.php',
1364 'Galeri' => 'galeri.php',
1365 'Statistik' => 'statistik.php',
1366 'Komentar' => 'komentar.php',
1367 'Media Sosial' => 'media_sosial.php',
1368 'Peta Lokasi Kantor' => 'peta_lokasi_kantor.php',
1369 'Statistik Pengunjung' => 'statistik_pengunjung.php',
1370 'Arsip Artikel' => 'arsip_artikel.php'
1371 );
1372
1373 foreach($system_widgets as $key => $value) {
1374 $this->db->select('id');
1375 $this->db->where(array('isi' => $value, 'id_kategori' => 1003));
1376 $q = $this->db->get('artikel');
1377 $widget = $q->row_array();
1378 if (!$widget['id']) {
1379 $query = "
1380 INSERT INTO artikel (judul,isi,enabled,id_kategori,urut,jenis_widget)
1381 VALUES ('$key','$value',1,1003,1,1);";
1382 $this->db->query($query);
1383 }
1384 }
1385 }
1386
1387 function migrasi_111_ke_12() {
1388 if (!$this->db->field_exists('alamat', 'tweb_keluarga')) {
1389 $query = "ALTER TABLE tweb_keluarga ADD alamat varchar(200)";
1390 $this->db->query($query);
1391 }
1392 }
1393
1394 function migrasi_124_ke_13() {
1395 if (!$this->db->field_exists('urut', 'menu')) {
1396 $query = "ALTER TABLE menu ADD urut int(5)";
1397 $this->db->query($query);
1398 }
1399 }
1400
1401 function migrasi_13_ke_14() {
1402 $query = "
1403 INSERT INTO user_grup (id, nama) VALUES (4, 'Kontributor')
1404 ON DUPLICATE KEY UPDATE
1405 id = VALUES(id),
1406 nama = VALUES(nama);
1407 ";
1408 $this->db->query($query);
1409
1410 // Buat tanggalperkawinan dan tanggalperceraian boleh NULL
1411 $query = "ALTER TABLE tweb_penduduk CHANGE tanggalperkawinan tanggalperkawinan DATE NULL DEFAULT NULL;";
1412 $this->db->query($query);
1413 $query = "ALTER TABLE tweb_penduduk CHANGE tanggalperceraian tanggalperceraian DATE NULL DEFAULT NULL;";
1414 $this->db->query($query);
1415
1416 // Ubah tanggal menjadi NULL apabila 0000-00-00
1417 $query = "UPDATE tweb_penduduk SET tanggalperkawinan=NULL WHERE tanggalperkawinan='0000-00-00' OR tanggalperkawinan='00-00-0000';";
1418 $this->db->query($query);
1419 $query = "UPDATE tweb_penduduk SET tanggalperceraian=NULL WHERE tanggalperceraian='0000-00-00' OR tanggalperceraian='00-00-0000';";
1420 $this->db->query($query);
1421 }
1422
1423 function migrasi_14_ke_15() {
1424 // Tambah kolom di tabel tweb_penduduk
1425 if (!$this->db->field_exists('cara_kb_id', 'tweb_penduduk')) {
1426 $query = "ALTER TABLE tweb_penduduk ADD cara_kb_id tinyint(2) NULL DEFAULT NULL;";
1427 $this->db->query($query);
1428 }
1429
1430 // Tambah tabel cara_kb
1431 $query = "DROP TABLE IF EXISTS tweb_cara_kb;";
1432 $this->db->query($query);
1433
1434 $query = "
1435 CREATE TABLE tweb_cara_kb (
1436 id tinyint(5) NOT NULL AUTO_INCREMENT,
1437 nama varchar(50) NOT NULL,
1438 sex tinyint(2),
1439 PRIMARY KEY (id)
1440 ) ENGINE=".$this->engine." AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
1441 ";
1442 $this->db->query($query);
1443
1444 $query = "
1445 INSERT INTO tweb_cara_kb (id, nama, sex) VALUES
1446 (1, 'Pil', 2),
1447 (2, 'IUD', 2),
1448 (3, 'Suntik', 2),
1449 (4, 'Kondom', 1),
1450 (5, 'Susuk KB', 2),
1451 (6, 'Sterilisasi Wanita', 2),
1452 (7, 'Sterilisasi Pria', 1),
1453 (99, 'Lainnya', 3);
1454 ";
1455 $this->db->query($query);
1456
1457 // Ubah tanggallahir supaya tidak tampil apabila kosong
1458 $query = "ALTER TABLE tweb_penduduk CHANGE tanggallahir tanggallahir DATE NULL DEFAULT NULL;";
1459 $this->db->query($query);
1460 $query = "
1461 UPDATE tweb_penduduk SET tanggallahir=NULL
1462 WHERE tanggallahir='0000-00-00' OR tanggallahir='00-00-0000';
1463 ";
1464 $this->db->query($query);
1465 }
1466
1467 function migrasi_15_ke_16(){
1468 // Buat kk_sex boleh NULL
1469 $query = "ALTER TABLE log_keluarga CHANGE kk_sex kk_sex tinyint(2) NULL DEFAULT NULL;";
1470 $this->db->query($query);
1471
1472 // ==== Gabung program bantuan keluarga statik ke dalam modul Program Bantuan
1473
1474 $program_keluarga = array(
1475 "Raskin" => "raskin",
1476 "BLSM" => "id_blt",
1477 "PKH" => "id_pkh",
1478 "Bedah Rumah" => "id_bedah_rumah"
1479 );
1480 foreach ($program_keluarga as $key => $value) {
1481 // cari keluarga anggota program
1482 if (!$this->db->field_exists($value, 'tweb_keluarga')) continue;
1483
1484 $this->db->select("no_kk");
1485 $this->db->where("$value",1);
1486 $q = $this->db->get("tweb_keluarga");
1487 if ( $q->num_rows() > 0 ) {
1488 // buat program
1489 $data = array(
1490 'sasaran' => 2,
1491 'nama' => $key,
1492 'ndesc' => '',
1493 'userid' => 0,
1494 'sdate' => date("Y-m-d",strtotime("-1 year")),
1495 'edate' => date("Y-m-d",strtotime("+1 year"))
1496 );
1497 $this->db->insert('program', $data);
1498 $id_program = $this->db->insert_id();
1499 // untuk setiap keluarga anggota program buat program_peserta
1500 $data = $q->result_array();
1501 foreach ($data as $peserta_keluarga) {
1502 $peserta = array(
1503 'peserta' => $peserta_keluarga['no_kk'],
1504 'program_id' => $id_program,
1505 'sasaran' => 2
1506 );
1507 $this->db->insert('program_peserta', $peserta);
1508 }
1509 }
1510 // Hapus kolom program di tweb_keluarga
1511 $sql = "ALTER TABLE tweb_keluarga DROP COLUMN $value";
1512 $this->db->query($sql);
1513 }
1514 // ==== Gabung program bantuan penduduk statik ke dalam modul Program Bantuan
1515
1516 $program_penduduk = array(
1517 "JAMKESMAS" => "jamkesmas"
1518 );
1519 foreach ($program_penduduk as $key => $value) {
1520 // cari penduduk anggota program
1521 if (!$this->db->field_exists($value, 'tweb_penduduk')) continue;
1522
1523 $this->db->select("nik");
1524 $this->db->where("$value",1);
1525 $q = $this->db->get("tweb_penduduk");
1526 if ( $q->num_rows() > 0 ) {
1527 // buat program
1528 $data = array(
1529 'sasaran' => 1,
1530 'nama' => $key,
1531 'ndesc' => '',
1532 'userid' => 0,
1533 'sdate' => date("Y-m-d",strtotime("-1 year")),
1534 'edate' => date("Y-m-d",strtotime("+1 year"))
1535 );
1536 $this->db->insert('program', $data);
1537 $id_program = $this->db->insert_id();
1538 // untuk setiap penduduk anggota program buat program_peserta
1539 $data = $q->result_array();
1540 foreach ($data as $peserta_penduduk) {
1541 $peserta = array(
1542 'peserta' => $peserta_penduduk['nik'],
1543 'program_id' => $id_program,
1544 'sasaran' => 2
1545 );
1546 $this->db->insert('program_peserta', $peserta);
1547 }
1548 }
1549 // Hapus kolom program di tweb_penduduk
1550 $sql = "ALTER TABLE tweb_penduduk DROP COLUMN $value";
1551 $this->db->query($sql);
1552 }
1553 }
1554
1555 function migrasi_16_ke_17(){
1556 // Tambahkan id_cluster ke tabel keluarga
1557 if (!$this->db->field_exists('id_cluster', 'tweb_keluarga')) {
1558 $query = "ALTER TABLE tweb_keluarga ADD id_cluster int(11);";
1559 $this->db->query($query);
1560
1561 // Untuk setiap keluarga
1562 $query = $this->db->get('tweb_keluarga');
1563 $data = $query->result_array();
1564 foreach ($data as $keluarga) {
1565 // Ambil id_cluster kepala keluarga
1566 $this->db->select('id_cluster');
1567 $this->db->where('id', $keluarga['nik_kepala']);
1568 $query = $this->db->get('tweb_penduduk');
1569 $kepala_kk = $query->row_array();
1570 // Tulis id_cluster kepala keluarga ke keluarga
1571 if (isset($kepala_kk['id_cluster'])) {
1572 $this->db->where('id', $keluarga['id']);
1573 $this->db->update('tweb_keluarga', array('id_cluster' => $kepala_kk['id_cluster']));
1574 }
1575 }
1576 }
1577 }
1578
1579 function migrasi_17_ke_18() {
1580 // Tambah lampiran surat dgn template html2pdf
1581 if (!$this->db->field_exists('lampiran', 'log_surat')) {
1582 $query = "ALTER TABLE `log_surat` ADD `lampiran` varchar(100)";
1583 $this->db->query($query);
1584 }
1585 if (!$this->db->field_exists('lampiran', 'tweb_surat_format')) {
1586 $query = "ALTER TABLE `tweb_surat_format` ADD `lampiran` varchar(100)";
1587 $this->db->query($query);
1588 }
1589 $query = "
1590 INSERT INTO `tweb_surat_format` (`id`, `url_surat`, `lampiran`) VALUES
1591 (5, 'surat_ket_pindah_penduduk', 'f-1.08.php')
1592 ON DUPLICATE KEY UPDATE
1593 url_surat = VALUES(url_surat),
1594 lampiran = VALUES(lampiran);
1595 ";
1596 $this->db->query($query);
1597 }
1598
1599 function migrasi_18_ke_19() {
1600 // Hapus index unik untuk kode_surat kalau sempat dibuat sebelumnya
1601 $db = $this->db->database;
1602 $query = "
1603 SELECT COUNT(1) IndexIsThere FROM INFORMATION_SCHEMA.STATISTICS
1604 WHERE table_schema=? AND table_name='tweb_surat_format' AND index_name='kode_surat';
1605 ";
1606 $hasil = $this->db->query($query, $db);
1607 $data = $hasil->row_array();
1608 if ($data['IndexIsThere'] > 0) {
1609 $query = "
1610 DROP INDEX kode_surat ON tweb_surat_format;
1611 ";
1612 $this->db->query($query);
1613 }
1614
1615 // Hapus tabel yang tidak terpakai lagi
1616 $query = "DROP TABLE IF EXISTS ref_bedah_rumah, ref_blt, ref_jamkesmas, ref_pkh, ref_raskin, tweb_alamat_sekarang";
1617 $this->db->query($query);
1618 }
1619
1620 function migrasi_19_ke_110() {
1621 // Tambah nomor id_kartu untuk peserta program bantuan
1622 if (!$this->db->field_exists('no_id_kartu', 'program_peserta')) {
1623 $query = "ALTER TABLE program_peserta ADD no_id_kartu varchar(30)";
1624 $this->db->query($query);
1625 }
1626 }
1627
1628 function migrasi_110_ke_111() {
1629 // Buat folder desa/upload/pengesahan apabila belum ada
1630 if (!file_exists(LOKASI_PENGESAHAN)) {
1631 mkdir(LOKASI_PENGESAHAN, 0755);
1632 }
1633 // Tambah akti/non-aktifkan dan pilihan favorit format surat
1634 if (!$this->db->field_exists('kunci', 'tweb_surat_format')) {
1635 $query = "ALTER TABLE tweb_surat_format ADD kunci tinyint(1) NOT NULL DEFAULT '0'";
1636 $this->db->query($query);
1637 }
1638 if (!$this->db->field_exists('favorit', 'tweb_surat_format')) {
1639 $query = "ALTER TABLE tweb_surat_format ADD favorit tinyint(1) NOT NULL DEFAULT '0'";
1640 $this->db->query($query);
1641 }
1642 if (!$this->db->field_exists('id_pend', 'dokumen')) {
1643 $query = "ALTER TABLE dokumen ADD id_pend int(11) NOT NULL DEFAULT '0'";
1644 $this->db->query($query);
1645 }
1646
1647 if (!$this->db->table_exists('setting_modul') ) {
1648 $query = "
1649 CREATE TABLE `setting_modul` (
1650 `id` int(11) NOT NULL AUTO_INCREMENT,
1651 `modul` varchar(50) NOT NULL,
1652 `url` varchar(50) NOT NULL,
1653 `aktif` tinyint(1) NOT NULL DEFAULT '0',
1654 `ikon` varchar(50) NOT NULL,
1655 `urut` tinyint(4) NOT NULL,
1656 `level` tinyint(1) NOT NULL DEFAULT '2',
1657 `hidden` tinyint(1) NOT NULL DEFAULT '0',
1658 PRIMARY KEY (`id`)
1659 ) ENGINE=".$this->engine." AUTO_INCREMENT=15 DEFAULT CHARSET=utf8
1660 ";
1661 $this->db->query($query);
1662
1663 $query = "
1664 INSERT INTO setting_modul VALUES
1665 ('1','SID Home','hom_desa','1','go-home-5.png','1','2','1'),
1666 ('2','Penduduk','penduduk/clear','1','preferences-contact-list.png','2','2','0'),
1667 ('3','Statistik','statistik','1','statistik.png','3','2','0'),
1668 ('4','Cetak Surat','surat','1','applications-office-5.png','4','2','0'),
1669 ('5','Analisis','analisis_master/clear','1','analysis.png','5','2','0'),
1670 ('6','Bantuan','program_bantuan','1','program.png','6','2','0'),
1671 ('7','Persil','data_persil/clear','1','persil.png','7','2','0'),
1672 ('8','Plan','plan','1','plan.png','8','2','0'),
1673 ('9','Peta','gis','1','gis.png','9','2','0'),
1674 ('10','SMS','sms','1','mail-send-receive.png','10','2','0'),
1675 ('11','Pengguna','man_user/clear','1','system-users.png','11','1','1'),
1676 ('12','Database','database','1','database.png','12','1','0'),
1677 ('13','Admin Web','web','1','message-news.png','13','4','0'),
1678 ('14','Laporan','lapor','1','mail-reply-all.png','14','2','0');
1679 ";
1680 $this->db->query($query);
1681 }
1682
1683 /**
1684 Sesuaikan data modul analisis dengan SID 3.10
1685 */
1686
1687 // Tabel analisis_indikator
1688 $ubah_kolom = array(
1689 "`nomor` int(3) NOT NULL"
1690 );
1691 foreach ($ubah_kolom as $kolom_def){
1692 $query = "ALTER TABLE analisis_indikator MODIFY ".$kolom_def;
1693 $this->db->query($query);
1694 };
1695 if (!$this->db->field_exists('is_publik', 'analisis_indikator')) {
1696 $query = "ALTER TABLE analisis_indikator ADD `is_publik` tinyint(1) NOT NULL DEFAULT '0'";
1697 $this->db->query($query);
1698 }
1699
1700 // Tabel analisis_kategori_indikator
1701 if (!$this->db->field_exists('kategori_kode', 'analisis_kategori_indikator')) {
1702 $query = "ALTER TABLE analisis_kategori_indikator ADD `kategori_kode` varchar(3) NOT NULL";
1703 $this->db->query($query);
1704 }
1705
1706 // Tabel analisis_master
1707 if ($this->db->field_exists('kode_analiusis', 'analisis_master')) {
1708 $query = "ALTER TABLE analisis_master CHANGE `kode_analiusis` `kode_analisis` varchar(5) NOT NULL DEFAULT '00000'";
1709 $this->db->query($query);
1710 }
1711 if (!$this->db->field_exists('id_child', 'analisis_master')) {
1712 $query = "ALTER TABLE analisis_master ADD `id_child` smallint(4) NOT NULL";
1713 $this->db->query($query);
1714 }
1715
1716 // Tabel analisis_parameter
1717 if (!$this->db->field_exists('kode_jawaban', 'analisis_parameter')) {
1718 $query = "ALTER TABLE analisis_parameter ADD `kode_jawaban` int(3) NOT NULL";
1719 $this->db->query($query);
1720 }
1721 if (!$this->db->field_exists('asign', 'analisis_parameter')) {
1722 $query = "ALTER TABLE analisis_parameter ADD `asign` tinyint(1) NOT NULL DEFAULT '0'";
1723 $this->db->query($query);
1724 }
1725
1726 // Tabel analisis_respon
1727 $drop_kolom = array(
1728 "id",
1729 "tanggal_input"
1730 );
1731 foreach ($drop_kolom as $kolom_def){
1732 if ($this->db->field_exists($kolom_def, 'analisis_respon')) {
1733 $query = "ALTER TABLE analisis_respon DROP ".$kolom_def;
1734 $this->db->query($query);
1735 }
1736 };
1737
1738 // Tabel analisis_respon_bukti
1739 $query = "
1740 CREATE TABLE IF NOT EXISTS `analisis_respon_bukti` (
1741 `id_master` tinyint(4) NOT NULL,
1742 `id_periode` tinyint(4) NOT NULL,
1743 `id_subjek` int(11) NOT NULL,
1744 `pengesahan` varchar(100) NOT NULL,
1745 `tgl_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
1746 ) ENGINE=".$this->engine." DEFAULT CHARSET=utf8;
1747 ";
1748 $this->db->query($query);
1749
1750 // Tabel analisis_respon_hasil
1751 if ($this->db->field_exists('id', 'analisis_respon_hasil')) {
1752 $query = "ALTER TABLE analisis_respon_hasil DROP `id`";
1753 $this->db->query($query);
1754 }
1755 if (!$this->db->field_exists('tgl_update', 'analisis_respon_hasil')) {
1756 $query = "ALTER TABLE analisis_respon_hasil ADD `tgl_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP";
1757 $this->db->query($query);
1758 }
1759 $db = $this->db->database;
1760 $query = "
1761 SELECT COUNT(1) ConstraintSudahAda
1762 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
1763 WHERE TABLE_SCHEMA = ?
1764 AND TABLE_NAME = 'analisis_respon_hasil'
1765 AND CONSTRAINT_NAME = 'id_master'
1766 ";
1767 $hasil = $this->db->query($query, $db);
1768 $data = $hasil->row_array();
1769 if ($data['ConstraintSudahAda'] == 0) {
1770 $query = "ALTER TABLE analisis_respon_hasil ADD CONSTRAINT `id_master` UNIQUE (`id_master`,`id_periode`,`id_subjek`)";
1771 $this->db->query($query);
1772 }
1773
1774 /**
1775 Sesuaikan data modul persil dengan SID 3.10
1776 */
1777
1778 // Tabel data_persil
1779 $ubah_kolom = array(
1780 "`nik` varchar(64) NOT NULL",
1781 "`nama` varchar(128) NOT NULL COMMENT 'nomer persil'",
1782 "`persil_jenis_id` tinyint(2) NOT NULL",
1783 "`luas` decimal(7,2) NOT NULL",
1784 "`kelas` varchar(128) DEFAULT NULL",
1785 "`no_sppt_pbb` varchar(128) NOT NULL",
1786 "`persil_peruntukan_id` tinyint(2) NOT NULL"
1787 );
1788 foreach ($ubah_kolom as $kolom_def){
1789 $query = "ALTER TABLE data_persil MODIFY ".$kolom_def;
1790 $this->db->query($query);
1791 };
1792 if (!$this->db->field_exists('peta', 'data_persil')) {
1793 $query = "ALTER TABLE data_persil ADD `peta` text";
1794 $this->db->query($query);
1795 }
1796 if (!$this->db->field_exists('rdate', 'data_persil')) {
1797 $query = "ALTER TABLE data_persil ADD `rdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP";
1798 $this->db->query($query);
1799 }
1800
1801 // Tabel data_persil_jenis
1802 $ubah_kolom = array(
1803 "`nama` varchar(128) NOT NULL",
1804 "`ndesc` text NOT NULL"
1805 );
1806 foreach ($ubah_kolom as $kolom_def){
1807 $query = "ALTER TABLE data_persil_jenis MODIFY ".$kolom_def;
1808 $this->db->query($query);
1809 };
1810
1811 // Tabel data_persil_peruntukan
1812 $ubah_kolom = array(
1813 "`nama` varchar(128) NOT NULL",
1814 "`ndesc` text NOT NULL"
1815 );
1816 foreach ($ubah_kolom as $kolom_def){
1817 $query = "ALTER TABLE data_persil_peruntukan MODIFY ".$kolom_def;
1818 $this->db->query($query);
1819 };
1820
1821 // Ubah surat keterangan pindah penduduk untuk bisa memilih format lampiran
1822 $query = "
1823 INSERT INTO `tweb_surat_format` (`id`, `url_surat`, `lampiran`) VALUES
1824 (5, 'surat_ket_pindah_penduduk', 'f-1.08.php,f-1.25.php')
1825 ON DUPLICATE KEY UPDATE
1826 url_surat = VALUES(url_surat),
1827 lampiran = VALUES(lampiran);
1828 ";
1829 $this->db->query($query);
1830 }
1831
1832 function migrasi_111_ke_112() {
1833 // Ubah surat bio penduduk untuk menambah format lampiran
1834 $query = "
1835 INSERT INTO `tweb_surat_format` (`id`, `url_surat`, `lampiran`) VALUES
1836 (3, 'surat_bio_penduduk', 'f-1.01.php')
1837 ON DUPLICATE KEY UPDATE
1838 url_surat = VALUES(url_surat),
1839 lampiran = VALUES(lampiran);
1840 ";
1841 $this->db->query($query);
1842
1843 // Tabel tweb_penduduk melengkapi data F-1.01
1844 if (!$this->db->field_exists('telepon', 'tweb_penduduk')) {
1845 $query = "ALTER TABLE tweb_penduduk ADD `telepon` varchar(20)";
1846 $this->db->query($query);
1847 }
1848 if (!$this->db->field_exists('tanggal_akhir_paspor', 'tweb_penduduk')) {
1849 $query = "ALTER TABLE tweb_penduduk ADD `tanggal_akhir_paspor` date";
1850 $this->db->query($query);
1851 }
1852
1853 // Ketinggalan tabel gis_simbol
1854 if (!$this->db->table_exists('gis_simbol') ) {
1855 $query = "
1856 CREATE TABLE `gis_simbol` (
1857 `simbol` varchar(40) DEFAULT NULL
1858 ) ENGINE=".$this->engine." DEFAULT CHARSET=utf8;
1859 ";
1860 $this->db->query($query);
1861 // Isi dengan daftar icon yang ada di folder assets/images/gis/point
1862 $simbol_folder = FCPATH . 'assets/images/gis/point';
1863 $list_gis_simbol = scandir($simbol_folder);
1864 foreach ($list_gis_simbol as $simbol) {
1865 if ($simbol['0'] == '.') continue;
1866 $this->db->insert('gis_simbol', array('simbol' => $simbol));
1867 }
1868 }
1869 if (!$this->db->field_exists('jenis', 'tweb_surat_format')) {
1870 $query = "ALTER TABLE tweb_surat_format ADD jenis tinyint(2) NOT NULL DEFAULT 2";
1871 $this->db->query($query);
1872 // Update semua surat yang disediakan oleh rilis OpenSID
1873 $surat_sistem = array(
1874 'surat_ket_pengantar',
1875 'surat_ket_penduduk',
1876 'surat_bio_penduduk',
1877 'surat_ket_pindah_penduduk',
1878 'surat_ket_jual_beli',
1879 'surat_pindah_antar_kab_prov',
1880 'surat_ket_catatan_kriminal',
1881 'surat_ket_ktp_dalam_proses',
1882 'surat_ket_beda_nama',
1883 'surat_jalan',
1884 'surat_ket_kurang_mampu',
1885 'surat_izin_keramaian',
1886 'surat_ket_kehilangan',
1887 'surat_ket_usaha',
1888 'surat_ket_jamkesos',
1889 'surat_ket_domisili_usaha',
1890 'surat_ket_kelahiran',
1891 'surat_permohonan_akta',
1892 'surat_pernyataan_akta',
1893 'surat_permohonan_duplikat_kelahiran',
1894 'surat_ket_kematian',
1895 'surat_ket_lahir_mati',
1896 'surat_ket_nikah',
1897 'surat_ket_asalusul',
1898 'surat_persetujuan_mempelai',
1899 'surat_ket_orangtua',
1900 'surat_izin_orangtua',
1901 'surat_ket_kematian_suami_istri',
1902 'surat_kehendak_nikah',
1903 'surat_ket_pergi_kawin',
1904 'surat_ket_wali',
1905 'surat_ket_wali_hakim',
1906 'surat_permohonan_duplikat_surat_nikah',
1907 'surat_permohonan_cerai',
1908 'surat_ket_rujuk_cerai'
1909 );
1910 // Jenis surat yang bukan bagian rilis sistem sudah otomatis berisi nilai default (yaitu, 2)
1911 foreach ($surat_sistem as $url_surat) {
1912 $this->db->where('url_surat',$url_surat)->update('tweb_surat_format',array('jenis'=>1));
1913 }
1914 }
1915 // Tambah surat_permohonan_kartu_keluarga
1916 $this->db->where('url_surat', 'surat_ubah_sesuaikan')->update('tweb_surat_format',array('kode_surat' => 'P-01'));
1917 $query = "
1918 INSERT INTO tweb_surat_format (nama, url_surat, lampiran, kode_surat, jenis) VALUES
1919 ('Permohonan Kartu Keluarga', 'surat_permohonan_kartu_keluarga', 'f-1.15.php', 'S-36', 1)
1920 ON DUPLICATE KEY UPDATE
1921 nama = VALUES(nama),
1922 url_surat = VALUES(url_surat),
1923 lampiran = VALUES(lampiran),
1924 kode_surat = VALUES(kode_surat),
1925 jenis = VALUES(jenis);
1926 ";
1927 $this->db->query($query);
1928 // Tambah kolom no_kk_sebelumnya untuk penduduk yang pecah dari kartu keluarga
1929 if (!$this->db->field_exists('no_kk_sebelumnya', 'tweb_penduduk')) {
1930 $query = "ALTER TABLE tweb_penduduk ADD no_kk_sebelumnya varchar(30)";
1931 $this->db->query($query);
1932 }
1933 }
1934
1935 function kosongkan_db(){
1936 $table_lookup = array(
1937 "analisis_ref_state",
1938 "analisis_ref_subjek",
1939 "analisis_tipe_indikator",
1940 "artikel", //remove everything except widgets 1003
1941 "data_surat", // view
1942 "inventaris",
1943 "jenis_barang",
1944 "media_sosial", //?
1945 "provinsi",
1946 "setting_modul",
1947 "setting_aplikasi",
1948 "suplemen",
1949 "suplemen_terdata",
1950 "tweb_cacat",
1951 "tweb_cara_kb",
1952 "tweb_golongan_darah",
1953 "tweb_keluarga_sejahtera",
1954 "tweb_penduduk_agama",
1955 "tweb_penduduk_hubungan",
1956 "tweb_penduduk_kawin",
1957 "tweb_penduduk_pekerjaan",
1958 "tweb_penduduk_pendidikan",
1959 "tweb_penduduk_pendidikan_kk",
1960 "tweb_penduduk_sex",
1961 "tweb_penduduk_status",
1962 "tweb_penduduk_umur",
1963 "tweb_penduduk_warganegara",
1964 "tweb_rtm_hubungan",
1965 "tweb_sakit_menahun",
1966 "tweb_status_dasar",
1967 "tweb_surat_format",
1968 "user",
1969 "user_grup",
1970 "widget"
1971 );
1972
1973 // Hanya kosongkan contoh menu kalau pengguna memilih opsi itu
1974 if(empty($_POST['kosongkan_menu'])){
1975 array_push($table_lookup,"kategori","menu");
1976 }
1977
1978 // Hapus semua artikel kecuali artikel widget dengan kategori 1003
1979 $this->db->where("id_kategori !=", "1003");
1980 $query = $this->db->delete('artikel');
1981 // Hapus semua tabel kecuali table lookup
1982 $semua_table = $this->db->list_tables();
1983 foreach ($semua_table as $table){
1984 if (!in_array($table, $table_lookup)) {
1985 $query = "TRUNCATE ".$table;
1986 $this->db->query($query);
1987 }
1988 }
1989 // Tabel suplemen dan suplemen_terdata tidak bisa di TRUNCATE karena ada
1990 // relational constraint. Isi suplemen_terdata akan terhapus secara otomatis
1991 // pada saat menghapus isi suplemen.
1992 $this->db->query('DELETE FROM suplemen WHERE 1');
1993 // Tabel jenis_barang dan inventaris tidak bisa di TRUNCATE karena ada
1994 // relational constraint. Isi inventaris akan terhapus secara otomatis
1995 // pada saat menghapus isi jenis_barang.
1996 $this->db->query('DELETE FROM jenis_barang WHERE 1');
1997 // Tambahkan kembali Analisis DDK Profil Desa dan Analisis DAK Profil Desa
1998 $file_analisis = FCPATH . 'assets/import/analisis_DDK_Profil_Desa.xls';
1999 $this->analisis_import_model->import_excel($file_analisis,'DDK02',$jenis=1);
2000 $file_analisis = FCPATH . 'assets/import/analisis_DAK_Profil_Desa.xls';
2001 $this->analisis_import_model->import_excel($file_analisis,'DAK02',$jenis=1);
2002
2003 $_SESSION['success'] = 1;
2004 }
2005
2006
2007}
2008?>