Kegiatan setelah tamat kuliah magister adalah proyek bikin website untuk UMKM. Proyek ini bukan kegiatan utamaku sebagai target setelah study magister kimia, namun hanya kegiatan sampingan untuk mengisi waktu, kegiatan yang berpotensi menghasilkan uang, kegiatan yang mengasah kemampuan dan membantu bisnis orang lain. Project ini aku dapat dari kawanku yang sudah aku kenal sejak 2018.
Bagi teman-teman yang belum tahu, untuk membuat website itu diperlukan content management system. Tujuan dari content management system ini adalah memudahkan pengelola website untuk mengelola websitenya. Apabila kita mengabaikan atau tidak menggunakan content management system dalam membuat website, biasanya pengelola website akan kesulitan, terutama bidang teknis websitenya. Terdapat banyak ragam dari content management system, salah satunya adalah Wordpress yang merupakan content management system paling populer, tetapi justru menjadi content management system yang tidak aku sukai sebagai pengembang. Terserah apa anggapan orang, aku berpendapat bahwa template wordpress itu kompleks dan manual atau codex Wordpress untuk pengembangan itu tebal dan kurang memberikan contoh penggunaan dari setiap fungsinya. Sehingga untuk project ini, aku lebih memilih untuk membuat template dan content management system sendiri. Akhirnya aku memilih CodeIgniter sebagai framework untuk dikembangkan menjadi content management system. CodeIgniter (atau CI) merupakan framework berbasis PHP yang termasuk dalam bahasa pemprograman server side untuk website dinamis. Sebetulnya ada framework lain yang berbasis PHP, namun CI merupakan salah satu framework yang populer.
Dalam content management system yang aku buat ini terdapat satu fitur yang terinspirasi dari kawanku. Jadi, kawanku ini pernah menangani website yang menurut orang itu lemot di tempat kerjanya dulu. Kemudian, dia memperbaikinya dengan memindahkan atau mengungsikan semua gambar atau file yang berpotensi memperberat proses loading website ke Drive atau server lain yang bersifat publik. Selanjutnya, gambar dan file-file tersebut dipanggil dengan link. Ya.., kalau kasusnya berupa gambar, bisa dimuat dengan tag <IMG>. Dengan ide itu, aku mencoba untuk membuat library yang bisa digunakan pada CodeIgniter 4. Library itu masih aku kembangkan hingga aku menulis pos pada blog ini. Oh iya, aku membuat library ini dengan bantuan kecerdasan buatan. Hasil yang didapatkan cukup memuaskan, meskipun ada modifikasi yang aku tambahkan. Library yang sudah aku buat bersama kecerdasan buatan itu, kurang lebih seperti ini:
<?php | |
namespace App\Libraries; | |
class GoogleDriveHelper | |
{ | |
/** | |
* Ekstrak ID file dari URL Google Drive. | |
* | |
* @param string $url URL dari Google Drive | |
* @return string|null ID file atau null jika tidak valid | |
*/ | |
public function extractFileId(string $url): ?string | |
{ | |
// Pola regex untuk menangkap ID Google Drive | |
$pattern = '/\/d\/([a-zA-Z0-9_-]+)/'; | |
// Cari ID menggunakan regex | |
if (preg_match($pattern, $url, $matches)) { | |
return $matches[1]; // ID file ditemukan | |
} | |
// Jika tidak cocok dengan pola | |
return null; | |
} | |
/** | |
* Bangun URL gambar untuk ditampilan di tag <img> | |
* | |
* @param string $fileId ID file Google Drive | |
* @return string|null URL gambar atau null jika ID file kosong | |
*/ | |
public function urlBuildImg(string $fileId): ?string | |
{ | |
if (!empty($fileId)){ | |
// Format URL publik Google Drive untuk menampilkan gambar. | |
return 'https://lh3.googleusercontent.com/d/'.$fileId.'?authuser=1/view'; | |
} | |
return null; | |
} | |
} |
Mungkin seperti komentar yang sudah ada pada file library itu, tampaknya kegunaan setiap baris dari library itu sudah cukup jelas. Karena kita menggunakan CodeIgniter 4 sebagai framework dengan karakteristik model-view-controller (MVC), maka library itu tidak ada artinya. Berikut ini merupakan contoh controller sebagai penerapan dari library itu. Misalnya, nama controller-nya adalah Sandbox. Isi dari controller itu seperti ini:
<?php | |
namespace App\Controllers; | |
use App\Libraries\GoogleDriveHelper; | |
class Sandbox extends BaseController | |
{ | |
public function index() | |
{ | |
$url = "https://drive.google.com/file/d/1tjvXzQBS68xz9ADtRfw3Ec3N9wbWUy9t/view?usp=sharing"; | |
// Buat instance dari library | |
$driveHelper = new GoogleDriveHelper(); | |
// Ekstrak ID dari URL | |
$fileId = $driveHelper->extractFileId($url); | |
//Buat link dari ID agar cocok untuk dimasukkan dalam tag <img> | |
$links = $driveHelper->urlBuildImg($fileId); | |
$data = array( | |
'title' => $this->nama_usaha, | |
'page_title' => 'Sandbox', | |
'links' => $links, | |
); | |
return view('sandbox', $data); | |
} | |
} | |
Sedikit penjelasan mengenai kode sumber controller, library bertujuan untuk memisahkan ID dari file gambar dan membangun kembali ID tersebut menjadi URL yang bisa digunakan pada tag <IMG>. Selanjutnya hasil dari pengolahan tersebut dimasukkan dalam array dan dimasukkan dalam fungsi view. Sebetulnya untuk bagian view, kode sumbernya relatif bebas. Maksudnya adalah kode sumber untuk desain view bisa menyesuaikan dengan selera masing-masing dan permintaan klien. Ya.., kalau saya cukup menggunakan bootstrap saja.
Library ini tidak lepas dari kekurangan. Library ini tidak bisa membedakan apakah file yang telah diunggah pada Google Drive dan ditambahkan pada website kita selalu berupa file gambar ataukah file non gambar. Kedua, Library ini juga tidak memfasilitasi unggah dari website. Jadi file gambar harus diunggah secara manual lewat web atau aplikasi google drive standar. Karena hal-hal tersebutlah, library ini memerlukan pengembangan berikutnya. Dipersilakan kepada rekan-rekan pembaca yang mau mencoba dan memberikan masukkan dapat dituliskan pada komentar. Terima Kasih.
0 comments:
Posting Komentar