APLIKASI PEMESANAN SPARE PART MOTOR BERBASIS WEB ERRY HANDOYO 104091002869 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI (UIN) SYARIF HIDAYATULLAH JAKARTA 2011 M / 1432 H ii iii PERNYATAAN DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENARBENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN. Jakarta, Agustus 2011 Erry Handoyo 104091002869 iv HALAMAN PERSEMBAHAN Penulis dapat menyelesaikan skripsi ini tak lepas dari doa dan dukungan dari banyak pihak. Maka perkenankanlah penulis untuk mengucapkan terima kasih yang sebesar-besarnya kepada : 1. Ibunda Tercinta Siti Kasiyati dan Ayahanda Rijadi yang tidak pernah berhenti merawat, mendoakan, dan mendukung penulis dengan penuh kasih sayang. Terima kasih atas semua pengorbanan, usaha dan jerih payah Ayah dan Bunda untuk selalu membuat penulis merasa bahagia. 2. Saudariku, Desi Setiyani yang selalu penulis banggakan dan sayangi sepenuh hati. 3. Fitriyanti, atas semua bentuk dukungan, motivasi dan kasih sayang yang selalu menemani hari-hari penulis. 4. Sahabat-sahabatku yang selalu setia menemani saat suka dan duka : Makhsus, Toni, Sigit, Danang, Umi, Nita, yang selalu bersama-sama berjuang menyelesaikan skripsi. Zahruddin, Taufiq, Arie Syuryadi, Rahmat Hidayat dan Robby Darmawan, terima kasih atas persahabatan indah yang kita miliki. 5. Teman-teman TI C 2004 : Alvin, Wahyuni, Syukrina, Hani, Endah, Desi, Ziah, Sarah, Eni, Rizal, Razka, Budi, Asep, Malik, Sidiq, Fajar, Dwi, Rahmat Ruhyat, Agil, Rendy, Ariefati, Hirzi, Kaut, Anton dan Egi. Terima kasih atas keceriaan, dukungan dan motivasi yang selalu kalian tunjukkan, v terutama pada saat-saat sulit yang penulis alami, sehingga menumbuhkan semangat baru untuk penulis. 6. Teman-teman TI dan SI seluruh angkatan. 7. Teman-temanku di Agribisnis dan MIPA. Semoga Allah selalu melimpahkan rahmat dan karunia-Nya kepada kalian semua dan melindungi kalian di setiap langkah. Jakarta, Agustus 2011 Erry Handoyo vi ABSTRAK ERRY HANDOYO. Aplikasi Pemesanan Spare Part Motor Berbasis Web. dibimbing oleh HERLINO NANANG dan FENTY EKA MUZAYYANA. Perkembangan teknologi internet yang sangat cepat dari tahun ke tahun. Internet saat ini sangat dibutuhkan misalnya untuk media promosi suatu produk. Untuk menjual suatu produk, penjual masih menggunakan cara biasa yaitu dengan menjualnya di toko-toko. Dengan sistem penjualaan seperti itu, maka hanya terbatas saja pembeli yang mengetahui tentang produk yang dijual. Dengan adanya internet, penjual dapat mempromosikan sekaligus menjual produknya melalui website. Penelitian ini membahas mengenai proses pemesanan produk secara online yang akan diimplementasikan pada pemesanan produk spare part motor. Dalam pembuatan website aplikasi pemesanan ini nantinya akan menjadi acuan untuk dapat merancang proses pemesanan melalui media elektronik dan sebagai promosi produksi itu sendiri. Tools yang digunakan dalam pembuatan website penjualan spare part motor ini yaitu komponen virtue mart untuk sistem pemesanannya, joomla untuk template website dan content manajemen sistem (CMS), MySQL untuk databasenya, dan script PHP sebagai dasar bahasa pemrograman yang digunakan. Penelitian ini bertujuan untuk merancang suatu apliksasi pemesanan yang dapat membantu para pembeli spare part motor untuk melakukan pemesanan barang dengan mudah. Namun, transaksi pembayarannya dilakukan secara manual dan tidak terintegrasi dengan aplikasi. Kata Kunci : pemesanan, virtue mart, website, spare part motor. vii KATA PENGANTAR Assalaamu’alaikum Wr. Wb. Alhamdulillah, rasa syukur tiada terkira penulis panjatkan kepada Allah Subhanahu Wata’ala. Rahmat dan salam semoga tercurahkan selalu kepada Rasulullah Muhammad SAW beserta keluarga, sahabat, dan pengikut-pengikut beliau (amin). Hanya berkat petunjuk dan pertolongan Allah-lah penulis dapat menyelesaikan skripsi yang berjudul : Aplikasi Pemesanan Spare Part Motor Berbasis Web. Terwujudnya tulisan dalam bentuk skripsi ini, tentunya tidak terlepas dari bantuan dan bimbingan dari berbagai pihak. Rasa terima kasih penulis ucapkan kepada : 1. Bapak DR. Syopiansyah Jaya Putra, M.SIS, selaku Dekan Fakultas Sains dan Teknologi. 2. Bapak Yusuf Durrachman, M.Sc, M.IT, selaku Ketua Program Studi Teknik Informatika. 3. Bapak Herlino Nanang, MT, selaku dosen pembimbing I, dan 4. Ibu Fenty Eka Muzayyana, M.Kom, selaku dosen pembimbing II, yang telah memberikan bimbingan, waktu, dan perhatiannya dalam penyusunan skripsi ini. viii 5. Seluruh Dosen dan staf karyawan Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta yang telah mengajar atau membantu penulis selama kuliah. 6. Ibunda dan Ayahanda tercinta Siti Kasiyati dan Rijadi atas kasih sayang tulusnya sepanjang masa. Dalam penyusunan skripsi ini, penulis juga tidak luput dari berbagai masalah dan menyadari sepenuhnya bahwa penulisan ini masih jauh dari sempurna dan tidak lepas dari kesalahan dan kekurangan, oleh karena itu dengan senang hati penulis akan menerima semua saran dan kritik maupun ide-ide yang membangun dari rekan-rekan pembaca. Akhir kata semoga Allah membalas kebaikan mereka yang telah membimbing penulis dalam membuat skripsi ini. Semoga skripsi ini berguna bagi penulis dan pada pembaca umumnya. Wassalaamu’alaikum Wr. Wb. Jakarta, Agustus 2011 Penulis Erry Handoyo NIM. 104091002869 ix DAFTAR ISI PENGESAHAN UJIAN ..................................................................................... iii PERNYATAAN.................................................................................................. iv HALAMAN PERSEMBAHAN ......................................................................... v ABSTRAK .......................................................................................................... vii KATA PENGANTAR ........................................................................................viii DAFTAR ISI ....................................................................................................... x DAFTAR GAMBAR .......................................................................................... xii DAFTAR TABEL ...............................................................................................xiii BAB I PENDAHULUAN ................................................................................ 1 1.1 Latar Belakang Masalah ................................................................ 1 1.2 Rumusan Masalah .......................................................................... 2 1.3 Batasan Masalah ............................................................................ 3 1.4 Tujuan Penelitian ........................................................................... 3 1.5 Manfaat Penelitian ......................................................................... 4 1.6 Metodologi Penelitian .................................................................... 5 1.7 Sistematika Penulisan .................................................................... 6 BAB II LANDASAN TEORI .......................................................................... 8 2.1 Definisi Informasi .......................................................................... 8 2.2 Internet ........................................................................................... 8 2.3 Aplikasi Web ................................................................................. 9 2.4 Metode Pengembangan Perangkat Lunak ...................................... 9 2.4.1 Model RAD.......................................................................... 10 2.4.2 Data Flow Diagram (DFD) ................................................. 13 2.4.2.1 Tahapan Data Flow Diagram.................................. 15 2.4.3 Entity Relationship Diagram (ERD).................................... 16 2.5 Content Management System ......................................................... 18 2.5.1 Joomla ................................................................................... 19 2.6 Tools Pengembangan Aplikasi ...................................................... 21 x 2.6.1 Adobe Photoshop .................................................................. 21 2.6.2 Macromedia Dreamweaver 8 ................................................ 21 2.6.3 Xampp ................................................................................... 23 2.6.4 PHP ....................................................................................... 24 2.6.5 MySQL ................................................................................. 27 2.7 Web Browser ................................................................................. 27 BAB III METODOLOGI PENELITIAN ....................................................... 29 3.1 Metode Pengumpulan Data ............................................................ 29 3.2 Metode Pengembangan Sistem ...................................................... 30 3.3 Kerangka Berfikir Penelitian ......................................................... 34 BAB IV PEMBAHASAN DAN IMPLEMENTASI ....................................... 35 4.1 Metodologi Pengumpulan Data .................................................... 35 4.1.1 Studi Pustaka ...................................................................... 35 4.1.2 Studi Lapangan ................................................................... 35 4.1.2.1 Wawancara ............................................................ 35 4.1.2.2 Observasi ............................................................... 36 4.1.3 Studi Literatur .................................................................... 38 4.2 Metode Pengembangan Sistem ..................................................... 39 4.2.1 Fase Perencanaan Syarat-syarat ........................................ 39 4.2.2 Fase Perancangan .............................................................. 46 4.2.3 Fase Konstruksi ................................................................. 62 4.2.4 Fase Pelaksanaan ............................................................... 63 BAB V PENUTUP ............................................................................................ 65 5.1 Kesimpulan .................................................................................... 65 5.2 Saran .............................................................................................. 65 DAFTAR PUSTAKA ........................................................................................ 67 xi DAFTAR GAMBAR Gambar 2.1 Fase RAD Martin .......................................................................... 11 Gambar 2.2 Workshop Desain RAD................................................................. 12 Gambar 2.3 Tampilan Adobe Photoshop CS3 .................................................. 21 Gambar 2.4 Tampilan Dreamweaver 8 ............................................................. 23 Gambar 2.5 Skema PHP.................................................................................... 26 Gambar 3.1 Model Membangun Sistem RAD .................................................. 31 Gambar 3.2 Kerangka Berfikir Penelitian ......................................................... 34 Gambar 4.1 Diagram Sistem yang Berjalan ...................................................... 40 Gambar 4.2 Diagram Sistem Usulan ................................................................ 42 Gambar 4.3 Diagram Konteks ........................................................................... 46 Gambar 4.4 Diagram Zero Sistem yang Diusulkan .......................................... 47 Gambar 4.5 Diagram Level 2 Proses Ke-1 ....................................................... 48 Gambar 4.6 Diagram Level 2 Proses Ke-2 ....................................................... 49 Gambar 4.7 Diagram Level 2 Proses Ke-3 ........................................................ 50 Gambar 4.8 Entity Relationship Diagram ......................................................... 51 Gambar 4.9. Rancangan Halaman Index ............................................................ 54 Gambar 4.10 Rancangan Halaman Pooling ........................................................ 55 Gambar 4.11 Rancangan Halaman Produk ......................................................... 56 Gambar 4.12 Rancangan Halaman Shopping Cart ............................................. 57 Gambar 4.13 Rancangan Halaman Registrasi .................................................... 58 Gambar 4.14 Rancangan Halaman Guest Book ................................................. 59 Gambar 4.15 Rancangan Halaman Contact Us .................................................. 60 Gambar 4.16 Rancangan Halaman List Order ................................................... 61 Gambar 4.17 Rancangan Halaman Order Detail ................................................ 62 xii DAFTAR TABEL Tabel 2.1 Simbol DFD ....................................................................................... 14 Tabel 4.1 Perbandingan Sistem Berjalan Dengan Sistem Usulan ..................... 42 Tabel 4.2 Tabel Produk ..................................................................................... 52 Table 4.3 Tabel User ......................................................................................... 52 Tabel 4.4 Tabel Order ......................................................................................... 53 Table 4.5 Hasil Pengujian Aplikasi ................................................................... 64 xiii BAB I PENDAHULUAN 1.1 Latar Belakang Masalah Perkembangan teknologi dibidang informasi mendorong setiap instansi atau perusahaan untuk tetap mengikuti perkembangannya, terutama berkenaan dengan perkembangan teknologi informasi yang ada hubungannya dengan kegiatan perusahaan tersebut. Perkembangan teknologi informasi telah memberikan kontribusi yang cukup berarti dalam meningkatkan kegiatan usaha khususnya dalam hal pengolahan data yang memberi dukungan terhadap pengambilan keputusan-keputusan bisnis serta Perkembangan teknologi informasi telah memberikan kontribusi yang cukup berarti dalam meningkatkan kegiatan pelayanan. Berdasarkan pada uraian diatas, pemanfaatan teknologi informasi dalam suatu aktivitas bisnis merupakan hal yang cukup penting. Begitu pentingnya sehingga hampir setiap perusahaan yang serupa menggunakan sistem pelayanan bisnis secara online, apalagi di zaman sekarang ini bukan hanya perusahaan -perusahaan yang sudah mempunyai tempat dan nama di dunia bisnis, perusahaan atau usaha rumahan pun bisa dijadikan lahan bisnis dengan sentuhan teknologi informasi sekarang ini. Setiap orang tidak diharuskan lagi dan diwajibkan lagi mempunyai tempat untuk usaha, letak strategis untuk usaha kemudian modal yang besar untuk sewa tempat dan lain sebagainya. Cukup dengan mempunyai suatu produk dan usaha rumahan pun 1 2 bisa dilakukan yaitu dengan cara mempromosikan dan memperkenalkan produknya melalui internet. Karena di era globalisasi sekarang ini setiap orang dalam mencari informasi hal pertama yang dilakukan cenderung mencari sesuatu melalui dunia maya, baik itu hanya sekedar referensi ataupun melakukan pemesanan online. Berkaitan dengan tugas akhir ini penelitian difokuskan pada masalah pemanfaatan tujuan teknologi informasi yang dapat memberi dukungan aktif kelancaran usaha penjualan barang yang dilakukan oleh suatu perusahaan atau usaha rumahan yang diberi judul “Aplikasi Pemesanan Spare Part Motor Berbasis Web” . 1.2 Rumusan Masalah Berdasarkan observasi yang dilakukan di suatu Perusahaan terhadap sistem informasi pemesanan barang dikemukakan hal-hal yang menjadi permasalahan antara lain: 1. Bagaimana cara penyampaian informasi barang yang terdapat pada usaha pemesanan spare part motor berbasis web? 2. Bagaimana merancang sebuah aplikasi pemesanan barang yang sifatnya online? 3 1.3 Batasan Masalah Masalah yang ada dalam sistem informasi penjualan barang ini dibatasi pada ruang lingkup seperti : 1. Sistem hanya memberikan informasi barang yang tersedia dan proses pemesanan barang tersebut. 2. Data yang diolah hanya data barang dan data Pengguna Sistem Informasi. 3. Sistem ini tidak membahas mengenai masalah persediaan barang. 4. Pembayaran transaksi dilakukan secara offline, dimana pembeli melakukan transfer uang secara manual pada rekening yang ditetapkan. 5. Desain web menggunakan CMS (Content Management System) Joomla dan komponen Virtue Mart. 6. Web server menggunakan Xampp dan database menggunakan MySQL. 1.4 Tujuan Penelitian Tujuan yang ingin dicapai dari tugas akhir ini adalah : 1. Mempermudah pihak CMR untuk mengelola pemesanan spare part motor dan memperluas jangkauan konsumen. 2. Mempermudah bagi masyarakat atau dunia luar untuk mendapatkan informasi mengenai spare part motor dan melakukan pemesanan spare part motor secara langsung. 4 1.5 Manfaat Penelitian Manfaat yang didapat dalam menulis skripsi ini adalah : 1. Bagi Peneliti a. Dapat mempelajari lebih jauh mengenai aplikasi berbasis web. b. Mengetahui secara langsung penggunaan atau peranan teknologi informasi dan komunikasi di tempat penelitian. c. Mengenal lebih jauh teknologi- teknologi informasi yang sedang berkembang saat ini. 2. Bagi Pengguna a. Memudahkan akses terhadap informasi produk, karena dapat diakses melalui jaringan internet. b. Memiliki sebuah aplikasi berbasis web yang mudah digunakan oleh masyarakat umum. c. Menjadikan bengkel lebih maju sesuai dengan perkembangan teknologi. 3. Bagi Universitas a. Memberikan kemajuan ilmu pengetahuan dalam bidang aplikasi berbasis web di lingkungan UIN Syarif Hidayatullah Jakarta. b. Memberi sumbangan ilmiah bagi perkembangan aplikasi berbasis web. c. Sebagai bahan referensi dan masukan yang mungkin berguna. 5 1.6 Metodologi Penelitian 1. Metode pengumpulan data Dalam pengumpulan data dan pencarian fakta untuk penelitian skripsi ini, peneliti menggunakan metode fact finding technique. Fact Finding Technique dilakukan untuk proses pengembangan system, di dalam Fact Finding Technique dilakukan proses pencarian dan penemuan fakta serta pencarian data dari suatu kasus yang akan membantu proses pengembangan system suatu organisasi. Fact Finding Technique yang digunakan dalam penelitian ini adalah a. Studi Pustaka b. Observasi c. Wawancara d. Studi Literatur 2. Metode Pengembangan Sistem Sistem pengembangan perangkat lunak yang penulis gunakan adalah sistem RAD (Rapid Application Development) yang dikembangkan oleh James Martin. Tahap-tahap sistem RAD meliputi (Kendall & Kendall, 2003:239): 1. Fase Menentukan Syarat-Syarat Pada tahap ini dilakukan penentuan tujuan dan syarat-syarat informasi, yaitu dengan melakukan analisa kebutuhan masalah untuk pembuatan aplikasi pemesanan berbasis web, menentukan 6 tujuan dibuatnya aplikasi, lalu menentukan syarat-syarat yang diperlukan untuk membuat aplikasi. 2. Fase Perancangan Pada tahap ini dilakukan perancangan proses-proses yang akan terjadi dalam sistem dan perancangan antar muka. Pada perancangan proses digunakan alat bantu DFD untuk memudahkan peneliti dalam merancang aplikasi pemesanan yang akan dibuat 3. Fase Konstruksi Pada tahap ini dilakukan pengkodean terhadap rancanganrancangan yang telah didefinisikan. Peneliti menggunakan PHP untuk bahasa pemrograman dan Joomla untuk template. Web Server Apache sebagai platform untuk menjalankan aplikasi, kemudian menggunakan MySQL sebagai database. 4. Fase Pelaksanaan Pada tahap ini dilakukan pengujian terhadap sistem. Untuk uji aplikasi dilakukan dengan menggunakan metode blackbox. 1.7 Sistematika Penulisan Pada dasarnya, penyusunan sistematika penulisan bertujuan untuk memudahkan para pembaca dalam mengikuti apa yang dipaparkan dalam laporan tugas akhir ini. Sistematika penulisan tugas akhir ini disusun sebagai berikut : 7 BAB I PENDAHULUAN Dalam bab ini berisikan latar belakang masalah, identifikasi masalah, tujuan penelitian, batasan masalah, metodologi penelitian, dan sistematika penulisan. BAB II LANDASAN TEORI Bab ini menjelaskan tentang teori-teori yang berkaitan dengan isi laporan tugas akhir dan aplikasi web yang dibuat, diantaranya tentang internet, konsep aplikasi web yang interaktif, bahasa web scripting PHP dan database server MySQL. BAB III METODOLOGI PENELITIAN Bab ini menguraikan metode penelitian yang digunakan penulis,baik itu metode pengumpulan data maupun metode pengembangan sistem. BAB lV PEMBAHASAN DAN IMPLEMENTASI Dalam bab ini menganalisis objek penelitian, anlisis kebutuhan sistem, serta perancangan sistem yang akan dibuat. Dalam implementasi diuraikan tentang pemilihan bahasa pemrograman yang digunakan, perangkat keras yang diperlukan, pemrograman dan pengujian aplikasi. BAB V PENUTUP Berisikan tentang kesimpulan dari seluruh pembahasan yang telah dikerjakan dari bab I sampai dengan bab IV serta saran–saran. BAB II LANDASAN TEORI 2.1 Definisi Informasi Sumber Informasi adalah data. Data adalah fakta mentah mengenai orang, tempat, kejadian, dan hal-hal yang penting dalam organisasi (Whitten, 2004). Menurut Davis (1999), Informasi adalah data yang sudah diolah menjadi bentuk yang berarti bagi penerimanya yang bermanfaat dalam pengambilan keputusan saat ini atau saat mendatang (Kadir, 2003). 2.2 Internet Sebagai gambaran umum, internet adalah suatu jaringan komputer global terbentuk dari jaringan-jaringan komputer lokal dan regional, memungkinkan komunikasi data antar komputer-komputer yang terhubung ke jaringan tersebut. Asal usul Internet berasal dari jaringan komputer yang dibentuk pada tahun 1970an. Jaringan komputer tersebut disebut dengan Arpanet, yaitu jaringan komputer yang dibentuk oleh departemen pertahanan Amerika Serikat. Selanjutnya jaringan komputer tersebut diperbarui dan dikembangkan, dan sekarang penerusnya menjadi tulang punggung global untuk sumber daya informasi yang disebut dengan internet. Namun demikian membayangkan Internet sebagai sekedar jaringan Komputer adalah tidak tepat. Jaringan komputer hanyalah medium yang membawa informasi. Daya guna Internet terletak pada informasi itu sendiri, 8 9 bukan pada jaringan komputer. Sebaiknya memperhatikan Internet sebagai sumber daya informasi, bukan sebagai jaringan komputer. 2.3 Aplikasi Web Aplikasi web dapat dibagi menjadi 2 kategori, yaitu web statis dan web dinamis (Kadir, 2003). a. Web Statis Web statis adalah aplikasi web yang berisi atau menampilkan informasi-informasi yang sifatnya statis (tetap). Disebut tetap karena pengunjung tidak dapat berinteraksi dengan web tersebut. Pada web statis pengunjung hanya dapat melihat isi dokumen pada halaman web. Web statis biasanya menggunakan pemrograman web HTML dan tidak memiliki database. b. Web Dinamis Web Dinamis adalah aplikasi web yang menampilkan informasi serta dapat berinteraksi dengan pengunjung dengan menggunakan form sehingga dapat mengolah informasi yang ditampilkan. Web dinamis biasanya menggunakan pemrograman web PHP dan memiliki database untuk menyimpan informasi, seperti MySQL. 2.4 Metode Pengembangan Perangkat Lunak Ada beberapa model proses pengembangan perangkat lunak, namun pada skripsi ini hanya akan dibahas tentang RAD (Rapid Aplication Development) sebagai metode yang penulis pakai. 10 Beberapa alasan mengapa digunakan metode Rapid Application Development (RAD) adalah : 1. Aplikasi yang dikembangkan ini, merupakan aplikasi yang sederhana dan tidak memerlukan waktu yang lama dalam pengembangannya. Metode RAD mendukung untuk merancang aplikasi dalam jangka waktu yang pendek. 2. Aplikasi simulasi ini dalam implementasinya tidak memerlukan pemeliharaan, sehingga sangat cocok apabila digunakan metode RAD, karena metode ini tidak memiliki fase pemeliharaan. 3. Alasan utama penggunaan model pengembangan RAD adalah model pengembangan ini akan bekerja dengan baik bila diterapkan pada aplikasi berskala kecil. 2.4.1 Model RAD Menurut Martin (Pressman, 2002: 42), Rapid Aplication Development (RAD) adalah sebuah model proses perkembangan perangkat lunak sekuensial linier yang menekankan pada siklus perkembangan cepat dengan menggunakan pendekatan konstruksi berbasis komponen. Sehingga apabila kebutuhan dipahami dengan baik, maka sistem fungsional yang utuh dapat diselesaikan dalam waktu kira-kira 60 – 90 hari. Menurut Martin (Kendall & Kendall, 2003:239), fase dalam RAD dibagi menjadi empat, yaitu : 11 1. Fase Perencanaan Syarat-syarat Pada fase ini pengguna tingkat tinggi memutuskan fungsi apa saja yang harus difiturkan oleh aplikasi tersebut. 2. Fase Desain Pengguna Pada fase ini pengguna diminta membahas aspek-aspek desain non-teknis dari sistem dengan bimbingan penganalisis. Kerena tingginya sifat interaktif, fase ini sering digabungkan dengan fase konstruksi pada workshop desain RAD. 3. Fase Konstruksi Pada fase ini setiap desain yang diciptakan dalam fase sebelumnya selanjutnya ditingkatkan untuk dilakukan pengkodean sistem. Kemudian setelah tahap ini selesai dilakukan uji kemampuan untuk mendapatkan komentar, dan revisi dari pengguna tingkat tinggi. 4. Fase Pelaksanaan Tahap terakhir adalah dimana aplikasi baru diuji coba dan pengenalan terhadap aplikasi. Gambar 2.1. Fase RAD Martin (Kendal & Kendal, 2003: 238) 12 Umpan balik pengguna Menggunakan masukan dari pengguna Gambar 2.2. Workshop Desain RAD (Kendal & Kendal, 2003: 240) Menurut Butler (Pressman 2002: 41), seperti semua model proses yang lain, pendekatan RAD memiliki kekurangan : 1. Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber daya manusia yang memadai untuk menciptakan jumlah tim RAD yang baik. 2. RAD menurut pengembang dan pelanggan memiliki komitmen di dalam aktifitas rapid-fire yang diperlukan untuk melengkapi sebuah sistem, di dalam kerangka waktu yang sangat 13 diperpendek. Jika komitmen tersebut tidak ada dari tiap kontituen, proyek RAD akan gagal. 2.4.2 Data Flow Diagram (DFD) Pendekatan analisis terstruktur diperkenalkan oleh DeMarco (1978) dan Gane Sarson (1979) melalui buku metodologi struktur analisis dan desain sistem informasi. Mereka menyarankan untuk menggunakan data flow diagram (DFD) dalam menggambarkan atau membuat model sistem. DFD (Data Flow Diagram) adalah sebuah teknik grafis yang menggambarkan aliran informasi dan transformasi yang diaplikasikan pada saat data bergerak dari input menjadi output yang digambarkan dalam bentuk diagram yang menggunakan notasinotasi yang berupa simbol-simbol tertentu yang menunjukkan proses atau fungsi, aliran data, tempat penyimpanan data, dan entitas eksternal (Pressman,2002: 364). Terdapat dua bentuk DFD yang ada sekarang ini, yaitu DFD Fisikal (Diagram Arus Data Fisik) dan DFD Logikal (Diagram Arus Data Logika). DFD fisikal lebih tepat digunakan untuk menggambarkan sistem (sistem yang lama). Penekanannya yaitu bagaimana prosesproses dari sistem diterapkan (dengan cara apa, oleh siapa dan dimana) termasuk proses-proses manual, dengan mempertimbangkan lingkungan fisik dimana data tersebut mengealir (misanya lewat 14 telepon, surat, dan sebagainya) atau lingkungan fisik dimanadata tersebut akan disimpan (misalnya file kartu, hardisk, tape disk, dan sebagainya). DFD adalah alat yang digunakan pada metodologi pengembangan sistem yang terstruktur (Structur Analys and Design) dan merupakan alat bantu yang cukup populer sekarang ini, karena dapat menggambarkan arus data dalam sistem dengan struktur yang jelas. Beberapa simbol dalam DFD dapat dilihat pada tabel di bawah ini : Tabel 2.1 Simbol DFD Nama Simbol 1. Kesatuan Luar Keterangan Merupakan Gambar Simbol kesatuan (entity) dilingkungan luar sistem yang dapat berupa orang, organisasi atau sistem lainnya yang berada di lingkungan yang luarnya memberikan input atau menerima output dari luar. 2. Arus Data Arus Data (Data Flow) di DFD yang bersimbol suatu panah, arus data ini mengalir diantara proses, simpanan data (Data store) dan kesatuan luar 15 (External Entity). Arus data ini menunjukan arus data yang berupa masukan untuk sistem atau hasil dari proses sistem. 3. Proses Suatu kegiatan kerja yang dilakukan oleh orang, mesin atau komputer dari hasil suatu arus data yang akan keluar dari proses. 4. Simpanan Data Simpanan Data Store) (Data merupakan simpanan dari data yang dapat berupa : A. Suatu file atau database di sistem komputer B. Suatu arsip atau catatan manual C. Suatu kotak tempat data dimeja seseorang D. Suatu tabel acuan manual E. Suatu agenda atau buku 2.4.2.1 Tahapan Data Flow Diagram Langkah-langkah di dalam membuat data flow diagram dibagi menjadi tiga tahap, yaitu sebagai berikut: 16 1. Context Diagram Diagram ini dibuat untuk menggambarkan sumber serta tujuan data yang akan diproses atau dengan kata lain diagram tersebut digunakan untuk menggambarkan sistem secara umum dari keseluruhan sistem sistem yang ada. 2. Diagram Zero Diagram ini dibuat untuk menggambarkan tahapan proses yang ada di dalam context diagram, yang penjabarannya lebih terperinci. 3. Diagram Detail Diagram ini dibuat untuk menggambarkan arus data secara lebih mendetail lagi dari tahapan proses yang ada didalam zero diagram. 2.4.3 Entity Relationship Diagram (ERD) Entity Relationship Diagram merupakan suatu model untuk menjelaskan hubungan antar data dalam basis data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi. ERD untuk memodelkan struktur data dan hubungan antar data, untuk menggambarkannya digunakan beberapa notasi dan simbol. Pada dasarnya ada tiga simbol yang digunakan, yaitu: a. Entiti : Entiti merupakan objek yang mewakili sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 17 1999: 30). Simbol dari entiti ini biasanya digambarkan dengan persegi panjang. b. Atribut : Setiap entitas pasti mempunyai elemen yang disebut atribut yang berfungsi untuk mendeskripsikan karakteristik dari entitas tersebut. Isi dari atribut mempunyai sesuatu yang dapat mengidentifikasikan isi elemen satu dengan yang lain. Gambar atribut diwakili oleh simbol elips. c. Hubungan / Relasi : Hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Relasi dapat digambarkan sebagai berikut: Relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dalam satu basis data yaitu (Kadir, 2002: 48) : 1). Satu ke satu (One to one) Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan entitas A berhubungan paling banyak dengan satu entitas pada himpunan entitas B. 2). Satu ke banyak (One to many) Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B, tetapi setiap entitas pada entitas B dapat berhubungan dengan satu entitas pada himpunan entitas A. 18 3). Banyak ke banyak (Many to many) Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B. 2.5 Content Management Sistem CMS (Content Management System) adalah suatu sistem yang digunakan untuk mengelola dan memfasilitasi proses pembuatan, pembaharuan, dan publikasi content secara bersama (collaborative content management). Content mengacu pada informasi dalam bentuk teks, grafik, gambar maupun dalam format-format lain yang perlu dikelola dengan tujuan memudahkan proses pembuatan, pembaharuan, distribusi, pencarian, analisis, dan meningkatkan fleksibilitas untuk ditransformasikan ke dalam bentuk lain. Terminologi CMS sendiri cukup luas, di antaranya mencakup software aplikasi, database, arsip, workflow, dan alat bantu lainnya yang dapat dikelola sebagai bagian dari mekanisme jaringan informasi suatu perusahaan maupun global. CMS (Content Management System) terbukti merupakan sebuah aset penting bagi perusahaan untuk mengelola content situs web dan portal secara efisien dan efektif. Saat ini, berbagai perusahaan mengkombinasikan content tak berstruktur dengan transaksi tradisional dan application logic untuk membangun aplikasi berbasis Web. Web application ini mewujudkan interaksi yang lebih personal dengan para user-nya, dan meningkatkan kinerja perusahaan dengan menyediakan layanan mandiri bagi para karyawan, partner, penyedia barang dan pelanggan. Aplikasi berbasis Web 19 yang semakin berdaya, secara tidak langsung meningkatkan peranan dan pentingnya CMS sebagai bagian dari infrastruktur aplikasi perusahaan. Dengan adanya CMS yang terintegrasi dengan sebuah WebSite akan memberikan suatu nilai lebih yang akan meningkatkan fungsionalitas dan fleksibiltas dari Web Site tersebut, terlebih pada WebSite yang tujuan pemanfaatannya sebagai media promosi dan membangun citra konsumen, dimana kontinuitas dan inovasi dalam pemasaran produk-produk secara berkala dan berkesinambungan sebagai suatu hal yang memegang peranan penting dalam tercapainya target pemasaran. 2.5.1 Joomla Joomla adalah Contant management system (cms) Sumber terbuka yang bebas ditulis dengan bahasa pemograman php dan data base MySQL baik untuk internet maupun intranet Joomla menyertakan banyak fitur untuk meningkatkan kinerja termasuk page caching , web indexing , RSS freed , halaman untuk dicetak , web side searchingdan dukungan Internasionalisasi. Nama Joomla berasal dari sebutan phonetic sebuah kata bahasa Swahili “Jomla”dengan arti kebersamaan atau kesatuan pilihan nama mencerminkan komitmen para pengembang dan komunitasnya saat membentuk Joomla ketika terjadi perpecahan dari Mambo di bulan Agustus 2005. Joomla dibangun sebagai fork dari mambo dengan rilis perdana Joomla 1.0.0 pada tanggal 16 september 2005 mengembangkan versi dari mambo. 20 Menurut roadmap Joomla 2.0 code base akan ditulis ulang sekelompok dibangun mengadopsi GNU (General Publik Licence). Untuk membuat suatu Informasi Electronik yang mulai berkembang saat ini diperlukan suatu CMS Content Management system / server php yang digunakan untuk pembuatan/desain grafis, dan juga memiliki penulis yang kreatif untuk mengisi halamanhalaman web site dengan Mambo ataupun Joomla, tidak menjadi masalah karena seluruh tool memiliki fungsi yang sama. Meskipun program ini menggunakan bahasa php, bukan berarti harus paham seluruhnya tentang kode php. Bagi mereka tidak memahami kode HTML, Javascript, ASP, CGI, , maupun php tidak perlu takut untuk mempelajarinya karena meskipun tidak tahu tentang kode-kode tersebut, orang bisa membuat sebuah web secara cepat dengan beberapa fitur yang sangat kompleks yang dihubungkan dengan dalam suatu jaringan local atau luas (internet). CMS adalah software computer yang memfasilisasikan pembuatan documen atau contant secara gotong royong dan kolaboratif , CMS acap kali di artikan sebagai Aplikasi Web untuk mengelola web site dan contant web , sementara untuk mengedit dan membuat artikel disertakan software khusus client , ia juga dapat digunakan untuk menyimpan documen perusahaan terutama seperti operators manuals , tecnical manuals , sales guides dan sebagainya, solusi cms banyak tersedia dalam bentuk open source yang bebas 21 pungli dengan teknik yang lebih luas portal system wiki system bared group ware. 2.6 Tools Pengembangan Aplikasi 2.6.1 Adobe Photoshop Adobe Photoshop adalah merupakan software standar profesional untuk pengolahan citra atau gambar (image) yang memberikan lingkungan komprehensif bagi para desainer grafis profesional untuk membuat desain grafis yang rumit untuk kebutuhan percetakan, situs web, dan media lainnya (Sardi, 2004). Gambar 2.3 Tampilan Adobe Photoshop CS3 2.6.2 Macromedia Dreamweaver 8 Macromedia dreamweaver 8 adalah sebuah aplikasi yang digunakan untuk membuat web sites dibuat dengan kombinasi 22 tampilan visual tools, dikembangkan dengan banyak feature aplikasi dan didukung dengan code editing, didesign untuk bisa disesuaikan dengan setiap tingkatan kemampuan pemakai. Dreamweaver 8 dimasukkan banyak kemampuan baru untuk membantu membuat dan mengatur website, baik dari pemula sampai dengan tingkat lanjut. Aplikasi ini mendukung dengan sangat praktis dan dilengkapi dengan teknologi terbaru. Dreamweaver 8 bisa dijalankan pada operation system windows 2000, windows xp, dan Macintosh Mac OS® X 10.3 dan 10.4. dreamweaver 8 tidak bisa dijalankan pada windows 98, windows 2000 server, windows 2003 server, atau Macintosh OS 10.2.x atau dibawah seri ini. Fungsi coding Dreamweaver tidak hanya mendukung coding HTML tetapi juga CSS (Cascading Style Sheet), Javascript, Coldfusion, ASP (Active Server Pages), JSP (Java Server Pages), dan Dreamweaver juga memungkinkan anda membangun website dengan server berbahasa CFML (ColdFusion Markup Language), ASP.net, ASP, JSP, dan PHP. Dreamweaver 8 juga mempunyai kemampuan untuk mendukung pemrograman server side dan client side. Server side digunakan untuk memproses data yang berhubungan dengan server, misalnya pengolahan database. Client side merupakan bahasa pemrograman tambahan sekaligus sebagai pelengkap dari bahasa pemrograman lainnya 23 Gambar 2.4 Tampilan Dreamweaver 8 2.6.3 XAMPP Xampp merupakan suatu paket yang terdiri dari Apache, MySQL, PHP, dan Perl yang dapat digunakan untuk membantu proses instalasi produk tersebut (Sukarno, 2006). XAMPP merupakan pengembangan dari LAMP (Linux Apache, MySQL, PHP and PERL), XAMPP merupakan project non profit yang dikembangkan oleh Apache Friends yang didirikan Kai ’Oswalad’, Seidler dan Kay Vogelgesang pada tahun 2002, project mereka ini bertujuan mempromosikan penggunaan Apache Web Server. Xampp ditemukan pada musim semi tahun 2002. Adapun keuntungan dari Xampp antara lain (Sukarno, 2006): 1. Xampp dapat berjalan pada operating system Linux dan Windows. Dan kemungkinan juga akan berjalan di Machintosh. 2. Mudah bagi programmer apabila ingin berganti versi PHP, cukup melakukan switch versi. 3. Mudah dan cepat dalam proses instalasi. 24 2.6.4 PHP PHP adalah sebuah bahasa pemrograman yang diperintahnya dilaksanakan pada server dan kemudian hasilnya ditampilkan pada komputer klien. PHP juga merupakan HTML embedded, yaitu perintah PHP dituliskan bersamaan dengan perintah-perintah HTML. Dapat dikatakan tanpa HTML, maka PHP dapat digunakan sebagaimana mestinya. HTML (HyperText Markup Language) sendiri merupakan bahasa untuk membuat tampilan web. Jadi, disini ada sinergi dari dua bahasa yang saling menguatkan, yaitu PHP dan HTML (Arbai, 2004). Menurut dokumen resmi PHP, PHP singkatan dari PHP Hypertext Preprocessor yang merupakan bahasa berbentuk skrip yang ditempatkan dalam server dan diproses di server. Hasilnyalah yang dikirimkan ke klien, tempat pemakai menggunakan browser. Secara khusus, PHP dirancang untuk membentuk web dinamis. Artinya, dapat membentuk suatu tampilan berdasarkan permintaan terkini. Misalnya, bisa menampilkan isi database ke halaman Web. Pada prinsipnya, PHP mempunyai fungsi yang sama dengan skrip-skrip seperti ASP(Active Server Page), Cold Fusion, ataupun Perl. Kelahiran PHP bermula saat Rasmus Lerdorf membuat sejumlah skrip Perl yang dapat mengamati siapa saja yang melihatlihat daftar riwayat hidupnya, yakni pada tahun 1994. Skrip-skrip ini 25 selanjutnya dikemas menjadi tool yang disebut “personal home page”, paket inilah yang menjadi cikal-bakal PHP. Pada tahun 1995, Rasmus menciptakan PHP/FI versi 2. pada versi inilah pemrogram dapat menempelkan kode terstruktur didalam tag HTML. Yang menarik, kode PHP juga bisa berkomunikasi dengan database dan melakukan perhitungan-perhitungan yang kompleks sambil jalan. Pada saat ini, PHP cukup popular sebagai peranti pemrograman Web, terutama di lingkungan Linux. Walaupun demikian, PHP sebernarnya juga dapat berfungsi pada server-server yang berbasis UNIX, Windows NT, dan Macintosh. Bahkan versi untuk Windows 95/98 pun tersedia. Script PHP menyatu dengan file HTML, dieksekusi dan bekerja di komputer server (server side). PHP banyak digunakan untuk membuat website yang dinamis. Dibawah ini adalah salah satu contoh bagaimana script PHP menyatu dalam file HTML: Sample.php 1 <html> 2 <head> 3 <title>sample php</title> 4 <head> 5 <body> 6 7 <?php 26 8 echo “uji sample php “; 9 ?> 10 11 </body> 12 </html> Baris ke-1 hingga ke-6 dan baris-10 hingga ke-12 adalah file HTML. Script PHP disisipkan pada baris ke-7 yang diawali dengan tag pembuka <?php pada baris ke-7. perintah untuk melakukan operasi terdapat pada baris ke-8. akhir script PHP ditandai dengan tag penutup ?> pada baris ke-9. PHP pertama kali diperkenalkan oleh Ramus Lerdoft pada tahun 1995 untuk keperluan dinamisasi web site pribadinya. Saat ini PHP telah berkembang seiring dengan sambutan komunitas open source di Internet. PHP juga memenuhi kebutuhan akan bahasa scripting server side yang sederhana, kuat, dan memiliki konektivitas dengan beragam database server. Salah satu database server yang paling populer adalah MySQL. Web Server Skrip PHP Mesin PHP permintaan HTTP Browser Kode HTML Gambar 2.5 Skema PHP 27 2.6.5 MySQL MySQL adalah salah satu jenis database server yang sangat terkenal, kepopulerannya disebabkan MySQL menggunakan SQL sebagai bahasa dasar untuk mengakses databasenya. Selain itu, ia bersifat free (tidak perlu membayar untuk menggunakannya) pada berbagai platform (kecuali pada Windows, yang bersifat shareware atau perlu membayar setelah melakukan evaluasi dan memutuskan untuk digunakan untuk keperluan produksi). Perangkat lunak MySQL sendiri bisa di-download dari http://www.mysql.org atau http://www.mysql.com. 2.7 Web Browser Abdul Kadir mendefinisikan web browser sebagai perangkat lunak yang berguna untuk mengakses informasi web ataupun untuk melakukan transaksi via web. Beberapa contoh browser yang ada saat ini seperti: Internet Explorer, Mozila Firefox, Opera, Netscape, Safari. Cara kerja browser yaitu dengan membaca dokumen HTML yang diambil dari web server melalui ISP sebagai koneksi internet, kemudian ditampilkan melalui browser pada komputer (Kadir 2003). Web browser berkomunikasi dengan web server lewat jaringan komunikasi mengunakan protokol HTTP. Browser mengirim pesan meminta dokumen atau layanan tertentu web server. Web server kemudian menanggapi dengan mengirim dokumen atau menjalankan layanan tertentu di server dan mengirim hasil menggunakan protokol HTTP. Kemudian 28 browser akan menerima dokumen (HTML) tanggapan dari web server dan menampilkanya dilayar (Hariyanto, 2004). Protokol HTML dirancang untuk dapat menggabung semua protokol internet seperti Goper, Telnet, WAIS, dan sebagainya dalam satu protokol tunggal. Semua layanan protokol lain dikemas sebagai layanan-layanan yang disediakan lewat interaksi web browser dan web server. BAB III METODOLOGI PENELITAN 3.1. Metode Pengumpulan Data Metode penelitian yang diterapkan dalam mendapatkan data dan informasi yang mendukung dalam penelitian ini, sebagai berikut: 1. Studi Pustaka Penelitian kepustakaan digunakan sebagai dasar pembahasan secara teoritis dengan menggunakan data yang diperoleh dari lapangan dan mengevaluasi hasil penelitian lapangan, teori-teori dan pandangan dari buku-buku, bahan kuliah, pencarian melalui internet dan sumbersumber lainnya dalam penulisan karya tulis ini. 2. Studi Lapangan Dalam melakukan penelitian di lapangan akan didapatkan data yang terdapat dalam dokumen-dokumen instansi terkait, serta langsung mengamati, mengevaluasi sistem informasi penjualan pada perusahaanperusahaan lain yang sudah mengimplementasikan sistem tersebut. Pada penelitian ini juga akan dilakukan wawancara dengan narasumber atau pihak-pihak yang berhubungan dengan masalah tersebut. a. Teknik Wawancara, yaitu dengan langsung bertatap muka dengan pihak-pihak terkait yaitu pembeli spare part motor. b. Teknik Observasi, yakni dengan melakukan pengamatan langsung terhadap hal-hal yang berhubungan dengan sistem informasi 29 30 pemesanan tersebut. Observasi dilakukan pada bengkel CBR Motor Racing. 3. Studi Literatur Studi literatur ini dilakukan dengan melihat penelitian dan skripsi sejenis yang sudah ada. Merujuk pada penelitian yang telah dilakukan oleh (Indah Sartika, Perancangan dan pembuatan sistem promosi dan penjualan barang pada PT Papasamsu, 2004), dan (Denny Chandra Haryanto, Pembuatan website untuk pemesanan barang di perusahaan X, 2003). 3.2. Metode Pengembangan Sistem Metode membangun sistem adalah metode-metode, prosedurprosedur, konsep-konsep pekerjaan, aturan-aturan yang akan digunakan untuk mengembangkan suatu sistem infomasi (Sutabri, 2004: 68). Metode membangun sistem terdiri dari beberapa model dari proses perangkat lunak yang umum digunakan, diantaranya: Model Sekuensial Linear (Waterfall), Model Prototipe, Model RAD (Rapid Application Development), dan Model Spiral (Pressman, 2002: 27). Penulis memilih penelitian dengan menggunakan metode membangun sistem model pendekatan RAD (Rapid Application Development). Penulis menggunakan model RAD karena melihat dari aplikasi yang dikembangkan adalah aplikasi yang sederhana dan tidak membutuhkan waktu yang lama, metode RAD adalah metode yang diperuntukkan untuk jangka pendek sesuai dengan aplikasi yang dikembangkan. 31 Model RAD yang pada awalnya diusulkan oleh James Martin (1991) (http://en.wikipedia.org/wiki/Rapid_application_development), merupakan suatu pendekatan berorientasi objek terhadap membangun sistem yang mencakup suatu metode membangun perangkat-perangkat lunak. Tujuannya adalah mempersingkat waktu pengerjaan aplikasi serta proses yang dihasilkan didapat secara cepat dan tepat. Berikut merupakan gambar dari model RAD, yang terlihat pada gambar 3.1 (Kendall & Kendall, 2003: 237), di bawah ini : Fase Perancangan syarat-syarat Menentukan tujuan dan syarat-syarat informasi Umpan balik pengguna Fase Perancangan Fase Konstruksi Bekerja dengan pengguna untuk sistem perancangan Membangun sistem Menggunakan masukan dari pengguna Memperkenalkan sistem Fase Pelaksanaan Gambar 3.1. Model membangun sistem RAD Model RAD memiliki empat fase yaitu fase perencanaan syaratsyarat, fase perancangan, fase konstruksi, dan fase pelaksanaan (Kendall & Kendall, 2003: 238). Berikut adalah penjelasan masing-masing fase dalam penelitian ini. 32 1. Fase Perencanaan Syarat-Syarat Pada tahap ini dilakukan pengidentifikasian tujuan-tujuan aplikasi atau sistem serta untuk mengidentifikasi syarat-syarat informasi yang ditimbulkan dari tujuan-tujuan tersebut. Secara terperinci yang penulis lakukan pada tahap Tujuan dan Syaratsyarat Informasi adalah: a. Menganalisa sistem yang berjalan. b. Mengidentifikasi permasalahan yang ada.. c. Memberikan solusi permasalahan yang dihadapi. Hasil yang penulis dapatkan dari tahap Tujuan dan Syarat- syarat Informasi adalah: a. Memperoleh informasi mengenai sistem pemesanan spare part motor yang berjalan. b. Memperoleh informasi dari permasalahan dalam melakukan pencatatan secara manual. c. Dibutuhkan aplikasi yang dapat mencatat dan menyimpan data pemesanan dan data pembeli dengan menerapkan sistem pemesanan online. 2. Fase Perancangan Pada tahap ini dilakukan perancangan proses yaitu perancangan proses-proses yang akan terjadi di dalam sistem. 33 a. Perancangan Proses Perancangan proses-proses yang akan dilakukan didalam sistem menggunakan bagan alir DFD (Data Flow Diagram) yakni dengan membuat diagram konteks, diagram level nol, dan diagram level satu pada sistem yang akan diusulkan. b. Perancangan Basis Data Pada aplikasi sistem pemesanan ini digunakan database sebagai pelengkap program seperti registrasi, proses pemesanan, input data produk dan proses penyimpanan data produk. Database yang digunakan adalah database MySQL. c. Perancangan Antarmuka (User Interface) Pada perancangan antarmuka (user interace) dilakukan langkah menganalisis atau merencanakan tampilan untuk tata letak sesuai dengan fungsi aplikasi. 3. Fase Konstruksi Pada tahap ini dilakukan pembuatan program terhadap rancangan-rancangan yang telah didefinisikan. Pembuatan program yang dilakukan menggunakanbahasa pemrograman PHP, joomla sebagai template CMS, dan adobe photoshop untuk mengedit gambar-gambar pada website. 34 4. Fase Pelaksanaan Pada tahapan ini dilakukan pengujian terhadap aplikasi sistem pemesanan yang telah dibuat, pada pengujian terhadap aplikasi ini, penulis menggunakan pengujian black-box yaitu suatu pengujian yang berfokus pada persyaratan fungsional perangkat lunak (Pressman, 2002: 551). Sebagai akhir dari fase pelaksanaan penulis juga meminta tanggapan user tentang aplikasi ini untuk bahan evaluasi. 3.2. Kerangka Berfikir Penelitian Studi Pustaka Metode Pengumpulan Data Wawancara Studi Lapangan Observasi Studi Literatur Fase Perencanaan Syarat-Syarat Perancangan Proses Fase Perancangan Perancangan Basis Data Fase Konstruksi Perancangan Antar Muka Metode Pengembangan Sistem Fase Pelaksanaan Gambar 3.2 Kerangka Berfikir Penelitian BAB IV PEMBAHASAN DAN IMPLEMENTASI 4.1. Metodologi Pengumpulan Data Penyusunan skripsi ini dilakukan dengan menggunakan beberapa metode yang dapat mendukung penulisan, baik dalam pengumpulan data maupun informasi yang diperlukan, untuk mendapatkan kebenaran materi uraian pembahasan. 4.1.1. Studi Pustaka Studi pustaka digunakan dengan membaca dan mempelajari referensi yang ada, e-book, serta mencari referensi tambahan dari internet. Buku utama yang digunakan peneliti yaitu : Super Market Online (Dedik, 2010), Membangun Website Dengan CMS Joomla (Hidayat, 2009), Membangun Website Dinamis Interaktif dengan PHP-MySQL (Windows & Linux) (Muhammad, 2006) dan bukubuku selengkapnya yang digunakan dapat dilihat pada daftar pustaka. 4.1.2. Studi Lapangan Studi Lapangan dilakukan dengan mendatangi langsung tempat penelitian, yaitu pada bengkel CBR Motor Racing. 4.1.2.1. Wawancara Disini dilakukan tanya jawab oleh peneliti sambil bertatap muka antara pewawancara dengan narasumber 35 36 yaitu Bapak Umar Aryo Seno (Pemilik CBR Motor Racing) yang dilakukan pada tanggal 23 Juni 2011 di bengkel CMR Jakarta. 4.1.2.2. Observasi Pada metode Observasi, peneliti melakukan pengamatan langsung di lapangan untuk mengetahui secara langsung keadaan objek penelitian yang sebenarnya. Hal ini bertujuan untuk memperoleh penjelasan mengenai data-data dan informasi yang dibutuhkan dalam penelitian pada bengkel CBR Motor Racing Jakarta. 1. Gambaran Umum Perusahaan CMR (CBR Motor Racing) merupakan suatu usaha rumahan yang sudah dirintis oleh pemiliknya sejak tahun 2008. Bermula dari suatu komunitas forum Motor Honda CBR dan pemiliknya hobi dalam hal memodifikasi sekaligus service motor, lambat laun pemilik CMR tersebut ingin memulai bisnisnya ke penjualan suku cadang motor khususnya Honda CBR. Dimulai dari aksesoris, service sampai ke suku cadang yang susah dicari sekalipun dapat dicari di sini. Memulai dengan memperkenalkan produk- produknya melalui jejaring sosial facebook ternyata mendapatkan respon yang sangat baik dari masyarakat 37 yang mencari produk seperti aksesoris dan sparepart. Dikarenakan penjual menjual produknya yang sifatnya unik dan susah di cari di pasaran. Dengan pelanggan yang semakin hari semakin bertambah memberikan peluang pada usaha ini untuk dapat mengembangkan lagi usahanya. Namun selain mendapat peluang usaha yang besar tidak terlepas dari permasalahan yang timbul seperti kompleksitas pemesanan yang tinggi memungkinkan pihak CMR harus dapat memanajemen dengan baik setiap pemesanan yang dilakukan oleh pelangannya. Tidak hanya memperkenalkan suatu produknya saja melalui media internet ini juga harus bisa memberikan fasilitas kepada pelanggannya agar dapat melakukan pemesanan secara online untuk memberikan kenyamanan dalam melakukan pemesanan produk. Hal-hal diatas tersebut dapat dilakukan apabila ada suatu sistem yang dapat memenuhi permasalahanpermasalahan diatas yaitu dengan dibuatkannya sistem informasi pemesanan online berbasis website. Untuk itu CMR ingin membuat sistem pemesanan dan penjualan online berbasiskan website. Jadi setiap pelanggan yang 38 ingin memesan produk tinggal langsung memesannya melalui situs yang akan dibuat tersebut. 2. Hasil Observasi Observasi yang dilakukan pada bengkel CMR memberikan kesimpulan bahwa promosi penjualan spare part motor dengan menggunakan media brosur dan promosi dari mulut ke mulut kurang efektif, karena pelanggan yang datang tidak terlalu banyak. Selain itu, pencatatan pemesanan spare part motor masih dilakukan secara manual. Hal ini memungkinkan terjadinya kesalahan pencatatan ataupun hilangnya data. Pembeli pun harus memesan barang secara langsung dengan datang ke bengkel sehingga pelayanan yang diberikan kurang. Oleh karena itu diperlukan suatu aplikasi pemesanan online dengan sebuah teknologi masa kini yang dapat memberikan kemudahan terhadap pembeli. 4.1.3 Studi Literatur Studi literatur ini dilakukan dengan melihat penelitian dan skripsi sejenis yang sudah ada. Merujuk pada penelitian yang telah dilakukan oleh (Indah Sartika, Perancangan dan pembuatan sistem promosi dan penjualan barang pada PT Papasamsu, 2004), dan (Denny Chandra Haryanto, Pembuatan website untuk pemesanan 39 barang di perusahaan X, 2003). Kelebihan yang akan ditambahkan pada aplikasi yang akan dibuat antara lain yaitu : menambahkan fitur status order pada admin, dan form guest book agar konsumen selain member, juga dapat berinteraksi. 4.2. Metode Pengembangan Sistem 4.2.1. Fase Perencanaan Syarat – Syarat Pada tahap ini dilakukan analisa kebutuhan masalah untuk pembuatan aplikasi, mengedintifikasi permasalahan, dan memberikan solusi terhadap permasalahan yang dihadapi. 1. Analisa Kebutuhan Masalah a. Analisa Sistem Yang Sedang Berjalan Sistem yang berjalan pada bengkel CMR adalah sebagai berikut : 1. Informasi tentang produk disebarkan melalui pembagian selebaran atau brosur, promosi dari mulut ke mulut, dan media massa lainnya kepada masyarakat umum. 2. Pemesanan dan pembelian oleh konsumen dilakukan dengan cara datang langsung ke bengkel. Bagan alir sistem yang sedang berjalan digambarkan pada gambar 4.1 dibawah ini : 40 Gambar 4.1 Diagram Sistem yang Berjalan b. Kelemahan Sistem yang Berjalan Berdasarkan analisa sistem berjalan di atas, maka didapat kelemahan sistem yang berjalan sebagai berikut: 1. Promosi produk yang dilakukan menggunakan media konvensional seperti promosi dari mulut ke mulut dan media cetak kurang efektif karena tidak menjangkau pembeli secara luas. 2. Pembeli harus datang sendiri untuk membeli produk yang diinginkannya sehingga pembeli hanya terbatas pada orang yang mau datang ke tempat penjualan saja. 41 3. Data pembelian yang dicatat secara manual juga berpotensi terjadi kesalahan atau human error. c. Solusi Pemecahan Masalah Pemecahan masalah yang penulis lakukan dalam menyelesaikan masalah adalah dengan pembuatan aplikasi pemesanan spare part secara online berbasis web. Website yang dibuat akan dijadikan sebagai media promosi sekaligus untuk memesan barang dimana penjual telah memasukkan data barang-barang yang akan dijual. d. Analisis Sistem Usulan Dengan adanya website pemesanan barang, masyarakat yang ingin mencari informasi produk mengenai spare part kendaraan bermotor tidak perlu repot untuk datang langsung ke bengkel-bengkel tertentu masyarakat bisa mengakses website tersebut melalui komputer tanpa ada batasan waktu. Konsumen juga dapat melakukan pemesanan langsung secara online. Bagan alir sistem yang sedang berjalan digambarkan pada gambar 4.2 dibawah ini : 42 Gambar 4.2 Diagram Sistem Usulan Tabel 4.1 Perbandingan sistem berjalan dengan sistem usulan No 1 Sistem Berjalan Sistem yang Diusulkan Hasil yang Ingin Dicapai Pembeli atau Pembeli atau konsumen Data transaksi melalui sistem konsumen bisa melakukan pemesanan ini dapat melakukan untuk pemesanan di rumah dilakukan dengan mudah dan memesan harus dengan menggunakan cepat yang dapat dilakukan datang langsung ke fasilitas internet. Dengan dimana saja dan kapan saja toko menggunakan aplikasi tanpa batas waktu. Sehingga pemesanan berbasis web. menguntungkan kedua belah pihak (penjual dan pembeli). 43 2 Untuk promosi Produk dapat di Setiap ada produk baru yang produk mengunakan promosikan melalui media akan ditawarkan dapat diolah media iklan seperti internet seperti forum melalui fasilitas admin. brosur, majalah dan forum sosial diantarnya koran, hal tersebut facebook, twitter, frienster sangat banyak dan media sosial lainnya. mengeluarkan biaya ketika ingin melakukan promosi secara terus menerus setiap ada produk baru. 3 Perhitungan dan Pengecekan data stok Stok barang bisa di pengecekan stok barang dilakukan secara manajemen oleh admin barang masih komputerisasi dengan melalu fasilitas stok barang dilakukan secara aplikasi sederhana yang tersedia di website manual dengan misalnya exel dan access. tersebut. Media penyimpanan Penyimpanan tersusun Dengan adanya basis data ini, masih bersifat secara rapih dan terstruktur dapat memudahkan dalam manual, dengan dengan menggunakan pengolahaan data,yaitu media kertas dan basis data dalam aplikasi mencari maupun dokumen atau data- pemesanan berbasis web mendapatkan data-data data tidak tersusun ini. tersebut dan data tersebut pencatatan melalui kertas. 4 secra terstruktur dan dapat tersimpan secra aman rapih. dan rapih di dalam basis data. 44 2. Tujuan Peneliti bertujuan untuk membuat suatu aplikasi pemesanan barang berbasis web yang dapat diakses kapanpun dimanapun dengan menggunakan internet, sehingga proses promosi dan pemesanan produk kepada konsumen menjadi mudah. 3. Syarat-syarat Untuk mewujudkan tujuan tersebut dibutuhkan beberapa syarat minimum dalam pembuatan aplikasi pemesanan spare part motor berbasis web ini yaitu meliputi hal-hal sebagai berikut : 1. Web server Web server merupakan syarat mutlak suatu aplikasi berbasis web. Web server merupakan platform untuk menjalankan suatu aplikasi berbasis web. Untuk pengembangan aplikasi ini dibutuhkan minimum Web Server Apache 2.0 2. Bahasa Pemrograman Bahasa pemrograman dibutuhkan untuk dapat membangun sebuah aplikasi, agar komputer dapat melakukan berbagai operasi dan fungsi sesuai dengan keinginan user. Untuk itu dibutuhkan suatu bahasa pemrograman yang dapat digunakan untuk membuat aplikasi client server. Bahasa pemrograman yang dibutuhkan dalam pengembangan aplikasi ini adalah Joomla versi 1.0 dan PHP 5.2.5. 45 3. Database Pengelolaan database akan digunakan untuk pelengkap program seperti proses login serta proses pemesanan dan penyimpanan file produk. Database yang dibutuhkan adalah database MySQL 5.0.5.1. Spesifikasi perangkat lunak dan perangkat keras minimum yang diperlukan dalam pembuatan aplikasi ini adalah sebagai berikut : 2. Perangkat Lunak : a. Paket web server Xampp versi 1.6.6a (Apache 2.0., PHP 5.2.5.,, MySQL 5.0.5.1) 3. b. Macromedia Dreamweaver 8. c. Mozilla Firefox 3.0. d. Microsoft Windows XP. Perangkat Keras : a. b. Personal Computer 1) Processor : Intel Pentium IV. 2) RAM : Memory 256 MB 3) Harddisk : 80 GB 4) VGA : 128 MB Monitor dengan resolusi 800x600 pixel. 46 4.2.2 Fase Perancangan Tahapan selanjutnya dalam RAD setelah menganalisis masalah pada sistem yang berjalan adalah tahap perancangan sistem yang bertujuan untuk mengatasi permasalahan-permasalahan yang ada dan memberikan usulan rancangan sistem. 1. Perancangan Data Flow Diagram (DFD) DFD merupakan alat perancangan sistem yang berorientasi pada alur data dengan konsep dekomposisi yang dapat digunakan untuk penggambaran analisa maupun rancangan sistem yang mudah dikomunikasikan oleh profesional sistem kepada pemakai maupun pembuat program. Berikut merupakan gambaran umum website Pemesanan barang Online dalam bentuk DFD. a. Diagram Konteks Diagram konteks merupakan diagram yang memperlihatkan aplikasi sebagai bentuk satu proses yang terjadi atau pemetaan yang terjadi. Memesan Produk Konsumen Info Produk dan Bukti Pembayaran Aplikasi Pemesanan Spare Part Motor Online Data Pelanggan dan Data Pemesanan Produk Administrator Olah data Pemesanan dan Produk Gambar 4.3 Diagram Kontex 47 Dalam konteks diagram pada gambar 4.3 terdapat dua entity yang menunjang proses aplikasi ini yaitu konsumen dan administrator b. Diagram Zero Diagram ini untuk mendetailkan setiap proses yang terjadi pada diagram zero sistem yang diusulkan. 1.0 Konsumen Username,Password user registrasi User, status user Admin User, status user user User User,,status Username, Password Nama konsumen,alamat,produk bukti_pemesanan username Nama Produk, jumlah produk 2.0 Transaksi,alamat Pemesanan produk Stok produk Username, produk Order status order Produk Order status Stok produk 3.0 Nama produk Kategori Stok produk Mengelola data Gambar 4.4 Diagram Zero sistem yang diusulkan 48 Pada gambar 4.4 ini, terdapat entity yaitu konsumen dan admin. Sistem ini memiliki tiga proses yaitu : proses 1.0 yakni proses registrasi, proses 2,0 yakni proses pemesanan barang, dan proses 3.0 yakni proses mengolah data. c. Diagram Rinci 1) Diagram Rinci / Level 2 proses ke-1 Diagram Gambar 4.5 menjelaskan secara detail dari proses 1 yaitu proses mengolah data user yakni pendaftaran user dan proses mempebaharui data user yang diperoleh dan disimpan di database user. 49 2) Diagram Rinci / Level 2 proses ke-2 Diagram Gambar 4.6 menjelaskan secara detail dari proses 2 yaitu proses memilih produk, yaitu pemilihan produk yang dilakukan oleh konsumen. Kemudian proses menentukan produk, yakni konsumen telah menentukan produk apa saja yang akan dibeli. Setelah itu proses konfirmasi pemesanan,yaitu konsumen mengkonfirmasi pemesanannya dan akan disimpan dalam database order. Pada proses Melihat data pemesanan, admin dapat melihat data pemesanan yang ada dalam database order. 50 3) Diagram Rinci / Level 2 proses ke-3 3.1 Mengedit status pemesanan admin Order status Order status order Nama konsumen 3.2 Nama konsumen Menghapus data pemesanan Nama produk Kategori Stok produk 3.3 Nama produk Kategori Stok produk produk Menambah produk Nama produk Kategori Stok produk 3.4 Mengedit produk 3.5 Nama produk Nama produk Kategori Stok produk Nama produk Menghapus produk Gambar 4.7 Diagram Level 2 proses ke-3 Diagram pada gambar 4.7 menjelaskan secara detail dari proses 3 yaitu proses mengedit status pemesanan, menghapus data pemesanan, menambah produk, mengedit produk yang tersimpan dalam database produk, dan menghapus produk. 51 2. Perancangan Basis Data Basis data dalam aplikasi absensi ini diimplementasikan menggunakan Mysql yang terintegrasi dengan PHP. a. Entity Relationship Diagram (ERD) Perancangan basis data ini termasuk didalamnya meliputi bentukan ER Diagram diimplementasikan dalam yang berikutnya bentuk tabel-tabel akan dengan keterkaitan atau keterhubungannya diantara tabel tersebut. Perancangan DFD yang telah digambarkan sebelumnya kemudian dilanjutkan dengan perancangan database yang akan digunakan pada aplikasi ini dengan penggambaran database ER (Entity Relationship) Diagram sebagai berikut : olah Admin Usernam 1 Passwor idAdmin M idUser* M M User usernam Stok order Produk Gambar password Alamat idProdk Nama Keterang Telp Kategori Nama Email Harga idorder Jumlah order IDUser* Status idProduk ** Gambar 4.8 Entity Relationship Diagram (ERD) 52 b. Spesifikasi Tabel 1. Nama Database : commercedb Nama Tabel : Produk Primary Key : idProduk Foreign Key :Tabel 4.2 Tabel Produk No Nama Field Type Size Keterangan 1 Id_produk* INT 4 ID Produk 2 Kategori Varchar 55 Kategori Produk 3 Nm_prdk Varchar 55 Nama Produk 4 Hrg_Prdk INT 6 Harga Produk 5 Gambar Varchar 55 Gambar Produk 6 Ket Text 55 Keterangan Produk 2. Nama Tabel : User Primary Key : idUser Foreign Key :Tabel 4.3 Tabel User No Nama Field Type Size Keterangan 1 Id_user* INT 4 ID User 2 Username Varchar 55 Username 3 Password Varchar 55 Password User 4 Nama Text 55 Nama User 5 Email Text 55 Email User 6 Alamat Text 55 Alamat User 7 Status User Text 55 Status User 53 3. Nama Tabel : Order Primary Key : idOrder Foreign Key : idUser, idProduk Tabel 4.4 Tabel Order No Nama Field Type Size Keterangan 1 id_Order* INT 4 ID Produk 2 Jumlah_Order INT 55 Kategori Produk 3 Status_Order Varchar 55 Nama Produk 4 id_User** INT 4 Harga Produk 5 id_Produk** INT 4 Gambar Produk 3. Rancangan Tampilan (User Interface) 1. Rancangan Tampilan Home Halaman ini merupakan halaman depan dari semua halaman yang ada pada website ini. Halaman ini juga dapat disebut sebagai halaman pembuka, karena pada saat pertama website dibuka maka halaman inilah yang akan tampil sebelum halaman yang lainnya. Tampilan menu utama terdiri dari beberapa menu yang dapat membuka halaman lain seperti tampilan Home, Store Online, GuestBook, Contact dan Admin. Rancangan halaman selanjutnya sama rancangan tampilan Home hanya yang membedakannya adalah isinya. Rancangan tampilan menu utama dapat dilihat pada gambar 4.9 54 :: BANNER :: :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung Text Selamat Datang Main Menu Time Pools Link Link2 Link3 Link4 Login Form UserName Password Password LOGIN Gambar 4.9 Rancangan Halaman Index 2. Rancangan Tampilan Pooling Pada rancangan tampilan atau halaman pooling ini akan menampilkan persentasi dari pertanyaan yang diajukan kepada para pengunjung website. Apakah website tersebut bermanfaat atau tidak bagi pengunjung website. Ketika di input pilihannya maka akan mucul persentasi dari setiap jawaban yang ada. Untuk rancangannya dapat dilihat pada gambar 4.10 berikut : 55 :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung Bagaimana pendapat anda tentang fasilitas toko online pada website ini? a. Sangat Baik ----------------------------- 90% b. Baik --------------- 45 % c. Biasa Saja ----- 22 % d. Tidak Baik -- 10 % Main Menu Link1 Link2 Link3 Link4 Time Pools Login Form UserName Password LOGIN Gambar 4.10 Rancangan Halaman Pooling 3. Rancangan Tampilan Store Online Pada rancangan halaman produk ini akan menjelaskan mengenai produk - produk yang akan diperjualbelikan secara online, dengan terlebih dahulu memilih kategori produk yang akan dipesan kemudian pilih produk yang akan dipesan, tetapi sebelumnya pengunjung website haruslah melakukan registrasi terlebih dahulu apabilia ingin melakukan pemesanan produk. 56 Untuk rancangan halamn produk adalah seperti pada gambar 4.11. :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung Time Gambar Produk Quantity : Main Menu Ket … xxxxxxxxxxxxx xxxxxxxxxxxx Gambar Add To Chart Pools Link1 Link2 Link3 Link4 Gambar 4.11 Rancangan Halaman Produk 4. Rancangan Tampilan Shopping Cart Dalam rancangan halaman shooping cart ini yang merupakan halaman yang akan mengakumulasikan harga pemesanan setiap produk yang telah dipesan oleh pengunjung website ataupun konsumen. Dijelaskan dalam halaman ini 57 mengenai penambahan produk dan penambahan item per produk. Untuk rancangannya dapat dilihat pada gambar 4.12. :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung Main Menu Link1 Link2 Link3 Link4 Time Shooping Cart Nama Harga xxxx Rp. xxx Quantity Subtotal Rp.xxx Update Hapus Sub-Total: Rp. xxx Total : Rp. xxx Pools << Lanjut Belanja | Check Out >> Gambar 4.12 Rancangan Halaman Shopping Cart 5. Rancangan Tampilan Registrasi Halaman registrasi ini dibuat untuk mengisi data – data pengunjung, seperti nama, alamat, telp, email dan lain sebagainya. Pada halaman registrasi ini nantinya akan menjadi acuan untuk biodata pengunjung yang dapat dijadikan subjek apabila pengunjung itu melakukan pemesanan produk ataupun 58 mengisi forum tanya jawab yang ada pada website tersebut. Untuk rancangan halaman registrasi dapat dilhat pada gambar 4.13. :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung Time Main Menu Pools Link1 Link2 Link3 Link4 Gambar 4.13 Rancangan Halaman Registrasi 6. Rancangan Halaman GuestBook Dalam halaman forum atau guest book ini dimaksudkan untuk setiap pengunjung dapat mengisi forum tersebut. Untuk forum itu bisa berisi komentar maupun saran ataupun pertanyaan – pertanyan yang berhubungan dengan website ini. Untuk rancangannya dilhat pada gambar 4.14. 59 :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung Nama Subjek Icon Message : : : : Image File Attach : : Main Menu Link1 Link2 Link3 Link4 Login Form Submit UserName Password LOGIN Gambar 4.14 Rancangan Halaman Guest Book 7. Rancangan Halaman Contact Us Rancangan halaman kontak kami ini dimaksudkan untuk mencantumkan alamat pemilik ata toko ini dengan alamatnya sendiri dimana lokasi pemilik atau toko itu rancangannnya dilhat pada gambar 4.15. berada. Untuk 60 :: BANNER:: Home | Store Online | GuestBook | Admin Daftar Pengunjung ::Contact Us:: Time Jl. raya Pasar Lama No. 18 Lewiliang Bogor Indonesia Country 443212 Phone 0251-8647424 Main Menu Email [email protected] Link1 Link2 Link3 Link4 Pools Login Form UserName Password LOGIN Gambar 4.15 Rancangan Halaman Contact Us 8. Rancangan Halaman List Order Halaman List Order berisi daftar order yang telah dimasukkan oleh user. Pada daftar order, terdapat nama user, order detail, tanggal order, status order, dan jumlah total harga barang yang dipesan. Tampilan halaman List Order dilhat pada gambar 4.16. 61 :: BANNER:: Admin Product Orders Oder Number Name Order Detail Order Date Status Sub Total Gambar 4.16 Rancangan Halaman List Order 9. Rancangan Order Detail Pada halaman Order Detail, ditampilkan keterangan lengkap dari pemesanan yang dilakukan oleh pembeli. Order Detail mencakup informasi order, informasi pembeli,dan informasi produk yang dibeli. Tampilannya dilhat pada gambar 4.17. 62 :: BANNER:: Admin Product Orders Order Information Costumer Information Name : Contact : Email : Order Items Product Name : Price : Quantity : Subtotal : Gambar 4.17 Rancangan Halaman Order Detail 4.2.3 Fase Konstruksi Pada tahap ini penulis melakukan pembangunan sistem aplikasi yang telah dirancang sebelumnya. Pembangunan aplikasi meliputi pemenuhan kebutuhan hardware (perangkat keras) dan Software (perangkat lunak) yang digunakan. 1. Pemrograman Pada tahap ini penulis menggunakan bahasa pemrograman dengan PHP, sedangkan software yang digunakan dalam pembuatan aplikasi ini yaitu Joomla dan komponen Virtue Mart sebagai template CMS, Adobe Photoshop CS2 untuk mengedit gambar-gambar, Macromedia Dreamweaver 8, dan sebagai software yang menunjang database, penulis menggunakan MySQL. 63 2. Spesifikasi Hardware dan Software 1. Perangkat Keras (Hardware) 1. Processor Genuine Intel(R) Core(TM) 2 Duo CPU T6570 @ 2.1GHz. 2. Harddisk 320 GB. 3. Memory DDR 2 GB. 4. Monitor dengan resolusi 1280x800 pixel. 2. Perangkat Lunak (Software) Spesifikasi perangkat lunak (software) yang penulis gunakan dalam perancangan aplikasi ini dijelaskan sebagai berikut : 1. Sistem Operasi : Windows XP Service Pack 2. 2. Webserver : Xampp v 1.6.6a (Apache 2.0, PHP 5.2.5, MySQL 5.0.5.1) 3. Browser : Mozilla Firefox 3.5.2. 4. Adobe Photoshop CS3. 5. Macromedia Dreamweaver 8 4.2.4 Fase Pelaksananaan Pada tahap ini dilakukan pengujian terhadap sistem dan melakukan pengenalan terhadap sistem. Penulis menggunakan metode pengujian dengan pendekatan blackbox testing. Metode blackbox testing melakukan pengujian tanpa melihat source code program dan 64 dijalankan oleh tester atau user untuk mengamati program apakah telah menerima input, memproses, dan menghasilkan output, dan ternyata berjalan dengan benar. Hasil pengujian dapat dilihat pada Tabel 4.5 Hasil Pengujian Aplikasi dengan Black Box Testing. Tabel 4.5 Hasil Pengujian Aplikasi No 1 Rancangan Proses Hasil yang Diharapkan Klik menu Home Masuk halaman home Hasil Keterangan Ok Dapat dilihat pada Lampiran B Gambar 1 2 Klik Register Masuk halaman registrasi, isi data registrasi Ok Dapat dilihat pada Lampiran B Gambar 2 3 Klik menu Login user Masuk halaman Login, isi nama dan password Ok Dapat dilihat pada Lampiran B Gambar 1 4 Klik menu Store Online Masuk halaman Store Online Ok Dapat dilihat pada Lampiran B Gambar 3 5 Klik menu Categories Masuk halaman List Produk Ok Dapat dilihat pada Lampiran B Gambar 4 6 Klik tombol Add to Chart Menambahkan barang pada keranjang belanja Ok Dapat dilihat pada Lampiran B Gambar 6 7 Klik tombol Checkout Masuk halaman Konfirmasi Order Ok Dapat dilihat pada Lampiran B Gambar 8 8 Klik tombol Confirm Order Mengkonfirmasi pemesanan dan isi biodata Ok Dapat dilihat pada Lampiran B Gambar 7 9 Klik tombol Log Out Kembali ke halaman Home Ok Dapat dilihat pada Lampiran B Gambar 1 10 Klik menu Order Melihat daftar pemesanan OK Dapat dilihat pada Lampiran B Gambar 11 BAB V PENUTUP 5.1 Kesimpulan 1. Dengan adanya website ini, akan lebih mempermudah pihak CMR untuk melakukan pengelolaan pemesanan. Hal ini terlihat pada halaman order list dimana admin dapat melihat dan menghapus pemesanan. Halaman order list dapat dilihat pada lampiran B gambar 11. 2. Memepermudah konsumen mendapatkan informasi mengenai produkproduk yang akan dibelinya pada website ini. Hal ini dapat dilihat pada lampiran B gambar 4 dan 5. 3. Pemesanan barang dapat dilakukan secara langsung melalui website ini. Konsumen tidak harus datang ke bengkel untuk memesan barang. Hal ini dapat dilihat pada lampiran B gambar 6-8. 4. Dengan mengguanakan CMS, yaitu Joomla dan virtuemart, proses pembuatan website, akan menjadi lebih mudah karena pada tools tersebut sudah disediakan banyak fitur-fitur yang berguna. 5.2 Saran 1. Disarankan agar kedepannya website ini bisa dikembangkan menjadi website yang lebih menarik lagi dengan menambahkan animasi dalam menyajikan produk. 65 66 2. Aspek keamanan website juga merupakan hal penting karena selain sebagai acuan agar terpeliharanya sebuah website dengan lebih baik, aspek ini juga berperan dalam menjaga intervensi pihak-pihak luar yang mungkin mengganggu sebuah website. 3. Proses transaksi diharapkan dapat dikembangkan menjadi otomatis agar lebih mempermudah pengguna dalam bertransaksi. DAFTAR PUSTAKA Anonim. 2010. Belajar Sendiri Membuat Homepage Dengan HTML. Jakarta : Elex Media Komputindo. Arbai. 2004. Manajemen Database dengan MySQL. Yogyakarta: Penerbit Andi Firdaus. 2010. PHP & MySQL. Palembang : Maxikom. Hartono, Jogiyanto. 1999. Pengenalan Komputer. Yogyakarta: Andi. Kadir, Abdul. 2003. Pengenalan Sistem Informasi. Yogyakarta: Penerbit Andi. Kenneth E. Kendall., Jullie E. Kendall. 2003. Sistems Analysis and Design. fifth Edition. Dialihbahasakan oleh Thamir Abdul Hafed Al-Hamdany, B.Sc, M.Sc dalam buku Analisa dan Perancangan Sistem Jilid 1. Jakarta : Prenhallindo. Kurniawan, Dedik. 2010. Super Market Online. Jakarta : Elex Media Komputndo. Ladjamudin, Al-Bahra. 2005 Analisis dan Desain Sistem Informasi. Yogyakarta: Graha Ilmu. Mac Bride. 2009. Internet. Bekasi : Megapoin. Pressman, Roger S. 2002. Rekayasa Perangkat Lunak Pendekatan Praktisi (Buku Satu). Yogyakarta : Andi. Sardi, Irawan. 2004. Manajemen, Desain, dan Pengembangan Situs Web dengan Macromedia Dreamweaver MX dan Adobe Photoshop 7. Jakarta: Elex Media Komputindo. Sarif, Hidayat. 2009. Membangun Website Dengan CMS Joomla. Bandung : Info Media. 67 68 Sukarno, Muhammad. 2006. Membangun Website Dinamis Interaktif dengan PHP-MySQL (Windows & Linux). Jakarta: Eska Media Sutabri, Tata. 2004. Analisa Sistem Informasi. Yogyakarta : Andi. Whitten, Bentley, Dittman. 2004. Metode Desain & Analisis Sistem. Yogyakarta: Penerbit Andi. http://en.wikipedia.org/wiki/Rapid_application_development diakses pada 5 Agustus 2011 http://id.wikipedia.org/wiki/Perdagangan_elektronik diakses pada 20 Juni 2011. deris.unsri.ac.id/materi/deris/ecommerce_deris.pdf diakses pada 11 Juni 2011. LAMPIRAN A HASIL WAWANCARA Narasumber : Umar Aryo Seno (Pemilk Bengkel CMR) 1. Pewawancara : Erry Handoyo Waktu : 23 Juni 2011 T : Bagaimana CMR melakukan promosi produk-produk yang akan dijual ? J : Promosi dilakukan dengan cara membagi-bagikan brosur kepada masyarakat. Selain itu juga CMR melakukan promosi melalui Koran dan majalah otomotif. 2. T : Bagaimana proses pembelian produk oleh konsumen ? J : Untuk membeli barang, konsumen datang langsung ke bengkel CMR, kemudian akan langsung dilayani oleh sales kami. 3. T : Apakah data-data pembelian dicatat? Bagaimana pencatatannya ? J : Ya, pencatatan dilakukan dengan merujuk pada bon pembelian. 4. T : Masalah apa yang sering dihadapi dalam penjualan dengan sistem yang sekarang? J : Pembeli kurang mengetahui produk-produk yang ditawarkan. Pembeli cenderung berasal dari daerah sekitar bengkel, sehingga pembeli yang datang agak kurang. Pembeli juga tidak dapat memesan terlebih dahulu. 5. T : Apakah menurut bapak promosi yang telah dilakukan berjalan baik dan efektif? J : Menurut kami masih kurang, karena promosi hanya mencakup lingkup yang kecil, hanya pada daerah yang berdekatan dengan bengkel CMR. 6. T : Menurut bapak bagaimana jika terdapat aplikasi pemesanan yang yang menggunakan websitre? J : Jika memang hal itu dapat dilakukan saya rasa hal itu dapat mengefektifkan masalah promosi dan pemesanan dapat dilakukan secara langsung tanpa harus datang ke bengkel. 7. T J : Input dan output apa saja yang diharapkan dalam aplikasi ini? : Saya menginginkan adanya pemesanan barang yang rapi yang bisa dilihat setiap saat saya mengakses aplikasi tersebut. Kemudian saya ingin agar konsumen yang sudah menjadi langganan dapat disimpan datanya. LAMPIRAN B TAMPILAN APLIKASI 1. Halaman Home 2. Halaman Registrasi 3. Halaman Store Online 4. Halaman Produk 5. Halaman Produk Detail 6. Halaman Shopping Chart 7. Halaman Biodata Pemesan 8. Halaman Konfirmasi 9. Halaman GuestBook 10. Halaman Contact Us 11. Halaman Order List 12. Halaman Order Detail LAMPIRAN C SOURCE CODE APLIKASI index.php <?php // Set flag that this is a parent file define( '_VALID_MOS', 1 ); // checks for configuration file, if none found loads installation page if (!file_exists( 'configuration.php' ) || filesize( 'configuration.php' ) < 10) { $self = rtrim( dirname( $_SERVER['PHP_SELF'] ), '/\\' ) . '/'; header("Location: http://" . $_SERVER['HTTP_HOST'] . $self . "installation/index.php" ); exit(); } require( 'globals.php' ); require( 'configuration.php' ); // SSL check - $http_host returns <live site url>:<port number if it is 443> $http_host = explode(':', $_SERVER['HTTP_HOST'] ); if( (!empty( $_SERVER['HTTPS'] ) && strtolower( $_SERVER['HTTPS'] ) != 'off' || isset( $http_host[1] ) && $http_host[1] == 443) && substr( $mosConfig_live_site, 0, 8 ) != 'https://' ) { $mosConfig_live_site = 'https://'.substr( $mosConfig_live_site, 7 ); } require_once( 'includes/joomla.php' ); //Installation sub folder check, removed for work with SVN if (file_exists( 'installation/index.php' ) && $_VERSION->SVN == 0) { define( '_INSTALL_CHECK', 1 ); include ( $mosConfig_absolute_path .'/offline.php'); exit(); } // displays offline/maintanance page or bar if ($mosConfig_offline == 1) { require( $mosConfig_absolute_path .'/offline.php' ); } // load system bot group $_MAMBOTS->loadBotGroup( 'system' ); // trigger the onStart events $_MAMBOTS->trigger( 'onStart' ); if (file_exists( $mosConfig_absolute_path .'/components/com_sef/sef.php' )) { require_once( $mosConfig_absolute_path .'/components/com_sef/sef.php' ); } else { require_once( $mosConfig_absolute_path .'/includes/sef.php' ); } require_once( $mosConfig_absolute_path .'/includes/frontend.php' ); // retrieve some expected url (or form) arguments $option = strval( strtolower( mosGetParam( $_REQUEST, 'option' ) ) ); $Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', null ) ); if ($option == '') { if ($Itemid) { $query = "SELECT id, link" . "\n FROM #__menu" . "\n WHERE menutype = 'mainmenu'" . "\n AND id = " . (int) $Itemid . "\n AND published = 1" ; $database->setQuery( $query ); } else { $query = "SELECT id, link" . "\n FROM #__menu" . "\n WHERE menutype = 'mainmenu'" . "\n AND published = 1" . "\n ORDER BY parent, ordering" ; $database->setQuery( $query, 0, 1 ); } $menu = new mosMenu( $database ); if ($database->loadObject( $menu )) { $Itemid = $menu->id; } $link = $menu->link; if (($pos = strpos( $link, '?' )) !== false) { $link = substr( $link, $pos+1 ). '&Itemid='.$Itemid; } parse_str( $link, $temp ); /** this is a patch, need to rework when globals are handled better */ foreach ($temp as $k=>$v) { $GLOBALS[$k] = $v; $_REQUEST[$k] = $v; if ($k == 'option') { $option = $v; } } } if ( !$Itemid ) { // when no Itemid give a default value $Itemid = 99999999; } // mainframe is an API workhorse, lots of 'core' interaction routines $mainframe = new mosMainFrame( $database, $option, '.' ); $mainframe->initSession(); // trigger the onAfterStart events $_MAMBOTS->trigger( 'onAfterStart' ); // checking if we can find the Itemid thru the content if ( $option == 'com_content' && $Itemid === 0 ) { $id = intval( mosGetParam( $_REQUEST, 'id', 0 ) ); $Itemid = $mainframe->getItemid( $id ); } /** do we have a valid Itemid yet?? */ if ( $Itemid === 0 ) { /** Nope, just use the homepage then. */ $query = "SELECT id" . "\n FROM #__menu" . "\n WHERE menutype = 'mainmenu'" . "\n AND published = 1" . "\n ORDER BY parent, ordering" ; $database->setQuery( $query, 0, 1 ); $Itemid = $database->loadResult(); } // patch to lessen the impact on templates if ($option == 'search') { $option = 'com_search'; } // loads english language file by default if ($mosConfig_lang=='') { $mosConfig_lang = 'english'; } include_once( $mosConfig_absolute_path .'/language/' . $mosConfig_lang . '.php' ); // frontend login & logout controls $return = strval( mosGetParam( $_REQUEST, 'return', NULL ) ); $message = intval( mosGetParam( $_POST, 'message', 0 ) ); // Get the information about the current user from the sessions table $my = $mainframe->getUser(); if ($option == 'login') { $mainframe->login(); // JS Popup message if ( $message ) { ?> <script language="javascript" type="text/javascript"> <!--// alert( "<?php echo addslashes( _LOGIN_SUCCESS ); ?>" ); //--> </script> <?php } if ( $return && !( strpos( $return, 'com_registration' ) || strpos( $return, 'com_login' ) ) ) { // checks for the presence of a return url // and ensures that this url is not the registration or login pages // If a sessioncookie exists, redirect to the given page. Otherwise, take an extra round for a cookiecheck if (isset( $_COOKIE[mosMainFrame::sessionCookieName()] )) { mosRedirect( $return ); } else { mosRedirect( $mosConfig_live_site .'/index.php?option=cookiecheck&return=' . urlencode( $return ) ); } } else { // If a sessioncookie exists, redirect to the start page. Otherwise, take an extra round for a cookiecheck if (isset( $_COOKIE[mosMainFrame::sessionCookieName()] )) { mosRedirect( $mosConfig_live_site .'/index.php' ); } else { mosRedirect( $mosConfig_live_site .'/index.php?option=cookiecheck&return=' . urlencode( $mosConfig_live_site .'/index.php' ) ); } } } else if ($option == 'logout') { $mainframe->logout(); // JS Popup message if ( $message ) { ?> <script language="javascript" type="text/javascript"> <!--// alert( "<?php echo addslashes( _LOGOUT_SUCCESS ); ?>" ); //--> </script> <?php } if ( $return && !( strpos( $return, 'com_registration' ) || strpos( $return, 'com_login' ) ) ) { // checks for the presence of a return url // and ensures that this url is not the registration or logout pages mosRedirect( $return ); } else { mosRedirect( $mosConfig_live_site.'/index.php' ); } } else if ($option == 'cookiecheck') { // No cookie was set upon login. If it is set now, redirect to the given page. Otherwise, show error message. if (isset( $_COOKIE[mosMainFrame::sessionCookieName()] )) { mosRedirect( $return ); } else { mosErrorAlert( _ALERT_ENABLED ); } } // detect first visit $mainframe->detect(); // set for overlib check $mainframe->set( 'loadOverlib', false ); $gid = intval( $my->gid ); // gets template for page $cur_template = $mainframe->getTemplate(); /** temp fix - this feature is currently disabled */ /** @global A places to store information from processing of the component */ $_MOS_OPTION = array(); // precapture the output of the component require_once( $mosConfig_absolute_path . '/editor/editor.php' ); ob_start(); if ($path = $mainframe->getPath( 'front' )) { $task = strval( mosGetParam( $_REQUEST, 'task', '' ) ); $ret = mosMenuCheck( $Itemid, $option, $task, $gid ); if ($ret) { require_once( $path ); } else { mosNotAuth(); } } else { header( 'HTTP/1.0 404 Not Found' ); echo _NOT_EXIST; } $_MOS_OPTION['buffer'] = ob_get_contents(); ob_end_clean(); initGzip(); header( header( header( header( header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); 'Cache-Control: no-store, no-cache, must-revalidate' ); 'Cache-Control: post-check=0, pre-check=0', false ); 'Pragma: no-cache' ); // display the offline alert if an admin is logged in if (defined( '_ADMIN_OFFLINE' )) { include( $mosConfig_absolute_path .'/offlinebar.php' ); } // loads template file if ( !file_exists( $mosConfig_absolute_path .'/templates/'. $cur_template .'/index.php' ) ) { echo _TEMPLATE_WARN . $cur_template; } else { require_once( $mosConfig_absolute_path .'/templates/'. $cur_template .'/index.php' ); echo '<!-- '. time() .' -->'; } // displays queries performed for page if ($mosConfig_debug) { echo $database->_ticker . ' queries executed'; echo '<pre>'; foreach ($database->_log as $k=>$sql) { echo $k+1 . "\n" . $sql . '<hr />'; } echo '</pre>'; } doGzip(); ?> login.php <?php // no direct access defined( '_VALID_MOS' ) or die( 'Restricted access' ); // load the html drawing class require_once( $mainframe->getPath( 'front_html' ) ); global $database, $my, $mainframe; global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db; if ( $mosConfig_frontend_login != NULL && ($mosConfig_frontend_login === 0 || $mosConfig_frontend_login === '0')) { header( "HTTP/1.0 403 Forbidden" ); echo _NOT_AUTH; return; } $menu = $mainframe->get( 'menu' ); $params = new mosParameters( $menu->params ); $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( $params->def( 'page_title', 1 ); 'header_login', $menu->name ); 'header_logout', $menu->name ); 'pageclass_sfx', '' ); 'back_button', $mainframe->getCfg( 'back_button' ) ); 'login', $mosConfig_live_site ); 'logout', $mosConfig_live_site ); 'login_message', 0 ); 'logout_message', 0 ); 'description_login', 1 ); 'description_logout', 1 ); 'description_login_text', _LOGIN_DESCRIPTION ); 'description_logout_text', _LOGOUT_DESCRIPTION ); 'image_login', 'key.jpg' ); 'image_logout', 'key.jpg' ); 'image_login_align', 'right' ); 'image_logout_align', 'right' ); 'registration', $mainframe->getCfg( 'allowUserRegistration' ) ); $image_login = ''; $image_logout = ''; if ( $params->get( 'image_login' ) != -1 ) { $image = $mosConfig_live_site .'/images/stories/'. 'image_login' ); $image_login = '<img src="'. $image .'" align="'. 'image_login_align' ) .'" hspace="10" alt="" />'; } if ( $params->get( 'image_logout' ) != -1 ) { $image = $mosConfig_live_site .'/images/stories/'. 'image_logout' ); $image_logout = '<img src="'. $image .'" align="'. 'image_logout_align' ) .'" hspace="10" alt="" />'; } if ( $my->id ) { loginHTML::logoutpage( $params, $image_logout ); } else { loginHTML::loginpage( $params, $image_login ); } $params->get( $params->get( $params->get( $params->get( ?> regristation.php <?php // no direct access defined( '_VALID_MOS' ) or die( 'Restricted access' ); global $mosConfig_frontend_login; require_once( $mainframe->getPath( 'front_html' ) ); if ( $mosConfig_frontend_login != NULL && ($mosConfig_frontend_login === 0 || $mosConfig_frontend_login === '0')) { echo _NOT_AUTH; return; } switch( $task ) { case 'lostPassword': lostPassForm( $option ); break; case 'sendNewPass': sendNewPass( $option ); break; case 'register': registerForm( $option, $mosConfig_useractivation ); break; case 'saveRegistration': saveRegistration(); break; case 'activate': activate( $option ); break; } function lostPassForm( $option ) { global $mainframe; $mainframe->SetPageTitle(_PROMPT_PASSWORD); HTML_registration::lostPassForm($option); } function sendNewPass( $option ) { global $database; global $mosConfig_live_site, $mosConfig_sitename; global $mosConfig_mailfrom, $mosConfig_fromname; // simple spoof check security josSpoofCheck(); $_live_site = $mosConfig_live_site; $_sitename = $mosConfig_sitename; $checkusername = stripslashes( mosGetParam( $_POST, 'checkusername', '' ) ); $confirmEmail = stripslashes( mosGetParam( $_POST, 'confirmEmail', '') ); $query = "SELECT id" . "\n FROM #__users" . "\n WHERE username = " . $database->Quote( $checkusername ) . "\n AND email = " . $database->Quote( $confirmEmail ) ; $database->setQuery( $query ); if (!($user_id = $database->loadResult()) || !$checkusername || !$confirmEmail) { mosRedirect( "index.php?option=$option&task=lostPassword&mosmsg="._ERROR_PASS ); } $newpass = mosMakePassword(); $message = _NEWPASS_MSG; eval ("\$message = \"$message\";"); $subject = _NEWPASS_SUB; eval ("\$subject = \"$subject\";"); mosMail($mosConfig_mailfrom, $mosConfig_fromname, $confirmEmail, $subject, $message); $salt = mosMakePassword(16); $crypt = md5($newpass.$salt); $newpass = $crypt.':'.$salt; $sql = "UPDATE #__users" . "\n SET password = " . $database->Quote( $newpass ) . "\n WHERE id = " . (int) $user_id ; $database->setQuery( $sql ); if (!$database->query()) { die("SQL error" . $database->stderr(true)); } mosRedirect( 'index.php?option=com_registration&mosmsg='. _NEWPASS_SENT ); } function registerForm( $option, $useractivation ) { global $mainframe; if (!$mainframe->getCfg( 'allowUserRegistration' )) { mosNotAuth(); return; } $mainframe->SetPageTitle(_REGISTER_TITLE); HTML_registration::registerForm($option, $useractivation); } function saveRegistration() { global $database, $acl; global $mosConfig_sitename, $mosConfig_live_site, $mosConfig_useractivation, $mosConfig_allowUserRegistration; global $mosConfig_mailfrom, $mosConfig_fromname, $mosConfig_mailfrom, $mosConfig_fromname; if ( $mosConfig_allowUserRegistration == 0 ) { mosNotAuth(); return; } // simple spoof check security josSpoofCheck(); $row = new mosUser( $database ); if (!$row->bind( $_POST, 'usertype' )) { mosErrorAlert( $row->getError() ); } $row->name = trim( $row->name ); $row->email = trim( $row->email ); $row->username = trim( $row->username ); $row->password = trim( $row->password ); mosMakeHtmlSafe($row); $row->id $row->usertype $row->gid = 0; = ''; = $acl->get_group_id( 'Registered', 'ARO' ); if ( $mosConfig_useractivation == 1 ) { $row->activation = md5( mosMakePassword() ); $row->block = '1'; } if (!$row->check()) { echo "<script> alert('".html_entity_decode($row->getError())."'); window.history.go(-1); </script>\n"; exit(); } $pwd = $row->password; $salt $crypt $row->password = mosMakePassword(16); = md5($row->password.$salt); = $crypt.':'.$salt; $row->registerDate = date( 'Y-m-d H:i:s' ); if (!$row->store()) { echo "<script> alert('".html_entity_decode($row->getError())."'); window.history.go(-1); </script>\n"; exit(); } $row->checkin(); $name $email $username = trim($row->name); = trim($row->email); = trim($row->username); $subject $subject = sprintf (_SEND_SUB, $name, $mosConfig_sitename); = html_entity_decode($subject, ENT_QUOTES); if ($mosConfig_useractivation == 1){ $message = sprintf (_USEND_MSG_ACTIVATE, $name, $mosConfig_sitename, $mosConfig_live_site."/index.php?option=com_registration&task=activate&activation= ".$row->activation, $mosConfig_live_site, $username, $pwd); } else { $message = sprintf (_USEND_MSG, $name, $mosConfig_sitename, $mosConfig_live_site); } $message = html_entity_decode($message, ENT_QUOTES); // check if Global Config `mailfrom` and `fromname` values exist if ($mosConfig_mailfrom != '' && $mosConfig_fromname != '') { $adminName2 = $mosConfig_fromname; $adminEmail2 = $mosConfig_mailfrom; } else { // use email address and name of first superadmin for use in email sent to user $query = "SELECT name, email" . "\n FROM #__users" . "\n WHERE LOWER( usertype ) = 'superadministrator'" . "\n OR LOWER( usertype ) = 'super administrator'" ; $database->setQuery( $query ); $rows = $database->loadObjectList(); $row2 = $rows[0]; $adminName2 $adminEmail2 = $row2->name; = $row2->email; } // Send email to user mosMail($adminEmail2, $adminName2, $email, $subject, $message); // Send notification to all administrators $subject2 = sprintf (_SEND_SUB, $name, $mosConfig_sitename); $message2 = sprintf (_ASEND_MSG, $adminName2, $mosConfig_sitename, $row>name, $email, $username); $subject2 = html_entity_decode($subject2, ENT_QUOTES); $message2 = html_entity_decode($message2, ENT_QUOTES); // get email addresses of all admins and superadmins set to recieve system emails $query = "SELECT email, sendEmail" . "\n FROM #__users" . "\n WHERE ( gid = 24 OR gid = 25 )" . "\n AND sendEmail = 1" . "\n AND block = 0" ; $database->setQuery( $query ); $admins = $database->loadObjectList(); foreach ( $admins as $admin ) { // send email to admin & super admin set to recieve system emails mosMail($adminEmail2, $adminName2, $admin->email, $subject2, $message2); } if ( $mosConfig_useractivation == 1 ){ echo _REG_COMPLETE_ACTIVATE; } else { echo _REG_COMPLETE; } } function activate( $option ) { global $database, $my; global $mosConfig_useractivation, $mosConfig_allowUserRegistration; if($my->id) { // They're already logged in, so redirect them to the home page mosRedirect( 'index.php' ); } if ($mosConfig_allowUserRegistration == '0' || $mosConfig_useractivation == '0') { mosNotAuth(); return; } $activation = stripslashes( mosGetParam( $_REQUEST, 'activation', '' ) ); if (empty( $activation )) { echo _REG_ACTIVATE_NOT_FOUND; return; } $query = "SELECT id" . "\n FROM #__users" . "\n WHERE activation = " . $database->Quote( $activation ) . "\n AND block = 1" ; $database->setQuery( $query ); $result = $database->loadResult(); if ($result) { $query = "UPDATE #__users" . "\n SET block = 0, activation = ''" . "\n WHERE activation = " . $database->Quote( $activation ) . "\n AND block = 1" ; $database->setQuery( $query ); if (!$database->query()) { if(!defined(_REG_ACTIVATE_FAILURE)) { DEFINE('_REG_ACTIVATE_FAILURE', '<div class="componentheading">Activation Failed!</div><br />The system was unable to activate your account, please contact the site administrator.'); } echo _REG_ACTIVATE_FAILURE; } else { echo _REG_ACTIVATE_COMPLETE; } } else { echo _REG_ACTIVATE_NOT_FOUND; } } ?> virtuemart.php <?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); global $mosConfig_absolute_path, $product_id, $vmInputFilter; /* Load the virtuemart main parse code */ require_once( $mosConfig_absolute_path.'/components/'.$option.'/virtuemart_parser.php' ); include( $mosConfig_absolute_path.'/administrator/components/'.$option.'/compat.joomla1.5.p hp'); $my_page= explode ( '.', $page ); $modulename = $my_page[0]; $pagename = $my_page[1]; /* Page Navigation Parameters */ $mainframe->_userstate =& $_SESSION['session_userstate']; $limit = intval( $mainframe->getUserStateFromRequest( "viewlistlimit", 'limit', $mosConfig_list_limit ) ); $limitstart = intval( $mainframe->getUserStateFromRequest( "view{$keyword}{$category_id}limitstart", 'limitstart', 0 )) ; /* Get all the other paramters */ $manufacturer_id = intval( mosGetParam( $_REQUEST, 'manufacturer_id', null ) ); $search_category= intval( mosGetParam( $_REQUEST, 'search_category', null ) ); $product_type_id = intval( mosgetparam($_REQUEST, 'product_type_id', null) ); if( PSHOP_IS_OFFLINE == "1" ) { echo PSHOP_OFFLINE_MESSAGE; } else { // The Vendor ID is important $ps_vendor_id = $_SESSION['ps_vendor_id']; // The authentication array $auth = $_SESSION['auth']; $no_menu = mosGetParam( $_REQUEST, 'no_menu', 0 ); // Timer Start if ( DEBUG == "1" ) { $start = utime(); $GLOBALS["mosConfig_debug"] = 1; } // update the cart because something could have // changed while running a function $cart = $_SESSION["cart"]; if (( !$pagePermissionsOK || !$funcParams ) && $_REQUEST['page'] != 'checkout.index') { if( !$pagePermissionsOK && defined('_VM_PAGE_NOT_AUTH') ) { $page = 'checkout.login_form'; echo '<br/><br/>'._DO_LOGIN.'<br/><br/>'; } elseif( !$pagePermissionsOK && defined('_VM_PAGE_NOT_FOUND') ) { $page = HOMEPAGE; } else { $page = $_SESSION['last_page']; } } $my_page= explode ( '.', $page ); $modulename = $my_page[0]; $pagename = $my_page[1]; // For there's no errorpage to display the error, // we must echo it before the page is loaded if (!empty($error) && $page != ERRORPAGE) { echo "<span class=\"shop_error\">".$error."</span>"; } /***************************** ** FRONTEND ADMIN - MOD **/ $pshop_mode = mosgetparam($_REQUEST, 'pshop_mode', ""); if (($pshop_mode == "admin" || stristr($page,"form") || stristr($page, "list") || stristr($page, "cfg") || stristr($page, "print") || stristr($page, "display")) && ($perm->check("admin,storeadmin") && ((!stristr($my->usertype, "admin") ^ PSHOP_ALLOW_FRONTENDADMIN_FOR_NOBACKENDERS == '' ) || stristr($my->usertype, "admin") ) && !stristr($page, "shop.") ) && $no_menu != "1" ) { define( '_FRONTEND_ADMIN_LOADED', '1' ); $mainframe->loadEditor = 1; if( file_exists( $mosConfig_absolute_path."/editor/editor.php" )) { require_once( $mosConfig_absolute_path."/editor/editor.php" ); initEditor(); } $editor1_array = Array('product.product_form' => 'product_desc', 'product.product_category_form' => 'category_description', 'store.store_form' => 'vendor_store_desc', 'vendor.vendor_form' => 'vendor_store_desc'); $editor2_array = Array('store.store_form' => 'vendor_terms_of_service', 'vendor.vendor_form' => 'vendor_terms_of_service'); editorScript(isset($editor1_array[$page]) ? $editor1_array[$page] : '', isset($editor2_array[$page]) ? $editor2_array[$page] : ''); ?> <link type="text/css" rel="stylesheet" media="screen, projection" href="components/<?php echo $option ?>/css/admin.css" /> <script type="text/javascript" src="<?php echo $mosConfig_live_site ?>/components/<?php echo $option ?>/js/functions.js"></script> <?php // The admin header with dropdown menu include( ADMINPATH."header.php" ); include( ADMINPATH."toolbar.virtuemart.php" ); echo '<br style="clear:both;" />'; } /** ** END: FRONTEND ADMIN - MOD *****************************/ /***************************** ** BEGIN affiliate additions ** by nhyde <[email protected]> for virtuemart v0.6.1 */ if (AFFILIATE_ENABLE == '1') { $unset_affiliate = false; if (!isset($ps_affiliate)) { include_class ( 'affiliate' ); $unset_affiliate = true; } //keep tracking the affiliate if(isset($_SESSION['afid'])){ $ps_affiliate->visit_update(); } //register the affiliated visit but only if the // aid is in our database and it is active. else{ //set the affiliate_id = 0 to log any visitors that are not affiliate visitors $aff_details = $ps_affiliate>get_affiliate_details($auth['user_id']); $affiliate_id = $aff_details['id']; //the logout function may have wiped out the session so search the database //and re-register it. $q = "SELECT visit_id FROM #__{vm}_visit WHERE visit_id = '".session_id()."'"; $db->query($q); if($db->next_record()){ $ps_affiliate->visit_update(); } else { $ps_affiliate->visit_register(); } } if (isset($affiliate_id)) { $_SESSION['afid'] = $affiliate_id; $GLOBALS['afid'] = $affiliate_id; } } /** * END added for affiliate module ****************************/ // Here is the most important part of the whole Shop: // LOADING the requested page for displaying it to the customer. // I have wrapped it with a function, because it becomes // cacheable that way. // It's just an "include" statement which loads the page $vmDoCaching = ($page=="shop.browse" || $page=="shop.product_details") && class_exists("mosCache") && (empty($keyword) && empty($keyword1) && empty($keyword2)); if( !function_exists( "load_that_shop_page" )) { function load_that_shop_page( $modulename, $pagename) { global $my, $db, $perm, $ps_function, $ps_module, $ps_html, $ps_vendor_id, $page, $database,$mosConfig_absolute_path, $cart, $start, $option, $vmLogger, $vmDoCaching, $product_id,$VM_LANG, $PHPSHOP_LANG, $sess,$vendor_image,$vendor_country_2_code, $vendor_country_3_code , $vendor_image_url, $PSHOP_SHIPPING_MODULES, $_VERSION, $vendor_name, $vendor_address, $vendor_city,$vendor_country,$vendor_mail, $category_id, $mainframe, $mosConfig_list_limit, $limitstart, $limit, $vendor_store_name, $vendor_state, $vendor_zip, $vendor_phone, $vendor_currency, $vendor_store_desc, $vendor_freeshipping, $ps_shipping, $ps_order_status, $module_description, $vendor_currency_display_style, $vendor_full_image, $mosConfig_live_site, $vendor_id, $CURRENCY_DISPLAY, $keyword, $mm_action_url, $ps_payment_method,$ps_zone,$ps_product, $ps_product_category, $ps_order, $sess, $page, $func, $pagename, $modulename, $vars, $cmd, $ok, $mosConfig_lang, $mosConfig_useractivation, $auth, $ps_checkout,$error, $error_type, $func_perms, $func_list, $func_class, $func_method, $func_list, $dir_list, $mosConfig_allowUserRegistration, $mosConfig_caching; if( !stristr( $_SERVER['PHP_SELF'], "index2.php") ) { $mainframe->addCustomHeadTag( "<script type=\"text/javascript\" src=\"$mosConfig_live_site/components/$option/js/sleight.js\"></script> <link type=\"text/css\" rel=\"stylesheet\" media=\"screen, projection\" href=\"$mosConfig_live_site/components/$option/css/shop.css\" />" ); } else { ?> <script type="text/javascript" src="<?php echo "$mosConfig_live_site/components/$option" ?>/js/sleight.js"></script> <link type="text/css" rel="stylesheet" media="screen, projection" href="components/<?php echo $option ?>/css/shop.css" /> <?php } // Show the PDF Button? if( PSHOP_PDF_BUTTON_ENABLE=='1' && !isset($_REQUEST['output']) && ($page=="shop.browse" || $page=="shop.product_details")) { echo "<table align=\"right\"><tr><td><a title=\"PDF\" target=\"_blank\" href=\"index2.php?option=$option&page=shop.pdf_output&amp;showpage=$page&amp;pop=1 &amp;output=pdf&amp;product_id=$product_id&amp;category_id=$category_id&amp;Itemid =".$sess->getShopItemid()."\"> <img src=\"".IMAGEURL."ps_image/acroread.png\" alt=\"PDF\" height=\"32\" width=\"32\" border=\"0\" /></a></td></tr></table>"; } // Load requested PAGE if( file_exists( PAGEPATH.$modulename.".".$pagename.".php" )) { include( PAGEPATH.$modulename.".".$pagename.".php" ); } elseif( file_exists( PAGEPATH . HOMEPAGE.'.php' )) { include( PAGEPATH . HOMEPAGE.'.php' ); } else { include( PAGEPATH.'shop.index.php'); } if ( !empty($mosConfig_caching) && $vmDoCaching) { echo '<span class="small">'._LAST_UPDATED.': '.strftime( $VM_LANG->_DATE_FORMAT_LC2 ).'</span>'; } if (SHOWVERSION) { include(PAGEPATH ."footer.php"); } // Set debug option on/off if (DEBUG) { $end = utime(); $runtime = $end - $start; include( PAGEPATH . "shop.debug.php" ); } return $mainframe; // // // if } } // Caching is a sensible thing. We may cache only those pages that look the same again and again Currently this are two pages: shop.browse, shop.product_details when no keyword is submitted! ( !empty($mosConfig_caching) && $vmDoCaching) { // Get the Cache_Lite_Function object $cache =& mosCache::getCache( 'com_content' ); // The function we let call remotely here has only two arguments: the Modulename(shop) and the Pagename(browse or product_details), // But Cache_Lite takes the arguments for identifying common calls to cacheable functions. // The Page will change with every different parameter / argument, so provide this for identification // "call" will call the function load_that_shop_page when it is not yet cached with exactly THESE parameters // or the caching time range has expired $return = $cache->call('load_that_shop_page', $modulename, $pagename, $product_id, $category_id, $manufacturer_id, $auth["shopper_group_id"], $limitstart, $limit, @$_REQUEST['orderby'], @$_REQUEST['DescOrderBy'] ); if( get_class( $return ) == "mosMainFrame" ) { $mainframe = $return; } } else { load_that_shop_page( $modulename, $pagename); } } if( defined( 'vmToolTipCalled')) { echo '<script language="Javascript" type="text/javascript" src="'. $mosConfig_live_site.'/components/'.$option.'/js/wz_tooltip.js"></script>'; } ?> virtuemart_parser.php <?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); global $my, $db, $perm, $ps_function, $ps_module, $ps_html, $ps_vendor_id, $vendor_image,$vendor_image_url, $keyword, $ps_payment_method,$ps_zone,$sess, $page, $func, $pagename, $modulename, $vars, $VM_LANG, $cmd, $ok, $mosConfig_lang, $auth, $ps_checkout,$error, $error_type, $func_perms, $func_list, $func_class, $func_method, $func_list, $dir_list, $vendor_currency_display_style, $vendor_freeshipping, $mm_action_url, $limit, $limitstart, $mainframe; // Raise memory_limit to 16M when it is too low // Especially the product section needs much memory $memLimit = @ini_get('memory_limit'); if( stristr( $memLimit, 'k') ) { $memLimit = str_replace( 'k', '', str_replace( 'K', '', $memLimit )) * 1024; } elseif( stristr( $memLimit, 'm') ) { $memLimit = str_replace( 'm', '', str_replace( 'M', '', $memLimit )) * 1024 * 1024; } if( $memLimit < 16777216 ) { @ini_set('memory_limit', '16M'); } $option = mosGetParam( $_REQUEST, 'option' ); if( !defined( '_VM_PARSER_LOADED' )) { global $my; $_REQUEST['Itemid'] = intval( mosGetParam($_REQUEST, 'Itemid', 0) ); // Filter the PHP_SELF var and clean it $_SERVER['PHP_SELF'] = htmlspecialchars( $_SERVER['PHP_SELF'], ENT_QUOTES ); $page = mosgetparam($_REQUEST, 'page', ""); $func = mosgetparam($_REQUEST, 'func', ""); if( $my->id > 0 ) { // This is necessary to get the real GID $my->load( $my->id ); } if( !file_exists( $mosConfig_absolute_path. "/administrator/components/com_virtuemart/virtuemart.cfg.php" )) { die( "<h3>The configuration file for VirtueMart is missing!</h3>It should be here: <strong>" . $mosConfig_absolute_path. "/administrator/components/com_virtuemart/virtuemart.cfg.php</strong>" ); } // the configuration file for the Shop require_once( $mosConfig_absolute_path. "/administrator/components/com_virtuemart/virtuemart.cfg.php" ); // The abstract language class require_once( CLASSPATH."language.class.php" ); // load the Language File if (file_exists( ADMINPATH. 'languages/'.$mosConfig_lang.'.php' )) require_once( ADMINPATH. 'languages/'.$mosConfig_lang.'.php' ); else require_once( ADMINPATH. 'languages/english.php' ); /** @global vmLanguage $VM_LANG */ $GLOBALS['VM_LANG'] = $GLOBALS['PHPSHOP_LANG'] =& new vmLanguage(); /** @global Array $product_info: Stores Product Information for re-use */ $GLOBALS['product_info'] = Array(); /** @global Array $category_info: Stores Category Information for re-use */ $GLOBALS['category_info'] = Array(); /** @global Array $category_info: Stores Vendor Information for re-use */ $GLOBALS['vendor_info'] = Array(); // load the MAIN CLASSES // CLASSPATH is defined in the config file require_once(CLASSPATH."ps_database.php"); require_once(CLASSPATH."ps_main.php"); require_once(CLASSPATH."ps_cart.php"); require_once(CLASSPATH."ps_html.php"); require_once(CLASSPATH."ps_session.php"); require_once(CLASSPATH."ps_function.php"); require_once(CLASSPATH."ps_module.php"); require_once(CLASSPATH."ps_perm.php"); require_once(CLASSPATH."ps_shopper_group.php"); require_once(CLASSPATH."vmAbstractObject.class.php"); require_once(CLASSPATH."htmlTools.class.php"); require_once(CLASSPATH."phpInputFilter/class.inputfilter.php"); require_once(CLASSPATH."Log/Log.php"); $vmLoggerConf = array( 'buffering' => true ); /** * This Log Object will help us log messages and errors * See http://pear.php.net/package/Log * @global Log vmLogger */ $vmLogger = &vmLog::singleton('display', '', '', $vmLoggerConf, PEAR_LOG_TIP); $GLOBALS['vmLogger'] =& $vmLogger; // Instantiate the DB class $db = new ps_DB(); // Instantiate the permission class $perm = new ps_perm(); // Instantiate the HTML helper class $ps_html = new ps_html(); // Constructor initializes the session! $sess = new ps_session(); // Initialize the cart $cart = ps_cart::initCart(); // Instantiate the module class $ps_module = new ps_module(); // Instantiate the function class $ps_function = new ps_function(); // Instantiate the ps_shopper_group class $ps_shopper_group = new ps_shopper_group(); // Set the mosConfig_live_site to its' SSL equivalent if( $_SERVER['SERVER_PORT'] == 443 || @$_SERVER['HTTPS'] == 'on' || @strstr( $page, "checkout." )) { // temporary solution until we have // $mosConfig_secure_site $GLOBALS['real_mosConfig_live_site'] = $GLOBALS['mosConfig_live_site']; $GLOBALS['mosConfig_live_site'] = ereg_replace('/$','',SECUREURL); $mm_action_url = SECUREURL; } else { $mm_action_url = URL; } // Enable Mambo Debug Mode when Shop Debug is on if( DEBUG == "1" ) { $GLOBALS['mosConfig_debug'] = 1; $database->_debug = 1; } // Set Mambo's Cookies for the SSL Domain as well // This makes it possible to use Shared SSL $sess->prepare_SSL_Session(); // the global file for PHPShop require_once( ADMINPATH . 'global.php' ); $currency_display = vendor_currency_display_style( $vendor_currency_display_style ); /** load Currency Display Class **/ require_once( CLASSPATH.'class_currency_display.php' ); /** @global CurrencyDisplay $CURRENCY_DISPLAY */ $GLOBALS['CURRENCY_DISPLAY'] =& new CurrencyDisplay($currency_display["id"], $currency_display["symbol"], $currency_display["nbdecimal"], $currency_display["sdecimal"], $currency_display["thousands"], $currency_display["positive"], $currency_display["negative"]); // Get default and this users's Shopper Group $shopper_group = $ps_shopper_group->get_shoppergroup_by_id( $my->id ); // User authentication $auth = $perm->doAuthentication( $shopper_group ); if( $option == "com_virtuemart" ) { // Get sure that we have float values with a decimal point! @setlocale( LC_NUMERIC, 'en_US', 'en' ); // some input validation for limitstart if (!empty($_REQUEST['limitstart'])) { $_REQUEST['limitstart'] = intval( $_REQUEST['limitstart'] ); } $mosConfig_list_limit = isset( $mosConfig_list_limit ) ? $mosConfig_list_limit : SEARCH_ROWS; $keyword = substr( urldecode(mosgetparam($_REQUEST, 'keyword', '')), 0, 50 ); unset( $_REQUEST["error"] ); // Cast all the following fields to INT $parseToIntFields = array('user_id','product_id','category_id','manufacturer_id','id','cid','vendor_id ','country_id','currency_id', 'order_id','module_id','function_id','payment_method_id','coupon_id','produ ct_type_id') ; foreach( $parseToIntFields as $intField ) { if( !empty($_REQUEST[$intField]) && is_array($_REQUEST[$intField]) ) { mosArrayToInts( $_REQUEST[$intField]); } else { $_REQUEST[$intField] = $$intField = intval( mosgetparam($_REQUEST, $intField, 0) ); } } $_SESSION['session_userstate']['product_id'] = $product_id = $_REQUEST['product_id']; $_SESSION['session_userstate']['category_id'] = $category_id = $_REQUEST['category_id']; $user_info_id = mosgetparam($_REQUEST, 'user_info_id' ); $myInsecureArray = array('keyword' => $keyword, 'user_info_id' => $user_info_id, 'page' => $page, 'func' => $func ); /** * This InputFiler Object will help us filter malicious variable contents * @global vmInputFiler vmInputFiler */ $GLOBALS['vmInputFilter'] = $vmInputFilter = new vmInputFilter(); // prevent SQL injection if( $perm->check('admin,storeadmin') ) { $myInsecureArray = $vmInputFilter->safeSQL( $myInsecureArray ); $myInsecureArray = $vmInputFilter->process( $myInsecureArray ); // Re-insert the escaped strings into $_REQUEST foreach( $myInsecureArray as $requestvar => $requestval) { $_REQUEST[$requestvar] = $requestval; } } else { // Strip all tags from all input values $_REQUEST = $vmInputFilter->process( $_REQUEST ); $_REQUEST = $vmInputFilter->safeSQL( $_REQUEST ); } // Limit the keyword (=search string) length to 50 $_SESSION['session_userstate']['keyword'] = $keyword = substr(mosgetparam($_REQUEST, 'keyword', ''), 0, 50); $vars = $_REQUEST; // Check if we have to run a Shop Function // and if the user is allowed to execute it $funcParams = $ps_function->checkFuncPermissions( $func ); /********************************************** ** Get Page/Directory Permissions ** Displays error if directory is not registered, ** user has no permission to view it , or file doesn't exist ************************************************/ if (empty($page)) {// default page if (defined('_PSHOP_ADMIN')) { $page = "store.index"; } else { $page = HOMEPAGE; } } // Let's check if the user is allowed to view the page // if not, $page is set to ERROR_PAGE $pagePermissionsOK = $ps_module->checkModulePermissions( $page ); $ok = true; if ( !empty( $funcParams["method"] ) ) { // Get the function parameters: function name and class name $q = "SELECT #__{vm}_module.module_name,#__{vm}_function.function_class"; $q .= " FROM #__{vm}_module,#__{vm}_function WHERE "; $q .= "#__{vm}_module.module_id=#__{vm}_function.module_id AND "; $q .= "#__{vm}_function.function_method='".$funcParams["method"]."' AND "; $q .= "#__{vm}_function.function_class='".$funcParams["class"]."'"; $db->query($q); $db->next_record(); $class = $db->f('function_class'); if( file_exists( CLASSPATH."$class.php" ) ) { // Load class definition file require_once( CLASSPATH.$db>f("function_class").".php" ); $classname = str_replace( '.class', '', $funcParams["class"]); // create an object $string = "\$$classname = new $classname;"; eval( $string ); // RUN THE FUNCTION // $ok = $class->function( $vars ); $cmd = "\$ok = \$".$classname."->" . $funcParams["method"] . "(\$vars);"; eval( $cmd ); if ($ok == false) { $no_last = 1; if( $_SESSION['last_page'] != HOMEPAGE ) { $page = $_SESSION['last_page']; } $my_page= explode ( '.', $page ); $modulename = $my_page[0]; $pagename = $my_page[1]; $_REQUEST['keyword']= $_SESSION['session_userstate']['keyword']; $_REQUEST['category_id']= $_SESSION['session_userstate']['category_id']; $_REQUEST['product_id']=$product_id = $_SESSION['session_userstate']['product_id']; } } else { $vmLogger->debug( "Could not include the class file $class" ); } if (!empty($vars["error"])) { $error = $vars["error"]; } if (!empty($error)) { echo vmCommonHTML::getErrorField($error); } } else { $no_last = 0; //$error=""; } if ($ok == true && empty($error) && !defined('_DONT_VIEW_PAGE')) { $_SESSION['last_page'] = $page; } } // I don't get it, why Joomla uses masked gid values! if( !defined( '_PSHOP_ADMIN' )) { if( class_exists('jfactory')) { $my =& JFactory::getUser(); } else { $my = $mainframe->getUser(); } if( isset( $my->_table )) { $my = $my->_table; } } // the Log object holds all error messages // here we flush the buffer and print out all messages $vmLogger->printLog(); // Now we can switch to implicit flushing $vmLogger->_buffering = false; define( '_VM_PARSER_LOADED', 1 ); } ?>