Minggu, 23 Januari 2011

Memisahkan UCS dari SLiMS



Sumber PrimurLib.Net

"UCS (Union Catalog Server) merupakan fitur yang muncul pada Senayan3-Stable14. Ide dasar fitur ini adalah untuk menyatukan koleksi bibliografi dari berbagai katalog perpustakaan yang menggunakan Senayan, sehingga seseorang dapat mencari koleksi hanya melewati satu pintu (tampilan) saja" Kutipan tersebut diambil dari dokumentasi Senayan3-Stable14, UCS ini bisa dijadikan Katalog Terpadu dari berbagai perpustakaan yang menggunakan SLiMS versi Seulanga.

Namun UCS ini terletak di dalam folder SLiMS (subfolder SLiMS), sehingga UCS berjalan di bawah SLiMS karena semua fungsi yang dibutuhkan UCS ada di direktori SLiMS. Jika UCS di localhost bisa diakses dengan http://localhost/Senayan3-Stable14/ucs/ bisa terlihat bahwa untuk menjalankan UCS harus memanggil SLiMS terlebih dahulu.

Untuk memisahkan UCS dari SLiMS terdapat beberapa modifikasi yang perlu dilakukan pada struktur direktori UCS serta modifikasi pada file ucsysconfig.inc.php. Berikut adalah langkahnya :


  1. Pisahkan direktori UCS dari SLiMS

  2. Copy folder JS, LIB dan SIMBIO2 dari direktori SLiMS ke direktori UCS

  3. Buka file ucsysconfig.inc.php kemudian cari beberapa baris berikut dan modifikasi serta simpan perubahannya:























Script asli UCS under SLiMSScript Modifikasi UCS Mandiri
// absolute path for simbio platform
define('SIMBIO_BASE_DIR', SLIMS_BASE_DIR.'simbio2'.DSEP);
// absolute path for simbio platform
define('SIMBIO_BASE_DIR', UCS_BASE_DIR.'simbio2'.DSEP);
// ucs library base dir
define('LIB_DIR', SLIMS_BASE_DIR.'lib'.DSEP);
// ucs library base dir
define('LIB_DIR', UCS_BASE_DIR.'lib'.DSEP);
// javascript library web root dir
define('JS_WEB_ROOT_DIR', SLIMS_WEB_ROOT_DIR.'js/');
// javascript library web root dir
define('JS_WEB_ROOT_DIR', UCS_WEB_ROOT_DIR.'js/')


Dengan begitu UCS sudah terpisah dari SLiMS. Coba jalankan di localhost dengan mengakses http://localhost/ucs/

Sampai saat ini UCS mandiri berjalan lancar di localhost dengan menggunakan aplikasi web server XAMPP 1.7.1. Namun ketika mencoba dihosting di www.masterweb.net terjadi kendala yaitu class simbio tidak terbaca oleh file simbio_mysql_result.inc.php yang terdapat di /simbio2/simbio_DB/mysql/ untuk mengatasi hal tersebut class simbio ditulis kembali di dalam file simbio_mysql_result.inc.php dengan nama yang berbeda karena nama class yang digunakan oleh UCS tidak boleh sama. Berikut ini adalah script modifikasi pada file simbio_mysql_result.inc.php :



<?php
/**
* simbio_mysql_result class
* This class emulates mysqli mysqli_result object behaviour
*
* Copyright (C) 2007,2008  Arie Nugraha (dicarve@yahoo.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*
*/
class simbio2
{
public $error = '';
private $version = '2.0';

/**
* Method to show an error
*
* @param   boolean $bool_die
* @return  void
*/
public function showError($bool_die = false)
{
echo '<div style="padding: 5px; border: 1px dotted #FF0000; color: #FF0000;">';
echo 'ERROR : '.nl2br($this->error).'</div>'."\n";
if ($bool_die) {
die();
}
}

/**
* Static method to colorized SQL string
*
* @param   string  $sql_string
* @return  string
*/
public static function colorSQLstring($sql_string = '')
{
// list of mysql reserved words
$reservedwords = array(
"\bDATABASE\b",
"\bTABLE\b",
"\bAND\b",
"\bOR\b",
"\bSELECT\b",
"\bINSERT\b",
"\bUPDATE\b",
"\bDELETE\b",
"\bALTER\b",
"\bFROM\b",
"\bWHERE\b",
"\bLIKE\b",
"\bORDER BY\b",
"\bLIMIT\b",
"\bUSE\b",
"\bDESCRIBE\b",
"\bJOIN\b",
"\bLEFT\b",
"\bRIGHT\b",
"\bINNER\b",
"\b=\b",
"\b!=\b",
"\bON\b",
"\bIN\b",
"\bAS\b",
"\bNULL\b",
"\bNOT\b",
"\bIS\b",
"\bINTO\b");

// colorized the sql string
$matches_str = array();
preg_match_all("/'[^']*'/i", $sql_string, $matches_str, PREG_SET_ORDER);
if ($matches_str) {
foreach ($matches_str as $sql_str) {
$sql_string = preg_replace("/".$sql_str[0]."/i", '<strong style="color: green;">'.$sql_str[0].'</strong>', $sql_string);
}
}

// colorized brackets
$sql_string = str_replace(array('(',')'), array('<strong style="color: red;">(</b>', '<b style="color: red;">)</strong>'), $sql_string);

// colorized the SQL reserved words
foreach ($reservedwords as $words) {
$sql_string = preg_replace("/$words/i", '<strong style="color: navy;">'.$words.'</strong>', $sql_string);
}

// remove regex special chars
$sql_string = str_replace(array('\b'), '', $sql_string);
return $sql_string;
}
}

class simbio_mysql_result extends simbio2
{
/**
* Private properties
*/
private $res_result = false;
private $sql_string = '';

/**
* Public properties
*/
public $num_rows = 0;
public $field_count = 0;
public $affected_rows = 0;
public $insert_id = 0;
public $errno = false;

/**
* Class Constructor
*
* @param   string      $str_query
* @param   resource    $res_conn
*/
public function __construct($str_query, $res_conn)
{
$this->sql_string = trim($str_query);
$this->sendQuery($res_conn);
}

/**
* Method to send SQL query
*
* @param   resource    $res_conn
* @return  void
*/
private function sendQuery($res_conn)
{
// checking query type
// if the query return recordset or not
if (preg_match("/^SELECT|DESCRIBE|SHOW|EXPLAIN\s/i", $this->sql_string)) {
$this->res_result = @mysql_query($this->sql_string, $res_conn);
// error checking
if (!$this->res_result) {
$this->error = 'Query ('.$this->sql_string.") failed to executed. Please check your query again \n".mysql_error($res_conn);
$this->errno = mysql_errno($res_conn);
} else {
// count number of rows
$this->num_rows = @mysql_num_rows($this->res_result);
$this->field_count = @mysql_num_fields($this->res_result);
}
} else {
$query = @mysql_query($this->sql_string, $res_conn);
$this->insert_id = @mysql_insert_id($res_conn);
// error checking
if (!$query) {
$this->error = 'Query ('.$this->sql_string.") failed to executed. Please check your query again \n".mysql_error($res_conn);
$this->errno = mysql_errno($res_conn);
} else {
// get number of affected row
$this->affected_rows = @mysql_affected_rows($res_conn);
}
// nullify query
$query = null;
}
}

/**
* Method to fetch record in associative  array
*
* @return  array
*/
public function fetch_assoc()
{
return @mysql_fetch_assoc($this->res_result);
}

/**
* Method to fetch record in numeric array indexes
*
* @return  array
*/
public function fetch_row()
{
return @mysql_fetch_row($this->res_result);
}

/**
* Method to fetch fields information of resultset
*
* @return  array
*/
public function fetch_fields()
{
$_fields_info = array();
$_f = 0;
$_field_num = mysql_num_fields($this->res_result);
while ($_f < $_field_num) {
$_fields_info[] = mysql_fetch_field($this->res_result, $_f);
$_f++;
}

return $_fields_info;
}

/**
* Method to free resultset memory
*
* @return  void
*/
public function free_result()
{
if ($this->res_result) {
@mysql_free_result($this->res_result);
}
}
}
?>


Kemudian pada file simbio_mysql.inc.php masih di /simbio2/simbio_DB/mysql/ di modifikasi pada baris

class simbio_mysql extends simbio di ubah menjadi class simbio_mysql extends simbio2

Dari script di atas class simbio2 di deklarasikan sehingga class simbio_mysql_result dan class simbio_mysql membaca class simbio2 yang ada di file simbio_mysql_result.inc.php. Dengan cara seperti itu alhamdulillah UCS mandiri di hosting www.masterweb.net kembali berjalan normal.

Semoga Membantu.

Happy Coding

Salam SLiMS

2 komentar:

  1. oh begitu.. (pura-pura paham)

    BalasHapus
  2. Assalamu'alaikum
    mohon pencerahannya!.
    ni saya cb pasang UCS di http://alfajar.site50.net/ucs .
    kyknya dah bsa jalan, tp ktika cb unggah data dari SLIMS di localhost kok gk bisa ya?

    BalasHapus