Modul Template Installer (beta) untuk Lokomedia Part. 1

Ribet buka tutup jendela browser untuk menginstal template lokomedia? Ini yang kita alami jika akan mengganti template lokomedia dengan template yang baru. Karena kita harus masuk ke cpanel hosting (tidak berlaku diwebserver lokal) dan membuat database dihalaman administrator web yang berada di jendela atau tab berbeda. Mengapa tidak sekalian saja membuat installer di halaman administrator sehingga bisa memudahkan pengguna yang awam dengan file manager sebuah webhosting. Memakai Aplikasi FTP mungkin bisa dilakukan, namun lagi-lagi akan tambah membuat bingung bagi para pemula.

Sekarang mari kita pelajari bersama bagaimana membuat modul template installer ini. Walaupun tidak secanggih template installernya WordPress maupun Joomla, namun jurus ini patut untuk dicoba. Kita buat aturan terlebih dahulu bagaimana standar template yang boleh diinstal disini :

  • File upload dalam bentuk .zip yang didalamnya adalah folder template yang berisi file template.php beserta pelengkapnya (biasanya file-file seperti kiri.php, sidebar.php, folder css, folder images, folder javascript beserta isinya dll)
  • Pastikan nama file .zip sama dengan nama folder template
  • Template yang akan diinstal adalah template standar yang tidak perlu mengedit file lain maupun membuat table dalam database.

Kemudian kita buat sebuah alur kerja yang sederhana yaitu mengupload file .zip ke dalam folder templates, mengekstrak file .zip tersebut, dan menambah database dalam tabel templates kita. Dari alur kerja di atas sekarang akan kita terapkan dalam bahasa php. Kita tidak usah membuat modul baru, cukup dengan mengubah modul template yang lama. Buka file templates.php dari modul template di ../lokomedia/adminweb/modul/mod_templates/ dengan menggunakan code editor (boleh pakai apa saja. Pakai  notepad juga bisa) dan edit.

Tambahkan tombol instal template untuk menuju ke halaman form installer dengan kode berikut dibawah tombol tambah template dengan kode berikut :

<input type=button value='Instal Templates' 
          onclick=\"window.location.href='?module=templates&act=instaltemplates';\">

Kode diatas mengarahkan kita menuju act=instaltemplate. Sehingga kita harus membuat halaman dengan case ‘instaltemplates’. Caranya duplikat saja case ‘tambahtemplates’ yang sudah ada dan edit hingga menjadi seperti ini :

<?php
case "instaltemplates":
    echo "<h2>Instal Templates</h2>
          <form method=POST action='$aksi?module=templates&act=instal' enctype='multipart/form-data'>
          <table>
          <tr><td>Pilih File</td><td> : <input type='file' name='zip_file' /> *)</td></tr>
          <tr><td colspan=2><input type=submit name=submit value=Instal>
		  <input type=button value=Batal onclick=self.history.back()></td></tr>
          </table></form>";
     break;
?>

Pasti sudah paham dengan kode di atas. Kode diatas adalah membuat form upload file .zip template yang akan kita instal yang akan mengarahkan kita ke file aksi_templates.php dengan kondisi act=’instal’. Jika ingin menambahkan field input untuk post nama template dan template author dipersilahkan seperti pada form tambah template. Next step kita menuju file aksi_templates.php dan lakukan editing kode phpnya. Buat kondisional act=instal dengan isi program seperti ini:

<?php
elseif ($module=='templates' AND $act=='instal'){
	$nama_file 		= $_FILES["zip_file"]["name"];
	$lokasi_file 	= $_FILES["zip_file"]["tmp_name"];
	$tipe 			= $_FILES["zip_file"]["type"];
	$template 		= current(explode(".", $nama_file));
	$ekstensi 		= explode(".", $nama_file);
	$validasi 		= strtolower($ekstensi[1]) == 'zip' ? true : false;
	if(!$validasi) {
		echo "<script>window.alert('Instalasi template gagal, Pastikan file yang di Upload bertipe *.zip');
        	window.location=('../../media.php?module=templates')</script>";
	}else{
	$file_upload = "../../../templates/".$nama_file;
	if(move_uploaded_file($lokasi_file, $file_upload)) {
		$zip = new ZipArchive();
		$x = $zip->open($file_upload);
		if ($x === true) {
			$zip->extractTo("../../../templates/");
			$zip->close();
			unlink($file_upload);
			mysql_query("INSERT INTO templates(judul,pembuat,folder) VALUES('$template','$template','templates/$template')");
		}
		echo "<script>window.alert('Proses instalasi template berhasil, aktifkan template terlebih dahulu untuk melihat hasilnya');
        	window.location=('../../media.php?module=templates')</script>";
		} else {	
		echo "<script>window.alert('Instalasi template gagal, Silakan coba lagi');
        	window.location=('../../media.php?module=templates')</script>";
		}
	}
}
?>

Kode diatas dapat dipahami bahwa, pertama-tama kita mengambil beberapa variabel dari zip_file yang kita unggah dari form installer, diantaranya nama file, lokasi asal, tipe file, nama yang akan digunakan untuk membuat database, ekstensi file untuk validasi. Jika validasi filenya bukan zip maka akan muncul pesan error instalasi gagal. Namun bila filenya valid file zip akan dilanjutkan ke proses upload file, kemudian ekstak file, kemudian menghapus kembali file zip tersebut dengan fungsi unlink, dilanjutkan dengan menambah data untuk database. Jika proses ini berhasil maka akan muncul pesan sukses dan kita diarahkan kembali ke halaman modul template.

Selanjutnya tentu kita juga harus membuat sebuah fungsi uninstall template, karena akan sama repotnya ketika kita ingin menghapus template yang sudah tidak dipakai dalam website kita secara manual. Untuk teknik ini kita lanjutkan dalam artikel selanjutnya Modul Template Installer (beta) untuk Lokomedia Part. 2