Di artikel membangun CMS dengan PHP bagian 1, kita telah membahas tentang sistem module dan plugin yang bekerja di CMS yang akan kita bangun. Sekarang, kita masih akan melanjutkan pembahasan tersebut, termasuk beberapa fungsi yang akan kita buat.
Untuk implementasi kali ini, kita akan menggunakan PHP5rc2 dan database MySQL.
1. Class SQL
Class ini berfungsi untuk mengelola koneksi dan perintah SQL ke database.
File: your_site_dir/inc/sql.inc.php
<?php
class sql {
public $qcount; // Menghitung jumlah query yang dibuat
function __construct() {
$this->qcount = 0; // Awal jumlah query
$db = @mysql_connect($host, $user, $pass, $dbname);
if ($db) {
return $db; // Koneksi valid
} else {
die("Gagal: " . mysql_error()); // Koneksi gagal, tampilkan pesan error
}
}
function pilih_db($dbname) {
return mysql_select_db($dbname);
}
function perintah($query) {
$this->qcount++;
return mysql_query($query);
}
function _fetch_row($id) {
return mysql_fetch_row($id);
}
function _fetch_array($id) {
return mysql_fetch_array($id);
}
function _insert_id() {
return mysql_insert_id();
}
function _affected_rows() {
return mysql_affected_rows();
}
function _num_rows($id) {
return mysql_num_rows($id);
}
function _fetch_object($id) {
return mysql_fetch_object($id);
}
function _mysql_error() {
return mysql_error();
}
}
?>
Simpan file ini di direktori your_site_dir/inc/
dengan nama sql.inc.php
.
2. Class Konfigurasi
Class ini menyimpan konfigurasi database.
File: your_site_dir/inc/config.inc.php
<?php
class config {
public $hostname;
public $user;
public $pass;
public $namadb;
function __construct() {
$this->hostname = "localhost";
$this->user = "root";
$this->pass = "";
$this->namadb = "CMS";
}
}
?>
Simpan di your_site_dir/inc/
dengan nama config.inc.php
.
3. Class Site
Class ini mengatur informasi tentang website yang sedang dibangun.
File: your_site_dir/inc/site.inc.php
<?php
class site {
public $site;
function __construct() {
global $sql;
$purl = parse_url('https://' . $_SERVER['HTTP_HOST']);
$purl = $purl['host'];
$host = explode('.', $purl);
$this->site['host'] = ($host[0] == 'www') ? $host[1] : $host[0];
$site_info = $sql->_fetch_row($sql->perintah("SELECT site_ID, site_name FROM sites WHERE site_host = '{$this->site['host']}' LIMIT 1"));
$this->site['ID'] = $site_info[0];
$this->site['name'] = $site_info[1];
$this->page();
}
function page() {
$this->site['page'] = isset($_REQUEST['page']) ? $_REQUEST['page'] : "main";
}
}
?>
4. Class Plugins
Class ini mengelola daftar plugin yang digunakan di website.
File: your_site_dir/inc/plugins.inc.php
<?php
class plugins {
public $pcount = 0;
public $plugin_list = [];
public $plugin_error = [];
public $lcount = 0;
function __construct($site_id = "") {
global $sql, $site;
if ($site_id == "") {
$site_id = $site->site['ID'];
}
$plugins_list = $sql->perintah("SELECT plugin_ID, plugin_name, plugin_dir, plugin_file FROM plugins WHERE site_ID = '$site_id'");
while ($plugin = $sql->_fetch_object($plugins_list)) {
$this->lcount++;
$this->plugin_list['plug_ID'][] = $plugin->plugin_ID;
$this->plugin_list['plug_name'][] = $plugin->plugin_name;
$this->plugin_list['plug_dir'][] = $plugin->plugin_dir;
$this->plugin_list['plug_file'][] = $plugin->plugin_file;
}
if ($this->pcount == 0) {
$this->load();
}
}
function load() {
if (is_array($this->plugin_list)) {
for ($i = 0; $i < $this->lcount; $i++) {
$plugin_path = "{$this->plugin_list['plug_dir'][$i]}/{$this->plugin_list['plug_file'][$i]}/main.plug.php";
if (file_exists($plugin_path)) {
@include($plugin_path);
$this->pcount++;
} else {
$this->plugin_error[] = "Plugin file tidak ditemukan: $plugin_path";
}
}
}
}
}
?>
5. Class Core
Class ini menyatukan semua class yang telah dibuat.
File: your_site_dir/inc/core.inc.php
<?php
@include('inc/config.inc.php');
$config = new config();
@include('inc/sql.inc.php');
$sql = new sql($config->hostname, $config->user, $config->pass);
$sql->pilih_db($config->namadb);
@include('inc/site.inc.php');
$site = new site();
@include('inc/plugins.inc.php');
$plugins = new plugins($site->site['ID']);
?>
6. File Index
File utama untuk mengakses CMS.
File: your_site_dir/index.php
<?php
function getmicrotime() {
$temparray = explode(" ", microtime());
return $temparray[0] + $temparray[1];
}
$stime = getmicrotime();
@include('inc/core.inc.php');
$etime = getmicrotime();
$ftime = round($etime - $stime, 6);
?>
Tutorial membangun CMS dengan PHP bagian 2 telah selesai! Pada bagian berikutnya, kita akan membahas tentang sistem autentikasi dan blok sistem. Sampai jumpa di panduan membangun CMS dengan PHP bagian ke 3.