Skip to content

Posts tagged ‘Source Code’

10
Dec

Bug Library ZIP di CodeIgniter

Kemarin saya buat modul untuk mengkompresi file2 diserver dan di download. Ceritanya sih, mau buat seperti kayak file manager, jadi select multiple file trus di zip dan otomatis di donlod. Sebelum kemana2, CI yang aku gunakan adalah versi 1.6.3.

Enaknya kalo pake CI nih, kalo untuk fitur semacam itu, proses yang aku lakukan cukup sampe di level class controller aja. jadi setelah selesai gak perlu load halaman htmlnya lagi. Mungkin kalo masih pake coding PHP biasa sih, begitu pilih file nya, trus di submit ke URL yang mroses, otomatis halamannya akan render lagi, sekaligus mroses inputan dari submit tadi.

Pada awalnya waktu men-zip multiple file, proses berhasil dengan sempurna. Dengan menggunakan metode

$this->zip->read_file($parentpath.$namafile);

File tersebut langsung dibaca isinya dan dimasukan dalam archive zip sementara, menunggu aksi terakhir apakah nanti di download

$this->zip->download($down_namafile);

apa disimpan

$this->zip->archive($zip_namafile);

Sekarang yang menjadi permasalahan adalah pada waktu item yang dipilih adalah sebuah direktori, memang benar fungsi ini menjalankan tugasnya membaca isi direktori lalu menjadikan dalam satu zip file.

Namun tugas itu dijalankan tidak cukup baik. Misal begini, ada direktori A dengan isi nama file FileA, FileB, dst. Maka nanti setelah dizip, nama file dalam zip berubah menjadi AFileA, AFileB, dst. Meskipun ukuran file nya sama dengan yang asli, tapi tetep saja tidak boleh begitu.

function read_dir($path)
{
  if ($fp = @opendir($path))
  {
    while (FALSE !== ($file = readdir($fp)))
    {
      if (@is_dir($path.$file) && substr($file, 0, 1) != '.')
      {
        $this->read_dir($path.$file."/");
      }
      elseif (substr($file, 0, 1) != ".")
      {
        if (FALSE !== ($data = file_get_contents($path.$file)))
        {
          $this->add_data(str_replace("\\", "/", $path).$file, $data);
        }
      }
    }
    return TRUE;
  }
}

coba diganti menjadi seperti ini

function read_dir($path)
{
  if ($fp = @opendir($path))
  {
    while (FALSE !== ($file = readdir($fp)))
    {
      if (@is_dir($path.$file) && substr($file, 0, 1) != '.')
      {
        $this->read_dir($path.$file."/");
      }
      elseif (substr($file, 0, 1) != ".")
      {
        if (FALSE !== ($data = file_get_contents($path."/".$file)))
        {
          $this->add_data(str_replace("\\", "/", $path)."/".$file, $data);
        }
      }
    }
    return TRUE;
  }
}

Lihat ada penambahan “/” di beberapa bagian function itu. Akhirnya fungsi berjalan seperti yang diharapkan. Pada CI 1.7.0 nampaknya bug ini belum diberesin, soalnya aku compare 1.7.0 dan 1.6.3, library zip.php tidak mengalami perubahan.

Semoga membantu.

9
Dec

Patch CodeIgniter untuk Koneksi ke Oracle

Nah dibagian ini aku akan nyoba jelasin, gimana supaya driver oci8 di CI bisa lebih kompatibel dengan oracle. Apabila kamu tidak melakukan patch ini bisa dipastikan kamu akan mengalami kesusahan waktu query2 di oracle. Salah satunya, bila kamu dalam satu page (satu function class CI) melakukan 2 atau lebih query Oracle, maka yang dihasilkan adalah result query yang pertama kali dilakukan. Sungguh mengganggu kan?… Read moreRead more

8
Dec

Code Igniter Dengan Oracle

CodeIgniter (CI) merupakan framework PHP yang menggunakan konsep MVC (model view controller). Framework ini sangat fleksibel dan ukurannya lumayan kecil, namun peforma nya tidak kalah bila dibandingkan dengan framework yang lain untuk membuat aplikasi RAD. Seperti framework lainnya, CI juga mendukung koneksi untuk beberapa provider, salah satunya adalah Oracle. Read moreRead more

7
Dec

Konfigurasi PHP dengan Oracle

Aplikasi PHP sering di identikan dengan database MYSQL, namun sebenernya PHP juga bisa untuk bermacam2 database. Salah satunya adalah Oracle. Oracle ini adalah database yang cukup besar (dari data yang ditampung, ukuran file, maupun skalanya). Meskipun begitu PHP telah menyediakan library untuk driver koneksi ke database Oracle.
Read moreRead more

6
Dec

Emulasi Register Global di Hosting

Jika kamu menyewa shared hosting dengan register_global kondisi off dan butuh untuk menjalankan aplikasi yang membutuhkan opsi ini dalam kondisi On, atau kamu ada didalam server hosting, dimana fitur register_global dalam kondisi On, tapi kamu ingin mematikannya demi mengurangi resiko keamanan, kamu mungkin harus mengemulasikan setting tersebut dengan PHP.

Tapi merupakan ide bagus kalo kamu bertanya dulu kepada admin hostingnya, apakah memungkinkan untuk merubah setting konfigurasi PHP di server. Tapi bila tidak mungkin, maka kamu bisa mencoba kode ini. Read moreRead more