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