Cara Membuat Addon Modules di WHMCS
Kali ini aku akan bahas mengenai bagaimana caranya membuat addon modules di WHMCS. Telah kita ketahui bahwa kita bisa membuat module sendiri untuk memenuhi kebutuhan kita.

Dalam memulai membuat module tentukan nama module kamu dulu ya, nama module harus unik dan semua harus huruf kecil (lowercase). Nama modul boleh menggunakan huruf dan angka tetapi harus diawali dengan huruf, serta penggunaan spesial karakter hanya underscore yang di bolehkan. Berikut contoh nama module:
mymodulename atau my_module_name atau my_module
Dalam pembuatan directory module harus diikuti dengan nama module yang sama dengan nama directory. Seperti contoh nama directory my_module_name maka akan ditemukan nama module my_module_name.php. Nantinya module ini akan di upload ke server yang berlokasi di directory /modules/addons/ .
Pada tutorial ini saya akan membuat module dengan nama imamnawawi. Ikuti langkah berikut:
Membuat Config Module
Hal pertama yang harus dilakukan adalah membuat konfigurasi module yang meliputi name, description, version, author dan konfigurasi fields.
function imamnawawi_config(){ return [ "name" => "Imam Nawawi Module", "description" => "This is a sample config function for an addon imamnawawi", "version" => "1.0", "author" => "Imam Nawawi", "fields" => [ "Text Field Name" => [ "FriendlyName" => "Text Field Name", "Type" => "text", "Size" => "25", "Description" => "Textbox", "Default" => "Default value", ], "Password Field Name" => [ "FriendlyName" => "Password Field Name", "Type" => "password", "Size" => "25", "Description" => "Enter secret value", ], "Radio Field Name" => [ "FriendlyName" => "Radio Field Name", "Type" => "radio", 'Options' => 'First Option,Second Option,Third Option', 'Default' => 'Third Option', 'Description' => 'Choose your option!', ], "Dropdown Field Name" => [ "FriendlyName" => "Dropdown Field Name", "Type" => "dropdown", 'Options' => [ 'option1' => 'Display Value 1', 'option2' => 'Second Option', 'option3' => 'Another Option', ], 'Default' => 'option2', 'Description' => 'Choose one', ], "Textarea Field Name" => [ "FriendlyName" => "Textarea Field Name", "Type" => "textarea", "Rows" => "3", "Cols" => "50", 'Default' => 'A default value goes here...', 'Description' => 'Freeform multi-line text input field', ], ] ]; }
Install dan Uninstall Module
Pada module kita buat fungsi aktivasi dan deactivasi untuk membuat modul kita dapat di aktifkan dan di noaktifkan. Pada fungsi ini saya memberikan return status yang nantinya berguna untuk memberikan alert ketika aktivasi atau deaktivasi di pilih.
Fungsi Aktivasi
function imamnawawi_activate(){ return array('status' => 'success', 'description' => 'Imam Nawawi Apps - Module Activated'); }
Fungsi Deaktivasi
function imamnawawi_deactivate(){ return array('status' => 'success', 'description' => 'Imam Nawawi Apps - Module Deactivated'); }
Client Area Output
Pada tahap ini kita buat fungsi imamnawawi_clientarea($vars) untuk generate laman di client area. Laman output yang digunakan berupa template file dengan nama publicpage.tpl yang ada pada directory /templates/publicpage.tpl. Pada fungsi ini juga terdapat inisialisasi kelas ClientDispatcher() yang diambil dari /lib/Client/.
function imamnawawi_clientarea($vars){ $modulelink = $vars['modulelink']; // eg. index.php?m=imamnawawi $version = $vars['version']; $configTextField = $vars['Text Field Name']; $configPasswordField = $vars['Password Field Name']; $configDropdownField = $vars['Dropdown Field Name']; $configRadioField = $vars['Radio Field Name']; $configTextareaField = $vars['Textarea Field Name']; $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; $dispatcher = new ClientDispatcher(); return $dispatcher->dispatch($action, $vars); }
dan template nya sebagai berikut
<h2>Public Client Area Sample Page</h2> <p>{ debug }</p> <hr> <div class="row"> <div class="col-sm-3"> Module Link </div> <div class="col-sm-7"> {$modulelink} </div> </div> <div class="row"> <div class="col-sm-3"> Config Text Field Value </div> <div class="col-sm-7"> {$configTextField} </div> </div> <div class="row"> <div class="col-sm-3"> Custom Variable </div> <div class="col-sm-7"> {$customVariable} </div> </div> <hr> <p> <a href="{$modulelink}&action=secret" class="btn btn-default"> <i class="fa fa-lock"></i> Go to page that requires authentication </a> </p>
Upgrade Module
Fungsi ini berguna ketika module mengalami upgrade versi dari 1.0 ke 1.2 dst.
function imamnawawi_upgrade($vars){ $currentlyInstalledVersion = $vars['version']; if ($currentlyInstalledVersion < 1.1) { $version = "1.2"; } if ($currentlyInstalledVersion < 1.2) { $version = "1.3"; } }
Setelah semua selesai lakukan upload module ke server kalian, lalu kita lihat dan coba mengaktifkannya.
Aktifkan Module
Untuk melihat ada dan tidaknya modul yang sudah kita upload pilih menu Setup>Addon Modules maka list module akan ditampilkan semua.


Setelah modul sudah tersedia kia bisa klik Activate, dan kita bisa klik tombol Configure untuk melihat konfigurasi apa saja yang dapat kita lakukan pada module kita.

Sekarang module siap digunakan, semoga artikel ini bisa bermanfaat bagi teman-teman pembaca.