Upload
ngonga
View
244
Download
0
Embed Size (px)
Citation preview
i
PENGEMBANGAN FITUR ABSENSI PADA APLIKASI
HUMAN RESOURCES INFORMATION SYSTEM ( HRIS )
(Studi Kasus Pada PT Repex Wahana)
Oleh :
Muhammed Razib Dwinaldi Putra
NIM. 107091002908
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar
Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UIN SYARIF HIDAYATULLAH
JAKARTA
1435 H/ 2014 M
ii
PENGEMBANGAN FITUR ABSENSI PADA APLIKASI
HUMAN RESOURCES INFORMATION SYSTEM ( HRIS )
(Studi Kasus Pada PT Repex Wahana)
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar
Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh :
Muhammed Razib Dwinaldi Putra
107091002908
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
1435 H/ 2014 M
iii
iv
v
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-
BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN
SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI
ATAU LEMBAGA MANAPUN.
Jakarta, Agustus 2014
Muhammad Razib Dwinaldi Putra
vi
Muhammed Razib Dwinaldi Putra, Pengembangan Fitur Absensi Pada Aplikasi
Human Resources Information System (HRIS) (Studi Kasus Pada PT Repex
Wahana) (Dibawah bimbingan Husni Teja Sukmana, Ph. D dan Hendra Bayu
Suseno, M. Kom)
ABSTRAK
PT. REPEX WAHANA merupakan perusahaan jasa pengiriman barang
yang memenuhi semua kebutuhan customer. Cepat, mudah, dan bisa diandalkan.
Dalam penelitian karya tulis ini penulis melakukan analisa mengenai sistem HRIS
yang sedang berjalan saat ini. Sistem absensi yang saat ini ternyata masih kurang
mendapat data yang akurat bagi karyawan, dikarenakan karyawan yang
melakukan absen masih menggunakan pencatatan secara manual. Untuk
mengatasi masalah seperti ini, maka penulis bermaksud untuk mencoba
menangani proses absensi dengan merancang suatu sistem informasi absen
berbasis web dengan menggunakan bahasa pemrograman PHP dan MySQL.
Sistem ini menggunakan 3 tahap metode. Pertama, metode pengumpulan data
dilakukan dengan tiga cara, yaitu metode observasi, metode wawancara, dan studi
pustaka. Kedua, metode pengembangan sistem yang akan digunakan adalah model
pengembangan RAD (Rapid Application Development) yang meliputi 3 tahap
yaitu, Requirement Analysis, Design Workshop, dan Implementation. Serta
menggunakan notasi UML (Unified Modeling Language) sebagai tools. Ketiga,
pengujian sistem menggunakan metode black box testing dengan hasil pengujian
bahwa desain dalam sistem telah sesuai dengan implementasi.
Kata kunci : Human Resources Information System (HRIS), Database
Kepegawaian, Sistem Absensi, PT. REPEX WAHANA.
V Bab + XXV + 76 + 18 Tabel + 29 Gambar + 9 Simbol + 7 Lampiran
vii
KATA PENGANTAR
Bismillaahirrahmaanirrahiim………
Segala puji dan syukur penulis panjatkan kehadirat Allah SWT atas segala
karunia, rahmat dan kekuatan, juga segala petunjuk dan kemudahan sehingga
penulis dapat menyelesaikan penulisan skripsi ini dengan judul “Pengembangan
Fitur Absensi Pada Aplikasi Human Resources Information System (HRIS)
(Studi Kasus Pada PT Repex Wahana)”. Shalawat serta salam selalu kita
haturkan kepada junjungan kita Nabi besar Muhammad SAW, beserta
keluarganya, para sahabatnya, dan para pengikutnya.
Skripsi ini disusun untuk memenuhi salah satu syarat dalam
menyelesaikan program S1 pada Program Studi Teknik Informatika di Universitas
Islam Negeri Syarif Hidayatullah Jakarta.
Pada kesempatan yang berbahagia ini, penulis mengucapkan terima kasih
kepada pihak-pihak yang telah membantu dalam menyelesaikan skripsi ini.
Mereka yang berdedikasi tinggi diantaranya:
1. Bapak Dr. Agus Salim, M.Si., selaku Dekan Fakultas Sains dan
Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta.
2. Ibu Nurhayati, Ph.D., selaku Ketua Program Studi Teknik
Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri
Syarif Hidayatullah Jakarta.
viii
3. Ibu Viva Arifin, MMSI., selaku Sekretaris Program Studi Teknik
Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri
Syarif Hidayatullah Jakarta.
4. Husni Teja Sukmana, Ph.D, Hendra Bayu Suseno, M.Kom., selaku
dosen pembimbing yang senantiasa sabar dan selalu meluangkan
waktunya di tengah-tengah berbagai kesibukannya untuk
membimbing penulis dalam proses penyusunan skripsi ini.
5. Seluruh Dosen Program Studi Teknik Informatika yang tidak mungkin
penulis sebutkan satu persatu.
6. Staff karyawan Fakultas Sains dan Teknologi dan Prodi TI (Ibu
Fitroh, Ibu Tari, Pak Amin, Pak Tommy, Niki, dan semuanya).
7. Karib kerabat yang selalu memberikan semangat kepada penulis.
Akhirnya, penulis berharap semoga skripsi ini dapat bermanfaat. Saran dan
kritik untuk kesempurnaan skripsi ini sangat penulis harapkan.
Jakarta, Agustus 2014
Penulis
Muhammed Razib D. P
ix
LEMBAR PERSEMBAHAN
Skripsi ini terkhusus penulis persembahkan kepada mereka yang telah
mendukung, baik moril maupun materil, baik melalui doa ataupun sua dalam
menyelesaikan skripsi ini.
1. Teruntuk Keluarga. Semoga Allah SWT selalu melimpahkan rahmat,
rahim dan ampunan-Nya kepada mereka. Amin.
2. Teruntuk teman-teman satu perjuangan, Wahyudianto, Zickra Auliya,
Dodi Susanto, Zakkir, Trie Harie Haziz, Muhammad Iqbal, Yudha
Perwira, Sarifuddin Dayani, Iche Berlianty, Finna, Selvy, Wulan,
Cherry, Eva, dan Imam Dwijosyahputo. Terima kasih atas segala
bantuan dan semangatnya.
3. Teman-teman seperjuangan Teknik Informatika dan Sistem Informasi
UIN angkatan 2007. Terima kasih untuk semua kenangan terindahnya.
4. Dan seluruh pihak yang telah membantu penulis, baik langsung
maupun tidak langsung dalam menyelesaikan skripsi ini.
x
DAFTAR ISI
Halaman
Halaman Judul ................... .............................................................................. ii
Lembar Persetujuan Pembimbing .................................................................... iii
Lembar Persetujuan Penguji ............................................................................ iv
Lembar Pernyataan .......................................................................................... v
Abstrak ............................................................................................................ vi
Kata Pengantar ................................................................................................ vii
Lembar Persembahan ....................................................................................... ix
Daftar Isi. ......................................................................................................... x
Daftar Gambar . ................................................................................................ xvi
Daftar Tabel ..................................................................................................... xix
Daftar Simbol ................................................................................................... xx
Daftar Istilah..................................................................................................... xxiv
BAB I PENDAHULUAN .............................................................................. 1
1.1. Latar Belakang .................................................................................. 1
1.2. Perumusan Masalah .......................................................................... 2
1.3. Pembatasan Masalah ......................................................................... 2
1.4. Tujuan Penelitian dan Manfaat Penelitian ........................................ 3
1.4.1. Tujuan Penelitian………......................................................... 3
1.4.2. Manfaat Penelitian .................................................................. 4
1.5. Metodologi Penelitian ....................................................................... 4
xi
1.5.1. Metode Pengumpulan Data .................................................... 4
1.5.2. Analisis Pengembangan Sistem .............................................. 5
1.6. Sistematika Penulisan ....................................................................... 7
BAB II LANDASAN TEORI ........................................................................ 8
2.1. Konsep Dasar Sistem …………………………................................ 8
2.1.1. Karakteristik Sistem................................................................ 10
2.1.2. Klasifikasi Sistem …............................................................... 12
2.2. Konsep Dasar Informasi ..……….. ................................................... 14
2.3. Konsep Dasar Sistem Informasi . ...................................................... 14
2.3.1. Komponen Sistem Informasi .................................................. 15
2.4. Pengolahan Data................................................................................ 17
2.5. Analisis Sistem .................................................................................. 17
2.5.1. Definisi Analisis Sistem ......................................................... 17
2.5.2. Fungsi Analisis Sistem ........................................................... 18
2.6. Perancangan Sistem .......................................................................... 18
2.7. Konsep Dasar RAD (Rapid Aplication Development) ...................... 19
2.7.1. Definisi RAD........................................................................... 19
2.7.2. Tahapan RAD .......................................................................... 19
2.8. Alat Bantu Perancangan .................................................................... 21
2.8.1. Unified Modeling Language (UML) ....................................... 21
2.8.2. Diagram UML ......................................................................... 22
xii
2.9. Bahasa Pemrograman PHP ............................................................... 25
2.9.1. Tipe Data Dalam PHP ............................................................ 26
2.9.2. Variabel Dalam PHP .............................................................. 26
2.9.3. Operator Dalam PHP .............................................................. 27
2.9.4. Fungsi Dalam PHP ................................................................. 27
2.10. JQuery………. .................................................................................. 28
2.11. Sumber Daya Manusia (SDM) .......................................................... 29
2.12. Pengujian Aplikasi ............................................................................ 30
2.13. Studi Literatur ................................................................................... 31
BAB III METODOLOGI PENELITIAN .................................................... 34
3.1. Metode Pengummpulan Data ............................................................ 34
3.2. Metode Pengembangan Sistem ......................................................... 35
3.3. Kerangka Berfikir.............................................................................. 36
BAB IV HASIL DAN PEMBAHASAN ...................................................... 37
4.1. Profil Perusahaan PT Repex Wahana ............................................... 37
4.1.1.Visi dan Misi PT Repex Wahana ................................................ 38
4.2. Perancangan Sistem Model RAD ...................................................... 38
4.2.1. Requirements Planning .............................................................. 38
4.2.1.1. Analisis Data..................................................................... 38
4.2.1.2. Analisis Sistem ................................................................. 39
xiii
4.2.1.3. Analisis Permasalahan ...................................................... 41
4.2.1.4. Solusi Permasalahan ......................................................... 42
4.2.2. Design Workshop ....................................................................... 42
4.2.2.1. Usecase Diagram ............................................................. 42
4.2.2.2. Class Diagram .................................................................. 53
4.2.2.2.1. Spesifikasi Database………………………….. 53
4.2.2.3. State Diagram ................................................................... 58
4.2.2.4. Activity Diagram............................................................... 63
4.2.2.5. Sequence Diagram ............................................................ 65
4.2.3. Implementation ........................................................................... 69
4.2.3.1. Coding .............................................................................. 71
4.2.3.2. Testing .............................................................................. 71
BAB V KESIMPULAN DAN SARAN ......................................................... 73
5.1. Kesimpulan ....................................................................................... 69
5.2. Saran .................................................................................................. 69
DAFTAR PUSTAKA ......................................................................................75
LAMPIRAN-LAMPIRAN
xiv
DAFTAR GAMBAR
Halaman
Gambar 2.1. Model Umum Sistem (Input – Proses – Output/IPO) .................... 09
Gambar 2.2. Model Umum Pemrosesan Data ..................................................... 17
Gambar 2.3. Tahapan RAD .................................................................................. 20
Gambar 2.4. Use Case Diagram.......................................................................... 22
Gambar 2.5. Class Diagram ................................................................................ 23
Gambar 2.6. Statechart Diagram ........................................................................ 23
Gambar 2.7. Activity Diagram............................................................................. 24
Gambar 2.8. Use Case Diagram.......................................................................... 24
Gambar 3.1. Tahapan RAD (Kendall, 2008) ....................................................... 35
Gambar 3.2. Kerangka Berfikir ........................................................................... 36
Gambar 4.1. Bagan alir (Flowchart) sistem yang sedang berjalan ..................... 40
Gambar 4.2. Alur Usecase Diagram Sistem Informasi Absensi ........................ 43
Gambar 4.3. Class Diagram ............................................................................... 53
Gambar 4.4. State Diagram Login ...................................................................... 59
Gambar 4.5. State Diagram View Time Schedule .............................................. 59
Gambar 4.6. State Diagram View Time Holiday ................................................ 60
Gambar 4.7. State Diagram View Employee Time Holiday ............................... 60
Gambar 4.8. State Diagram View Print Individual ............................................. 61
Gambar 4.9. State Diagram View Print Departement ......................................... 61
Gambar 4.10. State Diagram View Print SBU .................................................... 62
xv
Gambar 4.11. State Diagram Logout .................................................................. 62
Gambar 4.12. Activity Diagram .......................................................................... 64
Gambar 4.13. Sequence Diagram Login ............................................................. 65
Gambar 4.14 Sequence Diagram Time Schedule ............................................... 66
Gambar 4.15. Sequence Diagram Time Holiday ................................................ 66
Gambar 4.16. Sequence Diagram Employee Time Schedule ............................. 67
Gambar 4.17. Sequence Diagram Print Individual ............................................. 67
Gambar 4.18. Sequence Diagram Print Department .......................................... 68
Gambar 4.19. Sequence Diagram Print SBU ...................................................... 68
xvi
DAFTAR TABEL
Halaman
Tabel 4.1. Cause-and-Effect Analysis ................................................................ .. 41
Tabel 4.2. Usecase Skenario Login ................................................................... .. 44
Tabel 4.3. Usecase Skenario Time Schedule ..................................................... .. 45
Tabel 4.4. Usecase Skenario Time Holiday ....................................................... .. 46
Tabel 4.5. Usecase Skenario Employee Time Schedule .................................... .. 47
Tabel 4.6. Usercase Skenario Print Individual ................................................. .. 49
Tabel 4.7. Usecase Skenario Print Departement ............................................... .. 50
Tabel 4.8. Usercase Skenario Print SBU ........................................................... .. 51
Tabel 4.9. Usecase Skenario Logout ................................................................. .. 52
Tabel 4.10. Spesifikasi tabel user ...................................................................... .. 54
Tabel 4.11. Spesifikasi tabel user level ............................................................. .. 54
Tabel 4.12. Spesifikasi tabel user menu ............................................................ .. 55
Tabel 4.13. Spesifikasi tabel user menu access ................................................. .. 55
Tabel 4.14. Spesifikasi tabel master time schedule ........................................... .. 56
Tabel 4.15. Spesifikasi tabel employee time schedule ....................................... .. 56
Tabel 4.16. Spesifikasi tabel attendance admin ................................................ .. 56
Tabel 4.17. Spesifikasi tabel attendance days ................................................... .. 57
Tabel 4.18. Spesifikasi tabel attendance code ................................................... .. 58
xvii
Simbol Bagan Alir (Flowchart)
Simbol Nama Fungsi
Alternate Symbol Simbol yang
menunjukkan pergantian
proses awal/akhir
Process Symbol Menunjukkan kegiatan
proses dari operasi
computer
Data Penjelasan tentang Data
Multi document Dokumen yang diolah
computer
Data Flow Simpanan data dalam
database
Display menghubungkan use case
dasar ke use case
tambahan
Arus Data Menjelaskan Aliran Data
xviii
DFD (Data Flow Diagram)
Simbol Nama Fungsi
Process Menunjukkan
kegiatan proses
operasi dari
sistem
Entitas Luar Entitas yang
memberi dan
menerima data
Data Storage Tempat
penyimpanan dan
pengambilan file
data
Arus Data Menunjukkan
arah/arus dari
data yang
diproses
xix
ERD (Entity Relationship Diagram)
Simbol Nama Fungsi
Entity Komponen yang
berupa file-file
dan untuk
diproses oleh
sistem
Relasi Penghubung
antara entitas lain
Atribut Atribut dari
entitas yang
tersedia
Notasi Derajat Relasi Minimum dan
Maksimum
1 : 1
1 : M
M : N
Simbol State Transition Diagram (STD)
Simbol Nama Fungsi
Tindakan Menggambarkan
Tindakan yang diambil
jika suatu event terjadi
Tampilan Menggambarkan
tayangan atau layer
yang tampil
1 1
1 m
m n
xx
Simbol Use Case Diagram
NO GAMBAR NAMA KETERANGAN
1
Actor
Menspesifikasikan himpuan peran yang
pengguna mainkan ketika berinteraksi
dengan use case.
2
Dependency
Hubungan dimana perubahan yang terjadi
pada suatu elemen mandiri (independent)
akan mempengaruhi elemen yang
bergantung padanya elemen yang tidak
mandiri (independent).
3
Generalizatio
n
Hubungan dimana objek anak (descendent)
berbagi perilaku dan struktur data dari objek
yang ada di atasnya objek induk (ancestor).
4
Include Menspesifikasikan bahwa use case sumber
secara eksplisit.
5
Extend
Menspesifikasikan bahwa use case target
memperluas perilaku dari use case sumber
pada suatu titik yang diberikan.
6
Association Apa yang menghubungkan antara objek satu
dengan objek lainnya.
7
System
Menspesifikasikan paket yang menampilkan
sistem secara terbatas.
8
Use Case
Deskripsi dari urutan aksi-aksi yang
ditampilkan sistem yang menghasilkan
suatu hasil yang terukur bagi suatu aktor
xxi
9
Collaboration
Interaksi aturan-aturan dan elemen lain
yang bekerja sama untuk menyediakan
prilaku yang lebih besar dari jumlah dan
elemen-elemennya (sinergi).
10
Note
Elemen fisik yang eksis saat aplikasi
dijalankan dan mencerminkan suatu sumber
daya komputasi
Simbol Class Diagram
NO GAMBAR NAMA KETERANGAN
1
Generalization
Hubungan dimana objek anak
(descendent) berbagi perilaku dan
struktur data dari objek yang ada di
atasnya objek induk (ancestor).
2
Nary
Association
Upaya untuk menghindari asosiasi
dengan lebih dari 2 objek.
3
Class
Himpunan dari objek-objek yang
berbagi atribut serta operasi yang
sama.
4
Collaboration
Deskripsi dari urutan aksi-aksi yang
ditampilkan sistem yang
menghasilkan suatu hasil yang
terukur bagi suatu aktor
5
Realization
Operasi yang benar-benar dilakukan
oleh suatu objek.
6
Dependency
Hubungan dimana perubahan yang
terjadi pada suatu elemen mandiri
(independent) akan mempegaruhi
elemen yang bergantung padanya
elemen yang tidak mandiri
7
Association
Apa yang menghubungkan antara
objek satu dengan objek lainnya
xxii
Simbol Sequence Diagram
NO GAMBAR NAMA KETERANGAN
1
LifeLine
Objek entity, antarmuka yang saling
berinteraksi.
2
Message
Spesifikasi dari komunikasi antar
objek yang memuat informasi-
informasi tentang aktifitas yang
terjadi
3
Message
Spesifikasi dari komunikasi antar
objek yang memuat informasi-
informasi tentang aktifitas yang
terjadi
Simbol StateChart Diagram
NO GAMBAR NAMA KETERANGAN
1
State Nilai atribut dan nilai link pada suatu waktu
tertentu, yang dimiliki oleh suatu objek.
2 Initial Pseudo
State Bagaimana objek dibentuk atau diawali
3
Final State Bagaimana objek dibentuk dan dihancurkan
4
Transition
Sebuah kejadian yang memicu sebuah state
objek dengan cara memperbaharui satu atau
lebih nilai atributnya
5
Association Apa yang menghubungkan antara objek satu
dengan objek lainnya.
xxiii
6
Node
Elemen fisik yang eksis saat aplikasi
dijalankan dan mencerminkan suatu sumber
daya komputasi.
Simbol Actifity Diagram
NO GAMBAR NAMA KETERANGAN
1
Actifity
Memperlihatkan bagaimana masing-
masing kelas antarmuka saling
berinteraksi satu sama lain
2
Action State dari sistem yang mencerminkan
eksekusi dari suatu aksi
3
Initial Node Bagaimana objek dibentuk atau
diawali.
4 Actifity Final
Node
Bagaimana objek dibentuk dan
dihancurkan
5
Fork Node Satu aliran yang pada tahap tertentu
berubah menjadi beberapa aliran
xxiv
DAFTAR ISTILAH
Customizable Penyesuaian penggunaan
Reminder Hal Pengingat kondisi.
Input Pemasukkan data kedalam penyimpanan data.
Output Keluaran data
User Pengguna dari sistem
RAD Rapid Aplication Development. Pengembangan
aplikasi secara cepat
Testing Tahapan dimana pengembangan software
melakukan uji coba terhadap aplikasi.
Programmer Orang yang ahli dalam membuat suatu aplikasi
program.
User Friendly Bersahabat untuk digunakan, sehingga user
mudah untuk menggunakan.
Design Tahapan dimana pengembangan software
melakukan perancangan.
Coding Tahapan dimana pengembangan software
xxv
melakukan pembangunan aplikasi.
Blackbox Suatu jenis pengujian perangkat lunak
berdasarkan dengan input, output pemakai.
open source Sumber yang dapat digunakan. Aplikasi yang
dapat digunakan secara bebas oleh pengguna.
Knowledge Based System Pengetahuan mendasar seseorang terhadap sistem
Internet Jaringan yang saling behubungan. istilah umum
yang dipakai untuk menunjukkan network tingkat
dunia yang terdiri dari komputer dan layanan
service atau sekitar 30 sampai 50 juta pemakai
komputer
Electronic Mail (Email) Surat elektronik. Pengiriman pesan melalui
jaringan komputer.
World Wide Web Jaringan Internet seluruh dunia
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Seiring dengan perkembangan teknologi yang begitu pesat, sistem
informasi yang berbasis web dimanfaatkan sebagai sarana peningkatan
informasi. Pemanfaatan tersebut akan mempermudah suatu pekerjaan seperti
pengolahan data lebih cepat, keputusan yang akan diambil lebih tepat,
menghemat waktu dan biaya. Selain itu, sistem informasi yang berbasis web
juga dapat menjadi sarana promosi yang efesien dan sumber informasi yang
dapat diakses oleh pengguna internet yang semakin lama semakin luas.
Sebagian besar informasi bisnis saat ini masih dalam format kertas.
Kertas dokumen masih memenuhi laci penyimpanan dokumen. Kegiatan
mencari kembali dokumen-dokumen di tempat penyimpanan merupakan
pengalaman yang melelahkan. Dokumen dapat salah letak atau bahkan
hilang, dan sangat jarang ada cadangan (back-up) dokumen seperti ini.
Sistem kerja secara manual masih terjadi PT Repex Wahana. Semua
pemprosesan data, khususnya di bagian kepegawaian masih dilakukan secara
manual seperti dalam proses absensi, dan pembuatan laporan absensi masih
menggunakan Microsoft excel. Dampaknya berpengaruh dalam kegiatan
operasionalnya, yakni pada pembuatan laporan bulanan yang memerlukan
waktu yang cukup lama.
2
Untuk dapat memudahkan bagian kepegawaian mendapatkan informasi
yang berhubungan dengan absensi secara lengkap dan terperinci, penulis akan
menganalisis kebutuhan PT. REPEX WAHANA, bidang kepegawaian. Di
analisis tersebut, akhirnya ditemukan gagasan untuk itu, penulis akan
mengembangkan sistem. Suatu program yang mempermudah penghimpunan
informasi absensi atau absensi data kepegawaian. Gagasan ini tertuang
menjadi bahan skripsi yang berjudul “Pengembangan Fitur Absensi Pada
Aplikasi Human Resources Information System (HRIS) Di PT. Repex
Wahana.”
1.2. Rumusan Masalah
Atas dasar permasalahan yang dipaparkan, maka perumusan masalah
dalam penelitian ini adalah bagaimana melakukan pengembangan aplikasi
HRIS di PT. Repex Wahana?
1.3. Batasan Masalah
Agar penyusunan dan penulisan skripsi ini lebih terarah maka ruang
lingkup pembahasan akan dibatasi pada permasalahan sebagai berikut :
1. Pengembangan sistem pada aplikasi HRIS PT. Repex Wahana
menggunakan metode berorentasi obyek dengan model Rapid Application
Development (RAD) dan tools Unified Modeling Language (UML).
Dengan memiliki 3 tahapan rencana kebutuhan, proses desain dan
implemetasi.
3
2. Pengembangan aplikasi HRIS PT. Repex Wahana menggunakan aplikasi
XAMPP 1.8.2, dengan bahasa pemrograman PHP 5.4.16 dan DBMS
MySQL 5.0.10 serta JqueryUI 1.7.2 sebagai tampilan.
3. Security di dalam sistem ini terdiri dari dua akses yaitu administrator dan
attendance, untuk tambah, edit dan hapus data hanya dilakukan oleh
admin yang sudah ditunjuk.
1.4 Tujuan dan Manfaat Penelitian
1.4.1 Tujuan Penelitian
Penelitian ini dilakukan dengan maksud dan tujuan tentang apa
yang akan dibuat, yang nantinya akan mencapai hasil yang diinginkan.
Adapun tujuan dari penelitian ini adalah sebagai berikut:
1. Merancang suatu sistem absensi yang langsung mencatat
kehadiran dan pulang karyawan dalam sistem aplikasi HRIS.
2. Memberikan alternatif solusi untuk memperbaiki
permasalahan absensi dan prosedur yang lebih luas lagi yang
terjadi pada sistem tersebut agar lebih efektif dan efesien
dengan dukungan teknologi.
1.4.2 Manfaat Penelitian
Manfaat yang dapat diperoleh dari penelitian ini adalah :
1. Bagi Penulis
Bertambah wawasan dan pengalaman penulis dalam bidang
programming dan teknologi informasi dalam hal-hal yang berkaitan
dengan metodologi penulisan tugas akhir.
4
2. Bagi Perusahaan
Merancang suatu aplikasi yang mempermudah kinerja bidang
kepegawaian dalam hal absensi serta mendapatkan informasi-
informasi yang berhubungan dengan absensi secara lengkap dan
terperinci.
1.5 Metode Penelitian
Metode adalah suatu cara atau teknik yang sistematis untuk mengerjakan
atau menyelesaikan suatu penelitian. Adapun metode penelitian yang
digunakan penulis untuk menyelesaikan berbagai permasalahan yang
ditemukan adalah :
1.5.1. Pengumpulan Data
Penulis memperoleh data dengan melakukan riset secara langsung
kepada instansi terkait dalam prosedur yang sistematik dan standar
sehingga mendapatkan data-data yang baik dan benar dengan model
pengumpulan data sebagai berikut:
a. Observasi
Melalui pengamatan secara langsung atau observasi yang
dilakukan di perusahaan guna mendapatkan data yang dimaksud
(Jogiyanto, 2008: 59).
b. Wawancara
Wawancara memungkinkan untuk mendapatkan data secara lebih
mendalam karena bertatapan langsung dengan narasumber
(Jogiyanto, 2008: 59).
5
c. Studi Pustaka
Studi pustaka dilakukan untuk menambah referensi teori-teori
yang diperlukan dalam penelitian dengan cara membaca dan
mempelajari literatur yang mendukung penelitian ini,
diantaranya yaitu: jurnal, buku-buku, makalah dan artikel
(Jogiyanto, 2008: 59).
1.5.2. Analisis Pengembangan Sistem
Metode pengembangan sistem yang penulis gunakan adalah metode
Rapid Application Development (RAD), yang memiliki tahapan
sebagai berikut (Kendall dan Kendall, 2008: 267) :
a. Rencana Kebutuhan (Requirement Planning).
Pada tahap ini, user dan analyst melakukan semacam
pertemuan untuk melakukan identifikasi tujuan dari aplikasi
atau system dan melakukan identifikasi kebutuhan informasi
untuk mencapai tujuan. Hal terpenting pada tahap ini adalah
adanya keterlibatan dari kedua belah pihak, bukan
hanya sekedar persetujuan akan proposal yang sudah dibuat.
Untuk lebih jauh lagi, keterlibatan user bukan hanya dari satu
tingkatan pada suatu organisasi, melainkan beberapa
tingkatan organisasi sehingga informasi yang dibutuhkan
untuk masing-masing user dapat terpenuhi dengan baik.
6
b. Proses Desain (RAD Design Workshop).
Pada tahap ini adalah melakukan proses desain dan
melakukan perbaikan-perbaikan apabila masih terdapat
ketidaksesuaian desain antara user dan analyst. Untuk tahap
ini maka keaktifan user yang terlibat sangat menentukan
untuk mencapai tujuan, karena user bisa langsung
pemberikan komentar apabila terdapat ketidaksesuaian pada
desain. Biasanya, user dan analyst berkumpul menjadi satu
dan duduk di meja melingkar dimana masing-masing orang
bias melihat satu dengan yang lain tanpa ada halangan.
c. Implementasi (Implementation).
Setelah desain dari sistem yang akan dibuat sudah disetujui
baik itu oleh user dan analyst, maka pada tahap ini
programmer mengembangkan desain menjadi suatu program.
1.6 Sistematika Penulisan
Dalam penulisan laporan ini, penulis akan melakukan pembahasan
dengan membagi ke dalam 5 bab, yaitu :
BAB I PENDAHULUAN
Dalam bab ini dibahas secara singkat latar belakang masalah
untuk penentuan judul, identifikasi masalah, pembatasan
masalah, perumusan masalah, metode pembahasan, dan
sistematika penulisan.
7
BAB II LANDASAN TEORI
Dalam bab ini berisikan tentang teoritis pengertian-
pengertian, metode penyusunan data serta bahasa
pemrograman yang digunakan.
BAB III METODOLOGI PENELITIAN
Dalam bab ini membahas tentang metodologi yang
digunakan, dimulai dengan metode pengumpulan data dan
tahapan-tahapan analisa dan pengembangan yang diterapkan
dalam aplikasi HRIS PT. Repex Wahana.
BAB IV PEMBAHASAN
Dalam bab ini menguraikan tentang latar belakang instansi
dan menjelaskan pengembangan aplikasi HRIS PT. Repex
Wahana yang menggunakan beberapa tahap perancangan
sistem “Rapid Application Development (RAD).
BAB V PENUTUP
Dalam bab ini menguraikan tentang kesimpulan dan
rekomendasi untuk penelitian selanjutnya.
8
BAB II
LANDASAN TEORI
2.1 Konsep Dasar Sistem
Sistem bukan lagi sebagai hal asing bagi kebanyakan orang dalam
kehidupan sehari-hari. Sering kali orang menganggap sebuah sistem adalah
seperangkat computer. Sistem juga bisa mengarah kepada arti yang lebih
luas seperti sistem tata surya, sistem pernapasan dan sistem-sistem lainnya.
Menurut Sutarman (2012:13), Sistem adalah kumpulan elemen yang saling
berhubungan dan berinteraksi dalam satu kesatuan untuk menjalankan suatu
proses pencapaian suatu tujuan utama.
Berdasarkan pemahaman tersebut dapat dijabarkan bahwa “Sistem adalah
sekumpulan elemen yang membentuk suatu jaringan yang saling terkaint
satu sama lain untuk mencapai suatu tujuan tertentu”. Ada beberapa elemen
yang membentuk suatu sistem (Yakub, 2012:3), yaitu:
1. Tujuan (Goal)
Sebuah sistem pasti memiliki suatu tujuan baik satu tujuan
atau pun banyak tujuan. Dengan adanya suatu tujuan yang jelas
akan menghasilkan suatu sistem yang terarah dan terkendali.
Tujuan suatu sistem dibuat berdasarkan pada kegiatan pembuatan
sistem yang sedang ditangani. Ada 3 (tiga) tujuan umum, yaitu;
a. Untuk mendukung fungsi kepengurusan manajemen.
b. Untuk mendukung pengambilan keputusan manajemen.
9
c. Untuk mendukung kegiatan operasi sistem.
2. Masukan (Input)
Sistem adalah segala sesuatu yang masuk ke dalam sistem
dan selanjutnya menjadi bahan untuk diproses. Masukan berupa
data transaksi, data non transaksi dan instruksi atau perintah.
3. Proses (Process)
Proses adalah bagian yang melakukan perubahan atau
transformasi dari masukan menjadi keluaran yang berguna. Dalam
sistem informasi, proses berupa perhitungan, pengurutan data dan
peringkasan data.
4. Keluaran (Output)
Keluaran merupakan hasil dari sebuah pemrosesan. Pada
sistem informasi seperti suatu informasi, saran, laporan dan
sebagainya.
Elemen-elemen tersebut di atas dapat digambarkan seperti gambar dibawah
ini:
Gambar 2.1 Model Umum Sistem (Input – Proses – Output/IPO) (Yakub, 2012:5)
input
Proses Output
10
2.1.1 Karakteristik Sistem
Model umum sebuah sistem adalah input, proses, dan output. Hal ini
merupakan konsep sebuah sistem yang sangat sederhana sebab sebuah sistem
dapat mempunyai beberapa masukan dan keluaran. Selain itu, sebuah sistem
mempunyai karakteristik atau sifat-sifat tertentu yang mencirikan bahwa hal
tersebut bisa dikatakan sebagai suatu sistem. Adapun karakteristik yang dimaksud
adalah sebagai berikut (Sutabri, 2012:13):
1. Komponen Sistem (Component)
Komponen-komponen sistem tersebut dapat berupa suatu bentuk
subsistem. Setiap subsistem memiliki sifat dari sistem yang menjalankan
suatu fungsi tertentu dan mempengaruhi proses sistem secara
keseluruhan.
2. Batasan Sistem (Boundary)
Ruang lingkup sistem merupakan daerah yang membatasi antara
sistem dengan sistem yang lain atau sistem dengan lingkungan luarnya.
Batasan sistem ini memungkinkan suatu sistem dipandang sebagai satu
kesatuan yang tidak dapat dipisahkan.
3. Lingkungan Luar Sistem (Environment)
Bentuk apapun yang ada diluar ruang lingkup atau batasan sistem
yang mempengaruhi operasi sistem tersebut disebut lingkungan luar
sistem. Lingkungan luar sistem ini dapat bersifat menguntungkan dan
dapat juga bersifat merugikan sistem tersebut.
11
4. Penghubung (Interface)
Media yang menghubungkan sistem dengan subsistem yang lain
disebut penghubung sistem atau interface. Penghubung ini
memungkinkan sumber-sumber daya mengalir dari satu subsistem ke
subsistem lain. Bentuk keluaran dari satu subsistem akan menjadi
masukan untuk subsitem lain melalui penghubung tersebut. Dengan
demikian, dapat terjadi suatu integrasi sistem yang membentuk satu
kesatuan.
5. Masukan Sistem (Input)
Energi yang dimasukkan ke dalam sistem disebut masukan sistem,
yang dapat berupa pemeliharaan (maintenance input) dan sinyal (signal
input).
6. Keluaran Sistem (Output)
Hasil energi yang diolah dan diklasifikasikan menjadi keluaran
yang berguna. Keluaran ini dapat mennjadi masukan bagi subsistem
yang lain seperti sistem informasi. Keluaran yang dihasilkan adalah
informasi. Informasi ini dapat digunakan sebagai masukan untuk
pengambilan keputusan atau hal-hal lain yang menjadi input bagi
subsitem lain.
7. Pengolah Sistem (Process)
Suatu sistem dapat mempunyai suatu proses yang akan mengubah
masukan menjadi keluaran.
12
8. Sasaran (Objectives) dan Tujuan (Goal)
Suatu sistem mempunyai tujuan dan sasaran yang pasti dan bersifat
deterministik. Kalau suatu sistem tidak memiliki sasaran maka operasi
sistem tidak ada gunanya. Suatu sistem dikatakan berhasil bila
mengenai sasaran atau tujuan yang telah direncanakan.
Suatu sistem dikatakan berhasil apabila mengenai sasaran atau tujuannya.
Jika suatu sistem tidak mempunyai sasaran, maka operasi sistem tidak akan ada
gunanya.
2.1.2 Klasifikasi Sistem
Menurut Mustakini (2009:53), Suatu sistem dapat diklasifikasikan:
1. Sistem abstrak (abstact system) dan sistem fisik (phisical system)
Sistem abstrak adalah sistem yang berupa pemikiran atau ide-
ide yang tidak tempak secara fisik, misalnya sistem teknologi yaitu
sistem yang berupa pemikiran-pemikiran hubungan antara manusia
dengan Tuhan. Sitem fisik merupakan sistem yang ada secara fisik.
2. Sistem Alami (natural system) dan Sistem Buatan Manusia (human
made system)
Sistem alami adalah sistem yang keberadaannya terjadi secara
alami/natural tanpa campuran tangan manusia. Sedangkan sistem
buatan manusia adalah sebagai hasil kerja manusia. Contoh sistem
alamiah adalah sistem tata surya yang terdiri dari atas sekumpulan
planet, gugus bintang dan lainnya. Contoh sistem abstrak dapat
13
berupa sistem komponen yang ada sebagai hasil karya teknologi
yang dikembangkan manusia.
3. Sistem pasti (deterministic system) dan sistem tidak tentu
(probobalistic system)
Sistem tertentu adalah sistem yang tingkah lakunya dapat
ditentukan/diperkirakan sebelumnya. Sedangkan sistem tidak tentu
sistem tingkah lakunya tidak dapat ditentukan sebelumnya. Sistem
aplikasi komputer merupakan contoh sistem yang tingkah lakunya
dapat ditentukan sebelumnya. Program aplikasi yang dirancangdan
dikembangkan oleh manusia dengan menggunakan prosedur yang
jelas, terstruktur dan baku.
4. Sistem Tertutup (closed system) dan Sistem Terbuka (open system)
Sistem tertutup merupakan sistem yang tingkah lakunya tidak
dipengaruhi oleh lingkungan luarnya. Sebaliknya, sistem terbuka
mempunyai prilaku yang dipengaruhi oleh lingkungannya. Sistem
aplikasi komputer merupakan sistem relative tertutup, karena
tingkah laku sistem aplikasi komputer tidak dipengaruhi oleh
kondisi yang terjadi diluar sistem.
14
2.2. Konsep Dasar Informasi
Definisi informasi menurut Krismiaji (2010:15) dalam bukunya yang
berjudul Sistem Informasi Akuntansi menjelaskan bahwa Informasi adalah
data yang telah diorganisasi dan telah memiliki kegunaan dan manfaat.
Sedangkan pengertian informasi menurut Susanto (2009:40) dalam
bukunya yang berjudul Sistem Informasi Manajemen, adalah Informasi
merupakan hasil dari pengolahan data, akan tetapi tidak semua hasil dari
pengolahan tersebut bisa menjadi informasi, hasil pengolahan data yang
tidak memberikan makna atau arti serta tidak bermanfaat bagi seseorang
bukanlah merupakan informasi bagi orang tersebut.
Menurut penjabaran tersebut, dapat dikatakan bahwa “informasi adalah
data yang telah diolah menjadi sebuah bentuk yang bermanfaat dan dapat
digunakan untuk pengmabilan keputusan”. Dengan demikian, informasi
merupakan aset penting bagi kegiatan proses bisnis di sebuah perusahaan.
Informasi yang baik, benar, jelas dan tepat akan menghasilkan suatu
keputusan yang sangat bermanfaat bagi sebuah perusahaan.
2.3. Konsep Dasar Sistem Informasi
Sistem Informasi ini mengumpulkan, memproses, menyimpan,
menganalisis, meyebarkan informasi untuk tujuan tertentu. Seperti sistem
lainnya, sebuah sistem informasi terdiri atas input (data, instruksi) dan
output (laporan, kalkulasi). Sistem Informasi memproses input dan
menghasilkan output yang dikirim kepada pengguna atau sistem yang
lainnya. Mekanisme timbal balik yang mengontrol operasi pun bisa
15
dimasukkan. Seperti sistem lainnya, sebuah sistem informasi beroperasi di
dalam sebuah lingkungan. Dalam mempelajari sistem informasi, perlu
diketahui mengenai perbedaan data, informasi, dan pengetahuan (Sutarman,
2009: 13).
Berdasarkan pemahaman tersebut dapat disimpulkan bahwa “sistem
informasi adalah rangkaian prosedur dimana data dikelompokkan dan
diproses menjadi suatu informasi yang bermanfaat untuk pengambilan
keputusan”.
2.3.1. Komponen Sistem Informasi
Menurut Mulyanto (2009:31), “sistem informasi terdiri dari lima
sumber daya yang dikenal sebagai komponen sistem informasi. Kelima
sumber daya tersebut adalah manusia, hardware, software, data, dan
jaringan. Kelima komponen tersebut memainkan peranan yang sangat
penting dalam suatu sistem informasi. Namun dalam kenyataannya, tidak
semua sistem informasi mencakup kelima komponen tersebut”. berikut
merupkan penjelasan komponen dari sistem informasi :
A. Sumber Daya Manusia
Manusia mengambil peranan yang penting bagi sistem informasi.
Manusia dibutuhkan untuk mengoperasikan sistem informasi. Sumber daya
manusia dapat dibedakan menjadi dua kelompok yaitu pengguna akhir dan
pakar sistem informasi. Pengguna akhir adalah orang-orang yang
menggunakan informasi yang dihasilkan dari sistem informasi, sedangkan
16
pakar sistem informasi orang-orang yang mengembangkan dan
mengoperasikan sistem informasi.
B. Sumber Daya Hardware
Sumber daya hardware adalah semua peralatan yang digunakan dalam
pemrosesan informasi. Sumber daya ini tidak hanya sebatas komputer
saja, melainkan semua media data seperti lembaran kertas dan disk
magnetic atau optikal.
C. Sumber Daya Software
Sumber daya software adalah semua rangkaian perintah (instruksi)
yang digunakan untuk memproses informasi. Sumber daya ini tidak hanya
berupa program saja, tetapi juga berupa prosedur.
D. Sumber Daya Data
Sumber daya data bukan hanya sekedar bahan baku untuk memasukan
sebuah sistem informasi, melainkan sebagai dasar membentuk sumber
daya organisasi.
E. Sumber Daya Jaringan
Sumber daya jaringan merupakan media komunikasi yang
menghubungkan komputer, memproses komunikasi, dan peralatan lainnya,
serta dikendalikan melalui software komunikasi. Sumber daya ini dapat
berupa media komunikasi seperti kabel, satelit dan dukungan jaringan
seperti modem, software pengendali, serta prosesor antar jaringan.
17
2.4. Pengolahan Data
Dalam bukunya, Putra dan Subiyakto (2006:15) menjelaskan bahwa
pengolahan data adalah proses transformasi dari fakta-fakta mentah yang
belum dievaluasi menjadi informasi yang terintegrasi dan menyeluruh. Data
adalah masukan dari suatu modelpengolahan data yang menghasilkan
pengeluaran berupa informasi.
Proses pengolahan data umumnya terdiri dari tiga tahap aktifitas, yaitu:
1. Input, memasukkan data yang akan diproses.
2. Proses, melakukan proses untuk mengubah input menjadi output.
3. Output, mengeluarkan hasil pengolahan data berupa informasi.
Model umum pemrosesan ini dapat digambarkan seperti di bawah ini:
Gambar 2.2 Model Umum Pemrosesan Data (Putra dan Subiyakto, 2006:15)
2.5. Analisis sistem
2.5.1. Definisi Analisis sistem
Informasi di dalam suatu organisasi sangatlah penting dan tidak dapat
dikembangkan keberadaannya, karena informasi dapat membuat suatu
organisasi meraih tujuan dari didirikannya organisasi tersebut. Dengan
informasi suatu organisasi dapat menyelesaikan masalah yang dihadapinya
dan dengan informasi juga suatu organisasi dapat mengontrol semua
aktifitas yang ada di dalamnya.
Input (data)
Proses Output (Informasi)
18
Menurut Goal (2008:73), “Analisa sistem adalah sebagai penguraian
dari suatu sistem informasi yang utuh kedalam bagian-bagian
komponennya dengan maksud untuk mengidentifikasikan dan
mengevaluasi permsalahan-permasalahan, kesempatan-kesempatan,
hambatan yang terjadi dan kebutuhan yang diharapkan sehingga dapat
diusulkan perbaikan-perbaikannya”.
2.5.2. Fungsi Analisis Sistem
Menurut Goal (2008:74), adapun fungsi analisa sistem adalah :
1. Mengidentifikasi masalah-masalah kebutuhan pemakai (user).
2. Menyatakan secara spesifik sasaran yang harus dicapai untuk
memenuhi kebutuhan pemakai.
3. Memilih alternatif-alternatif metode pemecahan masalah yang paling
tepat.
4. Merencanakan dan menetapkan rancangan sistem
2.6. Perancangan Sistem
Perancangan sistem didefinisikan oleh John dan Grudnitski (2007:57)
”Perancangan sistem adalah berupa penggambaran perancangan dan
pembuatan sketsa atau pengaturan dari beberapa elemen yang terpisah
kedalam satu kesatuan yang utuh dan berfungsi”. Secara garis besar tujuan
dari perancangan sistem adalah untuk memenuhi kebutuhan kepada
pemakai sistem, dan untuk memberikan gambaran yang jelas dan
rancangan bangun yang lengkap kepada pemogram komputer dan ahli-ahli
teknik lainnya yang terlibat.
19
2.7. Konsep Dasar RAD (Rapid Application Development)
2.7.1. Definisi RAD
RAD atau pengembangan aplikasi cepat adalah pendekatan berorientasi
objek untuk pengembangan sistem yang meliputi metode pengembangan
serta perangkat lunak (Kendall dan Kendall, 2008: 239).
a. RAD merupakan alat yang digunakan untuk menghasilkan layar dan
menunjukkan aliran keseluruhan aplikasi.
b. Pengguna menyetujui rancangan dan menandatangani model visual.
c. Implementasi kurang karena pengguna membantu untuk merancang
aspek bisnis dari sistem.
2.7.2. Tahapan RAD
Ada tiga fase RAD, yaitu:
a. Rencana Kebutuhan (Requirement Planning).
Pada tahap ini, user dan analyst melakukan semacam pertemuan untuk
melakukan identifikasi tujuan dari aplikasi atau system dan melakukan
identifikasi kebutuhan informasi untuk mencapai tujuan. Hal terpenting
pada tahap ini adalah adanya keterlibatan dari kedua belah pihak, bukan
hanya sekedar persetujuan akan proposal yang sudah dibuat. Untuk lebih
jauh lagi, keterlibatan user bukan hanya dari satu tingkatan pada suatu
organisasi, melainkan beberapa tingkatan organisasi sehingga informasi
yang dibutuhkan untuk masing-masing user dapat terpenuhi dengan baik.
20
b. Proses Desain (RAD Design Workshop)
Pada tahap ini adalah melakukan proses desain dan melakukan
perbaikan-perbaikan apabila masih terdapat ketidaksesuaian desain antara
user dan analyst. Untuk tahap ini maka keaktifan user yang terlibat sangat
menentukan untuk mencapai tujuan, karena user bisa langsung
pemberikan komentar apabila terdapat ketidaksesuaian pada desain.
Biasanya, user dan analyst berkumpul menjadi satu dan duduk di meja
melingkar dimana masing-masing orang bias melihat satu dengan yang
lain tanpa ada halangan.
c. Penerapan (Implementation)
Setelah desain dari sistem yang akan dibuat sudah disetujui baik itu
oleh user dan analyst, maka pada tahap ini programmer mengembangkan
desain menjadi suatu program.
Gambar 2.3 Tahapan RAD (Kendall dan Kendall, 2008:164)
21
2.8. Alat Bantu Perancangan
2.8.1. Unified Modeling Language (UML)
Menurut Nugroho (2010:6), “Unified Modelling Language adalah bahasa
pemodelan untuk sistem atau perangkat lunak yang berpradigma berorientasi
objek”. Pemodelan (modeling) sesungguhnya digunakan untuk penyederhanaan
permasalahan-permasalahan yang kompleks sedemikian rupa sehingga lebih
mudah dipelajari dan dipahami.
Menurut Padeli (2008:70) Unified Modelling Language (UML)
didefinisikan oleh Good Corporate sebagai berikut:
Unified Modelling Language (UML) adalah “suatu alat bantu
yang sangat handal dalam bidang pengembangan yang
berorientasi objek. Hal ini disebabkan karena uml menyediakan
bahasa pemodelan visual yang memungkinkan pengembang
sistem untuk membuat cetak cetak biru atas visi mereka dalam
bentuk baku”.
Dari beberapa pengertian yang dikemukan diatas, dapat disimpulkan
bahwa Unified Modelling Language (UML) adalah sebuah bahasa pemodelan
yang berorientasi obyek dan menjadi standar dalam visualisasi, merancang, dan
mendokumentasi sistem perangkat lunak untuk penyederhanaan permasalahan-
permasalahan yang kompleks.
22
2.8.2. Diagram UML
Ada beberapa jenis diagram resmi yang digunakan dalam UML untuk
menggambarkan sebuah sistem berdasarkan objeknya (Henderi, 2008:5),
yaitu:
1. Use Case Diagram, menggambarkan sekumpulan use case dan actor
dan hubungan antara mereka. Use Case Diagram mempunyai peranan
penting dalam pengorganisasian dan pemodelan behavior dari sistem.
Gambar 2.4 Use Case Diagram (Henderi, 2008:71)
2. Class Diagram terdiri dari sekumpulan class dan interface lengkap
dengan kolaborasi dan hubungan antara mereka. Pada class diagram,
terdapat simbol-simbol:
a. Simbol ‘+’ untuk menandakan public
b. Simbol ‘-‘ untuk menandakan private
c. Simbol ‘#’ untuk menandakan protected
23
Class 1
- Attribute 1
# Attribute 2
+ operation 1
+ operation 2
Gambar 2.5 Class Diagram (Henderi, 2008:72)
3. Statechart Diagram, gambaran dari perubahan keadaan (state) suatu
objek.
Gambar 2.6 Statechart Diagram (Henderi, 2008:73)
4. Activity Diagram, menggambarkan berbagai alir aktivitas dalam sistem
yang sedang dirancang.
24
Gambar 2.7 Activity Diagram (Henderi, 2008:74)
5. Sequence Diagram, diagram interaksi yang menekankan pada urutan
waktu dari pertukaran message.
Gambar 2.8 Sequence Diagram (Henderi, 2008:75)
25
2.9. Bahasa Pemrograman PHP
PHP merupakan kependekan dari kata Hypertext Preprocessor. PHP
tergolong sebagai perangkat lunak open source yang diatur dalam aturan
general purpose licences (GPL). PHP dilekatkan pada script HTML atau
sebaliknya dan PHP dikhususkan untuk pengembangan web dinamis
(Supriyanto, 2008: 243).
PHP tergolong juga sebagai bahasa pemrograman yang berbasis
server (server side scripting). Ini berarti semua script PHP diletakkan di
server dan diterjamahkan oleh web server terlebih dahulu dan kemudian
hasil terjemahan dikirim ke browser client. Secara teknologi, bahasa
pemrograman PHP memiliki kesamaan dengan bahasa ASP (Active Server
Page), Cold Fusion, JSP (Java Server Page) dan Perl.
Pemrograman dengan menggunakan bahasa pemrogrmana PHP selalu
ditandai dengan adanya tag pembuka (“<?php”) dan tag penutup (“?>”).
Hal tersebut juga yang menandakan PHP mulai menerjemahkan baris-baris
kode PHP serta mengakhiri sampai tag penutup. Sedangkan baris di luar
tag pembuka dan tag penutup tidak diterjemahkan oleh PHP.
Karakteristik yang paling unggul dan paling kuat dalam PHP adalah
lapisan integrasi database (database integration layer). Database yang
mendukung PHP, yaitu Oracle, Adabas-D, Sysbase, mSQL, Velocis,
MySQL, Informix, Solid, dBase, ODBC, Unix dbm dan PostgreSQL
(Suwarno, 2008: 56). Contoh script PHP sederhana terdapat pada Listing 1.
26
Listing Contoh Script PHP
<?php Print "Hello, World!"; ?>
<?php Echo "Hello, World!"; ?>
2.9.1. Tipe Data Dalam PHP
Menurut Supriyanto (2008: 245), PHP mendukung delapan jenis tipe
data, antara lain:
a. Tipe scalar, merupakan tipe dasar yang tidak bisa dipecahkan menjadi
bagian yang lebih kecil. Tipe ini adalah Boolean, Integer, Float
(floating point, ’double’) dan string.
b. Tipe compound atau tipe campuran, tipe ini terdiri dari array dan
objek.
c. Tipe special atau tipe khusus, resource dan null.
2.9.2. Variabel dalam PHP
Varibael PHP diawali dengan tanda dolar ($) kemudian diikuti dengan
nama variabel. Semua nama variabel bersifat case-sensitive. Nama variabel
yang valid harus diawali huruf atau garis bawah yang diikuti oleh jumlah
huruf, angka atau garis bawah. Variabel dapat diisi nilai maupun referensi.
Ketika variabel diisi nilai, seluruh nilai dari ekspresi asli diisikan variabel
tujuan. Setelah diisi, variabel asli bersifat independen, sehingga perubahan
pada satu variabel tidak terpengaruh yang lain (Suwarno, 2008: 57).
27
2.9.3. Operator dalam PHP
Supriyanto (2008: 243) menjelaskan bahwa ada tiga jenis operator
utama yang dikenal dalam PHP, antara lain:
a. Operator Unary, operator yang mengoprasikan hanya satu nilai
variable, contohnya operator lawan atau negasi (”!”), operator
penambahan (increment, ”+ +”) dan operator pengurangan (decrement,
”-”). Operator ini dikenal dengan operator aritmatika.
b. Operator Binary, terdiri dari beberapa operator yang
mempertimbangkan urutan penyelesaian. Operator ini sering
digunakan dalam PHP.
c. Operator Ternary, operator yang membandingkan dua pertanyaan
dimana kebenarannya ditentukan oleh ekspresi ketiga.
2.9.4. Fungsi dalam PHP
Supriyanto (2008: 243) menggambarkan bahwa fungsi adalah
sekumpulan baris program yang terdiri atas serangkaian perintah program
disusun sedemikian rupa sehingga menjadi satu modul saja. Adapun
manfaat dari penggunaan fungsi adalah sebagai berikut:
a. Mengurangi penulisan program yang sama.
b. Kemudahan untuk melacak dan memperbaiki program.
c. Bisa dipanggil dimana saja, termasuk fungsi yang lain.
Dalam segi pembuatan, fungsi dalam PHP dibagi menjadi 2 (dua)
antara lain:
28
1. Fungsi built-in yang disediakan PHP, fungsi ini tinggal dilakukan
pemanggilan saja.
2. Fungsi buatan sendiri, fungsi yang dibuat oleh pembuat program
sendiri jika fungsi yang dibutuhkan tidak disediakan dalam PHP.
2.10. JQuery
Menurut Hakim (2010: 8), JQuery adalah Javascript Library yang
merupakan kumpulan kode/fungsi javascript siap pakai, sehingga
mempermudah dan mempercepat kita dalam membuat kode javascript.
Dengan JQuery, suatu halaman web yang menjadikan aplikasi web, jika
dilihat sumbernya, akan terlihat seperti dokumen HTML biasa; tidak ada
kode javascript yang terlihat langsung. Teknik pemrograman web seperti
ini disebut sebagai unobstrusive javascript programming.
JQuery merupakan salah satu librari yang membuat program web di
sisi klien, tidak terlihat sebagai program javascript biasa, yang harus secara
eksplisit disisipkan pada dokumen web. Pada teknik pemrograman sisi
klien dengan menggunakan javascript biasa, setiap elemen yang memiliki
event, akan secara eksplisit terlihat ada event yang dilekatkan pada elemen
tersebut.
JQuery dikembangkan pertama kali oleh John Resig, yang dibuat lebih
ramping dari librari prototype yang menjadi inspirasi dari librari JQuery ini.
Secara pemrograman, JQuery memiliki kemiripan seperti prototype.
29
JQuery, merupakan librari yang sangat ramping, core dari librari ini dalam
keadaan terkompres hanya berukuran sekitar 19KB.
2.11. Sumber Daya Manusia (SDM)
SDM di dalam organisasi perusahaan merupakan kunci keberhasilan
perusahaan, karena pada dasarnya Sumber Daya Manusia yang merancang,
memasang, mengoperasikan dan memelihari dari sistem integral dari
perusahaan (Sembiring, 2010: 78). Untuk membangun perusahaan
diperlukan input yang terdiri dari, material, informasi, energi, yang diproses
melalui mesin, peralatan, software sehingga menghasilkan output berupa,
produk fisik maupun jasa. Kepentingan Sumber Daya Manusia terhadap
organisasi tidak dapat diabaikan, mutlak diperlukan karena manusialah
yang mengelola Sumber Daya yang ada di dalam organisasi sebagaimana
dalam konsep Matsushita Electric yang menyatakan membuat orang dulu,
baru membuat barang.
Agar daur hidup organisasi dapat tumbuh dan berkembang secara
berkelanjutan, maka salah satu fokus utama di dalam organisasi adalah
bagaimana kita mengolah SDM mulai dari tahapan rekrutmen, seleksi,
penempatan, pengembangan, sampai dengan tahapan pensiun ataupun
Pemutusan Hubungan Kerja (PHK). Sistem pengelolaan SDM yang baik di
dalam perusahaan akan memberikan kepuasan kerja bagi karyawan yang
pada akhirnya akan dapat meningkatkan kinerja organisasi. Dapat
diasumsikan pengelolaan SDM di dalam organisasi tak ubahnya seperti
30
mengelola industri di mana bahan bau diterima, kemudian diproses melalui
beberapa tahapan sampai kepada produk di tangan konsumen. Agar kualitas
produk yang dihasilkan memenuhi standar maka setiap tahapan proses
harus direncanakan dan dikendalikan sesuai dengan standard an spesifikasi
yang telah diterapkan. Demikian juga di dalam pengelolaan SDM harus
disesuaikan dengan standaryang telah ditetapkan dari setiap jabatan mulai
dari tahapan rekrutmen, seleksi, penempatan, pengembangan karir dan
pemutusan hubungan kerja.
2.12. Pengujian Aplikasi
Menurut Simarmata (2010: 323) menyebutkan bahwa “Pengujian
adalah sebuah proses terhadap aplikasi atau program untuk menemukan
segala kesalahan dan segala kemungkinan yang akan menimbulkan
kesalahan sesuai dengan spesifikasi perangkat lunak yang telah ditentukan
sebelum aplikasi tersebut diserahkan kepada pelanggan”.
Adapun metode untuk pengujian aplikasi, yaitu:
1. Blackbox, yaitu pengujian terhadap program secara fungsional.
2. Whitebox, yaitu pengujian terhadap alur yang ada di dalam modul
program.
Dikarenakan permintaan dari pihak HR (Human Resources) mengenai
kemudahan antarmuka (user-friendly) pada aplikasi agar dapat mudah
dimengerti dan dioperasikan, maka rencananya pengujian aplikasi akan
dilakukan dengan metode blackbox, yaitu menguji aplikasi dari segi
fungsionalnya saja.
31
2.13. Studi Literatur
Studi literatur adalah mencari referensi teori yang relefan dengan kasus atau permasalahan yang ditemukan. Referensi ini dapat
dicari dari buku, jurnal, artikel laporan penelitian, dan situs-situs di internet. Output dari studi literatur ini adalah terkoleksinya
referensi yang relefan dengan perumusan masalah.
Tujuannya adalah untuk memperkuat permasalahanserta sebagai dasar teori dalam melakukan studi dan juga menjadi dasar
untuk melakukan desain rancang sistem aplikasi sistem. Berikut beberapa studi literature penulis:
No. Judul Tahun Metode
Pengembangan
Sistem
Rumusan
Masalah
Objek
Penelitian
Hasil Kelebihan Kekurangan
1. Rancang Bangun
Aplikasi Sistem
Informasi
Eksekutif SDM
(Sumber Daya
Manusia) Untuk
Mempercepat
Pengambilan
Keputusan
2012 RAD (Rapid
Application
Development)
Bagaimana
Melakukan
analisis dan
rancang
bangun
aplikasi
sistem
Eksekutif
ESDM
PT. Telkom
Jakarta
Selatan
Aplikasi
berbasis
web
Menggunaka
n metode
Mean
Absolute
Percentage
Error
Pembahasan
metode
Mean
Absolute
Percentage
Errormasih
tidak cukup
jelas
2. Perancangan
Sistemn
Informasi Cuti
Karyawan
Berbasis Web
Pada
2012 SDLC (System
Development
Life Cycle)
Ketidak
jelasan
laporan
tentang
karyawan
yang
mengajukan
cuti
PT. Integrasi
Tri Tama
Cendekia
Aplikasi
Cuti
Online
Aplikasi cuti
online yang
dapat
diakses oleh
karyawan
Sistem
keamanan
kurang dan
tampilan
aplikasi yang
kurang
menarik
32
3. Aplikasi
Monitoring
Produktivitas
Kinerja Mitra
Perusahaan
2012 Model Proses
Incremental
Bagaimana
membangun
aplikasi
monitoring
produktivitas
kerja PDAM
PDAM
Provinsi DKI
Jakarta
Aplikasi
berbasis
web
Menggunaka
n model
proses
incremental
(Incremental
Process
Model)
Aplikasi
hanya
mencakup
untuk skala
kecil
33
Dari studi literature dia atas penulis mendapat gambaran menyeluruh
untuk pembuatan dan rangan aplikasi absensi. Aplikasi absensi memiliki
kelebihan dalam sekuriti sistem. Sekuriti sistem ini memiliki beberapa hak
akses yang dibedakan. Pada aplikasi absensi juga menggunakan jquery
untuk tampilan. Sedangkan untuk kekurangan sistem aplikasi absensi
belom bisa dilihatnya daftar hadir oleh setiap karyawan.
34
BAB III
METODOLOGI PENELITIAN
Dalam melakukan pengembangan terhadap aplikasi HRIS, penulis
menggunakan metode penelitian sebagai berikut :
3.1. Metode Pengumpulan Data
Metode pengumpulan data dalam pengembangan aplikasi ini terbagi
menjadi beberapa tahap sebagai berikut :
1. Observasi
Melalui pengamatan secara langsung atau observasi yang dilakukan di
perusahaan guna mendapat data yang dimaksud (Jogiyanto, 2008: 59).
Observasi dilakukan dengan mengamati langsung proses sistem yang
berjalan sejak 1 Juni 2014 sampai dengan 31 Agustus 2014
2. Wawancara
Wawancara memungkinkan untuk mendapatkan data secara lebih
mendalam karena bertatapan langsung dengan narasumber (Jogiyanto,
2008: 59). Wawancara dilakukan dengan Analis Sistem PT. Repex
Wahana pada tanggal 7 Agustus 2014. (Hasil wawancara terlampir pada
halaman L-3)
3. Studi Pustaka
Studi pustaka dilakukan untuk menambah referensi teori-teori yang
diperlukan dalam penelitian dengan cara membaca dan mempelajari
35
literatur yang mendukung penelitian ini, diantaranya: jurnal, buku-buku,
makalah dan artikel (Jogiyanto, 2008: 59).
3.2. Metode Pengembangan Sistem
Seperti yang disebutkan dalam bab sebelumnya, metode pengembangan
sistem yang digunakan penulis adalah metode RAD dengan proses tahapan
requirement planning (rencana kebutuhan), design workshop (proses desain),
implementation (Penerapan), seperti digambarkan kembali pada Gambar 3.1.
Gambar 3.1 Tahapan RAD
(Kendall dan Kendall, 2008: 165)
36
Kesimpulan dan Saran
Pengumpulan Data
START
Identifikasi Masalah
Observasi
Wawancara
Studi Pustaka
Pengembangan Sistem
Requirement Planning
Design Workshop
Implementation
Analisis Data
Analisis Sistem
Usecase Diagram
Class Diagram
State Diagram
Sequence Diagram
Activity Diagram
Coding
Testing
3.3. Kerangka Berfikir
Gambar 3.2 Kerangka Berfikir
Metode Observasi (Jogiyanto, 2008)
Metode Wawancara (Jogiyanto, 2008)
Metode Studi Pustaka (Jogiyanto, 2008)
Metode RAD (Kendall, 2008)
37
BAB IV
HASIL DAN PEMBAHASAN
4.1. Profile perusahaan PT. Repex Wahana
PT. Repex Wahana merupakan holding company yang menaungi
beberapa anak perusahaan atau Strategic Business Unit (SBU).
Sebagai holding company PT. Repex Wahana bertindak sebagai
supporting company atau sebagai pendukung kegiatan SBU dalam kegiatan
usahanya masing-masing. Misalnya membantu mengatur masalah
kompensasi dan benefit bagi karyawan SBU, mempersiapkan para karyawan
tersebut dengan pelatihan-pelatihan yang dibutuhkan kemudian
memudahkan kegiatan operasional dengan membuatkan sistem computer
yang canggih. Termasuk di dalam PT. Repex Wahana adalah Corporate
Servive (HRD; ITD; GA, Safety, & Legal; dan Security), QSE, Internal
Audit, Purchasing, Marketing, SCM, Finance & Accounting.
Sebagai One Stop Logistics Provider, Repex Wahana senantiasa
menawarkan pelayanan yang berkesinambungan, yang merupakan jawaban
atas kebutuhan pelanggan dewasa ini. Untuk mencapai hal tersebut maka
Repex Wahana melakukan re-branding, dengan tujuan menyatukan misi
serta meyamaratakan kualitas pelayanan kepada pelanggan. Dengan
demikian diharapkan pelanggan akan mendapatkan pelayanan yang seragam
dari seluruh strategic business unit.
38
4.1.1. Visi dan Misi PT. Repex Wahana
a. Visi
RPX Group memberikan kualitas layanan, keahlian besar, dan
dedikasi untuk One-Stop-Logistic.
b. Misi
1. Untuk memberikan yang terbaik One-Stop Logistics solusi melalui
inovasi, teknologi modern, dan berkomitmen tenaga kerja.
2. Untuk berbaur perencanaan strategis dengan teknologi modern dan
berkomitmen tenaga kerja untuk memberikan yang terbaik One-
Stop Logistics solusi.
4.2. Perancangan Sistem Model RAD
4.2.1. Requirements Planning
4.2.1.1. Analisis Data
Analisis data dilakukan untuk melihat kebutuhan user (pengguna)
mengenai aplikasi yang akan dibuat. Analisis data kebutuhan user
berdasarkan aplikasi ini adalah sebagai berikut:
1. Menentukan objek dari sistem yang dibuat
Objek dari sistem yang akan dibuat adalah user (pengguna) yang
terdiri dari supervisor HR.
2. Mempelajari organisasi yang terkait
Mempelajari oraganisasi yang terkait diperlukan untuk
memudahkan dalam pembuatan aplikasi dan memudahkan bagi
39
user dalam implemetasi sistem yang telah dibuat nantinya. Selain
itu, mempelajari organisasi yang terkait juga memudahkan dalam
mengumpulkan data dan informasi mengenai kebutuhan user.
3. Menganalisis output yang telah ada
Output yang telah ada disini berupa analisis data
4. Mempelajari sistem yang telah berjalan
Sistem yang berjalan belum diterapkan secara maksimal oleh
karena itu, untuk memperoleh informasi secara cepat, dilakukan
pendefinisian mengenai sistemyang telah ada atau berjalan.
4.2.1.2. Analisis Sistem
1. Analisa Sistem yang sedang berjalan
Analisa yang dilakukan pada sistem yang sedang berjalan di HRIS
menggunakan Bagan alir (Flowchart). Alur kerja dari sistem yang
sedang berjalan dilakukan dengan tahap sebagai berikut (lihat Gambar
4.1) :
1. Administrator, melakukan login pada sistem HRIS.
2. Administrator, melakukan input data pegawai pada menu
HRIS.
3. Administrator, melakukan update data pegawai pada menu
HRIS.
40
F
Y
Gambar 4.1 Bagan alir (Flowchart) sistem yang sedang berjalan
Pada gambar 4.1 diatas, dijelaskan flowchart dari integrasi sistem.
Dimulai penentuan parameter kinerja yang akan digunakan dengan
melakukan login dan input data pegawai sehingga dapat menghasilkan
aplikasi HRIS.
tSatS
nigoL
eCabaaSa aeC
Ceaaot
SCLabunet
eLdaSbaaSabdCgapao
eCabaaSa aeC
DNE
41
2. Kelemahan Sistem yang sedang berjalan
Berdasarkan flowchart sistem yang sedang berjalan, didapat
kelemahan dari sistem yang sedang berjalan. Kelemahannya sebagai
berikut :
1. Saat ini layanan yang diberikan oleh HRIS yaitu layanan hanya
pada penginputan dan pengupdetan data pegawai.
2. Informasi kehadiran pegawai masih belum secara sistem.
4.2.1.3. Analisis Permasalahan
Setelah melakukan survey dan observasi pada HRIS maka dapat
diidentifikasi kekurangan sistem yang sedang berjalan yang
digambarkan dalam tabel Cause and Effect sebagai berikut:
Table 4.1 Cause-and-Effect Analysis
Cause and Effect
Permasalahan Cause and Effect
Sistem absensi masih bersifat
manual.
Penggunaan kartu
absensi masih kurang
efektif.
Tingatan hak pengelolaan HRIS
belum tertata dengan baik.
Tiap pegawai HRD memiliki hak
yang sama dalam
memasukkan dan
pembaharuan data
pegawai.
Proses pengiriman informasi
masih bersifat manual.
Pengiriman
informasi dilakukan
melalui selembar kertas
dianggap kurang efektif
untuk menjangkau
setiap pihak penerima infromasi.
42
4.2.1.4. Solusi Permasalahan
Dengan melihat kendala pada sistem yang telah ada, maka
dibutuhkan suatu media yang dapat mengurangi permasalahan tersebut
dan menjadikan kinerja Sistem HRIS dapat berjalan lebih baik dan
bermanfaat. Oleh karena itu penulis mengusulkan perancangan suatu
sistem attendance yang ditopang dengan alat absensi sidik jari.
attendance ini bertujuan dalam memantau kehadiran pegawai.
Pembuatan Aplikasi HRIS dibentuk berdasarkan klasifikasi user
pengguna sistem.
4.2.2. Design Workshop
4.2.2.1. Usecase Diagram
Usecase diagram menjelaskan hubungan fungsional yang
diharapkan dari perancangan sebuah sistem. Dalam hal ini yang lebih
ditekankan adalah “apa” yang dapat diperbuat sistem, bukan
“bagaimana”. Sebuah usecase menggambarkan sebuah interaksi yang
terjadi antara actor dan sistem. Usecase merupakan sebuah pekerjaan
tertentu, misalnya login user ke sistem, membuat daftar nama pegawai,
membuat jadwal jam kerja pegawai, dan lain sebagainya. Seorang/
sebuah aktor adalah sebuah entitas manusia atau mesin yang dapat
berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan
tertentu. Usecase diagram dapat sangat membantu, terutama saat kita
sedang menyusun requirement dari sebuah sistem, membuat
43
perencanaan modul dalam sistem, mengkomunikasikan rancangan
sistem dengan klien, dan merancang test case untuk semua feature yang
ada pada sistem. Jadi, usecase diagram sangat berpengaruh dalam
perancangan sebuah sistem atau dapat dikatakan bahwa usecase
diagram adalah dasar dari perencanaan sistem.
1) Usecase diagram Sistem absensi dalam HRIS
Gambar 4.2 Usecase Diagram Sistem Informasi Absensi
44
Tabel 4.2 Usecase Skenario Login
Usecase Name Login
Actor User yaitu admin HR
Brief Description User melakukan login pada menu
utama melalui login user dengan
menginput username dan
password pada form yang telah
disediakan. Setelah itu, sistem
akan melakukan validasi username
dan password ke dalam database.
Basic Flow 1) Masuk terlebih dahulu ke
dalam menu utama dengan
menuliskan alamat link yang
telah disediakan oleh
pengembang (developer)
2) Masukkan username dan
password
3) Validasi username dan
password ke dalam database
4) Sistem menampilkan informasi
jika username atau password
yang diinputkan salah akan
muncul pesan yang
45
memberikan informasi
penginputan username atau
password salah dan link
kembali ke menu login user.
Jika username dan password
yang diinputkan benar akan
menampilkan tampilan menu
home user.
Alternate Flow Jika user salah menuliskan link
maka modul menu utama tidak
akan tampil dalam web browser
Pre Condition Tampilan menu user
Table 4.3 Usecase Skenario Time Schedule
Usecase Name Time Schedule
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan list time
schedule dan dalam usecase ini
user dapat mengupdate, menginput
dan hapus time schedule
Basic Flow 1) User memilih menu time
schedule
2) Tampil halaman menu time
46
schedule
3) User memilih menu untuk
add, update dan delete
Alternative Flow Jika user salah memilih menu time
schedule maka menu time
schedule tidak akan tampil sampai
user memilih menu yang benar
Pre Condition User harus memilih menu time
schedule yang telah disediakan
dengan benar
Post Condition Menu time schedule yang berisi
list schedule, menu add, update
dan delete
Tabel 4.4 Usecase Skenario Time Holiday
Usecase Name Time Holiday
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan list time
holiday dan dalam usecase ini user
dapat mengupdate, menginput dan
hapus time holiday
Basic Flow 1) User memilih menu time
holiday
47
2) Tampil halaman menu time
holiday
3) User memilih menu untuk
add, update dan delete
Alternative Flow Jika user salah memilih menu time
holiday maka menu time holiday
tidak akan tampil sampai user
memilih menu yang benar
Pre Condition User harus memilih menu time
holiday yang telah disediakan
dengan benar
Post Condition Menu time holiday yang berisi list
holiday, menu add, update dan
delete
Tabel 4.5 Usecase Skenario Employee Time Schedule
Usecase Name Employee Time Holiday
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan list
employee time holiday dan dalam
usecase ini user dapat mengupdate
employee time holiday
Basic Flow 1) User memilih menu time
48
holiday
2) Tampil halaman menu time
holiday
3) User memilih menu untuk
update employee time
schedule
Alternative Flow Jika user salah memilih menu
employee time schedule maka
menu employee time schedule
tidak akan tampil sampai user
memilih menu yang benar
Pre Condition User harus memilih menu
employee time schedule yang telah
disediakan dengan benar
Post Condition Tampilan menu employee time
schedule
49
Tabel 4.6 Usercase Skenario Print Individual
Usecase Name Print Individual
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan list print
individual. User melakukan print
laporan berdasarkan employee id
dan berdasarkan tanggal yang akan
di print
Basic Flow 1) User memilih menu print
individual
2) Tampil halaman menu print
individual
3) User memilih menu print
individual untuk membuat
laporan absensi individu
Alternative Flow Jika user salah memilih menu
print individual maka menu print
individual tidak akan tampil
sampai user memilih menu yang
benar
Pre Condition User harus memilih menu print
individual yang telah disediakan
dengan benar
50
Post Condition Tampilan Menu print individual
Tabel 4.7 Usecase Skenario Print Departement
Usecase Name Print Departement
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan list print
departement. User melakukan
print laporan berdasarkan
departement id dan berdasarkan
bulan yang akan di print
Basic Flow 1) User memilih menu print
departement
2) Tampil halaman menu print
departement
3) User memilih menu print
departement untuk membuat
laporan absensi per
departemen
Alternative Flow Jika user salah memilih menu
print departement maka menu
print department tidak akan tampil
sampai user memilih menu yang
benar
51
Pre Condition User harus memilih menu print
departement yang telah disediakan
dengan benar
Post Condition Tampilan Menu print departement
Tabel 4.8 Usercase Skenario Print SBU
Usecase Name Print SBU
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan list print
SBU. User melakukan print
laporan berdasarkan SBU id dan
berdasarkan bulan yang akan di
Basic Flow 1) User memilih menu print SBU
2) Tampil halaman menu print
SBU
3) User memilih menu print SBU
untuk membuat laporan
absensi per SBU
Alternative Flow Jika user salah memilih menu
print SBU maka menu print SBU
tidak akan tampil sampai user
memilih menu yang benar
52
Pre Condition User harus memilih menu print
SBU yang telah disediakan dengan
benar
Post Condition Tampilan Menu print SBU
Tabel 4.9 Usecase Skenario Logout
Usecase Name Logout
Actor User yaitu admin HR
Brief Description Usecase ini menampilkan menu
login user dan menandakan bahwa
user telah keluar dari modul user
Basic Flow 1) User memilih menu logout
2) Keluar dari modul user
3) Masuk ke menu login
Alternative Flow Jika user salah memilih menu
logout maka user tidak akan keluar
dari modul user sampai user
memilih menu yang benar
Pre Condition User harus memilih menu logout
dengan benar
Post Condition Tampilan Menu logout dan
tampilan menu login user
53
4.2.2.2. Class Diagram
Class diagram menjelaskan tentang hubungan antara class yang
terdapat pada aplikasi absensi HRIS. Class tersebut dibentuk oleh
entity/object yang mempunyai atribut dan operasi. Dari class tersebut
dapat terbentuk sebuah tabel yang dapat berasosiasi dengan tabel
lainnya, sehingga memungkinkan terbentuknya sebuah database.
Penjelasa mengenai class diagram Sistem absensi HRIS sebagai
berikut:
Gambar 4.3 Class Diagram
4.2.2.2.1. Spesifikasi Database
Dari penjelasan kelas-kelas yang terdapat pada gambar 4.3 dapat
terbentuk sebuah database. Di dalam database tersebut terdapat 9 tabel,
penjelasan dari spesifikasi database adalah sebagai berikut:
54
1. Tabel user
Tabel 4.10 Spesifikasi tabel user
No Nama field Type Data Panjang field Keterangan
1. user_id Varchar 15 Username
2. group_id Varchar 6 Group user
3. password Varchar 50 Password
4. full_name Varchar 50 Nama lengkap
5. user_alias_name Varchar 6 Nama alias
6. imployee_id Varchar 10 Nomor ID
pegawai
7. station_id Char 3 ID station
8. create_date Datetime - Tanggal di buat
user pertama kali
9. valid_from Datetime - Masa aktif user
10. Valid_to Datetime - Masa habis user
11. email_address Varchar 60 Email user
12. user_level_id Tinyint 1 User level
13. all_division Enum (‘Y’,’N’) Lihat divisi
14. access_priv Enum (‘Y’,’N’) Akses private
15. last_login Datetime - Login terakhir
2. Tabel user level
Tabel 4.11 Spesifikasi tabel user level
No. Nama field Type Data Panjang field Keterangan
1. user_level_id Tinyint 3 Identitas user
level
2. user_level_desc Varchar 30 Deskripsi user
level
55
3. Tabel user menu
Tabel 4.12 Spesifikasi tabel user menu
No. Nama field Type Data Panjang field Keterangan
1. menu_id Int 11 Identitas menu
user
2. menu_name Varchar 50 Nama menu user
3. description Varchar 100 Deskripsi menu
4. parent_id Int 11 Golongan menu
5. status Tinyint 1 Status menu
6. no_urut Tinyint 3 Nomor urut
menu
7. additional_link Tinyint 4 Link lain
8. type_menu Tinyint 3 Tipe menu
9. type_link Varchar 15 Tipe link
10. menu_file_name Varchar 50 Nama menu file
11. image_link Varchar 75 Link gambar
4. Tabel user menu access
Tabel 4.13 Spesifikasi tabel user menu access
No. Nama field Type Data Panjang field Keterangan
1. user_id Varchar 20 Identitas menu
user access
2. menu_id Int 10 Identitas menu
user
56
5. Tabel master time schedule
Tabel 4.14 Spesifikasi tabel master time schedule
No. Nama field Type Data Panjang field Keterangan
1. time_schedule_id Tinyint 2 Identitas master
time schedule
2. time_from Time - Jam masuk
3. time_to Time - Jam keluar
4. time_desc Varchar 30 Deskripsi jam
5. working_hours float - Jumlah jam kerja
6. user_update Varchar 15 User update
7. datetime_updated Datetime - Waktu update
6. Tabel employee time schedule
Tabel 4.15 Spesifikasi tabel employee time schedule
No. Nama field Type Data Panjang field Keterangan
1. employee_id Varchar 10 Nomor pegawai
2. time_schedule_id Int 11 Identitas master
time schedule
3. user_update Varchar 30 User update
4. datetime_updated Datetime - Waktu update
7. Tabel attendance admin
Tabel 4.16 Spesifikasi tabel attendance admin
No. Nama field Type Data Panjang field Keterangan
1. employee_id Varchar 10 Nomor pegawai
2. employee
_attendance
Varchar 10 Employee
attendeance
57
8. Tabel attendance days
Tabel 4.17 Spesifikasi tabel attendance days
No. Nama field Type Data Panjang
field
Keterangan
1. attendance_date Datetime - Tanggal
masuk
2. employee_id Varchar 10 Identitas
employee
3. datetime_in_sys Datetime - Tanggal dan
waktu masuk
4. door_access_in Smallint 5 Pintu access
in
5. datetime_out_sys Datetime - Tanggal dan
waktu keluar
6. door_access_in Smallint 5 Pintu access
out
7. terminal_no Int 11 Terminal
8. total_hour_sys Float (4,2) Total jam
9. attendance_code_id_sys Char 1 -
10. attendance_code_id_update Char 1 -
11. attendance_comment Varchar 50 -
12. user_update Varchar 15 User update
13. datetime_update Datetime - Waktu update
58
9. Tabel attendance code
Tabel 4.18 Spesifikasi tabel attendance code
No. Nama field Type Data Panjang field Keterangan
1. attendance_code_id Char 1 Code attendance
2. attendance_code_desc Varchar 25 Deskripsi code
3. user_update Varchar 15 User update
4. datetime_update Datetime - Waktu update
4.2.2.3. State Diagram
State diagram menggambarkan transisi dan perubahan keadaan
(dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat
dari stimuli yang diterima. Pada umumnya state diagram
menggambarkan class tertentu (satu class dapat memiliki lebih dari satu
state diagram). Dalam UML, state digambarkan berbentuk segi empat
dengan sudut membulat dan memiliki nama sesuai kondisinya saat itu.
Transisi antar state umumnya memiliki kondisi guard yang merupakan
syarat terjadinya transisi yang bersangkutan, ditulis dalam kurung siku.
Action yang dilakukan sebagai akibat dari event tertentu dituliskan
dengan diawali garis miring. Titik awal dan akhir digambarkan
berbentuk lingkaran berwarna penuh dan berwarna setengah. Berikut ini
adalah state diagram dari sistem absensi HRIS
59
1. State Diagram Login
Gambar 4.4 State Diagram Login
User menginput username dan password ke dalam sistem. Setelah
username dan password diinputkan, tekan tombol login. Setelah itu,
sistem akan memvalidasi username dan password ke dalam database.
Kemudian, dilakukan pengecekan ke dalam database. Jika berhasil
menu home aktif dan jika gagal sistem kembali ke menu login.
2. State Diagram View Time Schedule
Gambar 4.5 State Diagram View Time Schedule
60
Menu time schedule dikatakan aktif apabila menu time schedule
dipilih. Menu time schedule dikatakan pasif apabila menu time schedule
tidak dipilih dan aktif lagi jika dipilih. User sudah tidak masuk menu
time schedule apabila keluar dari sistem.
3. State Diagram View Time Holiday
Gambar 4.6 State Diagram View Time Holiday
Menu time holiday dikatakan aktif apabila menu time holiday
dipilih. Menu time holiday dikatakan pasif apabila menu time holiday
tidak dipilih dan aktif lagi jika dipilih. User sudah tidak masuk menu
time holiday apabila keluar dari sistem.
4. State Diagram View Employee Time Schedule
Gambar 4.7 State Diagram View Employee Time Holiday
61
Menu employee time schedule dikatakan aktif apabila menu
employee time schedule dipilih. Menu employee time schedule
dikatakan pasif apabila menu employee time schedule tidak dipilih dan
aktif lagi jika dipilih. User sudah tidak masuk menu employee time
schedule apabila keluar dari sistem.
5. State Diagram View Print Individual
Gambar 4.8 State Diagram View Print Individual
Menu print individual dikatakan aktif apabila menu print individual
dipilih. Menu print individual dikatakan pasif apabila menu print
individual tidak dipilih dan aktif lagi jika dipilih. User sudah tidak
masuk menu print individual apabila keluar dari sistem.
6. State Diagram View Print Departement
Gambar 4.9 State Diagram View Print Departement
62
Menu print departement dikatakan aktif apabila menu print
departement dipilih. Menu print departement dikatakan pasif apabila
menu print departement tidak dipilih dan aktif lagi jika dipilih. User
sudah tidak masuk menu print departement apabila keluar dari sistem.
7. State Diagram View Print SBU
Gambar 4.10 State Diagram View Print SBU
Menu print SBU dikatakan aktif apabila menu print SBU dipilih.
Menu print SBU dikatakan pasif apabila menu print SBU tidak dipilih
dan aktif lagi jika dipilih. User sudah tidak masuk menu print SBU
apabila keluar dari sistem.
8. State Diagram Logout
Gambar 4.11 State Diagram Logout
Menu logout dikatakan aktif apabila menu logout dipilih dan
sistem memanggil module menu logout. User sudah keluar sistem.
63
4.2.2.4. Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam
sistem yang sedang dirancang, bagaimana masing-masing alir berawal,
decision yang mungkin terjadi, dan bagamana mereka berakhir. Activity
diagram juga dapat menggambarkan proses paralel yang mungkin
terjadi pada beberapa eksekusi. Activity diagram merupakan state
diagram khusus, dimana sebagian besar state adalah action dan
sebagain sebesar transisi ditrigger oleh selesainya state sebelumnya
(internal processing). Oleh karena itu, activity diagram tidak
menggambarkan behavior internal sebuah sistem (dan interaksi antar
subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan
jalur-jalur aktivitas dari level atas secara umum. Berikut ini adalah
activity diagram dari sistem absen HRIS
64
1. Activity Diagram
User Web
Gambar 4.12 Activity Diagram
Membuka web Menampilkan web
login Menampilkan Hal. Login
Home
Time schedul
e
Time holiday
Employee Time
schedule
logout
Menampilkan Hal. Home
Menampilkan Hal. Time Schedule
Menampilkan Hal. Time Schedule
Menampilkan Hal. Time Schedule
65
4.2.2.5. Sequence Diagram
Sequence diagram adalah suatu diagram yang memperlihatkan atau
menampilkan interaksi-interaksi antar objek di dalam sistem yang
disusun pada sebuah urutan atau rangkaian waktu. Interaksi antar objek
tersebut termasuk pengguna, display, dan sebagainya berupa
pesan/message.
Sequence diagram digunakan untuk menggambarkan skenario atau
rangkaian langkah-langkah yang dilakukan sebagai sebuah respon dari
suatu kejadian/event untuk menghasilkan output tertentu. Sequence
diagram diawali dari apa yang meng-trigger aktivitas tersebut, proses
dan perubahan apa saja yang terjadi secara internal dan output apa yang
dihasilkan. Berikut adalah sequence diagram pada sistem absen di
HRIS
1. Sequence Diagram Login
Gambar 4.13 Sequence Diagram Login
66
2. Sequence Diagram Time Schedule
Gambar 4.14 Sequence Diagram Time Schedule
3. Sequence Diagram Time Holiday
Gambar 4.15 Sequence Diagram Time Holiday
67
4. Sequence Diagram Employee Time Schedule
Gambar 4.16 Sequence Diagram Employee Time Schedule
5. Sequence Diagram Print Individual
Gambar 4.17 Sequence Diagram Print Individual
68
6. Sequence Diagram Print Department
Gambar 4.18 Sequence Diagram Print Department
7. Sequence Diagram Print SBU
Gambar 4.18 Sequence Diagram Print SBU
69
4.2.3. Implementation
Dalam perancangan aplikasi multiuser yang terintegrasi diperlukan
dua komponen utama, diantaranya :
1. Software, meliputi pemilihan aplikasi perangkat lunak yang
digunakan dalam pengembangan sistem yaitu diantaranya :
a. Web browser digunakan sebagai antarmuka dalam
pengembangan aplikasi berbasis web.
b. Web server digunakan untuk pengembangan aplikasi
berbasis web yang dapat melayani permintaan dari klien
melalui web browser.
c. Database digunakan sebagai tempat penyimpanan data.
d. Bahasa pemrograman yang dapat menghubungkan aplikasi
database dengan server.
Spesifikasi untuk perangkat lunak diantaranya :
a. Sistem Operasi Windows 7/8.
b. Apache HTTP Server Versi 3.2.1.
c. PHP versi 4 sampai 5.3.0.
d. MySQL versi 1.3 sampai dengan 5.0
e. Web browser Mozilla firefox / Google Chrome.
70
2. Hardware, meliputi pemilihan perangkat keras yang digunakan
sebagai alat pendukung pengembangan aplikasi diantaranya :
a. Bentuk fisik komputer digunakan sebagai alat input/output
dalam pengembangan aplikasi.
b. Topologi dan arsitektur jaringan digunakan untuk
mengintegrasikan data dalam pengembangan aplikasi.
Spesifikasi untuk perangkat keras diantaranya sebagai berikut :
a. Processor minimal Pentium Core 2 233 Mhz keatas .
b. RAM/Memory minimal 2 Gb.
c. Monitor dengan resolusi sampai 1366 x 768.
d. Keyboard dan mouse sejenis serial, PS/2, maupun USB.
e. Teknologi jaringan berupa internet atau LAN.
Menu aplikasi yang ditawarkan yaitu :
a. Bagi Administrator : input, update dan delete seluruh data
pada menu HRIS. melakukan setting terhadap kemampuan
user dalam penggunaan aplikasi.
b. Bagi Attendance : input, update dan delete seluruh data
pada menu HRIS.
Aplikasi HRIS memiliki hak akses untuk; view, input, delete,
akses menu dan edit user.
Semua admin melakukan proses login dengan tampilan antar
muka login yang sama. Administrator melakukan setting hak user
dalam mengelola HRIS. Dalam hal ini administrator merupakan super
71
admin yang dapat melakukan semua kegiatan dalam HRIS. Berikut
dijelaskan gambaran hak pengelolaan aplikasi kalender :
1. Administrator
a. View semua data pegawai, organization, attendance, payroll
dan user.
b. Input, edit dan delete data user yang akan mengelola HRIS.
2. Attendance
a. View dan edit data HRIS.
4.2.3.1. Coding
Setelah melakukan intalasi maka tahap selanjutnya adalah
pembuatan program. Dalam membuat program (coding) dapat
mempermudah penulisan kode program khususnya yang berbasis web
(hypertext), aplikasi tersebut diantaranya : Notepad, Wordpad,
Dreamweaver, Ultraedit, Frontpage, dan lain sebagainya. Pada tahap
ini dapat dilihat pada lampiran C.
4.2.3.2. Testing
Pengujian pada dasarnya adalah menemukan serta menghilangkan
‘bug’ (kesalahan-kesalahan) yang ada di sistem atau perangkat lunak
itu. Adapun pengujian terhadap sistem yang dilakukan adalah
bertujuan untuk menemukan kesalahan yang masih ada pada sistem.
Pengujian dilakukan dengan menggunakan pendekatan black-box
testing. Dengan menggunakan pendekatan black-box testing kita dapat
72
mengetahui apakah sistem dapat memberikan keluaran seperti yang
kita harapkan.
Hasil pengujian black-box testing dapat dilihat pada lampiran D.
Dalam tabel tersebut berisi persyaratan fungsional sistem yang diuji
bersama pengguna. Walaupun sistem telah diuji beberapa kali, tidak
menutup kemungkinan adanya kesalahan. Oleh karena itu, pengujian
dan perbaikan harus terus dilakukan seiring dengan digunakannya
sistem ini.
73
BAB V
KESIMPULAN DAN SARAN
Setelah melakukan serangkaian penelitian, maka pada bab ini penulis akan
menguraikan kesimpulan dan saran yang dapat diambil dari rangkaian penelitian
tersebut. Saran yang diberikan diharapkan dapat bermanfaat bagi pihak-pihak
yang akan melanjutkan pengembangan penelitian ini.
5.1. Kesimpulan
Dari penelitian dan penulis yang telah penulis uraikan, maka dapat
ditarik kesimpulan sebagai berikut:
1. Sistem Informasi Absensi HRIS dianalisis dan dirancang dengan
metode RAD (Rapid Application Development) dan dengan tools UML
(Unified Modeling Language). Dengan memiliki 3 tahapan rencana
kebutuhan, proses desain dan implemetasi.
2. Pengembangan Sistem yang dibuat dapat memudahkan pihak HR
(Human Resources) dalam melakukan pengolahan data dan laporan
absen pegawai melalui fitur absensi pada aplikasi HRIS (Humas
Resources Information System) yang telah dibuat.
74
5.2. Saran
Sistem ini tentu saja masih belum sempurna. Masih banyak hal yang
dapat dilakukan untuk mengembangkan sistem ini agar menjadi lebih baik
lagi. Diharapkan pengembangan tidak hanya sebatas absensi, akan tetapi
dapat dikembangkan menjadi bentuk penyampaian informasi kegiatan HRD
melalui aplikasi HRIS.
75
DAFTAR PUSTAKA
Arifin, Johar. 2002. Manajemen Koperasi Berbasis Komputer. PT. Elex Media
Komputindo.
Bodic, Gwanaël Le. 2005. Mobile Messaging Technologies and Services : SMS,
EMS and MMS. Second Edition. Chichester : John Wiley & Sons.
McComb, Gordon. 1990. Gordon Mccomb’s Gatgatter’s Goldmine : Chichester :
Mcgrow Hill.
Hariyanto, Bambang. 2005. Rational Rose untuk Pemodelan Berorientasi Objek
Informatika:Bandung.
Jogiyanto, Hartono Mustakin. 2008. Analisis & Desain Sistem Informasi:
Pendekatan Terstruktur Teory dan Praktek Aplikasi Bisnis. Yogyakarta:
ANDI
Kadir, Abdul. 2003. Pengenalan Sistem Informasi. Yogyakarta: Andi.
Kendall, Kenneth . dan Kendall, Julie . 2008. Analisis dan Perancangan Sistem.
Jakarta : Pearson Education Asia Pte. Ltd dan PT. Prenhallindo.
Ladjamudin, Albahra. 2005. Analisis dan Desain Sistem Informasi. Yogyakarta
Graha Ilmu.
Misky, Dudi. 2005. Kamus Informasi dan Teknologi. Edsa Mahkota.
O’Brien, James . 2005. Pengantar Sistem Informasi. Jakarta : Salemba Empat
Pressman, Roger. 2002. Rekayasa Perangkat Lunak Pendekatan Praktis (Buku
Satu). Yogyakarta : ANDI.
76
Pressman , Roger. 2005. Software Engineering Apractitioner’s Approch: Sixth
Edition. New York : Mc Graw Hill.
Rosidi, Romzi Imron. 2004. Membuat sendiri SMS Gateway (ESME) Berbasis
Protokol SMPP. Yogyakarta : ANDI.
Supriyanto, Aji. 2005. Pengantar Teknologi Informasi Jakarta : Salemba
INFOTEK.
Wahana Komputer. 2005. Pengembangan Aplikasi Sistem Informasi Akademik
Berbasis SMS dengan Java. Jakarta : Salemba.
Whitten , Jeffrey. 2007. System Analysis and Design Methods E. 7th. Yogyakarta:
McGraw-Hill.
LAMPIRAN-LAMPIRAN
1. LAMPIRAN A : HASIL WAWANCARA
2. LAMPIRAN B : HASIL TAMPILAN ANTARMUKA
3. LAMPIRAN C : SOURCE CODE
4. LAMPIRAN D : PENGUJIAN PENERIMAAN SISTEM
LAMPIRAN A
HASIL WAWANCARA
Dalam pengumpulan data (Collecting Data), penulis melakukan wawancara
dengan Audriya Siregar salah satu staff Human Resources (HR). Berikut beberapa
petikan hasil wawancara yang dilakukan oleh penulis:
Pertanyaan :
1. Bagaimana menurut Ibu tentang sistem absensi yang sudah ada
dan berjalan di PT. REPEX WAHANA sampai saat ini?
2. Menurut Ibu apa saja yang harus dilakukan untuk
mengembangkan sistem absensi ini?
Jawaban :
1. Menurut Saya sistem absensi belum berjalan dengan baik.
Karena masih menggunakan sistem manual, terutama dalam
pembuatan laporan absensi kepegawaian.
2. Menurut Saya sebaiknya sistem ini memiliki sistem
penyampaian informasi yang baik dan dapat disampaikan
secara menyeluruh kesemua pihak yang dikenai kegiatan atau
yang memiliki kepentingan dengan absensi ini.
LAMPIRAN B
HASIL TAMPILAN ANTARMUKA
1.Halaman Login
2.Halaman Utama
3. Tampilan List Employee
4. Tampilan Add Employee
5. Tampilan List User
6. Tampilan Time Schedule
7. Tampilan Print Individual
8. Tampilan Print Departement
9. Tampilan SBU
LAMPIRAN C
SOURCE CODE
Config.php
<?php
ini_set("error_reporting", E_ERROR);
ini_set("display_errors", "on");
ini_set("display_startup_errors", "on");
class database{
static function server_db(){
// $dbhost = "10.10.105.149";
// $dbuser = "rnd";
// $dbpass = "#enggakboleh;)";
// $dbname = "hris";
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "hris_employee";
// $dbhost = "10.10.105.16";
// $dbuser = "hris";
// $dbpass = "#harisenin#";
// $dbname = "hris_employee";
$conn =
mysql_connect($dbhost, $dbuser, $dbpass) or
die;
mysql_select_db($conn,$dbname);
}
static function server_ix(){
$dbhost = "10.10.105.6";
$dbuser = "ix";
$dbpass = "ix2hris";
$dbname = "fedex";
$conn =
mysql_connect($dbhost, $dbuser, $dbpass) or
die;
mysql_select_db($conn,$dbname);
}
static function server_db_rpx($ip =
149){
$dbhost = "10.10.105.$ip";
$dbuser = "rnd";
$dbpass = "#enggakboleh;)";
$conn =
mysqli_connect($dbhost, $dbuser, $dbpass) or
die;
}
}
?>
Index.php
<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<?php
include "lib/configbase.inc.php";
?>
<html xmlns="http://www.w3.org/1999/xhtml"
lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title><?=__WEB_TITLE__;?></title>
<link rel="stylesheet" type="text/css"
href="lib/style.css" />
<link rel="stylesheet" type="text/css"
href="lib/ui/ui.all.css" />
<!-- link rel="stylesheet" type="text/css"
href="lib/jquery-ui.css" / -->
<link rel="stylesheet" type="text/css"
href="lib/menu.css" />
<style type="text/css">
@import "lib/css/jquery.datepick.css";
</style>
<?php if (isset($_GET['n'])) { if ($_GET['n']
== 'pph21.php'){ ?>
<!-- SCRIPT
LANGUAGE="JavaScript" SRC="lib/jquery-
1.9.2.min.js"></SCRIPT -->
<?php }else{ ?>
<!-- SCRIPT
LANGUAGE="JavaScript" SRC="lib/jquery-
1.6.2.js"></SCRIPT -->
<!-- SCRIPT
LANGUAGE="JavaScript"
SRC="lib/init.js"></SCRIPT -->
<?php }} ?>
<!--
<SCRIPT type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquer
y/1/jquery.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="http://ajax.googleapis.com/ajax/libs/jqu
eryui/1.9.2/jquery-ui.min.js"></SCRIPT>
-->
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/jquery-1.9.2.min.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/jquery-ui.1.9.2.min.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/jquery.scrollTo-1.4.3.1-
min.js"></SCRIPT>
<!-- SCRIPT
src="http://code.jquery.com/ui/1.9.2/jquery-
ui.js"></SCRIPT -->
<!--
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/init.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/jquery.datepick.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/ui/ui.core.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/ui/ui.accordion.js"></SCRIPT>
<script LANGUAGE="JavaScript"
SRC="lib/jquery.tools.min.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/ui/ui.dialog.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/jquery.scrollTo-min.js"></SCRIPT>
-->
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/leadme.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"
SRC="lib/v.js"></SCRIPT>
</head>
<body>
<?php
cek::access();
if (!$_SESSION['hris_user_name'] AND
!$_SESSION['hris_user_pass']){
// untuk yang belum login
if ($_POST[simaster]==1){
include
"main_files/cekLogin.php";
}else{
include
"main_files/login.php";
}
}else{
// untuk yang sudah login
c_function::cek_session();
include "main_files/start.php";
}
?>
<br/><br/>
<?php
//include "main_files/footer.php";
?>
Action.php
<?
include "includes/start.php";
function check_login() {
global $table_prefix, $link,
$common_get;
if(get_magic_quotes_gpc()) {
$email =
mysql_real_escape_string(stripslashes($_POS
T["email"]));
$password =
mysql_real_escape_string(stripslashes($_POS
T["password"]));
} else {
$email =
mysql_real_escape_string($_POST["email"]);
$password =
mysql_real_escape_string($_POST["password
"]);
}
$md5_pass = md5($password);
$query = mysql_query("Select
user_id, email, temp_password from
".$table_prefix."users where email='".$email."'
and password='$md5_pass' OR
email='".$email."' and
temp_password='$md5_pass'");
$total_row =
mysql_numrows($query);
if($total_row>0){
$row =
mysql_fetch_array($query);
$_SESSION['user_id'] =
$row['user_id'];
$_SESSION['email'] =
$row['email'];
if ($row['temp_password']
== $md5_pass) {
mysql_query("UPDATE
".$table_prefix."users set password =
'".$row['temp_password']."', temp_password =
NULL WHERE user_id
='".$row['user_id']."'");
mysql_close($link);
header("Location:
user_profile.php?return_to=".$_POST["return_
to"]."&".$common_get);
} else {
mysql_close($link);
if
($_POST["return_to"]) {
header("Location:
".$_POST["return_to"]);
} else {
header("Location:
index.php?".$common_get);
}
}
} else {
mysql_close($link);
header("Location:
".$path."bad_password.php?email=".$email."
&return_to=".$_POST["return_to"]."&".$com
mon_get);
}
}
function send_new_password() {
global $table_prefix, $calendar_title,
$calendar_email, $common_get,$link,$lang;
if(get_magic_quotes_gpc()) {
$email =
mysql_real_escape_string(stripslashes($_POS
T["email"]));
} else {
$email =
mysql_real_escape_string($_POST["email"]);
}
$query = mysql_query("Select * from
".$table_prefix."users where email='$email'");
$total = mysql_numrows($query);
if($total>0){
$row =
mysql_fetch_array($query);
$newpass=substr(md5($email.microti
me()), 0, 8);
$crypt_pass=md5($newpass);
mysql_query("UPDATE
".$table_prefix."users set temp_password =
'".$crypt_pass."' WHERE email ='".$email."'");
$message =
$lang["password_msg"].$calendar_title.":\n\n$
newpass\n\n";
mail($email,
$lang["password_subject_start"].$calendar_titl
e.$lang["password_subject_end"], "$message",
"From: \"".$calendar_title."\"
<".$calendar_email.">");
$msg=$lang["password_sent"];
} else {
$msg=$lang["password_no_email"];
}
mysql_close($link);
header("Location:
login.php?return_to=".$_POST["return_to"]."
&msg=".$msg."&".$common_get);
}
function log_out () {
global $common_get;
session_start();
session_unset();
session_regenerate_id();
header("Location:
login.php?".$common_get);
}
function approve($code) {
global $table_prefix, $lang, $link;
if(get_magic_quotes_gpc()) {
$code =
mysql_real_escape_string(stripslashes($code));
} else {
$code =
mysql_real_escape_string($code);
}
$q = "select event_id from
".$table_prefix."events where quick_approve =
'".$code."'";
$query = mysql_query($q);
if (mysql_num_rows($query) > 0) {
$sq = "update
".$table_prefix."events set status_id = 4,
quick_approve = NULL where quick_approve
= '".$code."'";
$squery = mysql_query($sq);
if ($squery) {
$msg =
$lang["event_updated"];
$event_id =
mysql_result($query,0,0);
include
"includes/notify.php";
notify_group($event_id);
}
} else {
$msg =
$lang["event_not_found"];
}
header("Location:
index.php?msg=".$msg);
}
switch ($_REQUEST["mode"]) {
case $lang["send_new_password"];
send_new_password();
break;
case "q";
approve($_REQUEST["qa"]);
break;
case "logout";
log_out();
break;
case "Log In";
check_login();
break;
default;
header("Location: index.php");
break;
}
mysql_close($link);
?>
admin_action.php
<?php
include "includes/start.php";
if(get_magic_quotes_gpc()) {
$id =
mysql_real_escape_string(stripslashes($_REQ
UEST["id"]));
$dir =
mysql_real_escape_string(stripslashes($_REQ
UEST["dir"]));
$file =
mysql_real_escape_string(stripslashes($_REQ
UEST["file"]));
} else {
$id =
mysql_real_escape_string($_REQUEST["id"])
;
$dir =
mysql_real_escape_string(stripslashes($_REQ
UEST["dir"]));
$file =
mysql_real_escape_string(stripslashes($_REQ
UEST["file"]));
}
$edit = false;
function updateProfile($id) {
global $table_prefix, $edit, $link,
$common_get, $lang;
if(get_magic_quotes_gpc()) {
$email =
mysql_real_escape_string(stripslashes($_POS
T["email"]));
$new_password =
mysql_real_escape_string(stripslashes($_POS
T["new_password"]));
} else {
$email =
mysql_real_escape_string($_POST["email"]);
$new_password =
mysql_real_escape_string($_POST["new_pass
word"]);
}
if ($_POST["new_password"]) {
$password =
md5($_POST["new_password"]);
$query =
mysql_query("UPDATE ".$table_prefix."users
set password = '".$password."'WHERE user_id
='".$id."'");
if (!$query) $msg =
$lang["database_error_password_not_updated"
];
}
if (!$edit) {
$query =
mysql_query("UPDATE ".$table_prefix."users
set email = '".$_POST["email"]."' WHERE
user_id =".$id);
if (!$query) {
$msg .=
$lang["database_error_password_not_updated"
];
} else {
$msg .=
$lang["information_updated"];
}
} else {
$view = $_POST["view"] ? 1
: 0;
$post = $_POST["post"] ? 1 :
0;
$add_users =
$_POST["add_users"] ? 1 : 0;
$add_groups =
$_POST["add_groups"] ? 1 : 0;
$add_categories =
$_POST["add_categories"] ? 1 : 0;
$query =
mysql_query("UPDATE ".$table_prefix."users
set email = '".$_POST["email"]."', view =
".$view.", post = ".$post.", add_users =
".$add_users.", add_groups = ".$add_groups.",
add_categories = ".$add_categories." WHERE
user_id =".$id);
if (!$query) $msg .=
$lang["database_error_user_not_updated"];
// clean out current user to
categories table of user
$query =
mysql_query("DELETE from
".$table_prefix."users_to_categories where
user_id = ".$id);
//now add back the ones the
user has access to
if ($_POST["category"]) {
while (list($key) =
each($_POST["category"])) {
$mod =
$_POST["cpost"][$key] == 2 ? 2 : 1;
if
($_POST["cmoderate"][$key] == 3) $mod = 3;
$query =
mysql_query("INSERT INTO
".$table_prefix."users_to_categories (user_id,
category_id, moderate) values (".$id.",
".$key.", ".$mod.")");
}
}
// clean out current user to
groups table of user
$query =
mysql_query("DELETE from
".$table_prefix."users_to_groups where
user_id = ".$id);
//now add back the ones the
user has access to
if ($_POST["group"]) {
while (list($key) =
each($_POST["group"])) {
$mod =
$_POST["gpost"][$key] == 2 ? 2 : 1;
if
($_POST["gmoderate"][$key] == 3) $mod = 3;
$query =
mysql_query("INSERT INTO
".$table_prefix."users_to_groups (user_id,
group_id, moderate) values (".$id.", ".$key.",
".$mod.")");
}
}
$msg .=
$lang["user_updated"];
}
mysql_close($link);
header("Location:
user_profile.php?msg=".$msg."&id=".$id."&".
$common_get);
}
function addProfile() {
global $table_prefix, $edit, $link,
$common_get, $lang;
if(get_magic_quotes_gpc()) {
$email =
mysql_real_escape_string(stripslashes($_POS
T["email"]));
$new_password =
mysql_real_escape_string(stripslashes($_POS
T["new_password"]));
} else {
$email =
mysql_real_escape_string($_POST["email"]);
$new_password =
mysql_real_escape_string($_POST["new_pass
word"]);
}
if (!$edit) {
$msg =
$lang["not_authorized_add_users"];
} else {
if ((!$new_password) ||
(!$email)) {
$msg =
$lang["username_password_required"];
} else {
$query =
mysql_query("SELECT email from
".$table_prefix."users where email =
'".$email."'");
if
(mysql_num_rows($query) > 0) {
$msg =
$lang["email_exists"];
} else {
$password
= md5($new_password);
$query =
mysql_query("INSERT INTO
".$table_prefix."users (email, password) values
('".$email."', '".$password."')");
if (!$query)
$msg .=
$lang["database_error_user_not_updated"];
$id =
mysql_insert_id();
$view =
$_POST["view"] ? 1 : 0;
$post =
$_POST["post"] ? 1 : 0;
$add_users
= $_POST["add_users"] ? 1 : 0;
$add_categories =
$_POST["add_categories"] ? 1 : 0;
$add_groups =
$_POST["add_groups"] ? 1 : 0;
$query =
mysql_query("UPDATE ".$table_prefix."users
set add_users = ".$add_users.", add_categories
= ".$add_categories.", view = ".$view.", post =
".$post.", add_groups = ".$add_groups."
WHERE user_id =".$id);
if (!$query)
$msg .=
$lang["database_error_user_not_updated"];
//now add
back the ones the user has access to
if
($_POST["category"]) {
while (list($key) =
each($_POST["category"])) {
$mod = 0;
if ($_POST["cmoderate"][$key])
$mod = 3;
elseif ($_POST["cpost"][$key]) $mod
= 2;
else $mod = 1;
$query = mysql_query("INSERT
INTO ".$table_prefix."users_to_categories
(user_id, category_id, moderate) values
(".$id.", ".$key.", ".$mod.")");
}
}
if
($_POST["group"]) {
while (list($key) =
each($_POST["group"])) {
$sub = 0;
$mod = 0;
if ($_POST["gmoderate"][$key])
$mod = 3;
elseif ($_POST["gpost"][$key]) $mod
= 2;
else $mod = 1;
$query = mysql_query("INSERT
INTO ".$table_prefix."users_to_groups
(user_id, group_id, moderate) values (".$id.",
".$key.", ".$mod.")");
}
}
}
}
}
if (!$msg) $msg =
$lang["user_updated"];
mysql_close($link);
header("Location:
edit_users.php?msg=".$msg."&".$common_ge
t);
}
function addCategory() {
global $table_prefix, $link,
$edit_categories, $common_get;
if (!$edit_categories) {
$msg =
$lang["not_authorized_edit_categories"];
} else {
if(get_magic_quotes_gpc())
{
$name =
mysql_real_escape_string(stripslashes($_POS
T["name"]));
$sub_of =
mysql_real_escape_string(stripslashes($_POS
T["sub_of"]));
$sequence =
mysql_real_escape_string(stripslashes($_POS
T["sequence"]));
$description =
mysql_real_escape_string(stripslashes($_POS
T["description"]));
$color =
mysql_real_escape_string(stripslashes($_POS
T["color"]));
$background =
mysql_real_escape_string(stripslashes($_POS
T["background"]));
} else {
$name =
mysql_real_escape_string($_POST["name"]);
$sub_of =
mysql_real_escape_string($_POST["sub_of"]);
$sequence =
mysql_real_escape_string($_POST["sequence"
]);
$description =
mysql_real_escape_string($_POST["descriptio
n"]);
$color =
mysql_real_escape_string($_POST["color"]);
$background =
mysql_real_escape_string($_POST["backgrou
nd"]);
}
$q = "INSERT INTO
".$table_prefix."categories (name, sub_of,
sequence, description, color, background)
values ('".$name."', '".$sub_of."',
'".$sequence."', '".$description."', '".$color."',
'".$background."')";
$query = mysql_query($q);
if (!$query) $msg =
$lang["database_error_category_not_updated"]
;
else $msg =
$lang["cateogory_added"];
}
mysql_close($link);
header("Location:
edit_categories.php?msg=".$msg."&".$commo
n_get);
}
function editCategory($id) {
global $table_prefix, $link,
$edit_categories, $common_get, $lang;
if (!$edit_categories) {
$msg =
$lang["not_authorized_edit_categories"];
} else {
if(get_magic_quotes_gpc())
{
$name =
mysql_real_escape_string(stripslashes($_POS
T["name"]));
$sub_of =
mysql_real_escape_string(stripslashes($_POS
T["sub_of"]));
$sequence =
mysql_real_escape_string(stripslashes($_POS
T["sequence"]));
$description =
mysql_real_escape_string(stripslashes($_POS
T["description"]));
$color =
mysql_real_escape_string(stripslashes($_POS
T["color"]));
$background =
mysql_real_escape_string(stripslashes($_POS
T["background"]));
} else {
$name =
mysql_real_escape_string($_POST["name"]);
$sub_of =
mysql_real_escape_string($_POST["sub_of"]);
$sequence =
mysql_real_escape_string($_POST["sequence"
]);
$description =
mysql_real_escape_string($_POST["descriptio
n"]);
$color =
mysql_real_escape_string($_POST["color"]);
$background =
mysql_real_escape_string($_POST["backgrou
nd"]);
}
$query =
mysql_query("UPDATE
".$table_prefix."categories set name =
'".$name."', sub_of = '".$sub_of."', sequence =
'".$sequence."', description = '".$description."',
color = '".$color."', background =
'".$background."' where category_id =".$id);
if (!$query) $msg =
$lang["database_error_category_not_updated"]
;
else $msg =
$lang["category_updated"];
}
mysql_close($link);
header("Location:
edit_categories.php?msg=".$msg."&".$commo
n_get);
}
function deleteCategory($id) {
global $table_prefix, $link,
$edit_categories, $common_get, $lang;
if (!$edit_categories) {
$msg =
$lang["not_authorized_edit_categories"];
} else {
if(get_magic_quotes_gpc())
{
$sub_of =
mysql_real_escape_string(stripslashes($_POS
T["sub_of"]));
} else {
$sub_of =
mysql_real_escape_string($_POST["sub_of"]);
}
$query =
mysql_query("UPDATE
".$table_prefix."categories set sub_of =
'".$sub_of."' where sub_of =".$id);
if (!$query) $msg =
$lang["database_error_dependant_categories_n
ot_updated"];
$query =
mysql_query("UPDATE
".$table_prefix."events set category_id =
'".$sub_of."' where category_id =".$id);
if (!$query) $msg .=
$lang["database_error_dependant_events_not_
updated"] ;
$query =
mysql_query("UPDATE ".$table_prefix."links
set category_id = '".$sub_of."' where
category_id =".$id);
if (!$query) $msg .=
$lang["database_error_dependant_events_not_
updated"] ;
$query =
mysql_query("DELETE from
".$table_prefix."users_to_categories where
category_id = ".$id);
if (!$query) $msg .=
$lang["database_error_user_table_not_updated
"];
$query =
mysql_query("DELETE from
".$table_prefix."categories where category_id
= ".$id);
if (!$query) $msg .=
$lang["database_error_category_not_deleted"];
if (!$msg) $msg =
$lang["category_deleted"];
}
mysql_close($link);
header("Location:
edit_categories.php?msg=".$msg."&".$commo
n_get);
}
function addGroup() {
global $table_prefix, $link,
$edit_groups, $common_get;
if (!$edit_groups) {
$msg =
$lang["not_authorized_edit_groups"];
} else {
if(get_magic_quotes_gpc())
{
$name =
mysql_real_escape_string(stripslashes($_POS
T["name"]));
$sub_of =
mysql_real_escape_string(stripslashes($_POS
T["sub_of"]));
$sequence =
mysql_real_escape_string(stripslashes($_POS
T["sequence"]));
} else {
$name =
mysql_real_escape_string($_POST["name"]);
$sub_of =
mysql_real_escape_string($_POST["sub_of"]);
$sequence =
mysql_real_escape_string($_POST["sequence"
]);
}
$q = "INSERT INTO
".$table_prefix."groups (name, sub_of,
sequence) values ('".$name."', '".$sub_of."',
'".$sequence."')";
$query = mysql_query($q);
if (!$query) $msg =
$lang["database_error_group_not_updated"];
else $msg =
$lang["group_added"];
}
mysql_close($link);
header("Location:
edit_groups.php?msg=".$msg."&".$common_
get);
}
function editGroup($id) {
global $table_prefix, $link,
$edit_groups, $common_get, $lang;
if (!$edit_groups) {
$msg =
$lang["not_authorized_edit_groups"];
} else {
if(get_magic_quotes_gpc())
{
$name =
mysql_real_escape_string(stripslashes($_POS
T["name"]));
$sub_of =
mysql_real_escape_string(stripslashes($_POS
T["sub_of"]));
$sequence =
mysql_real_escape_string(stripslashes($_POS
T["sequence"]));
} else {
$name =
mysql_real_escape_string($_POST["name"]);
$sub_of =
mysql_real_escape_string($_POST["sub_of"]);
$sequence =
mysql_real_escape_string($_POST["sequence"
]);
}
$query =
mysql_query("UPDATE
".$table_prefix."groups set name = '".$name."',
sub_of = '".$sub_of."', sequence =
'".$sequence."' where group_id =".$id);
if (!$query) $msg =
$lang["database_error_category_not_updated"]
;
else $msg =
$lang["group_updated"];
}
mysql_close($link);
header("Location:
edit_groups.php?msg=".$msg."&".$common_
get);
}
function deleteGroup($id) {
global $table_prefix, $link,
$edit_groups, $common_get, $lang;
if (!$edit_groups) {
$msg =
$lang["not_authorized_edit_groups"];
} else {
if(get_magic_quotes_gpc())
{
$sub_of =
mysql_real_escape_string(stripslashes($_POS
T["sub_of"]));
} else {
$sub_of =
mysql_real_escape_string($_POST["sub_of"]);
}
$query =
mysql_query("UPDATE
".$table_prefix."groups set sub_of =
'".$sub_of."' where sub_of =".$id);
if (!$query) $msg =
$lang["database_error_dependant_groups_not_
updated"];
$query =
mysql_query("UPDATE
".$table_prefix."events set group_id =
'".$sub_of."' where group_id =".$id);
if (!$query) $msg .=
$lang["database_error_dependant_events_not_
updated"] ;
$query =
mysql_query("DELETE from
".$table_prefix."users_to_groups where
group_id = ".$id);
if (!$query) $msg .=
$lang["database_error_user_table_not_updated
"];
$query =
mysql_query("DELETE from
".$table_prefix."groups where group_id =
".$id);
if (!$query) $msg .=
$lang["database_error_group_not_deleted"];
if (!$msg) $msg =
$lang["group_deleted"];
}
mysql_close($link);
header("Location:
edit_groups.php?msg=".$msg."&".$common_
get);
}
function addLink() {
global $table_prefix, $link,
$common_get, $lang, $edit_categories;
if (!$edit_categories) {
$msg =
$lang["not_authorized_edit_links"];
} else {
if(get_magic_quotes_gpc())
{
$name =
mysql_real_escape_string(stripslashes($_POS
T["name"]));
$address =
mysql_real_escape_string(stripslashes($_POS
T["address"]));
$city =
mysql_real_escape_string(stripslashes($_POS
T["city"]));
$gender =
mysql_real_escape_string(stripslashes($_POS
T["gender"]));
$state =
mysql_real_escape_string(stripslashes($_POS
T["state"]));
$phone =
mysql_real_escape_string(stripslashes($_POS
T["phone"]));
$email =
mysql_real_escape_string(stripslashes($_POS
T["email"]));
$group_id =
mysql_real_escape_string(stripslashes($_POS
T["group_id"]));
$group_id_child =
mysql_real_escape_string(stripslashes($_POS
T["group_id_child"]));
$category_id =
mysql_real_escape_string(stripslashes($_POS
T["category_id"]));
$description =
mysql_real_escape_string(stripslashes($_POS
T["description"]));
} else {
$name =
mysql_real_escape_string($_POST["name"]);
$address =
mysql_real_escape_string($_POST["address"])
;
$city =
mysql_real_escape_string($_POST["city"]);
$gender =
mysql_real_escape_string($_POST["gender"]);
$state =
mysql_real_escape_string($_POST["state"]);
$phone =
mysql_real_escape_string($_POST["phone"]);
$email =
mysql_real_escape_string($_POST["email"]);
$group_id =
mysql_real_escape_string($_POST["group_id"
]);
$group_id_child =
mysql_real_escape_string($_POST["group_id_
child"]);
$caegory_id =
mysql_real_escape_string($_POST["category_
id"]);
$description =
mysql_real_escape_string($_POST["descriptio
n"]);
}
$query =
mysql_query("INSERT INTO
".$table_prefix."links (name, address, city,
gender, state, phone, email, group_id,
group_id_child, category_id, description)
values ('".$name."', '".$address."', '".$city."',
'".$gender."', '".$state."', '".$phone."',
'".$email."', '".$group_id."',
'".$group_id_child."', '".$category_id."',
'".$description."')");
if (!$query) $msg =
$lang["database_error_link_not_added"];
else $msg =
$lang["link_added"];
mysql_close($link);
}
header("Location:
edit_links.php?msg=".$msg."&".$common_get
);
}
function editLink($id) {
global $table_prefix, $link,
$common_get, $lang, $edit_categories;
if (!$edit_categories) {
$msg =
$lang["not_authorized_edit_links"];
} else {
if(get_magic_quotes_gpc())
{
$name =
mysql_real_escape_string(stripslashes($_POS
T["name"]));
$address =
mysql_real_escape_string(stripslashes($_POS
T["address"]));
$city =
mysql_real_escape_string(stripslashes($_POS
T["city"]));
$gender =
mysql_real_escape_string(stripslashes($_POS
T["gender"]));
$state =
mysql_real_escape_string(stripslashes($_POS
T["state"]));
$phone =
mysql_real_escape_string(stripslashes($_POS
T["phone"]));
$email =
mysql_real_escape_string(stripslashes($_POS
T["email"]));
$group_id =
mysql_real_escape_string(stripslashes($_POS
T["group_id"]));
$group_id_child =
mysql_real_escape_string(stripslashes($_POS
T["group_id_child"]));
$category_id =
mysql_real_escape_string(stripslashes($_POS
T["category_id"]));
$description =
mysql_real_escape_string(stripslashes($_POS
T["description"]));
} else {
$name =
mysql_real_escape_string($_POST["name"]);
$address =
mysql_real_escape_string($_POST["address"])
;
$city =
mysql_real_escape_string($_POST["city"]);
$gender =
mysql_real_escape_string($_POST["gender"]);
$state =
mysql_real_escape_string($_POST["state"]);
$phone =
mysql_real_escape_string($_POST["phone"]);
$email =
mysql_real_escape_string($_POST["email"]);
$group_id =
mysql_real_escape_string($_POST["group_id"
]);
$group_id_child =
mysql_real_escape_string($_POST["group_id_
child"]);
$category_id =
mysql_real_escape_string($_POST["category_
id"]);
$description =
mysql_real_escape_string($_POST["descriptio
n"]);
}
$q = "UPDATE
".$table_prefix."links set name = '".$name."',
address = '".$address."', city = '".$city."',
gender = '".$gender."', state = '".$state."', phone
= '".$phone."', email = '".$email."', group_id
='".$group_id."', group_id_child
='".$group_id_child."', category_id
='".$category_id."', description
='".$description."' where link_id =".$id;
$query = mysql_query($q);
if (!$query) $msg =
$lang["database_error_link_not_updated"];
else $msg =
$lang["link_updated"];
mysql_close($link);
}
header("Location:
edit_links.php?msg=".$msg."&".$common_get
);
}
function deleteLink($id) {
global $table_prefix, $link,
$common_get, $lang, $edit_categories;
if (!$edit_categories) {
$msg =
$lang["not_authorized_edit_links"];
} else {
$query =
mysql_query("DELETE from
".$table_prefix."send where venue_id = ".$id);
if (!$query) $msg .=
$lang["database_error_dependant_send_not_u
pdated"];
$query =
mysql_query("DELETE from
".$table_prefix."links where link_id = ".$id);
if (!$query) $msg .=
$lang["database_error_link_not_deleted"];
if (!$msg) $msg =
$lang["link_deleted"];
mysql_close($link);
}
header("Location:
edit_links.php?msg=".$msg."&".$common_get
);
}
function deleteUser($id) {
global $table_prefix, $link,
$common_get, $lang, $edit;
if (!$edit) {
$msg =
$lang["not_authorized_add_users"];
} else {
$sub_of =
addslashes($_POST["sub_of"]);
$query =
mysql_query("DELETE from
".$table_prefix."users_to_categories where
user_id = ".$id);
if (!$query) $msg .=
$lang["database_error_user_table_not_updated
"];
$query =
mysql_query("DELETE from
".$table_prefix."users where user_id = ".$id);
if (!$query) $msg .=
$lang["database_error_user_not_deleted"];
if (!$msg) $msg =
$lang["user_deleted"];
}
mysql_close($link);
header("Location:
edit_users.php?msg=".$msg."&".$common_ge
t);
}
function deleteEvent($id) {
global $table_prefix, $edit_categories,
$link, $common_get, $lang, $c;
if ($edit_categories) {
$edit = true;
} elseif ($row["user_id"] ==
$_SESSION["user_id"]) {
$edit = true;
} else {
$q = "select moderate from
".$table_prefix."users_to_categories where
category_id = ".$c." and user_id =
".$_SESSION["user_id"];
$mod =
mysql_result(mysql_query($q),0,0);
if ($mod >= 2) {
$edit = true;
}
}
if ($edit == true) {
$query =
mysql_query("DELETE from
".$table_prefix."dates where event_id = ".$id);
if (!$query) $msg .=
$lang["database_error_dates_not_updated"];
$query =
mysql_query("DELETE from
".$table_prefix."events where event_id =
".$id);
if (!$query) $msg .=
$lang["database_error_event_not_deleted"];
$query =
mysql_query("DELETE from
".$table_prefix."send where event_id = ".$id);
if (!$query) $msg .=
$lang["database_error_send_table_not_deleted
"];
$query =
mysql_query("DELETE from
".$table_prefix."outbox where CreatorID =
".$id);
if (!$query) $msg .=
$lang["database_error_outbox_table_not_delet
ed"];
$query =
mysql_query("DELETE from
".$table_prefix."sentitems where CreatorID =
".$id);
if (!$query) $msg .=
$lang["database_error_sentitems_table_not_de
leted"];
} else {
$msg =
$lang["not_authorized_events_category"];
}
mysql_close($link);
header("Location:
index.php?msg=".$msg."&".$common_get);
}
function updateModules() {
global $table_prefix, $link, $edit,
$common_get, $lang;
if (!$edit) {
$msg =
$lang["not_authorized_add_users"];
} else {
while (list($key, $val) =
each($_POST["link_name"])) {
if(get_magic_quotes_gpc()) {
$key =
mysql_real_escape_string(stripslashes($key));
$val =
mysql_real_escape_string(stripslashes($val));
} else {
$key =
mysql_real_escape_string($key);
$val =
mysql_real_escape_string($val);
}
if
($_POST["delete"][$key]) {
$del =
mysql_query("delete from
".$table_prefix."modules where module_id =
".$key);
} else {
if(get_magic_quotes_gpc()) {
$active =
mysql_real_escape_string(stripslashes($_POS
T["active"][$key]));
$sequence =
mysql_real_escape_string(stripslashes($_POS
T["sequence"][$key]));
$year =
mysql_real_escape_string(stripslashes($_POS
T["year"][$key]));
$month =
mysql_real_escape_string(stripslashes($_POS
T["month"][$key]));
$week =
mysql_real_escape_string(stripslashes($_POS
T["week"][$key]));
$day =
mysql_real_escape_string(stripslashes($_POS
T["day"][$key]));
} else {
$active =
mysql_real_escape_string($_POST["active"][$
key]);
$sequence =
mysql_real_escape_string($_POST["sequence"
][$key]);
$year =
mysql_real_escape_string($_POST["year"][$k
ey]);
$month =
mysql_real_escape_string($_POST["month"][$
key]);
$week =
mysql_real_escape_string($_POST["week"][$
key]);
$day =
mysql_real_escape_string($_POST["day"][$ke
y]);
}
$update =
mysql_query("update ".$table_prefix."modules
set link_name = '".$val."', name =
'".$_POST["name"][$key]."', active =
'".$active."', sequence = '".$sequence."', year =
'".$year."', month = '".$month."', week =
'".$week."', day = '".$day."' where module_id
=".$key);
}
$msg =
$lang["modules_updated"];
}
}
mysql_close($link);
header("Location:
modules.php?msg=".$msg."&".$common_get)
;
}
function installModule($dir,$file) {
global $table_prefix, $link, $edit,
$common_get, $lang;
if (!$edit) {
$msg =
$lang["not_authorized_add_users"];
} else {
if ($file) {
$script =
file_get_contents($dir."/".$file);
$pa =
xml_parser_create();
xml_parse_into_struct($pa, $script,
$vals, $index);
xml_parser_free($pa);
while (list($k, $v) =
each($index)) {
$mod[$k]
= $vals[$index[$k][0]][value];
}
$query =
mysql_query("INSERT INTO
".$table_prefix."modules (link_name, name,
script)
values('".$mod["LINK_NAME"]."','".$mod["N
AME"]."','".$file."')");
} else {
$msg =
$lang["modules_updated"];
}
}
mysql_close($link);
header("Location:
modules.php?msg=".$msg."&".$common_get)
;
}
function approve($event_id) {
global $table_prefix, $lang,
$edit_groups, $link;
$q = "select group_id from
".$table_prefix."events where event_id =
".$event_id."";
$query = mysql_query($q);
if (!$query) echo "Database Error :
".$q;
else {
if ($row =
mysql_fetch_row($query)){
if (!$edit_groups) {
$q =
"select moderate from
".$table_prefix."users_to_groups where
group_id = ".$row[0]." and user_id =
".$_SESSION["user_id"]."";
$query =
mysql_query($q);
if
(mysql_num_rows($query) > 0) {
$mod = mysql_result($query,0,0);
if
($mod > 2) $moderate = true;
} else {
$moderate = false;
}
}
else {
$moderate
= true;
}
if ($moderate) {
//------------
------------------------------------
$q =
"SELECT ".$table_prefix."events.event_id,
".$table_prefix."send.event_id,
".$table_prefix."events.category_id,
".$table_prefix."links.category_id,
".$table_prefix."send.start_send,
".$table_prefix."send.end_send,
".$table_prefix."events.description,
".$table_prefix."links.phone from
".$table_prefix."events, ".$table_prefix."send,
".$table_prefix."links where
".$table_prefix."events.event_id =
".$table_prefix."send.event_id AND
".$table_prefix."events.category_id =
".$table_prefix."links.category_id AND
".$table_prefix."send.event_id =
'".$_REQUEST["id"]."' GROUP BY
start_send";
$query =
mysql_query($q);
if (!$query)
{
$msg = "Database Error: $q";
}
else {
$row = mysql_fetch_row($query);
$qi = mysql_query("INSERT INTO
".$table_prefix."outbox (CreatorID,
SendingDateTime, SendingTimeOut,
DestinationNumber, coding, TextDecoded)
values ('".$row[0]."', '".$row[4]."',
'".$row[5]."', '".$row[7]."',
'Default_No_Compression', '".$row[6]."')");
if
(!$qi) $msg = "Database Error: $qi";
}
//---------------------------------
---------------
$sq =
"update ".$table_prefix."events set status_id =
4, quick_approve = NULL where event_id =
'".$event_id."'";
$sq2 =
"update ".$table_prefix."send set accept_send
= 1 where event_id = '".$event_id."'";
$squery =
mysql_query($sq);
$squery2 =
mysql_query($sq2);
if
($squery) {
$msg = $lang["event_updated"];
}
else {
$msg = "Database Error: $sq";
$msg = "Database Error: $sq2";
}
} else {
$msg =
$lang["not_authorized_approve"];
}
header("Location:
index.php?msg=".$msg."&".$common_get);
}
}
}
if (!$_SESSION["user_id"]) {
mysql_close($link);
header("Location: login.php");
} else {
$query = mysql_query("SELECT
add_users, add_categories, add_groups, post
from ".$table_prefix."users where user_id =
".$_SESSION["user_id"]." limit 1");
$row = mysql_fetch_row($query);
if ($row[2] == 1) {
$edit_groups = true;
}
if ($row[1] == 1) {
$edit_categories = true;
}
if ($row[3] == 1) {
$post = true;
}
if ($row[0] == 1) {
$edit = true;
}
if (($id !=
$_SESSION["user_id"])&& !$post && !$edit
&& !$edit_categories && !$edit_groups){
mysql_close($link);
$msg =
$lang["not_authorized"];
header("Location:
index.php?msg=".$msg."&id=".$id."&".$com
mon_get);
}
switch ($_REQUEST["mode"]) {
case $lang["update_profile"];
updateProfile($id);
break;
case $lang["add_category"];
addCategory();
break;
case $lang["edit_category"];
editCategory($id);
break;
case $lang["delete_category"];
deleteCategory($id);
break;
case $lang["add_group"];
addGroup();
break;
case $lang["edit_group"];
editGroup($id);
break;
case $lang["delete_group"];
deleteGroup($id);
break;
case $lang["add_link"];
addLink();
break;
case $lang["edit_link"];
editLink($id);
break;
case $lang["delete_link"];
deleteLink($id);
break;
case $lang["delete_user"];
deleteUser($id);
break;
case $lang["delete_event"];
deleteEvent($id);
break;
case $lang["add_profile"];
addProfile();
break;
case $lang["update modules"];
updateModules();
break;
case "approve";
approve($id);
break;
case "install_module";
installModule($dir,$file);
break;
default;
header("Location:
index.php");
break;
}
mysql_close($link);
}
?>
start.php
<?
if (!file_exists("config.php"))
header("Location: install.php");
error_reporting(E_ALL & ~E_NOTICE );
include "config.php";
include "includes/session_start.php";
include $language;
$msg = $_REQUEST["msg"];
if (!$_SESSION['user_id'])
$_SESSION['user_id'] = 1;
// establish database connection
$link = mysql_connect ($h, $u, $p) or die
("Could not connect to database, try again
later");
mysql_select_db($d,$link);
// this area to set superpermission levels
$query = mysql_query("SELECT view, post,
add_categories, add_groups, add_users, email
from ".$table_prefix."users where user_id =
".$_SESSION["user_id"]." limit 1");
$row = mysql_fetch_row($query);
$supergroup = false;
$supercategory = false;
$email = $row[5];
if ($row[4]) $supergroup = true;
if ($row[4]) $supercategory = true;
if ($row[4]) $superpost = true;
if ($row[4]) $superview = true;
if ($row[3]) $supergroup = true;
if ($row[3]) $superpost = true;
if ($row[3]) $superview = true;
if ($row[2]) $supercategory = true;
if ($row[2]) $superpost = true;
if ($row[2]) $superview = true;
if ($row[1]) $superpost = true;
if ($row[1]) $superview = true;
if ($row[0]) $superview = true;
if (!$calendar_title) $calendar_title = "SMS
Reminder";
if ((is_numeric($_REQUEST["m"]))&&
($_REQUEST["m"]!= 0)) {
$_SESSION["m"] =
$_REQUEST["m"];
$m = $_REQUEST["m"];
} elseif ($_SESSION["m"]) {
$m = $_SESSION["m"];
} else {
$m = date(m);
}
if (strlen($m) == 1) $m = "0".$m;
if ((is_numeric($_REQUEST["a"]))&&
($_REQUEST["a"]!= 0)) {
$_SESSION["a"] =
$_REQUEST["a"];
$a = $_REQUEST["a"];
} elseif ($_SESSION["a"]) {
$a = $_SESSION["a"];
} else {
$a = date(d);
}
if (strlen($a) == 1) $a = "0".$a;
if ((is_numeric($_REQUEST["y"]))&&
($_REQUEST["y"]!= 0)) {
$_SESSION["y"] =
$_REQUEST["y"];
$y = $_REQUEST["y"];
} elseif ($_SESSION["y"]) {
$y = $_SESSION["y"];
} else {
$y = date(Y);
}
if ($_POST["godate"]) {
if (ereg ("([0-9]{1,2})[\/-]+([0-
9]{1,2})[\/-]+([0-
9]{4})",$_POST["godate"],$dater)) {
$_SESSION["m"] =
$dater[1];
$_SESSION["a"] =
$dater[2];
$_SESSION["y"] =
$dater[3];
$m = $dater[1];
$a = $dater[2];
$y = $dater[3];
}
}
$day_of_week = date("w", mktime( 0, 0, 0,
$m, $a, $y ) );
$wa = $a-$day_of_week;
for($wacount=0;$wacount < 7;$wacount++) {
$now["week"]["a"][$wacount] = date(
"d", mktime( 0, 0, 0, $m, $wa+$wacount, $y )
);
$now["week"]["m"][$wacount] =
date( "m", mktime( 0, 0, 0, $m,
$wa+$wacount, $y ) );
$now["week"]["y"][$wacount] = date(
"Y", mktime( 0, 0, 0, $m, $wa+$wacount, $y )
);
}
$next["week"]["a"] = date( "d", mktime( 0, 0,
0, $m, $wa+7, $y ) );
$next["week"]["m"] = date( "m", mktime( 0, 0,
0, $m, $wa+7, $y ) );
$next["week"]["y"] = date( "Y", mktime( 0, 0,
0, $m, $wa+7, $y ) );
$prev["week"]["a"] = date( "d", mktime( 0, 0,
0, $m, $wa-7, $y ) );
$prev["week"]["m"] = date( "m", mktime( 0, 0,
0, $m, $wa-7, $y ) );
$prev["week"]["y"] = date( "Y", mktime( 0, 0,
0, $m, $wa-7, $y ) );
$next["day"]["a"] = date( "d", mktime( 0, 0, 0,
$m, $a+1, $y ) );
$next["day"]["m"] = date( "m", mktime( 0, 0,
0, $m, $a+1, $y ) );
$next["day"]["y"] = date( "Y", mktime( 0, 0, 0,
$m, $a+1, $y ) );
$next["month"]["m"] = date( "m", mktime( 0,
0, 0, $m+1, 1, $y ) );
$next["month"]["y"] = date( "Y", mktime( 0, 0,
0, $m+1, 1, $y ) );
$next["year"]["y"] = date( "Y", mktime( 0, 0,
0, 1, 1, $y+1 ) );
$prev["day"]["a"] = date( "d", mktime( 0, 0, 0,
$m, $a-1, $y ) );
$prev["day"]["m"] = date( "m", mktime( 0, 0,
0, $m, $a-1, $y ) );
$prev["day"]["y"] = date( "Y", mktime( 0, 0, 0,
$m, $a-1, $y ) );
$prev["month"]["m"] = date( "m", mktime( 0,
0, 0, $m-1, 1, $y ) );
$prev["month"]["y"] = date( "Y", mktime( 0, 0,
0, $m-1, 1, $y ) );
$prev["year"]["y"] = date( "Y", mktime( 0, 0,
0, 1, 1, $y-1 ) );
if ((is_numeric($_REQUEST["c"]))&&
($_REQUEST["c"]!= 0)) {
$_SESSION["c"] =
$_REQUEST["c"];
$c = $_REQUEST["c"];
} elseif ($_SESSION["c"]) {
$c = $_SESSION["c"];
} else {
$c = 1;
}
if ((is_numeric($_REQUEST["w"]))&&
($_REQUEST["w"]!= 0)) {
$_SESSION["w"] =
$_REQUEST["w"];
$w = $_REQUEST["w"];
} elseif ($_SESSION["w"]) {
$w = $_SESSION["w"];
} else {
$w = 1;
}
if ((is_numeric($_REQUEST["o"]))&&
($_REQUEST["o"]!= 0)) {
$_SESSION["o"] =
$_REQUEST["o"];
$o = $_REQUEST["o"];
} elseif ($_SESSION["o"]) {
$o = $_SESSION["o"];
} elseif ($default_module) {
$o = $default_module;
} else {
$o =
mysql_result(mysql_query("SELECT
module_id from ".$table_prefix."modules
where active = 1 order by sequence limit
1"),0,0);
}
if (!$o) {
$msg .= "<p
class=\"warning\">".$lang["no_modules_instal
led"]."</p>\n";
} else {
$q = "SELECT * from
".$table_prefix."modules where module_id =
".$o;
$query = mysql_query($q);
if (!$query) $msg = "Database Error :
".$q;
else {
$row =
mysql_fetch_array($query);
if (!$page_title) $page_title =
$row["name"];
$script = $row["script"];
$ly = $row["year"];
$lm = $row["month"];
$la = $row["day"];
$le = $row["week"];
}
}
$common_get =
"o=".$o."&c=".$c."&m=".$m."&a=".$a."&y="
.$y."&w=".$w;
?>
day_weak_function.php
<?
function showGrid($date) {
global $title, $niceday, $start_time,
$end_time, $venue, $city, $state, $cat, $color,
$background, $ed, $usr, $o, $c, $m, $a, $y, $w,
$lang,$scale,$ap,$status,$send,$day_week_star
t_hour, $day_week_end_hour;
$threshold_hour =
$day_week_start_hour ?
$day_week_start_hour : 0;
$threshold_min =
$day_week_start_hour ? 0 : 30;
$txi = ($threshold_hour * 60) +
$threshold_min;
if ($start_time[$date]) {
ksort($start_time[$date]);
$scale = 1;
$wait = 1;
while (list($t) =
each($start_time[$date])) {
//filter string
$value,$parse_start_time
while
(list($id,$value) =
each($start_time[$date][$t])) {
if (eregi
("([0-9]{1,2}):([0-9]{2})[
]?([a|p]m)",$value,$parse_start_time)) {
if
((eregi("am",$parse_start_time[3])) &&
($parse_start_time[1] == 12))
$parse_start_time[1] = $parse_start_time[1] -
12;
if
((eregi("pm",$parse_start_time[3])) &&
($parse_start_time[1] < 12))
$parse_start_time[1] = $parse_start_time[1] +
12;
if
(strlen($parse_start_time[1]) == 1)
$parse_start_time[1] =
"0".$parse_start_time[1];
if
($end_time[$date][$t][$id]) {
eregi ("([0-9]{1,2}):([0-9]{2})[
]?([a|p]m)",$end_time[$date][$t][$id],$parse_e
nd_time);
if ((eregi("am",$parse_end_time[3]))
&& ($parse_end_time[1] == 12))
$parse_end_time[1] = $parse_end_time[1] -
12;
if ((eregi("pm",$parse_end_time[3]))
&& ($parse_end_time[1] < 12))
$parse_end_time[1] = $parse_end_time[1] +
12;
if (strlen($parse_end_time[1]) == 1)
$parse_end_time[1] = "0".$parse_end_time[1];
}
else {
$parse_end_time[1] =
$parse_start_time[1] + 1;
if ($parse_end_time[1] > 24)
$parse_end_time[1] = 24;
if ($parse_end_time[1] == 24)
$parse_end_time[2] = "00";
}
}
elseif($value == "All Day") {
$parse_start_time[1] = "00";
$parse_start_time[2] = "00";
$parse_end_time[1] = "24";
$parse_end_time[2] = "00";
}
elseif($value == "TBA") {
$parse_start_time[1] = "00";
$parse_start_time[2] = "00";
$parse_end_time[1] = "00";
$parse_end_time[2] = "30";
}
$event_id[]
= $id;
$sxi =
($parse_start_time[1] * 60) +
$parse_start_time[2];
$exi =
($parse_end_time[1] * 60) +
$parse_end_time[2];
if ($sxi <
$txi) {
$sxi = 0;
if
($exi <= $txi) {
$exi = 30;
}
else {
$exi = $exi - $txi + 30;
}
}
else {
$sxi = $sxi - $txi + 30;
$exi = $exi - $txi + 30;
}
$sh[] =
$exi - $sxi - 2;
$sx[] =
$sxi;
$ex[] =
$exi;
$len = $exi
- $sxi;
$sta[] =
$value;
$end[] =
$end_time[$date][$t][$id];
}
}
arsort($sh);
$start_empty[0][0] = 0;
$end_empty[0][0] = 1440;
$indent = 0;
while (list($k,$v) =
each($sh)) {
$found = false;
reset($start_empty);
while (list($r) =
each($start_empty)) {
reset($start_empty[$r]);
while
(list($kk,$vv) = each($start_empty[$r])) {
if
(($sx[$k] >= $vv) && ($ex[$k] <=
$end_empty[$r][$kk])) {
$end_empty[$r][] =
$end_empty[$r][$kk];
$end_empty[$r][$kk] = $sx[$k];
$start_empty[$r][] = $ex[$k];
$start_fill[$r][] = $sx[$k];
$end_fill[$r][] = $ex[$k];
$start_event[$r][] = $event_id[$k];
$sta_e[$r][] = $sta[$k];
$end_e[$r][] = $end[$k];
$event_length[$r][] = $v;
$found = true;
break 2;
}
}
}
if (!$found) {
$indent++;
$start_empty[$indent][0] = 0;
$end_empty[$indent][0] = $sx[$k];
$start_empty[$indent][1] = $ex[$k];
$end_empty[$indent][1] = 1440;
$start_fill[$indent][0] = $sx[$k];
$end_fill[$indent][0] = $ex[$k];
$start_event[$indent][0] =
$event_id[$k];
$event_length[$indent][0] = $v;
$sta_e[$indent][0] = $sta[$k];
$end_e[$indent][0] = $end[$k];
}
}
$columns = $indent+1;;
$per = 100 / $columns;
$wide =
number_format($per,0);
$notsowide = $wide-1;
reset($start_fill);
while (list($r) =
each($start_fill)) {
while (list($k,$v) =
each($start_fill[$r])) {
$v =
$v+30;
$left =
$wide * $r;
// wrap fix
from Vepr
echo "<div
class=\"wrap\"><div class=\"date\" style=\"";
echo
"height: ".$event_length[$r][$k]."px; top:
".$v."px; width: ".$notsowide."%;
left:".$left."%;";
//background category propose
if
($color[$start_event[$r][$k]]) echo "color:
".$color[$start_event[$r][$k]]."; background:
".$background[$start_event[$r][$k]].";";
//tampilan
border propose
if
(($status[$start_event[$r][$k]] == 2) ||
($status[$start_event[$r][$k]] == 3))
echo "
filter:alpha(opacity=80); opacity:.80; -moz-
opacity:.80; zoom: 1; border: 1px dashed
".$color[$start_event[$r][$k]].";";
echo "\">
<div
class=\"inner\">";
echo "<div
class=\"title\"><a
href=\"show_event.php?id=".$start_event[$r][$
k]."&o=".$o."&c=".$c."&m=".$m."&a=".$a."
&y=".$y."&w=".$w."\"
onClick=\"openPic('show_event.php?id=".$sta
rt_event[$r][$k].$status2[$start_event[$r][$k]].
"&size=small','pop','600','400');
window.newWindow.focus(); return false\"";
//background category
if
($color[$start_event[$r][$k]])
echo "
style=\"color: ".$color[$start_event[$r][$k]].";
background:
".$background[$start_event[$r][$k]].";\"";
echo
">".$title[$start_event[$r][$k]]."</a>
</div>\n";
echo
"<span class=\"time\">".$sta_e[$r][$k];
if
($end_e[$r][$k]) echo " - ".$end_e[$r][$k];
echo
"</span>\n";
//tampilan
border setelah approve
if
($ed[$start_event[$r][$k]]==true) {
echo
" &
nbsp; <span class=\"edit\">";
if
(($ap[$start_event[$r][$k]]==true) &&
(($status[$start_event[$r][$k]] == 2) ||
($status[$start_event[$r][$k]] == 3))) {
echo "<img src='./images/Insert
Record.gif' /> <a
href=\"admin_actions.php?id=".$start_event[$r
][$k]."&o=".$o."&c=".$c."&m=".$m."&a=".$a
."&y=".$y."&w=".$w."&mode=".approve."\">
".$lang["approve"]."</a>
";
}
if
(($ap[$start_event[$r][$k]]==true) &&
($send[$start_event[$r][$k]] == 1)) {
echo "<img src='./images/massage.gif'
/> <a
href=\"send.php?id=".$start_event[$r][$k]."&o
=".$o."&c=".$c."&m=".$m."&a=".$a."&y=".$
y."&w=".$w."\"
onClick=\"openPic('send.php?id=".$start_even
t[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["send massage to
member"]."</a>
";
}
elseif
(($ap[$start_event[$r][$k]]==true) &&
($send[$start_event[$r][$k]] == 6)) {
echo "<img
src='./images/massage.GIF' /> <a
href=\"send.php?id=".$start_event[$r][$k]."&o
=".$o."&c=".$c."&m=".$m."&a=".$a."&y=".$
y."&w=".$w."\"
onClick=\"openPic('view_link.php?id=".$start
_event[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["view_link"]."</a> &nb
sp; ";
}
echo "<img
src='./images/ctxwiz_cls.gif' /> <a
href=\"edit_event.php?id=".$start_event[$r][$k
]."&o=".$o."&c=".$c."&m=".$m."&a=".$a."&
y=".$y."&w=".$w."\"
onClick=\"openPic('edit_event.php?id=".$start
_event[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["edit"].
"</a> &n
bsp; <img src='./images/DELETE.gif'
/> <a
href=\"delete_event.php?id=".$start_event[$r][
$k]."&o=".$o."&c=".$c."&m=".$m."&a=".$a."
&y=".$y."&w=".$w."\">".$lang["delete"]."</a
></span>\n";
}
echo
"</div></div></div>\n";
}
}
}
}
function showHours() {
global $day_week_start_hour,
$day_week_end_hour;
// build day
echo "<td class=\"timex\"><table
class=\"day\"><tr><td width=\"100%\"><div
class=\"time_frame\">\n";
echo "<div
class=\"cell_top\">Time</div>\n";
echo "<div class=\"cell\">12:00 am
".$day_week_start_min."</div>\n";
$i = $day_week_start_hour ?
$day_week_start_hour : 0;
$j = $day_week_start_hour ? 0 : 30;
$max = $day_week_end_hour ?
$day_week_end_hour : 24;
while ($i < $max) {
if ($j < 10) {
$j = "0".$j;
}
if ($i == 0) {
$h = 12;
$ap = "am";
} elseif ($i == 12) {
$h = $i;
$ap = "pm";
} elseif ($i > 12) {
$h = $i - 12;
$ap = "pm";
} else {
$h = $i;
$ap = "am";
}
echo "<div
class=\"cell\">".$h.":".$j." ".$ap."</div>\n";
$j = $j+30;
if ($j >= 60) {
$j = "0";
$i++;
}
}
echo
"</div></td></tr></table></td>";
}
function showDay($dy,$dm,$da,$caption="")
{
global $la, $w, $c,
$day_week_start_hour, $day_week_end_hour;
// build day
echo "<div
class=\"single_day_frame\">";
echo "<div class=\"cell_top\">";
if($caption) echo $caption;
else {
echo '<a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$dm,'&a=',$da,'&y=',$dy,'">';
echo date('l, F j',
mktime(0,0,0,$dm,$da,$dy));
echo '</a>';
}
echo "</div>";
echo "<div class=\"cell\"
id=\"0:00:".$dm."/".$da."/".$dy."\"></div>\n";
$i = $day_week_start_hour ?
$day_week_start_hour : 0;
$j = $day_week_start_hour ? 0 : 30;
$max = $day_week_end_hour ?
$day_week_end_hour : 24;
while ($i < $max) {
if ($j < 10) {
$j = "0".$j;
if ($i < 10) $i = $i;
}
if ($i == 0) {
$h = 12;
$ap = "am";
} elseif ($i == 12) {
$h = $i;
$ap = "pm";
} elseif ($i > 12) {
$h = $i - 12;
$ap = "pm";
} else {
$h = $i;
$ap = "am";
}
if ($i < 10) $i = $i;
//echo "<div class=\"cell\"
id=\"".$i.":".$j."\">".$h.":".$j."
".$ap."</div>\n";
echo "<div class=\"cell\"
id=\"".$i.":".$j.":".$dm."/".$da."/".$dy."\"></di
v>\n";
$j = $j+30;
if ($j >= 60) {
$j = "0";
$i++;
}
}
$sdate = $dy.$dm.$da;
echo "<div id=\"dates\">\n";
showGrid($sdate);
echo "</div>";
echo "</div>";
}
if ($superpost) {
$javascript = '<script type="text/javascript">
function getElementsByClassName(oElm,
strTagName, strClassName){
var arrElements = (strTagName ==
"*" && oElm.all)? oElm.all :
oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
strClassName =
strClassName.replace(/-/g, "\-");
var oRegExp = new RegExp("(^|\s)" +
strClassName + "(\s|$)");
var oElement;
for(var i=0; i<arrElements.length;
i++){
oElement = arrElements[i];
if(oRegExp.test(oElement.className)
){
arrReturnElements.push(oElement);
}
}
return (arrReturnElements)
}
var start;
var end;
var flagged = Array();
window.onload = function () {
var x = getElementsByClassName(document,
"div", "cell")
for (var i=0;i<x.length;i++) {
//x[i].onmousedown = function ()
{this.style.backgroundColor="#cccccc"}
x[i].onmousedown = startup
x[i].onmouseout = flag
x[i].onmouseover = whatadrag
x[i].onmouseup = endup
//x[i].onmouseout = function ()
{this.style.backgroundColor="#ffffff"}
//x[i].onclick = function ()
{this.innerHTML = this.id}
//x[i].onclick = click
}
/*
var x = getElementsByClassName(document,
"div", "date")
for (var i=0;i<x.length;i++) {
x[i].onmouseout = contract
x[i].onmouseover = expand
}
function expand () {
this.oldheight = this.style.height
this.style.height ="auto"
this.style.zIndex = 2
}
function contract () {
this.style.height = this.oldheight
this.style.zIndex = 1
}
*/
}
function startup () {
start = this.id
end = this.id
this.style.backgroundColor="#cccccc"
}
function flag() {
var next = Math.abs(start - end)
var cur = Math.abs(start - this.id)
}
function whatadrag() {
if (start) {
this.style.backgroundColor="#cccccc"
var cur = Math.abs(start -
this.id)
var next = Math.abs(start -
end)
if (cur < next) {
document.getElementById(end).style.
backgroundColor="#ffffff";
}
end = this.id;
}
}
function getdatestring(i,j) {
var h
var ap
if (i == 0) {
h = 12;
ap = "am";
} else if (i == 12) {
h = i;
ap = "pm";
} else if (i > 12) {
h = i - 12;
ap = "pm";
} else {
h = i;
ap = "am";
}
if (j < 30) j = "00";
var stringy = h + ":" + j + " " + ap;
return(stringy);
}
function endup() {
end = this.id
if (start.substring(2,3) == ":") {
var i = start.substring(0,2)
var j = start.substring(3,5)
var ddate = start.substring(6)
} else {
var i = start.substring(0,1)
var j = start.substring(2,4)
var ddate = start.substring(5)
}
j = parseInt(j);
i = parseInt(i);
var sstart = getdatestring(i,j);
if (end.substring(2,3) == ":") {
var i = end.substring(0,2)
var j = end.substring(3,5)
} else {
var i = end.substring(0,1)
var j = end.substring(2,4)
}
j = parseInt(j);
i = parseInt(i);
j = j + 30;
if (j == 60) {
j = "00";
i++;
}
var eend = getdatestring(i,j);
var adfield =
"add_event.php?size=small&next_date=" +
ddate + "&next_start=" + sstart +
"&next_end=" + eend;
x=openPic(adfield,"pop","650","600")
x.focus();
start = null;
end = null;
flagged = Array()
var x =
getElementsByClassName(document, "div",
"cell")
for (var i=0;i<x.length;i++) {
x[i].style.backgroundColor="#ffffff"
//x[i].blur()
}
}
</script>';
}
?>
day.php
<?php
include "modules/day_week_functions.php";
include "includes/header.php";
?>
<?php
$thisday = $y."-".$m."-".$a;
$nextday = $next["day"]["y"]."-
".$next["day"]["m"]."-".$next["day"]["a"];
grab($thisday,$nextday,$c);
echo "<div class=\"frame\">\n";
echo '<div class="cal_top"><a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$prev["day"]["m"],'&a=',$prev["day"]
["a"],'&y=',$prev["day"]["y"],'">
<img src="images/prev.png" border="0"
height="20"/></a> ',date('l, F j, Y',
mktime(0,0,0,$m,$a,$y)),' <a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$next["day"]["m"],'&a=',$next["day"][
"a"],'&y=',$next["day"]["y"],'"><img
src="images/next.png" border="0"
height="20"/></a></div>'."\n";
echo "<table class=\"day\"><tr>";
showHours();
echo "<td><table class=\"day\"><tr>";
echo "<td width=\"100%\"
class=\"single_day\">\n";
showDay($y,$m,$a,"Events");
echo "</td>";
echo "</tr></table></td></tr></table>";
echo "</div>\n";
include "includes/footer.php";
?>
week.php
<?php
/*
<?xml version="1.0" encoding="utf-8"?>
<module>
<name>Week View</name>
<author>Dana C. Hutchins</author>
<url>http://supercali.inforest.com/</url>
<version>1.0.0</version>
<link_name>Week</link_name>
<description>Shows a week on one
screen.</description>
<image></image>
<install_script></install_script>
</module>
*/
include "modules/day_week_functions.php";
include "includes/header.php";
?>
<?php
$thisweek = $now["week"]["y"][0]."-
".$now["week"]["m"][0]."-
".$now["week"]["a"][0];
$nextweek = $next["week"]["y"]."-
".$next["week"]["m"]."-".$next["week"]["a"];
grab($thisweek,$nextweek,$c);
echo "<div class=\"frame\">\n";
echo '<div class="cal_top"><a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$prev["week"]["m"],'&a=',$prev["wee
k"]["a"],'&y=',$prev["week"]["y"],'">
<img src="images/prev.png" border="0"
height="20"/></a> ',$lang["week_of"],date('F
j, Y',
mktime(0,0,0,$now["week"]["m"][0],$now["w
eek"]["a"][0],$now["week"]["y"][0])),' <a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$next["week"]["m"],'&a=',$next["wee
k"]["a"],'&y=',$next["week"]["y"],'"><img
src="images/next.png" border="0"
height="20"/></a></div>'."\n";
echo "<table class=\"day\"><tr>";
showHours();
echo "<td><table class=\"day\"><tr>";
for ($we=0;$we<7;$we++) {
echo "<td width=\"14%\"
class=\"single_day\">\n";
showDay($now["week"]["y"][$we],$
now["week"]["m"][$we],$now["week"]["a"][$
we]);
echo "</td>";
}
echo "</tr></table></td></tr></table>";
echo "</div>\n";
include "includes/footer.php";
?>
year.php
<?php
function showGrid($date) {
global $title, $niceday, $start_time,
$end_time, $venue, $city, $state, $cat, $color,
$background, $ed, $usr, $o, $c, $m, $a, $y, $w,
$lang;
if ($start_time[$date]) {
ksort($start_time[$date]);
while (list($t) =
each($start_time[$date])) {
while
(list($id,$value) =
each($start_time[$date][$t])) {
echo "<div
class=\"button\" style=\"";
if
($color[$id]) echo " color: ".$color[$id].";
background: ".$background[$id].";";
echo "\">";
echo "<a
href=\"show_event.php?id=".$id."&o=".$o."&
c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".
$w."\"
onClick=\"openPic('show_event.php?id=".$id.
"&size=small','pop','600','400');
window.newWindow.focus(); return false\">";
echo "<div
style=\"background: ".$color[$id].";\" title=\"";
echo
$value;
if
($end_time[$date][$t][$id]) echo " -
".$end_time[$date][$t][$id];
echo " - ";
echo
$title[$id];
if
($venue[$id]) {
echo " - ".$venue[$id];
if
($city[$id]) {
echo " - ".$city[$id];
if ($state[$id]) echo ", ".$state[$id];
}
}
echo
"\"> </div></a></div>";
}
}
}
}
function showYear ($calyear) {
global $week_titles_ss, $o, $m, $a,
$y, $w, $c, $next, $prev, $lm, $la, $le;
echo '<table width="100%"
class="grid""><tr>';
echo '<th colspan="4"
class="cal_top"><a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$m,'&a=1&y=',$prev['year']['y'],'"><i
mg src="images/prev.png" border="0"
height="20"/></a> ',$calyear,' <a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$m,'&a=1&y=',$next['year']['y'],'"><i
mg src="images/next.png" border="0"
height="20"/></a></th></tr>';
$calmonth = 0;
for($p=0;$p<3;$p++){
echo '<tr>';
for($q=0;$q<4;$q++){
$calmonth++;
echo '<td
width="25%" class="holder">';
/* determine total
number of days in a month */
$calday = 0;
$totaldays = 0;
while ( checkdate(
$calmonth, $totaldays + 1, $calyear ) )
$totaldays++;
/* build table */
echo '<table
width="100%" class="grid"><tr>';
echo '<th
colspan="7" class="cal_top_s"><a
href="index.php?o=',$lm,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=1&y=',$calyear,'">',date('F
',
mktime(0,0,0,$calmonth,1,$calyear)),'</a></th
></tr><tr>';
for ( $x = 0; $x < 7;
$x++ )
echo '<th>', $week_titles_ss[ $x ],
'</th>';
/* ensure that a
number of blanks are put in so that the first day
of the month
lines up with the
proper day of the week */
$off = date( "w",
mktime( 0, 0, 0, $calmonth, $calday, $calyear )
);
$offset = $off + 1;
echo '</tr><tr>';
if ($offset > 6)
$offset = 0;
for ($t=0; $t <
$offset; $t++) {
if ($t == 0)
{
$offyear = date( "Y", mktime( 0, 0, 0,
$calmonth, $calday-$off, $calyear ) );
$offmonth = date( "m", mktime( 0, 0,
0, $calmonth, $calday-$off, $calyear ) );
$offday = date( "d", mktime( 0, 0, 0,
$calmonth, $calday-$off, $calyear ) );
echo '<td class="day"><div
class="week"><a
href="index.php?o=',$le,'&w=',$w,'&c=',$c,'&
m=',$offmonth,'&a=',$offday,'&y=',$offyear,'"
>week</a></div></td>';
} else {
echo '<td class="day"> </td>';
}
}
/* start entering in
the information */
for ( $d = 1; $d <=
$totaldays; $d++ )
{
if
(($d == date(j)) && ($calmonth == date(m))
&& ($calyear == date(Y))) {
echo '<td class="day"
id="today"><div class="day_of_month_s"><a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">',
$d, '</a></div>';
}
else {
echo '<TD class="day"><div
class="day_of_month_s"><a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">',
$d, '</a></div>';
if ($offset == 0) echo '<div
class="week"><a
href="index.php?o=',$le,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">wee
k</a></div>';
}
/*
correct date format */
$coredate = date( "Ymd", mktime( 0,
0, 0, $calmonth, $d, $calyear ) );
showGrid($coredate);
echo "</td>";
$offset++;
/*
if we're on the last day of the week, wrap to the
other side */
if
( $offset > 6 )
{
$offset = 0;
echo '</tr>';
if ( $day < $totaldays )
echo '<tr>';
}
}
/* fill in the
remaining spaces for the end of the month, just
to make it look
pretty */
if ( $offset > 0 )
$offset = 7 - $offset;
for ($t=0; $t <
$offset; $t++) {
echo
"<td> </td>";
}
/* end the table */
echo '</tr></table>';
echo
'</td>';
}
echo "</tr>";
}
echo "</table>";
}
include "includes/header.php";
grab($y."-01-01",$y."-12-31",$c);
showYear($y);
include "includes/footer.php";
?>
quarter.php
<?php
function showGrid($date) {
global $title, $niceday, $start_time,
$end_time, $venue, $city, $state, $cat, $color,
$background, $ed, $usr, $o, $c, $m, $a, $y, $w,
$lang;
if ($start_time[$date]) {
ksort($start_time[$date]);
while (list($t) =
each($start_time[$date])) {
while
(list($id,$value) =
each($start_time[$date][$t])) {
echo "<div
class=\"button\" style=\"";
if
($color[$id]) echo " color: ".$color[$id].";
background: ".$background[$id].";";
echo "\">";
echo "<a
href=\"show_event.php?id=".$id."&o=".$o."&
c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".
$w."\"
onClick=\"openPic('show_event.php?id=".$id.
"&size=small','pop','600','400');
window.newWindow.focus(); return false\">";
echo "<div
style=\"background: ".$color[$id].";\" title=\"";
echo
$value;
if
($end_time[$date][$t][$id]) echo " -
".$end_time[$date][$t][$id];
echo " - ";
echo
$title[$id];
if
($venue[$id]) {
echo " - ".$venue[$id];
if
($city[$id]) {
echo " - ".$city[$id];
if ($state[$id]) echo ", ".$state[$id];
}
}
echo
"\"> </div></a></div>";
}
}
}
}
function showQuarter ($quarter,$calyear) {
global $week_titles_s, $o, $m, $a, $y,
$w, $c, $next, $prev,$lm, $le, $la;
global $prevmonth, $prevyear,
$nextmonth, $nextyear;
echo '<table width="100%"
class="grid""><tr>';
echo '<th colspan="3"
class="cal_top"><a
href="',$PHP_SELF,'?o=',$o,'&c=',$c,'&m=',$
prevmonth,'&a=1&y=',$prevyear,'"><</a>&
nbsp;',$calyear,' - Quarter ',$quarter,' <a
href="',$PHP_SELF,'?o=',$o,'&c=',$c,'&m=',$
nextmonth,'&a=1&y=',$nextyear,'">></a><
/th></tr>';
echo '<tr>';
$calmonth = $quarter * 3 - 3;
for($q=0;$q<3;$q++){
$calmonth++;
echo '<td width="33%"
class="holder">';
/* determine total number of days in a
month */
$calday = 0;
$totaldays = 0;
while ( checkdate( $calmonth,
$totaldays + 1, $calyear ) )
$totaldays++;
/* build table */
echo '<table width="100%"
class="grid""><tr>';
echo '<th colspan="7"
class="cal_top_s"><a
href="index.php?o=',$lm,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=1&y=',$calyear,'">',date('F
',
mktime(0,0,0,$calmonth,1,$calyear)),'</a></th
></tr><tr>';
for ( $x = 0; $x < 7; $x++ )
echo '<th>', $week_titles_s[ $x ],
'</th>';
/* ensure that a number of blanks are
put in so that the first day of the month
lines up with the proper day of the
week */
$offset = date( "w", mktime( 0, 0, 0,
$calmonth, $calday, $calyear ) ) + 1;
echo '</tr><tr>';
if ($offset > 6) $offset = 0;
for ($t=0; $t < $offset; $t++) {
if ($t == 0) {
$offyear = date(
"Y", mktime( 0, 0, 0, $calmonth, $calday-$off,
$calyear ) );
$offmonth = date(
"m", mktime( 0, 0, 0, $calmonth, $calday-$off,
$calyear ) );
$offday = date( "d",
mktime( 0, 0, 0, $calmonth, $calday-$off,
$calyear ) );
echo '<td
class="day"><div class="week"><a
href="index.php?o=',$le,'&w=',$w,'&c=',$c,'&
m=',$offmonth,'&a=',$offday,'&y=',$offyear,'"
>week</a></div></td>';
} else {
echo '<td
class="day"> </td>';
}
}
/* start entering in the information */
for ( $d = 1; $d <= $totaldays; $d++ )
{
if (($d == date(j))
&& ($calmonth == date(m)) && ($calyear ==
date(Y))) {
echo '<td
class="day" id="today"><div
class="day_of_month_s"><a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">',
$d, '</a></div>';
} else {
echo '<TD
class="day"><div class="day_of_month_s"><a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">',
$d, '</a></div>';
if ($offset
== 0) echo '<div class="week"><a
href="index.php?o=',$le,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">wee
k</a></div>';
}
/* correct date
format */
$coredate = date(
"Ymd", mktime( 0, 0, 0, $calmonth, $d,
$calyear ) );
showGrid($coredate);
echo "</td>";
$offset++;
/* if we're on the last day of the
week, wrap to the other side */
if ( $offset > 6 )
{
$offset = 0;
echo '</tr>';
if ( $day < $totaldays )
echo '<tr>';
}
}
/* fill in the remaining spaces for the
end of the month, just to make it look
pretty */
if ( $offset > 0 )
$offset = 7 - $offset;
for ($t=0; $t < $offset; $t++) {
echo "<td> </td>";
}
/* end the table */
echo '</tr></table>';
echo '</td>';
}
echo '</tr></table>';
}
// get current quarter
$thisquarter = intval(((intval($m)-1) / 3) + 1);
$thisyear = $y;
//create date range
$startmonth = ($thisquarter - 1) * 3 + 1;
$endmonth = $thisquarter * 3 + 1;
$startmonth = "$y-$startmonth";
$endmonth = "$y-$endmonth";
if($thisquarter == 4){
$nextquarter = 1;
$nextmonth = 1;
$nextyear = $next["year"]["y"];
}else{
$nextquarter = $thisquarter + 1;
$nextyear = $y;
$nextmonth = $thisquarter * 3 + 1;
}
if($thisquarter == 1){
$prevquarter = 4;
$prevyear = $prev["year"]["y"];
$prevmonth = 10;
}else{
$prevquarter = $thisquarter - 1;
$prevyear = $y;
$prevmonth = $prevquarter * 3 - 2;
}
include "includes/header.php";
grab($startmonth."-01",$endmonth."-01",$c);
showQuarter($thisquarter,$thisyear);
include "includes/footer.php";
?>
upcoming.php
<?php
if (!$hideheader) $hideheader = false; // set to
true if calling from another page
if (!$plusmonths) $plusmonths = 1; // how far
out in months to view, if > 1, then you
probably want to set $plusdays=0 or vice-versa
if (!$plusdays) $plusdays = 0; // how far out in
days to view
function showGrid($date) {
global $title, $niceday, $start_time,
$end_time, $venue, $city, $state, $cat, $color,
$background, $ed, $usr, $o, $c, $m, $a, $y, $w,
$lang, $ap, $status, $send;
if ($start_time[$date]) {
ksort($start_time[$date]);
while (list($t) =
each($start_time[$date])) {
$i = 0;
while
(list($id,$value) =
each($start_time[$date][$t])) {
if ($i == 0)
{
echo
"<h3>".$niceday[$date][$t][$id]."</h3>\n";
echo "<ul>\n";
}
echo
"<li>";
echo "<div
class=\"item\"";
if
($color[$id]) echo " style=\"color:
".$color[$id]."; background:
".$background[$id].";\"";
echo ">";
echo "<div
class=\"time\">".$value;
if
($end_time[$date][$t][$id]) echo " -
".$end_time[$date][$t][$id];
echo
"</div>\n";
echo "<div
class=\"title\"><a
href=\"".$calendar_url."show_event.php?id=".
$id."&o=".$o."&c=".$c."&m=".$m."&a=".$a."
&y=".$y."&w=".$w."\"";
if
($color[$id]) echo " style=\"color:
".$color[$id]."; background:
".$background[$id].";\"";
echo
">".$title[$id]."</a></div>\n";
if
($venue[$id]) {
echo "<div
class=\"venue\">".$venue[$id]."</div>\n";
if
($city[$id]) {
echo "<div
class=\"location\">".$city[$id];
if ($state[$id]) echo ", ".$state[$id];
echo "</div>\n";
}
}
echo
"</div>";
if
($ed[$id]==true) {
echo "<div class=\"edit\">";
if
(($ap[$id]==true) && (($status[$id] == 2) ||
($status[$id] == 3))) {
echo "[<a
href=\"".$calendar_url."admin_actions.php?id=
".$id."&o=".$o."&c=".$c."&m=".$m."&a=".$a
."&y=".$y."&w=".$w."&mode=".approve."\">
".$lang["approve"]."</a>] ";
}
if
(($ap[$id]==true) && ($send[$id] == 1)) {
echo "[<a
href=\"send.php?id=".$start_event[$r][$k]."&o
=".$o."&c=".$c."&m=".$m."&a=".$a."&y=".$
y."&w=".$w."\"
onClick=\"openPic('send.php?id=".$start_even
t[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["send massage to member"].
"</a>]  ";
}
elseif (($ap[$id]==true) &&
($send[$id] == 6)) {
echo "[<a
href=\"view_link.php?id=".$start_event[$r][$k
]."&o=".$o."&c=".$c."&m=".$m."&a=".$a."&
y=".$y."&w=".$w."\"
onClick=\"openPic('view_link.php?id=".$start
_event[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["view_link"].
"</a>]  ";
}
echo "[<a
href=\"edit_event.php?id=".$id."&o=".$o."&c
=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".$
w."\">".$lang["edit"]."</a>] [<a
href=\"".$calendar_url."delete_event.php?id=".
$id."&o=".$o."&c=".$c."&m=".$m."&a=".$a."
&y=".$y."&w=".$w."\">".$lang["delete"]."</a
>]</div>\n";
}
echo
"</li>\n";
$i++;
}
echo "</ul>\n";
}
}
}
function showUpcoming () {
global $start_time;
if ($start_time) {
ksort($start_time);
while (list($k) =
each($start_time)) {
showGrid($k);
}
}
}
echo "".$hideheader;
if (!$plusmonths) $plusmonths = 1;
if (!$plusdays) $plusdays = 0;
if (!$hideheader) include
"includes/header.php";
$listend = date("Y-m-d",
mktime(0,0,0,$m+$plusmonths,$a+$plusdays,
$y));
grab($y."-".$m."-".$a,$listend,$c);
showUpcoming($m,$y);
if (!$hideheader) include "includes/footer.php";
?>
grid.php
<?php
function showGrid($date) {
global $title, $niceday, $start_time,
$end_time, $venue, $city, $state, $cat, $color,
$background, $ed, $usr, $o, $c, $m, $a, $y, $w,
$lang, $ap, $status, $send;
if ($start_time[$date]) {
ksort($start_time[$date]);
echo "<ul>\n";
while (list($t) =
each($start_time[$date])) {
while
(list($id,$value) =
each($start_time[$date][$t])) {
echo
"<li>";
echo "<div
class=\"item\"";
if
($color[$id]) echo " style=\"color:
".$color[$id]."; background:
".$background[$id].";\"";
echo ">";
echo "<div
class=\"time\">".$value;
if
($end_time[$date][$t][$id]) echo " -
".$end_time[$date][$t][$id];
echo
"</div>\n";
echo "<div
class=\"title\"><a
href=\"show_event.php?id=".$id."&o=".$o."&
c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".
$w."\"
onClick=\"openPic('show_event.php?id=".$id.
"&size=small','pop','600','400');
window.newWindow.focus(); return false\"";
if
($color[$id]) echo " style=\"color:
".$color[$id]."; background:
".$background[$id].";\"";
echo
">".$title[$id]."</a></div>\n";
if
($ed[$id]==true) {
echo "<div class=\"edit\">";
if
(($ap[$id]==true) && (($status[$id] == 2) ||
($status[$id] == 3))) {
echo "[<a
href=\"admin_actions.php?id=".$id."&o=".$o."
&c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=
".$w."&mode=".approve."\">".$lang["approve
"]."</a>] ";
}
if
(($ap[$id]==true) && ($send[$id] == 1)) {
echo "<img
src='./images/massage.GIF' /> <a
href=\"send.php?id=".$start_event[$r][$k]."&o
=".$o."&c=".$c."&m=".$m."&a=".$a."&y=".$
y."&w=".$w."\"
onClick=\"openPic('send.php?id=".$start_even
t[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["send massage to member"].
"</a>  ";
}
if
(($ap[$id]==true) && ($send[$id] == 6)) {
echo "[<a
href=\"send.php?id=".$start_event[$r][$k]."&o
=".$o."&c=".$c."&m=".$m."&a=".$a."&y=".$
y."&w=".$w."\"
onClick=\"openPic('view_link.php?id=".$start
_event[$r][$k]."&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["view_link"].
"</a>]  ";
}
echo "<img
src='./images/ctxwiz_cls.gif' /> <a
href=\"edit_event.php?id=".$id."&o=".$o."&c
=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".$
w."\"
onClick=\"openPic('edit_event.php?id=".$id."
&size=small','pop','650','600');
window.newWindow.focus(); return
false\">".$lang["edit"]."</a> <im
g src='./images/DELETE.gif' /> <a
href=\"delete_event.php?id=".$id."&o=".$o."&
c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".
$w."\">".$lang["delete"]."</a></div>\n";
}
echo
"</li>\n";
}
}
echo "</ul>\n";
}
}
function showMonth ($calmonth,$calyear) {
global $week_titles, $o, $m, $a, $y,
$w, $c, $next, $prev,$ly, $lm, $le, $la;
/* determine total number of days in a
month */
$calday = 0;
$totaldays = 0;
while ( checkdate( $calmonth,
$totaldays + 1, $calyear ) )
$totaldays++;
/* build table */
echo '<table width="100%"
class="grid""><tr>';
echo '<th colspan="7"
class="cal_top"><a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$prev["month"]["m"],'&a=1&y=',$pre
v["month"]["y"],'"><img
src="images/prev.png" border="0"
height="20"/></a> ',date('F',
mktime(0,0,0,$calmonth,1,$calyear)),' ',
date('Y', mktime(0,0,0,$calmonth,1,$calyear)),'
<a
href="',$PHP_SELF,'?o=',$o,'&w=',$w,'&c=',$
c,'&m=',$next["month"]["m"],'&a=1&y=',$nex
t["month"]["y"],'"><img
src="images/next.png" border="0"
height="20"/></a></th></tr><tr>';
for ( $x = 0; $x < 7; $x++ )
echo '<th>', $week_titles[ $x ],
'</th>';
/* ensure that a number of blanks are
put in so that the first day of the month
lines up with the proper day of the
week */
$off = date( "w", mktime( 0, 0, 0,
$calmonth, $calday, $calyear ) );
$offset = $off + 1;
echo '</tr><tr>';
if ($offset > 6) $offset = 0;
for ($t=0; $t < $offset; $t++) {
if ($t == 0) {
$offyear = date(
"Y", mktime( 0, 0, 0, $calmonth, $calday-$off,
$calyear ) );
$offmonth = date(
"m", mktime( 0, 0, 0, $calmonth, $calday-$off,
$calyear ) );
$offday = date( "d",
mktime( 0, 0, 0, $calmonth, $calday-$off,
$calyear ) );
echo '<td
class="day"><div class="week"><a
href="index.php?o=',$le,'&w=',$w,'&c=',$c,'&
m=',$offmonth,'&a=',$offday,'&y=',$offyear,'"
>week</a></div></td>';
} else {
echo '<td
class="day"> </td>';
}
}
/* start entering in the information */
for ( $d = 1; $d <= $totaldays; $d++ )
{
if (($d == date(j))
&& ($calmonth == date(m)) && ($calyear ==
date(Y))) {
echo '<td
class="day" id="today"><div
class="day_of_month"><a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">',
$d, '</a></div>';
} else {
echo '<td
class="day"><div class="day_of_month"><a
href="index.php?o=',$la,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">',
$d, '</a></div>';
if ($offset
== 0) echo '<div class="week"><a
href="index.php?o=',$le,'&w=',$w,'&c=',$c,'&
m=',$calmonth,'&a=',$d,'&y=',$calyear,'">wee
k</a></div>';
}
/* correct date
format */
$coredate = date(
"Ymd", mktime( 0, 0, 0, $calmonth, $d,
$calyear ) );
showGrid($coredate);
echo "</td>";
$offset++;
/* if we're on the last day of the
week, wrap to the other side */
if ( $offset > 6 )
{
$offset = 0;
echo '</tr>';
if ( $day < $totaldays )
echo '<tr>';
}
}
/* fill in the remaining spaces for the
end of the month, just to make it look
pretty */
if ( $offset > 0 )
$offset = 7 - $offset;
for ($t=0; $t < $offset; $t++) {
echo "<td> </td>";
}
/* end the table */
echo '</tr></table>';
}
include "includes/header.php";
$thismonth = $y."-".$m;
$nextmonth = $next["month"]["y"]."-
".$next["month"]["m"];
grab($thismonth."-01",$nextmonth."-01",$c);
showMonth($m,$y);
include "includes/footer.php";
?>
weeklist.php
<?php
function showWeek() {
global $title, $niceday, $start_time,
$end_time, $venue, $city, $state, $cat, $color,
$background, $ed, $usr, $o, $c, $m, $a, $y, $w,
$lang,$startnice;
ksort($start_time);
$curdate = "";
while (list($date,$val) =
each($start_time)) {
if ($date != $curdate) {
$curdate = $date;
echo
"<h2>".$startnice[$date]."</h2>\n";
}
echo "<ul>\n";
while (list($t) =
each($start_time[$date])) {
while
(list($id,$value) =
each($start_time[$date][$t])) {
echo
"<li>";
echo "<div
class=\"item\"";
if
($color[$id]) echo " style=\"color:
".$color[$id]."; background:
".$background[$id].";\"";
echo ">";
echo "<div
class=\"time\">".$value;
if
($end_time[$date][$t][$id]) echo " -
".$end_time[$date][$t][$id];
echo
"</div>\n";
echo "<div
class=\"title\"><a
href=\"show_event.php?id=".$id."&o=".$o."&
c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".
$w."\"
onClick=\"openPic('show_event.php?id=".$id.
"&size=small','pop','600','400');
window.newWindow.focus(); return false\"";
if
($color[$id]) echo " style=\"color:
".$color[$id]."; background:
".$background[$id].";\"";
echo
">".$title[$id]."</a></div>\n";
if
($venue[$id]) {
echo "<div
class=\"venue\">".$venue[$id]."</div>\n";
if
($city[$id]) {
echo "<div
class=\"location\">".$city[$id];
if ($state[$id]) echo ", ".$state[$id];
echo "</div>\n";
}
}
echo
"</div>";
if
($ed[$id]==true) echo "<div class=\"edit\">[<a
href=\"edit_event.php?id=".$id."&o=".$o."&c
=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".$
w."\"
onClick=\"openPic('edit_event.php?id=".$id."
&size=small','pop','600','500');
window.newWindow.focus(); return
false\">".$lang["edit"]."</a>] [<
a
href=\"delete_event.php?id=".$id."&o=".$o."&
c=".$c."&m=".$m."&a=".$a."&y=".$y."&w=".
$w."\">".$lang["delete"]."</a>]</div>\n";
echo
"</li>\n";
}
}
echo "</ul>\n";
}
}
$thisday = $y."-".$m."-".$a;
$nextseven = $next["seven"]["y"]."-
".$next["seven"]["m"]."-".$next["seven"]["a"];
grab($thisday,$nextseven,$c);
showWeek();
?>
add_event.php
<?php
$javascript = '<script language="JavaScript">
var cal = new
CalendarPopup("testdiv1");
cal.offsetX=-20;
cal.offsetY=20;
var testpopup5 = new
PopupWindow("timelayer");
testpopup5.offsetX=-20;
testpopup5.offsetY=20;
testpopup5.autoHide();
var testpopup5input=null;
function test5popupactivate(obj,anchor) {
testpopup5input=obj;
testpopup5.showPopup(anchor);
}
function testpopup5pick(val) {
testpopup5input.value = val;
testpopup5.hidePopup();
}
function null_out(t,i) {
if ((t.value == "all") || (t.value ==
"tba")){
eval("t.form.start_time_" + i
+".disabled=true");
eval("t.form.end_time_" + i
+".disabled=true");
eval("t.form.start_time_" + i
+".value=\'12:00 am\'");
if (t.value == "all") {
eval("t.form.end_time_" + i
+".value=\'11:59 pm\'");
} else {
eval("t.form.end_time_" + i
+".value=\'12:00 am\'");
}
eval("turn_off(\'anchor_time_start_" +
i +"\')");
eval("turn_off(\'anchor_time_end_" +
i +"\')");
} else {
eval("t.form.start_time_" + i
+".disabled=false");
eval("t.form.end_time_" + i
+".disabled=false");
eval("turn_on(\'anchor_time_start_" +
i +"\')");
eval("turn_on(\'anchor_time_end_" +
i +"\')");
}
}
function turn_on(whichLayer) {
if (document.getElementById) {
// this is the way the
standards work
var style2 =
document.getElementById(whichLayer).style;
style2.visibility = "visible";
} else if (document.all) {
// this is the way old msie
versions work
var style2 =
document.all[whichLayer].style;
style2.visibility = "visible";
} else if (document.layers) {
// this is the way nn4 works
var style2 =
document.layers[whichLayer].style;
style2.visibility = "show";
}
}
function turn_off(whichLayer) {
if (document.getElementById) {
// this is the way the
standards work
var style2 =
document.getElementById(whichLayer).style;
style2.visibility = "hidden";
} else if (document.all) {
// this is the way old msie
versions work
var style2 =
document.all[whichLayer].style;
style2.visibility = "hidden";
} else if (document.layers) {
// this is the way nn4 works
var style2 =
document.layers[whichLayer].style;
style2.visibility = "hide";
}
}
</script>';
include "includes/start.php";
$page_title = $lang["title_add_event"];
function category_tree($category_id) {
global $table_prefix, $indent,
$supercategory, $scategory;
$q = "SELECT category_id, name
from ".$table_prefix."categories where sub_of
= ".$category_id." order by name";
$query = mysql_query($q);
if (!$query) echo "Database Error :
".$q;
else {
while
($row=mysql_fetch_row($query)) {
$mod = 0;
if (!$supercategory)
{
$q =
"select moderate from
".$table_prefix."users_to_categories where
category_id = ".$row[0]." and user_id =
".$_SESSION["user_id"];
$qu =
mysql_query($q);
if
(mysql_num_rows($qu) > 0) $mod =
mysql_result($qu,0,0);
}
else {
$mod = 3;
}
if ($mod > 0) {
echo
"<option value=\"".$row[0]."\"";
if($mod <=
2) echo " disabled";
if
($scategory == $row[0]) echo " SELECTED";
echo
">".$indent.$row[1]."</option>\n";
}
$indent .= "__";
category_tree($row[0]);
$indent =
substr($indent, 2);
}
}
}
function group_tree($group_id) {
global $table_prefix, $indent,
$supergroup, $sgroup;
$q = "SELECT group_id, name from
".$table_prefix."groups where sub_of =
".$group_id." order by name";
$query = mysql_query($q);
if (!$query) echo "Database Error :
".$q;
else {
while
($row=mysql_fetch_row($query)) {
$mod = 0;
if (!$supergroup) {
$q =
"select moderate from
".$table_prefix."users_to_groups where
group_id = ".$row[0]." and user_id =
".$_SESSION["user_id"];
$qu =
mysql_query($q);
if
(mysql_num_rows($qu) > 0) $mod =
mysql_result($qu,0,0);
}
else {
$mod = 3;
}
if ($mod > 0) {
echo
"<option value=\"".$row[0]."\"";
if($mod <
2) echo " disabled";
if ($sgroup
== $row[0]) echo " SELECTED";
echo
">".$indent.$row[1]."</option>\n";
}
$indent .= "__";
group_tree($row[0]);
$indent =
substr($indent, 2);
}
}
}
if (!$superview) {
header("Location:
".$path."login.php?return_to=".$PHP_SELF);
}
elseif (!$superpost) {
include
"includes/header.php";
echo "<p
class=\"warning\">".$lang["not_authorized_ev
ents"]."</p>\n";
}
else {
if
($_POST["mode"] == $lang["add_event"]) {
if(get_magic_quotes_gpc()) {
$title =
mysql_real_escape_string(stripslashes($_POS
T["title"]));
$description =
mysql_real_escape_string(stripslashes($_POS
T["description"]));
$category_id =
mysql_real_escape_string(stripslashes($_POS
T["category"]));
$group_id =
mysql_real_escape_string(stripslashes($_POS
T["group"]));
$propose =
mysql_real_escape_string(stripslashes($_POS
T["propose"]));
}
else {
$title =
mysql_real_escape_string($_POST["title"]);
$description =
mysql_real_escape_string($_POST["descriptio
n"]);
$category_id =
mysql_real_escape_string($_POST["category"
]);
$group_id =
mysql_real_escape_string($_POST["group"]);
$propose =
mysql_real_escape_string($_POST["propose"]
);
}
if
(!$supergroup) {
if ($group_id) {
$q = "select moderate from
".$table_prefix."users_to_groups where
group_id = ".$group_id." and user_id =
".$_SESSION["user_id"];
$gmod =
mysql_result(mysql_query($q),0,0);
if ($gmod < 2) {
header("Location:
".$path."add_event.php?msg=".$lang["not_aut
horized_events_group"]."&size=".$_REQUES
T["size"]);
}
else {
if ($gmod == 2)
$propose = "propose";
}
}
else {
header("Location:
".$path."add_event.php?msg=".$lang["not_aut
horized_events_group"]."&size=".$_REQUES
T["size"]);
}
}
if
(!$supercategory) {
$q
= "select moderate from
".$table_prefix."users_to_categories where
category_id = ".$category_id." and user_id =
".$_SESSION["user_id"];
$mod =
mysql_result(mysql_query($q),0,0);
if
($mod < 2) {
header("Location:
".$path."add_event.php?msg=".$lang["not_aut
horized_events_category"]."&size=".$_REQU
EST["size"]);
}
}
if
($propose == "propose") $status_id = 2;
else
$status_id = 1;
$sauce =
md5(time());
$send_id =
1; //sending massage to member
$q =
"INSERT into ".$table_prefix."events (title,
category_id, description, user_id, group_id,
status_id, send_id, quick_approve) values
('".$title."', ".$category_id.", '".$description."',
".$_SESSION["user_id"].", ".$group_id.",
".$status_id.", ".$send_id.", '".$sauce."')";
$query =
mysql_query($q);
$event_id
= mysql_insert_id();
if (!$query)
$msg .= "Database Error : ".$q;
else {
$j
= 0;
while ($_POST["date_".$j]) {
if (!$_POST["delete_".$j]) {
if ($_POST["all_day_".$j]
== "all") {
$_POST["start_time_".$j] = "12:00
am";
$_POST["end_time_".$j] = "11:59
pm";
}
else if
($_POST["all_day_".$j] == "tba") {
$_POST["start_time_".$j] = "12:00
am";
$_POST["end_time_".$j] = "12:00
am";
}
if (!ereg ("([0-9]{1,2})[\/-]+([0-
9]{1,2})[\/-]+([0-
9]{4})",$_POST["date_".$j],$date)) {
$msg2 .= "Bad Date
: ".$_POST["date_".$j];
}
else {
if (!eregi ("([0-
9]{1,2}):([0-9]{2})[
]?([a|p]m)",$_POST["start_time_".$j],$start_ti
me)) {
$msg2 .=
"Bad Start Time : ".$_POST["start_time_".$j];
}
else {
if
(($_POST["end_time_".$j])&&(!eregi ("([0-
9]{1,2}):([0-9]{2})[
]?([a|p]m)",$_POST["end_time_".$j],$end_tim
e))) {
$msg2 .= "Bad End Time :
".$_POST["end_time_".$j];
}
else {
if (strlen($date[1]) == 1) $date[1] =
"0".$date[1];
if (strlen($date[2]) == 1) $date[2] =
"0".$date[2];
if ((eregi("am",$start_time[3])) &&
($start_time[1] == 12)) $start_time[1] =
$start_time[1] - 12;
if ((eregi("am",$end_time[3])) &&
($end_time[1] == 12)) $end_time[1] =
$end_time[1] - 12;
if ((eregi("pm",$start_time[3])) &&
($start_time[1] < 12)) $start_time[1] =
$start_time[1] + 12;
if ((eregi("pm",$end_time[3])) &&
($end_time[1] < 12)) $end_time[1] =
$end_time[1] + 12;
if (strlen($start_time[1]) == 1)
$start_time[1] = "0".$start_time[1];
if (strlen($end_time[1]) == 1)
$end_time[1] = "0".$end_time[1];
$start_date = $date[3]."-".$date[1]."-
".$date[2]." ".$start_time[1].":".$start_time[2];
if ($_POST["end_time_".$j]) {
$end_date = $date[3]."-
".$date[1]."-".$date[2]."
".$end_time[1].":".$end_time[2];
if
(($end_time[1].$end_time[2]) >=
($start_time[1].$start_time[2])) {
$q = "INSERT into
".$table_prefix."dates (event_id, date,
end_date) values (".$event_id.",
'".$start_date."', '".$end_date."')";
}
else {
$q = "INSERT into
".$table_prefix."dates (event_id, date) values
(".$event_id.", '".$start_date."')";
}
}
else {
$q = "INSERT into
".$table_prefix."dates (event_id, date) values
(".$event_id.", '".$start_date."')";
}
$query =
mysql_query($q);
if (!$query)
$msg2 .= "Database Error : ".$q;
}
}
}
}
$j++;
}
if
($_POST["date_add"]) {
if
($_POST["all_day_add"] == "all") {
$_POST["start_time_add"] = "12:00
am";
$_POST["end_time_add"] = "11:59
pm";
}
else if ($_POST["all_day_add"] ==
"tba") {
$_POST["start_time_add"] = "12:00
am";
$_POST["end_time_add"] = "12:00
am";
}
if
(!ereg ("([0-9]{1,2})[\/-]+([0-9]{1,2})[\/-]+([0-
9]{4})",$_POST["date_add"],$date)) {
$msg2 .= "Bad Date :
".$_POST["date_add"];
}
else {
if (!eregi ("([0-9]{1,2}):([0-9]{2})[
]?([a|p]m)",$_POST["start_time_add"],$start_t
ime)) {
$msg2 .= "Bad Start Time :
".$_POST["start_time_add"];
}
else {
if
(($_POST["end_time_add"])&&(!eregi ("([0-
9]{1,2}):([0-9]{2})[
]?([a|p]m)",$_POST["end_time_add"],$end_ti
me))) {
$msg2 .= "Bad End
Time : ".$_POST["end_time_add"];
}
else {
if (strlen($date[1]) == 1)
$date[1] = "0".$date[1];
if (strlen($date[2]) == 1)
$date[2] = "0".$date[2];
if
((eregi("am",$start_time[3])) &&
($start_time[1] == 12)) $start_time[1] =
$start_time[1] - 12;
if
((eregi("am",$end_time[3])) &&
($end_time[1] == 12)) $end_time[1] =
$end_time[1] - 12;
if
((eregi("pm",$start_time[3])) &&
($start_time[1] < 12)) $start_time[1] =
$start_time[1] + 12;
if
((eregi("pm",$end_time[3])) &&
($end_time[1] < 12)) $end_time[1] =
$end_time[1] + 12;
if (strlen($start_time[1]) ==
1) $start_time[1] = "0".$start_time[1];
if (strlen($end_time[1]) ==
1) $end_time[1] = "0".$end_time[1];
$start_date = $date[3]."-
".$date[1]."-".$date[2]."
".$start_time[1].":".$start_time[2];
//loop through recurring
events
$juno = 0;
$r = $_POST["recurring"];
if (!$r) $r = 0;
$int = $_POST["interval"];
while ($juno <= $r) {
$next = $juno *
$int;
if
($_POST["end_time_add"]) {
$end_date
= $date[3]."-".$date[1]."-".$date[2]."
".$end_time[1].":".$end_time[2];
if
(($end_time[1].$end_time[2]) >=
($start_time[1].$start_time[2])) {
$q
= "INSERT into ".$table_prefix."dates
(event_id, date, end_date) values
(".$event_id.", DATE_ADD('".$start_date."',
INTERVAL ".$next." DAY),
DATE_ADD('".$end_date."', INTERVAL
".$next." DAY))";
}
else {
$q
= "INSERT into ".$table_prefix."dates
(event_id, date) values (".$event_id.",
DATE_ADD('".$start_date."', INTERVAL
".$next." DAY))";
}
}
else {
$q =
"INSERT into ".$table_prefix."dates (event_id,
date) values (".$event_id.",
DATE_ADD('".$start_date."', INTERVAL
".$next." DAY))";
}
$query =
mysql_query($q);
if (!$query) $msg2
.= "Database Error : ".$q;
$juno++;
}
}
}
}
}
if($msg2){
$query =
mysql_query("DELETE from
".$table_prefix."events where event_id =
".$event_id);
$javascript
.= "\n<script language=\"JavaScript\"
type=\"text/javascript\">
<!--\n
alert('$msg2 Please Try Again');\n
//
-->\n</script>\n";
}
else{
$msg =
$lang["add_event"];
}
}
}
include "includes/header.php";
$scategory = $_POST["category"] ?
$_POST["category"] : $c;
$sgroup = $_POST["group"] ?
$_POST["group"] : $w;
?>
<form action="add_event.php" id="event"
name="event" method="post">
<?php include "includes/hidden_fields.php";
?>
<input type="hidden" name="size"
value="<?php echo $_REQUEST["size"];
?>">
<table>
<tr>
<td><?php echo
$lang["title"];?>:</td>
<td>:</td>
<td><input type="text"
name="title" id="title" value="<?php echo
$_POST["title"]; ?>" size="40"></td>
</tr>
<tr>
<td><?php echo
$lang["group"];?>:</td>
<td>:</td>
<td>
<select
name="group" id="group">
<?php
group_tree(0); ?>
</select>
<select
name="propose" id="propose"><option
value="post"<? if ($_POST["propose"] ==
"post") echo " selected"; ?>><?php echo
$lang["post"];?></option><option
value="propose"<? if ($_POST["propose"] ==
"propose") echo " selected"; ?>><?php echo
$lang["propose"];?></option></select>
</td>
</tr>
<tr>
<td><?php echo
$lang["category"];?>:</td>
<td>:</td>
<td>
<select
name="category" id="category">
<?php
category_tree(0); ?>
</select>
</td>
</tr>
</table>
<table>
<tr>
<th><?php echo
$lang["delete?"];?></th>
<th><?php echo
$lang["date"];?></th><th><?php echo
$lang["all_day"];?> / <?php echo
$lang["tba"];?> / <?php echo
$lang["enter_time"];?></th><th><?php echo
$lang["start_time"];?></th>
<th><?php echo
$lang["end_time"];?></th>
</tr>
<?php
$i = 0;
$j = 0;
while ($_REQUEST["date_".$j]) {
if (!$_REQUEST["delete_".$j]) {
$disabled = "";
$hidden = "";
$checked= "";
$checked_tba= "";
$checked_enter= " checked";
if
($_REQUEST["all_day_".$j] == "all") {
$_REQUEST["start_time_".$j] =
"12:00 am";
$_REQUEST["end_time_".$j] =
"11:59 pm";
$disabled = "
disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked= "
checked";
$checked_enter= "";
} elseif
(($_REQUEST["start_time_".$j] == "12:00
am") && ($_REQUEST["end_time_".$j] ==
"11:59 pm")) {
$disabled = "
disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked= "
checked";
$checked_enter= "";
} elseif
($_REQUEST["all_day_".$j] == "tba") {
$_POST["start_time_".$j] = "12:00
am";
$_POST["end_time_".$j] = "12:00
am";
$disabled = "
disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked_tba = "
checked";
$checked_enter= "";
} elseif
(($_REQUEST["start_time_".$j] == "12:00
am") && ($_REQUEST["end_time_".$j] ==
"12:00 am")) {
$disabled = "
disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked_tba= "
checked";
$checked_enter= "";
}
?>
<tr>
<td><input type="checkbox"
name="delete_<?php echo $i; ?>"
id="delete_<?php echo $i; ?>" value="yes"
/></td>
<td><input type="text"
name="date_<?php echo $i; ?>"
id="date_<?php echo $i; ?>" value="<?php
echo $_REQUEST["date_".$j]; ?>"size="10">
<a href="#"
onclick="cal.select(document.event.date_<?ph
p echo $i; ?>,this.name,'MM/dd/yyyy'); return
false;" NAME="anchor_date_<?php echo $i;
?>" ID="anchor_date_<?php echo $i;
?>"><img src="images/calendar.png"
border="0" /></a></td>
<td><input type="radio"
onClick="null_out(this,<?php echo $i; ?>);"
name="all_day_<?php echo $i; ?>"
id="all_day_<?php echo $i; ?>"
value="all"<?php echo $checked; ?>/> / <input
type="radio" onClick="null_out(this,<?php
echo $i; ?>);" name="all_day_<?php echo $i;
?>" id="all_day_<?php echo $i; ?>"
value="tba"<?php echo $checked_tba; ?>/> /
<input type="radio"
onClick="null_out(this,<?php echo $i; ?>);"
name="all_day_<?php echo $i; ?>"
id="all_day_<?php echo $i; ?>"
value=""<?php echo $checked_enter;
?>/></td>
<td><input type="text"
name="start_time_<?php echo $i; ?>"
id="start_time_<?php echo $i; ?>"
value="<?php echo
$_REQUEST["start_time_".$j]; ?>"
size="10"<?php echo $disabled; ?>/> <a
href="#"
onclick="test5popupactivate(document.event.st
art_time_<?php echo $i; ?>,this.name);return
false;" NAME="anchor_time_start_<?php
echo $i; ?>" ID="anchor_time_start_<?php
echo $i; ?>"<?php echo $hidden; ?>><img
src="images/time.png" border="0" /></a></td>
<td><input type="text"
name="end_time_<?php echo $i; ?>"
id="end_time_<?php echo $i; ?>"
value="<?php echo
$_REQUEST["end_time_".$j]; ?>"
size="10"<?php echo $disabled; ?>/> <a
href="#"
onclick="test5popupactivate(document.event.e
nd_time_0,this.name);return false;"
NAME="anchor_time_end_<?php echo $i; ?>"
ID="anchor_time_end_<?php echo $i;
?>"<?php echo $hidden; ?>><img
src="images/time.png" border="0" /></a></td>
</tr>
<?php
$i++;
}
$j++;
}
if ($_POST["date_add"]) {
$disabled = "";
$hidden = "";
$checked= "";
$checked_tba= "";
$checked_enter= " checked";
if ($_POST["all_day_add"]) {
$_POST["start_time_add"] =
"12:00 am";
$_POST["end_time_add"] =
"11:59 pm";
$disabled = " disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked= " checked";
$checked_enter= "";
} elseif (($_POST["start_time_add"]
== "12:00 am") &&
($_POST["end_time_add"] == "11:59 pm")) {
$disabled = " disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked= " checked";
$checked_enter= "";
} elseif ($_POST["all_day_".$j] ==
"tba") {
$_POST["start_time_".$j] =
"12:00 am";
$_POST["end_time_".$j] =
"12:00 am";
$disabled = " disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked_tba = " checked";
$checked_enter= "";
} elseif (($_POST["start_time_".$j]
== "12:00 am") && ($_POST["end_time_".$j]
== "12:00 am")) {
$disabled = " disabled";
$hidden = "
style=\"visibility: hidden;\"";
$checked_tba= " checked";
$checked_enter= "";
}
//loop through recurring events
ereg ("([0-9]{1,2})[\/-]+([0-
9]{1,2})[\/-]+([0-
9]{4})",$_POST["date_add"],$date);
$juno = 0;
$r = $_POST["recurring"];
if (!$r) $r = 0;
$int = $_POST["interval"];
while ($juno <= $r) {
$next = $juno * $int;
$show_date = date( "m/d/Y",
mktime( 0, 0, 0, $date[1], $date[2]+$next,
$date[3] ) );
?>
<tr>
<td><input type="checkbox"
name="delete_<?php echo $i; ?>"
id="delete_<?php echo $i; ?>" value="yes"
/></td>
<td><input type="text"
name="date_<?php echo $i; ?>"
id="date_<?php echo $i; ?>" value="<?php
echo $show_date; ?>"size="10"> <a href="#"
onclick="cal.select(document.event.date_<?ph
p echo $i; ?>,this.name,'MM/dd/yyyy'); return
false;" NAME="anchor_date_<?php echo $i;
?>" ID="anchor_date_<?php echo $i;
?>"><img src="images/calendar.png"
border="0" /></a></td>
<td><input type="radio"
onClick="null_out(this,<?php echo $i; ?>);"
name="all_day_<?php echo $i; ?>"
id="all_day_<?php echo $i; ?>"
value="all"<?php echo $checked; ?>/> / <input
type="radio" onClick="null_out(this,<?php
echo $i; ?>);" name="all_day_<?php echo $i;
?>" id="all_day_<?php echo $i; ?>"
value="tba"<?php echo $checked_tba; ?>/> /
<input type="radio"
onClick="null_out(this,<?php echo $i; ?>);"
name="all_day_<?php echo $i; ?>"
id="all_day_<?php echo $i; ?>"
value=""<?php echo $checked_enter;
?>/></td>
<td><input type="text"
name="start_time_<?php echo $i; ?>"
id="start_time_<?php echo $i; ?>"
value="<?php echo
$_POST["start_time_add"]; ?>"
size="10"<?php echo $disabled; ?>/> <a
href="#"
onclick="test5popupactivate(document.event.st
art_time_<?php echo $i; ?>,this.name);return
false;" NAME="anchor_time_start_<?php
echo $i; ?>" ID="anchor_time_start_<?php
echo $i; ?>"<?php echo $hidden; ?>><img
src="images/time.png" border="0" /></a></td>
<td><input type="text"
name="end_time_<?php echo $i; ?>"
id="end_time_<?php echo $i; ?>"
value="<?php echo $_POST["end_time_add"];
?>" size="10"<?php echo $disabled; ?>/> <a
href="#"
onclick="test5popupactivate(document.event.e
nd_time_0,this.name);return false;"
NAME="anchor_time_end_<?php echo $i; ?>"
ID="anchor_time_end_<?php echo $i;
?>"<?php echo $hidden; ?>><img
src="images/time.png" border="0" /></a></td>
</tr>
<?php
$juno++;
$i++;
}
}
?>
<tr>
<td><?php echo
$lang["add"];?> =>></td>
<td>
<input type="text"
name="date_add" id="date_add"
value="<?php echo
$_REQUEST["next_date"]; ?>" size="10"> <a
href="#"
onclick="cal.select(document.event.date_add,t
his.name,'MM/dd/yyyy'); return false;"
NAME="anchor_date_add"
ID="anchor_date_add"><img
src="images/calendar.png" border="add"
/></a></td>
<td><input type="radio"
onClick="null_out(this,'add');"
name="all_day_add" id="all_day_add"
value="all" /> / <input type="radio"
onClick="null_out(this,'add');"
name="all_day_add" id="all_day_add"
value="tba" /> / <input type="radio"
onClick="null_out(this,'add');"
name="all_day_add" id="all_day_add"
value="" checked /></td>
<td><input type="text"
name="start_time_add" id="start_time_add"
value="<?php echo
$_REQUEST["next_start"]; ?>" size="10"> <a
href="#"
onclick="test5popupactivate(document.event.st
art_time_add,this.name);return false;"
NAME="anchor_time_start_add"
ID="anchor_time_start_add""><img
src="images/time.png" border="add" /></a>
</td>
<td><input type="text"
name="end_time_add" id="end_time_add"
value="<?php echo $_REQUEST["next_end"];
?>" size="10"> <a href="#"
onclick="test5popupactivate(document.event.e
nd_time_add,this.name);return false;"
NAME="anchor_time_end_add"
ID="anchor_time_end_add""><img
src="images/time.png" border="add" /></a>
</td>
</tr>
<tr>
<td colspan="4"><?php echo
$lang["recurring"];?> <input type="text"
name="recurring" size="3"> X <select
name="interval"><option
value="1">1</option><option
value="7">7</option></select> <?php echo
$lang["days"];?></td>
</tr>
</table>
<p><input type="submit" name="mode"
id="mode" value="<?php echo
$lang["add_edit_dates"];?>"></p>
<p><?php echo $lang["description"];?>:<br />
<?php if ($fck_editor_path) {
include($fck_editor_path."fckeditor.p
hp") ;
$oFCKeditor = new
FCKeditor('description') ;
$oFCKeditor->BasePath =
$calendar_url.$fck_editor_path ;
$oFCKeditor->Value =
$_POST["description"] ;
$oFCKeditor->Height =
400;
$oFCKeditor->ToolbarSet =
$fck_editor_toolbar;
$oFCKeditor->Create() ;
} else {
echo "<textarea cols=\"60\"
rows=\"10\" name=\"description\"
id=\"description\">".$_POST["description"]."<
/textarea>\n";
}
?>
</p>
<p><input type="submit" name="mode"
id="mode" value="<?php echo
$lang["add_event"];?>"></p>
</form>
<div id="timelayer"
STYLE="position:absolute;visibility:hidden;ba
ckground-color:white;layer-background-
color:white;top:0px;z-index: 1;">
<form id="time" name="time">
<select id="hour" size="18"
onChange="testpopup5pick(this.options[this.se
lectedIndex].value);">
<option value="12:00 am"
class="midnight">Midnight</option>
<option value="01:00 am"
class="evening">01:00 am</option>
<option value="02:00 am"
class="evening">02:00 am</option>
<option value="03:00 am"
class="evening">03:00 am</option>
<option value="04:00 am"
class="evening">04:00 am</option>
<option value="05:00 am"
class="evening">05:00 am</option>
<option value="06:00 am"
class="morning">06:00 am</option>
<option value="07:00 am"
class="morning">07:00 am</option>
<option value="07:30 am"
class="morning">07:30 am</option>
<option value="08:00 am"
class="morning" selected>08:00 am</option>
<option value="08:30 am"
class="morning">08:30 am</option>
<option value="09:00 am"
class="morning">09:00 am</option>
<option value="09:30 am"
class="morning">09:30 am</option>
<option value="10:00 am"
class="morning">10:00 am</option>
<option value="10:30 am"
class="morning">10:30 am</option>
<option value="11:00 am"
class="morning">11:00 am</option>
<option value="11:30 am"
class="morning">11:30 am</option>
<option value="12:00 pm"
class="noon">Noon</option>
<option value="12:30 pm"
class="afternoon">12:30 pm</option>
<option value="01:00 pm"
class="afternoon">01:00 pm</option>
<option value="01:30 pm"
class="afternoon">01:30 pm</option>
<option value="02:00 pm"
class="afternoon">02:00 pm</option>
<option value="02:30 pm"
class="afternoon">02:30 pm</option>
<option value="03:00 pm"
class="afternoon">03:00 pm</option>
<option value="03:30 pm"
class="afternoon">03:30 pm</option>
<option value="04:00 pm"
class="afternoon">04:00 pm</option>
<option value="04:30 pm"
class="afternoon">04:30 pm</option>
<option value="05:00 pm"
class="afternoon">05:00 pm</option>
<option value="05:30 pm"
class="afternoon">05:30 pm</option>
<option value="06:00 pm"
class="evening">06:00 pm</option>
<option value="06:30 pm"
class="evening">06:30 pm</option>
<option value="07:00 pm"
class="evening">07:00 pm</option>
<option value="07:30 pm"
class="evening">07:30 pm</option>
<option value="08:00 pm"
class="evening">08:00 pm</option>
<option value="08:30 pm"
class="evening">08:30 pm</option>
<option value="09:00 pm"
class="evening">09:00 pm</option>
<option value="09:30 pm"
class="evening">09:30 pm</option>
<option value="10:00 pm"
class="evening">10:00 pm</option>
<option value="10:30 pm"
class="evening">10:30 pm</option>
<option value="11:00 pm"
class="evening">11:00 pm</option>
<option value="11:30 pm"
class="evening">11:30 pm</option>
</select>
</form>
</div>
<DIV ID="testdiv1"
STYLE="position:absolute;visibility:hidden;ba
ckground-color:white;layer-background-
color:white;"></DIV>
<?php
}
include ("includes/footer.php");
?>
LAMPIRAN D
PENGUJIAN PENERIMAAN SISTEM
Black Box Testing
1. Admin Absensi
Tabel Black Box Testing Admin Absensi
No. Modul Prasyarat Hasil yang
Diharapkan
Hasil Uji
Coba
1. Tambah User Login sebagai admin Dapat Menambah User
dan konfigurasi hak
akses, kategori akses,
dan group akses
OK
2. Edit User Login sebagai admin,
data sudah ada dalam
database
Admin HRIS dapat
menambah ataupun
mengganti data User
dan konfigurasi hak
akses, kategori akses,
dan group akses
OK
3. Hapus User Login sebagai admin,
data sudah ada dalam
database
Admin HRIS dapat
menghapus data User
OK
4. Melihat User Login sebagai admin,
data sudah ada dalam
database
Admin HRIS dapat
melihat/view
User yang telah
terdaftar dalam sistem
beserta data-datanya
OK
5. Update Login sebagai admin,
data sudah ada dalam
database
Admin HRIS dapat
meng-update yang telah
tersedia
OK
6. Hapus Login sebagai admin Admin HRIS dapat
menghapus data yang
disediakan
OK
Acceptance Testing (Pengujian Penerimaan)
Pengujian penerimaan sistem dilakukan oleh Bapak Andry
Krisnanda dan staff HR atas nama Audrya Siregar. Pengujian dilakukan
dengan menggunakan metode blackbox testing. Bukti terlampir uji coba
yang dilakukan dapat dilihat pada bagian lampiran. Secara ringkas, hasil
pengujian yang dapat penulis simpulkan adalah sebagai berikut :
Tabel 4.38 Pengujian Penerimaan Sistem
No Pengujian Penilaian
1. Fitur aplikasi secara keseluruhan Baik
2. Fitur untuk admin Baik
3. Fitur untuk Entry Data Baik
4. Tampilan aplikasi Baik
5. Kestabilan aplikasi Baik
6. Keamanan aplikasi Baik
7. Kesesuaian dengan kebutuhan Baik
8. Kemudahan penggunaan aplikasi Baik