66
Universitas Kristen Petra
4. IMPLEMENTASI SISTEM
Teori-teori dan desain sitem yang telah dibahas pada bab-bab sebelumnya
akan diimplementasikan dalam aplikasi yang siap digunakan. Implementasi sistem
yang dibahas terdiri dari koneksi database dan implementasi program.
Nama Fitur
Use Case Diagram Process
Segmen Program
Register Account
3.2.2.1
4.2.
Login
3.2.2.2
4.3.
Register Course
3.2.2.3
4.6., 4.7., 4.8.
Attend Course
3.2.2.4
4.10.
Create Course
3.2.2.5
4.11. dan 4.12.
Open New Class
3.2.2.6
4.13.
Create Discussion
3.2.2.7
4.14.
Create Post
3.2.2.8
4.15.
Check Assignment
3.2.2.9
4.16.
Manage Course
3.2.2.10
4.17.
Troubleshooting Payment
3.2.2.11
4.18.
Check course
3.2.2.12
4.1. Koneksi Database
Koneksi Database diperlukan untuk dapat mengakses, mengelola, dan
menambah data yang tersimpan. Koneksi database menghubungkan program dengan
MySQL Database. Koneksi database disimpan pada “server.php”. Source Code untuk
koneksi database dapat dilihat pada segmen program 4.1.
67
Universitas Kristen Petra
Segmen Program 4.1. Source Code Koneksi Database
4.2. Implementasi Program
Implementasi program merupakan penerapan terhadap desain program yang
telah dijelaskan pada bab sebelumnya. Dalam segmen ini penulis akan memaparkan
source code yang telah dibuat .
4.2.1. Register
Register adalah proses dimana user mendaftarkan diri sebagai member pada
website. Source Code register disimpan dalam “register_check.php”, didalamnya
adalah tentang pengecekan apakah user telah ada, jika tidak maka user akan
didaftarkan. Segmen program 4.2. adalah source code yang digunakan dalam membuat
register code.
Segmen Program 4.2. Source Code Register
<?php
$servername='127.0.0.1'; $username_server='root'; $password_server=''; $my_db='akademiapi';
$con=mysqli_connect($servername, $username_server, $password_server, $my_db); date_default_timezone_set('Asia/Jakarta'); ?> <?php session_start(); include “server.php”; if (!$con) {
die("Connection failed: " . mysqli_connect_error()); }
echo "Connected successfully"; $username=$_POST['username']; $email=$_POST['email']; $password=$_POST['password']; $password=md5($password); $date=date('Y-m-d'); $first_name=$_POST['first_name']; $last_name=$_POST['last_name'];
$result = mysqli_query($con, "INSERT INTO `user` (`Username`, `Password`, `First_Name`, `Last_Name`, `Email`, `Birthdate`, `Province`, `City`, `Address`, `Role`, `Last_Login`, `Date_Created`,`Profile_picture`) VALUES ('$username', '$password', '$first_name', '$last_name', '$email', '', '', '', '', 'User', '', '$date','
img/LOGO-API HITAM.png')");
$query=mysqli_query($con, "SELECT * FROM `user`"); while($row=mysqli_fetch_row($query)) { if($row[4]==$email) { $_SESSION['email_exist']=1; } } if($result) { $_SESSION['username']=$username; header("Location:profile.php"); // header('location:register_success.php'); } else {
68
Universitas Kristen Petra
Segmen Program 4.2. Source Code Register (Sambungan)
4.2.2. Login
Login digunakan oleh Client, Moderator, dan Teacher untuk masuk kedalam
website sebagai member. Source code login disimpan dalam “login_check.php”.
Segmen Login dijelaskan pada segmen program 4.3.
Segmen Program 4.3. Source Code Login
if($row[0]==$username) { $_SESSION['username_exist']=1; } if($row[4]==$email) { $_SESSION['email_exist']=1; } } header('location:register.php'); } ?> <?php include 'server.php'; session_start(); if(isset($_SESSION['login'])) { unset($_SESSION['login']); } if (!$con) {
die("Connection failed: " . mysqli_connect_error()); }
echo "Connected successfully"; $username=$_POST['username']; $password=$_POST['password']; $password=md5($password);
$query=mysqli_query($con, "SELECT * FROM `user`"); while($row=mysqli_fetch_row($query)) { if($row[0]==$username&&$row[1]==$password) { $_SESSION['login']=1; } } if(isset($_SESSION['login'])) { unset($_SESSION['login']); $_SESSION['username']=$username; echo $username; header('location:profile.php'); } else{ $_SESSION['fail_login']=1; header('location:login.php'); } ?>
69
Universitas Kristen Petra
4.2.3 Check Login Session
Check login session adalah segmen yang melakukan pengecekan terhadap
user, apakah user sedang login atau tidak. Segmen ini disimpan dalam
“Check_login_session.php”. Source code terhadap check login session dapat dilihat di
segmen program 4.4.
Segmen Program 4.4. Source Code Check Login Session
4.2.4. Logout
Logout adalah segmen yang mengubah fase menjadi tidak login lagi. Logout
disimpan dalam “logout.php”. Source code terhadap logout dapat dilihat di segmen
program 4.5.
Segmen Program 4.5. Source Code Logout
4.2.5. Register Course
Proses Register Course memerlukan 3 tahapan yaitu memilih course dan
memasuknannya kedalam cart, membayar, dan mendapatkan validasi pembayaran dari
administrator. Proses-proses ini dijelaskan sebagai berikut
4.2.5.1. Add to Cart
Add to Cart adalah segmen yang memasukan course yang dipilih oleh user
kedalam keranjang. Segmen ini disimpan dalam “add-to-cart.php”. Source code
terhadap add-to-cart dapat dilihat di segmen program 4.6.
<?php session_start(); if(isset($_SESSION['username'])) { $username=$_SESSION['username']; } else{ header("location:login.php"); } ?> <?php session_start(); if(isset($_SESSION['username'])) { session_destroy(); } header("Location:index.php"); ?>
70
Universitas Kristen Petra
Segmen Program 4.6. Source Code Add to Cart
4.2.5.2. Create Transaction
Create Transaction adalah segmen yang membuatkan transaksi jika user telah
melakukan checkout. Segmen ini disimpan dalam “create_transaction.php”. Source
code terhadap create transaction dapat dilihat di segmen program 4.7.
<?php include 'check_login_session.php'; if(isset($_SESSION['username'])) { $username=$_SESSION['username']; } else{ header("location:login.php"); } include 'server.php'; if(isset($_POST['course_id'])) { $course_id=$_POST['course_id']; }
$query=mysqli_query($con,"SELECT * FROM `cart` WHERE `Username`='$username'"); $item_exist=false; while ($row=mysqli_fetch_row($query)) { if($row[1]==$course_id) { $item_exist=true; } } if($item_exist==false)
{mysqli_query($con,"INSERT INTO `cart` (`Username`, `Open_Course_Id`) VALUES ('$username', '$course_id')");}
header("location:cart.php"); ?>
71
Universitas Kristen Petra
Segmen Program 4.7. Source Code Create Tansaction
<?php include 'check_login_session.php'; if(isset($_SESSION['username'])) { $username=$_SESSION['username']; } else{ header("location:login.php"); } include 'server.php'; if(isset($_POST['submit'])) { $payment_method=$_POST['payment_method']; $today='';
if($payment_method=='Transfer'){$today = date("Y-m-d H:i:s", strtotime('+2 hours'));}
echo $today;
$query=mysqli_query($con,"SELECT * FROM `cart` WHERE `Username`='$username' AND `checked`=true");
if (mysqli_num_rows($query)==0) {header("Location:cart.php");} else{
mysqli_query($con,"INSERT INTO `transaction` (`Transaction_Id`, `Username`, `Payment_Method`, `Total_Price`, `Status`, `Time_Limit`,
`Price_Detail_Received`, `Payment_Date`, `Created_Date`) VALUES (NULL, '$username', '$payment_method', '', 'Checked_Out', '$today', '', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);"); $total=0; $id_transaction_query=mysqli_query($con,"SELECT MAX(Transaction_Id) FROM `transaction`"); $id_transaction=mysqli_fetch_row($id_transaction_query); $transaction_id=$id_transaction[0]; while ($row=mysqli_fetch_row($query)) { $open_course_id=$row[1];
$query3=mysqli_query($con,"SELECT Course_Id FROM `open_course` WHERE `open_course`.`Open_Course_Id`='$open_course_id'");
$query3=mysqli_fetch_row($query3); $course_id=$query3[0];
$query2=mysqli_query($con, "SELECT * FROM `course` WHERE Course_id=$course_id");
$res=mysqli_fetch_row($query2); $course_price=$res[3];
$total=$total+$course_price;
mysqli_query($con,"INSERT INTO `list_of_transaction` (`Transaction_Id`, `Open_Course_Id`) VALUES ('$transaction_id',
'$open_course_id');"); }
mysqli_query($con,"DELETE FROM `cart` WHERE `cart`.`Username`='$username' AND `checked`=true");
mysqli_query($con,"UPDATE `transaction` SET `Total_Price` = '$total' WHERE `transaction`.`Transaction_Id` = '$transaction_id';");
$_SESSION['transaction_id']=$transaction_id; header("Location:payment.php");
} }
72
Universitas Kristen Petra
4.2.5.3. Validate Transaction
Validate Transaction adalah validasi transaksi yang dilakukan oleh
administrator agar user bisa masuk ke introduction. Segmen ini disimpan dalam
“validate_transaction.php”. Source code terhadap create transaction dapat dilihat di
segmen program 4.8.
Segmen Program 4.8. Source Code Validate Transaction
4.2.6 Distribute User
Distribute User adalah Proses yang mengalokasikan user yang telah membayar course
kedalam kelas proses ini dijalankan setiap hari. Segmen ini disimpan dalam
“distribute_user.php”. Source code terhadap distribute user dapat dilihat di segmen
program
4.9.
<?php include 'server.php'; include 'check_login_session_admin.php'; if (isset($_POST['submit'])) { $transaction_id=$_POST['transaction_id']; $username=$_POST['username']; $validate; if ($_POST['submit']=='V') { $validate=true;mysqli_query($con,"UPDATE `transaction` SET `Validation_Status` = 'Validated' WHERE `transaction`.`Transaction_Id` = '$transaction_id'");
$query=mysqli_query($con,"SELECT * FROM `list_of_transaction` WHERE `list_of_transaction`.`Transaction_Id`='$transaction_id'");
while ($row=mysqli_fetch_row($query)) { $open_course_id=$row[1];
mysqli_query($con,"INSERT INTO `user_waiting` (`Username`, `Open_Course_Id`) VALUES ('$username', '$open_course_id');");
} }
elseif ($_POST['submit']=='X') { $validate=false;
mysqli_query($con,"UPDATE `transaction` SET `Validation_Status` = 'Not Validated' WHERE `transaction`.`Transaction_Id` = '$transaction_id'");
}
header("location:manage_payment.php"); }
73
Universitas Kristen Petra
Segmen Program 4.9. Source Code Distribute User
<?php
include 'server.php';
$open_course_query=mysqli_query($con, "SELECT * FROM `open_course` WHERE `open_course`.`End_Registration_Date`< CURDATE()");
if(mysqli_num_rows($open_course_query)!=0) {
while ($open_course=mysqli_fetch_row($open_course_query)) {
$count_waiting_query=mysqli_query($con,"SELECT COUNT(Username) FROM `user_waiting` WHERE `user_waiting`.`Open_Course_Id`='$open_course[0]'"); $count_waiting=mysqli_fetch_row($count_waiting_query);
if ($count_waiting[0]!=0 && $open_course[4]==false) {
$course_id_query=$open_course[1];
$course_query=mysqli_query($con,"SELECT * FROM `course` WHERE `course`.`Course_Id`='$course_id_query'"); $course=mysqli_fetch_row($course_query); $number_of_modules=$course[6]; $course_id=$course[0]; $course_name=$course[1]; $course_period=$open_course[3];
$course_period=date('Y-m-d', strtotime($course_period. ' + 1 days')); $class_quota=$open_course[5];
$update_period=$open_course[6];
$times=$number_of_modules*$update_period; $days=$times+30;
$end_period=date('Y-m-d', strtotime($course_period. ' + '.$days.' days')); echo "waiting ".$count_waiting[0]." class_quota".$class_quota;
$total_class=ceil($count_waiting[0]/$class_quota); echo $total_class;
$per_class_quota=ceil($count_waiting[0]/$total_class);
mysqli_query($con, "INSERT INTO `class` (`Class_Id`, `Course_Name`, `Course_Id`, `Moderator`, `Last_Updated_Module`, `Course_Period`, `Class_Quota`, `Update_Period`,`End_Period`) VALUES (NULL, '$course_name', '$course_id', '', '1', '$course_period', '$class_quota', '$update_period','$end_period')");
$class_query=mysqli_query($con,"SELECT MAX(`Class_Id`) FROM `class`");
$class=mysqli_fetch_row($class_query); echo $class[0];
$user_waiting_query=mysqli_query($con,"SELECT Username FROM `user_waiting` WHERE `user_waiting`.`Open_Course_Id`='$open_course[0]'");
$counter_class=0;
for ($i=0; $i <$count_waiting[0]; $i++) {
$user_waiting=mysqli_fetch_row($user_waiting_query); $counter_class++;
echo "counter".$counter_class;
mysqli_query($con,"INSERT INTO `user_class` (`User_Class_Id`, `Username`, `Class_Id`) VALUES (NULL, '$user_waiting[0]', '$class[0]');");
$usermodule=mysqli_query($con,"SELECT MIN(Module_Id) FROM `Module` WHERE `Module`.`Course_Id`='$course_id'");
$usermodule=mysqli_fetch_row($usermodule); $user_module=$usermodule[0];
mysqli_query($con,"INSERT INTO `user_module` (`User_Module_Id`, `Username`,`Class_Id`, `Module_Id`, `Module_Progress`, `Quiz_Mark`,
`Last_Block_Number`) VALUES (NULL, '$user_waiting[0]','$class[0]', '$user_module', '0', '0', '0');");
if ($counter_class==$per_class_quota AND $i!=($count_waiting[0]-1)) {
$counter_class=0;
mysqli_query($con, "INSERT INTO `class` (`Class_Id`,
`Course_Name`, `Course_Id`, `Moderator`, `Last_Updated_Module`, `Course_Period`, `Class_Quota`, `Update_Period`) VALUES (NULL, '$course_name', '$course_id', '', '1', '$course_period', '$class_quota', '$update_period');");
$class_query=mysqli_query($con,"SELECT MAX(Class_Id) FROM `class`");
$class=mysqli_fetch_row($class_query);
} }
mysqli_query($con,"DELETE FROM `user_waiting` WHERE `user_waiting`.`Open_Course_Id`='$open_course[0]'");
mysqli_query($con,"UPDATE `open_course` SET `open_course`.`Start_Status`=1 WHERE `open_course`.`Open_Course_Id`='$open_course[0]'"); } } } ?>
74
Universitas Kristen Petra
Segmen Program 4.9. Source Code Distribute User (Sambungan)
4.2.7 Attend Course
Attend Course adalah menghitung module_progress pada module ketika user
melakukan pembelajaran. Segmen ini disimpan dalam “update_user_module.php”.
Source code terhadap Attend Course dapat dilihat di segmen program 4.10.
Segmen Program 4.10. Source Code Attend Course
4.2.8 Create Course
Create Course adalah proses pembuatan course dengan mengisi informasi seputar
course. Segmen ini disimpan dalam “create_course.php”. Source code terhadap Create
Course dapat dilihat di segmen program 4.11.
mysqli_query($con,"UPDATE `open_course` SET `open_course`.`Start_Status`=1 WHERE `open_course`.`Open_Course_Id`='$open_course[0]'"); } } } ?> <?php include 'server.php'; if(isset($_POST['type'])) { if($_POST['type']=='Video') { $user_module_id=$_POST['user_module_id'];
mysqli_query($con,"UPDATE `user_module` SET `Video_Visited` = '1' WHERE `user_module`.`User_Module_Id` = '$user_module_id';");
mysqli_query($con,"UPDATE `user_module` SET `Module_Progress` = (`Video_Visited`+`Quiz_Visited`)/2*100 WHERE `user_module`.`User_Module_Id` = '$user_module_id';");
}
elseif ($_POST['type']=='Quiz') {
$user_module_id=$_POST['user_module_id'];
mysqli_query($con,"UPDATE `user_module` SET `Quiz_Visited` = '1' WHERE `user_module`.`User_Module_Id` = '$user_module_id';");
mysqli_query($con,"UPDATE `user_module` SET `Module_Progress` = (`Video_Visited`+`Quiz_Visited`)/2*100 WHERE `user_module`.`User_Module_Id` = '$user_module_id';");
} }
?>
mysqli_query($con,"UPDATE `user_module` SET `Quiz_Visited` = '1' WHERE `user_module`.`User_Module_Id` = '$user_module_id';");
mysqli_query($con,"UPDATE `user_module` SET `Module_Progress` = (`Video_Visited`+`Quiz_Visited`)/2*100 WHERE `user_module`.`User_Module_Id` = '$user_module_id';");
} }
75
Universitas Kristen Petra
Segmen Program 4.11. Source Code Create Course
<?php include 'server.php'; if(isset($_POST['submit'])) { $course_name=$_POST['course_name']; $description=$_POST['description']; $price=$_POST['price']; $category=$_POST['category']; $number_of_modules=$_POST['number_of_modules']; $teacher=$_POST['teacher']; $max_id;
$query=mysqli_query($con,"SELECT MAX(List_Teacher_Id) FROM `course_teacher`"); if (mysqli_num_rows($query)==0) { $max_id=1; } else{ $query=mysqli_fetch_row($query); $max_id=$query[0]+1; }
mysqli_query($con,"INSERT INTO `course` (`Course_Id`, `Course_Name`, `Description`, `Price`, `List_Teacher_Id`, `Category`, `Number_of_modules`) VALUES (NULL, '$course_name', '$description', '$price', '$max_id', '$category',
'$number_of_modules');");
$maxid=mysqli_query($con,"SELECT MAX(`Course_Id`) FROM `course`"); $maxid=mysqli_fetch_row($maxid);
$course_id=$maxid[0];
foreach ($teacher as $key) {
mysqli_query($con,"INSERT INTO `course_teacher` (`List_Teacher_Id`, `Username`, `Course_Id`) VALUES ('$max_id', '$key', '$course_id');");
}
echo '<form action="create_module.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="number_of_modules" value="'.$number_of_modules.'">
<input type="hidden" name="course_id" value="'.$course_id.'">'; for ($i=0; $i < $number_of_modules; $i++) {
echo "Module ".($i+1); echo '<br>
<input type="hidden" name="i" id="i'.$i.'" value="'.$i.'"> Module Name :<input type="text" name="module_name'.$i.'"><br> Description :<input type="text" name="description'.$i.'"><br> Video: <input type="file" name="video'.$i.'"><br>
Number of Blocks: <input type="number" name="number_of_blocks'.$i.'"><br>
Number of Quiz : <input type="Number" min="0" name="number_of_question'.$i.'" value="0" onplay="quiz('.$i.');" onchange="quiz('.$i.');" id="number_of_question'.$i.'"><br>
Assignment : <select onchange="assignment('.$i.');" name="assignment_select'.$i.'" id="assignment_select'.$i.'"><option>Select</option><option>Yes</option><option>No </option></select> ' ; ?>
<?php echo '<div id="quiz'.$i.'">' ?> </div>
<?php echo '<div id="assignment'.$i.'"> '?> </div> <script type="text/javascript"> function quiz(param){ var number_of_question="number_of_question"+param; var x = document.getElementById(number_of_question).value; var newhtml='';
for (var i = 0; i < x; i++) {
newhtml=newhtml+'Pertanyaan : <input type="text" name="question'+param+i+'"> <br>';
newhtml=newhtml+'Jawaban Benar : <input type="text" name="answera'+param+i+'"> <br>';
76
Universitas Kristen Petra
Segmen Program 4.11. Source Code Create Course (Sambungan)
4.2.9 Create Module
Create Module adalah proses pembuatan module dengan mengisi informasi seputar
module dan pertanyaan quiz. Segmen ini disimpan dalam “create_module.php”.
Source code terhadap Create Module dapat dilihat di segmen program 4.12.
<script type="text/javascript"> function quiz(param){ var number_of_question="number_of_question"+param; var x = document.getElementById(number_of_question).value; var newhtml='';
for (var i = 0; i < x; i++) {
newhtml=newhtml+'Pertanyaan : <input type="text" name="question'+param+i+'"> <br>';
newhtml=newhtml+'Jawaban Benar : <input type="text" name="answera'+param+i+'"> <br>';
newhtml=newhtml+'Jawaban Salah 1: <input type="text" name="answerb'+param+i+'"> <br>';
newhtml=newhtml+'Jawaban Salah 2: <input type="text" name="answerc'+param+i+'"> <br>';
newhtml=newhtml+'Jawaban Salah 3 : <input type="text" name="answerd'+param+i+'"> <br><br>'; } document.getElementById("quiz"+param).innerHTML = newhtml; } function assignment(param){ var assignment_select="assignment_select"+param; var x = document.getElementById(assignment_select).value; var newhtml=''; if(x==='Yes'){
newhtml=newhtml+'</br> Deskripsi : <textarea rows="6" cols="100" name="assignment_description'+param+'">';
} document.getElementById("assignment"+param).innerHTML = newhtml; } </script> <br><br> <?php }
echo '<input type="submit" name="submit"> </form>';
} ?>
77
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module
<?php include 'server.php'; if(isset($_POST['submit'])) {echo "string"; $course_id=$_POST['course_id']; $number_of_modules=$_POST['number_of_modules']; echo $number_of_modules;
for ($i=0; $i <$number_of_modules ; $i++) { $contentObject='['; $articles='['; $components='['; $module_name='module_name'.$i; $module_name=$_POST[$module_name]; $description='description'.$i; $description=$_POST[$description]; $video='video'.$i; echo $module_name.$description; $file_name=basename( $_FILES[$video]["name"]); $number_of_blocks='number_of_blocks'.$i; $number_of_blocks=$_POST[$number_of_blocks]; $number_of_question='number_of_question'.$i; $number_of_question=$_POST[$number_of_question]; $module_number=$i+1; $assignment='assignment_select'.$i; $assignment=$_POST[$assignment]; $Assignment_Description=''; if ($assignment=='Yes') { $Assignment_Description='assignment_description'.$i; $Assignment_Description=$_POST[$Assignment_Description]; $assignment=1; } else{$assignment=0;}
mysqli_query($con,"INSERT INTO `module` (`Module_Id`, `Module_Name`, `Course_Id`, `Number_Blocks`, `Module_Number`, `Description`,
`Module_Source_File`,`Assignment`,`Assignment_Description`) VALUES (NULL, '$module_name', '$course_id', '$number_of_blocks', '$module_number', '$description', '','$assignment','$Assignment_Description');");
$module_id_query=mysqli_query($con,"SELECT MAX(Module_Id) FROM `module`"); $module_id_res=mysqli_fetch_row($module_id_query); $module_id=$module_id_res[0]; $dir_name = "modules/".$course_id.'-'.$module_id.'/'; if (!is_dir($dir_name)) { mkdir($dir_name); } $target_dir = $dir_name; $zip = new ZipArchive;
$archive = $zip->open('modules/master.zip'); if ($archive===TRUE) { $zip->extractTo($target_dir); $archive=$zip->close('master.zip'); } $target_dir=$target_dir.'course/en/assets/';
$target_file = $target_dir . basename($_FILES[$video]["name"]); echo $target_file;
$uploadOk = 1; if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded."; } else {
if (move_uploaded_file($_FILES[$video]["tmp_name"], $target_file)) { echo "The file ". basename( $_FILES[$video]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file."; }
}
$contentObject=$contentObject.'{
"title": "Module '.($i+1).' #'.$module_name.' ", "displayTitle": "Module '.($i+1).' #'.$module_name.' ", "body": "'.$description.'", "_classes": "", "pageBody": "", "linkText": "View", "duration": "", "_lockedBy": [
78
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
} else {
echo "Sorry, there was an error uploading your file."; }
}
$contentObject=$contentObject.'{
"title": "Module '.($i+1).' #'.$module_name.' ", "displayTitle": "Module '.($i+1).' #'.$module_name.' ", "body": "'.$description.'", "_classes": "", "pageBody": "", "linkText": "View", "duration": "", "_lockedBy": [ "aaa" ], "_lockType": "sequential", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "_id": "'.$course_id.$module_id.'", "_type": "page", "_parentId": "course", "_graphic": { "alt": "", "src": "" }, "_onScreen": { "_isEnabled": false, "_classes": "", "_percentInviewVertical": 50 } },{ "title": "Quiz", "displayTitle": "Quiz", "body": "", "_classes": "", "pageBody": "", "linkText": "View", "duration": "", "_lockedBy": [], "_lockType": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "_id": "'.$course_id.$module_id.'q", "_parentId": "course", "_type": "page", "_graphic": { "alt": "", "src": "" }, "_onScreen": { "_isEnabled": false, "_classes": "", "_percentInviewVertical": 50 } }'; $articles=$articles.'{ "title": "Module",
"displayTitle": "Module '.($i+1).' #'.$module_name.' ", "body": "<p>'.$description.'</p>", "_classes": "", "instruction": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "_id": "'.$course_id.($module_id+1).'", "_parentId": "'.$course_id.$module_id.'", "_type": "article", "_onScreen": { "_isEnabled": true, "_classes": "", "_percentInviewVertical": 50 } },{
"title": "Article title",
79
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
"_parentId": "'.$course_id.$module_id.'", "_type": "article", "_onScreen": { "_isEnabled": true, "_classes": "", "_percentInviewVertical": 50 } },{
"title": "Article title",
"displayTitle": "Module '.($i+1).' #'.$module_name.' ", "body": "<p>'.$description.'</p>", "_classes": "", "instruction": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "_id": "'.$course_id.($module_id+1).'q", "_parentId": "'.$course_id.$module_id.'q", "_type": "article" }'; $block='[ { "title": "", "displayTitle": "", "body": "", "_classes": "", "_trackingId": 1, "instruction": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "_id": "'.$course_id.($module_id+2).'", "_parentId": "'.$course_id.($module_id+1).'", "_type": "block", "_onScreen": { "_isEnabled": false, "_classes": "", "_percentInviewVertical": 50 } }, { "title": "", "disp layTitle": "", "body": "", "_classes": "", "_trackingId": 2, "instruction": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "_id": "'.$course_id.($module_id+2).'q", "_parentId": "'.$course_id.($module_id+1).'q", "_type": "block" } ]'; $components=$components.' {
80
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
"_component": "media", "_classes": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true, "title": "Module", "displayTitle": "Module", "body": "", "_id": "'.$course_id.($module_id+3).'", "_parentId": "'.$course_id.($module_id+2).'", "_type": "component", "_layout": "full", "_onScreen": { "_isEnabled": true, "_classes": "", "_percentInviewVertical": 50 }, "instruction": "", "_media": { "mp4": "course/en/assets/'.$file_name.'", "ogv": "", "webm": "", "mp3": "", "source": "", "type": "", "poster": "", "cc": [] }, "_setCompletionOn": "inview", "_useClosedCaptions": false, "_startLanguage": "en", "_showVolumeControl": true, "_startVolume": "60%", "_allowFullScreen": true, "_playsinline": true, "_preventForwardScrubbing": false, "_transcript": { "_setCompletionOnView": false, "_inlineTranscript": false, "_externalTranscript": false, "inlineTranscriptButton": "", "inlineTranscriptCloseButton": "", "inlineTranscriptBody": "", "transcriptLinkButton": "", "transcriptLink": "" }, "_playerOptions": "" }'; $assets='{ "'.$file_name.'": { "title": "'.$module_name.'", "description": "'.$description.'", "tags": [] } }'; if($number_of_question>0) { for ($j=0; $j <$number_of_question ; $j++) { $question='question'.$i.$j; $question=$_POST[$question]; $answera='answera'.$i.$j; $answerb='answerb'.$i.$j;
81
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
for ($j=0; $j <$number_of_question ; $j++) { $question='question'.$i.$j; $question=$_POST[$question]; $answera='answera'.$i.$j; $answerb='answerb'.$i.$j; $answerc='answerc'.$i.$j; $answerd='answerd'.$i.$j; $answera=$_POST[$answera]; $answerb=$_POST[$answerb]; $answerc=$_POST[$answerc]; $answerd=$_POST[$answerd]; $components=$components.',{ "_component": "mcq", "_classes": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true,
"title": "Component title", "displayTitle": "Component title",
"body": "", "_id": "'.$course_id.($module_id+3+$j).'q", "_parentId": "'.$course_id.($module_id+2).'q", "_type": "component", "_layout": "full", "_onScreen": { "_isEnabled": false, "_classes": "", "_percentInviewVertical": 50 }, "instruction": "'.$question.'", "_items": [ { "text": "'.$answera.'", "_shouldBeSelected": true,
82
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
"feedback": "" }, { "text": "'.$answerb.'", "_shouldBeSelected": false, "feedback": "" }, { "text": "'.$answerc.'", "_shouldBeSelected": false, "feedback": "" }, { "text": "'.$answerd.'", "_shouldBeSelected": false, "feedback": "" } ], "_attempts": 3, "_canShowModelAnswer": true, "_canShowFeedback": true, "_canShowMarking": true, "_shouldDisplayAttempts": false, "_isRandom": true, "_recordInteraction": true, "_questionWeight": 1, "_selectable": 1, "_feedback": { "title": "Penjelasan",
"correct": "<p>Ini penjelasan benar</p>", "_incorrect": { "final": "<p>salah</p>", "notFinal": "<p>salah</p>" }, "_partlyCorrect": { "final": "<p>salAH</p>", "notFinal": "<p>salah</p>" } }, "_buttons": {
83
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
$answerc=$_POST[$answerc]; $answerd=$_POST[$answerd]; $components=$components.',{ "_component": "mcq", "_classes": "", "_isOptional": false, "_isAvailable": true, "_isHidden": false, "_isVisible": true,
"title": "Component title", "displayTitle": "Component title",
"body": "", "_id": "'.$course_id.($module_id+3+$j).'q", "_parentId": "'.$course_id.($module_id+2).'q", "_type": "component", "_layout": "full", "_onScreen": { "_isEnabled": false, "_classes": "", "_percentInviewVertical": 50 }, "instruction": "'.$question.'", "_items": [ { "text": "'.$answera.'", "_shouldBeSelected": true, "feedback": "" }, { "text": "'.$answerb.'", "_shouldBeSelected": false, "feedback": "" }, { "text": "'.$answerc.'", "_shouldBeSelected": false, "feedback": "" }, { "text": "'.$answerd.'", "_shouldBeSelected": false, "feedback": ""
84
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
}, { "text": "'.$answerd.'", "_shouldBeSelected": false, "feedback": "" } ], "_attempts": 3, "_canShowModelAnswer": true, "_canShowFeedback": true, "_canShowMarking": true, "_shouldDisplayAttempts": false, "_isRandom": true, "_recordInteraction": true, "_questionWeight": 1, "_selectable": 1, "_feedback": { "title": "Penjelasan",
"correct": "<p>Ini penjelasan benar</p>", "_incorrect": { "final": "<p>salah</p>", "notFinal": "<p>salah</p>" }, "_partlyCorrect": { "final": "<p>salAH</p>", "notFinal": "<p>salah</p>" } }, "_buttons": { "_submit": { "buttonText": "", "ariaLabel": "" }, "_reset": { "buttonText": "", "ariaLabel": "" }, "_showCorrectAnswer": { "buttonText": "",
85
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
"ariaLabel": "" }, "_reset": { "buttonText": "", "ariaLabel": "" }, "_showCorrectAnswer": { "buttonText": "", "ariaLabel": "" }, "_hideCorrectAnswer": { "buttonText": "", "ariaLabel": "" }, "_showFeedback": { "buttonText": "", "ariaLabel": "" }, "remainingAttemptsText": "", "remainingAttemptText": "" } }'; } } $contentObject=$contentObject.']'; $articles=$articles.']'; $components=$components.']'; $file_contentObject= fopen('modules/'.$course_id.'-'.$module_id.'/course/en/contentObjects.json',"w"); echo fwrite($file_contentObject,$contentObject);
86
Universitas Kristen Petra
Segmen Program 4.12. Source Code Create Module (Sambungan)
$contentObject=$contentObject.']'; $articles=$articles.']'; $components=$components.']'; $file_contentObject= fopen('modules/'.$course_id.'-'.$module_id.'/course/en/contentObjects.json',"w"); echo fwrite($file_contentObject,$contentObject); fclose($file_contentObject); $file_article= fopen('modules/'.$course_id.'-'.$module_id.'/course/en/articles.json',"w"); echo fwrite($file_article,$articles); fclose($file_article); $file_block= fopen('modules/'.$course_id.'-'.$module_id.'/course/en/blocks.json',"w"); echo fwrite($file_block,$block); fclose($file_block); $file_components= fopen('modules/'.$course_id.'-'.$module_id.'/course/en/components.json',"w"); echo fwrite($file_components,$components); fclose($file_components); $file_assets= fopen('modules/'.$course_id.'-'.$module_id.'/course/en/assets.json',"w"); echo fwrite($file_assets,$assets); fclose($file_assets); } } ?>
87
Universitas Kristen Petra
4.2.10. Open New Class
Open New Class adalah proses pembukaan course untuk open registration
sehingga user bisa mendaftar kedalam course yang tersedia. Segmen ini disimpan
dalam “open_registration.php”. Source code terhadap Open New Class dapat dilihat
di segmen program 4.13.
Segmen Program 4.13. Source Open New Class
4.2.11. Create Discussion
Create Discussion adalah proses pembuatan discussion yang dapat dilakukan
user yang memiliki hak akses pada sebuah forum. Segmen ini disimpan dalam
“create_discussion.php”. Source code terhadap Create Discussion dapat dilihat di
segmen program 4.14.
<?php include 'server.php'; if (isset($_POST['open_course'])) { $course_id=$_POST['course_id']; $start=$_POST['start_registration_date']; $end=$_POST['end_registration_date']; $per_class_quota=$_POST['per_class_quota']; $update_period=$_POST['update_period'];mysqli_query($con,"INSERT INTO `open_course` (`Open_Course_Id`, `Course_Id`, `Start_Registration_Date`, `End_Registration_Date`,
`Start_Status`,`Class_Quota`,`Update_Period`) VALUES (NULL, '$course_id', '$start', '$end', '0','$per_class_quota','$update_period');");
unset($_POST['open_course']); }
header('Location:open_course.php'); ?>
88
Universitas Kristen Petra
Segmen Program 4.14. Source Code Create Discussion
4.2.12. Create Post
Create Discussion adalah proses ketika user membalas dengan pesan didalam
sebuah diskusi. Segmen ini disimpan dalam “reply.php”. Source code terhadap Create
Post dapat dilihat di segmen program 4.15.
<?php include 'check_login_session.php'; include 'server.php'; if(isset($_SESSION['username'])&&isset($_POST['class_id'])) { $username=$_SESSION['username']; $class_id=$_POST['class_id']; } if (isset($_POST['submit'])) { $Title=$_POST['title']; $content=$_POST['content']; $category=$_POST['category'];
$query=mysqli_query($con,"INSERT INTO `discussion` (`Discussion_Id`, `Title`, `Author`, `Content`, `Date_Created`, `Class_Id`, `Category`) VALUES (NULL, '$Title', '$username', '$content', CURRENT_TIMESTAMP, '$class_id', '$category')");
$query=mysqli_query($con,"SELECT MAX(`Discussion_Id`) FROM `discussion`"); $row=mysqli_fetch_row($query); $_SESSION['discussion_id']=$row[0]; echo $category; echo $content; header("Location:posts.php"); } ?>
89
Universitas Kristen Petra
Segmen Program 4.15. Source Code Create Post
4.2.13. Check Assignment
Check Assignment adalah proses dimana moderator menilai pekerjaan client
dan memberi nilai. Source code akan menjabarkan jika moderator melakukan
<?php include 'check_login_session.php'; include 'server.php'; $check=false; if (isset($_SESSION['discussion_id'])) { $discussion_id=$_SESSION['discussion_id']; $check=true; } if(isset($_POST['discussion_id'])) { $discussion_id=$_POST['discussion_id']; $_SESSION['discussion_id']=$_POST['discussion_id']; $check=true; } if (isset($_POST['content'])&&isset($_POST['type'])&&isset($_POST['last_post'])) { $content=$_POST['content']; $type=$_POST['type']; $last_post=$_POST['last_post']; } if($check==false) { header("Location:profile.php"); } if (isset($_POST['submit'])) {
mysqli_query($con,"INSERT INTO `reply_to_forum` (`Reply_Id`, `Author`, `Type`, `Content`, `Date_Created`, `Last_Post_Before_This`, `Discussion_Id`) VALUES (NULL, '$username', '$type', '$content', CURRENT_TIMESTAMP, '$last_post', '$discussion_id')");
$query=mysqli_query($con,"SELECT * FROM `discussion` WHERE `discussion`.`Discussion_Id`='$discussion_id'");
$query=mysqli_fetch_row($query); if ($query[2]!=$username) { if ($type=='Comment') {
//X give comment to your post
mysqli_query($con,"INSERT INTO `inbox` (`Inbox_Id`, `Username`, `Type`, `Variable_1`, `Variable_2`, `Linked_To`,`Date_Created`) VALUES ('', '$query[2]', 'Comment', '$username', '$discussion_id', 'posts.php',CURDATE())"); }
elseif($type=='Reply') {
//X memberi pesan baru terhadap diskusi y
mysqli_query($con,"INSERT INTO `inbox` (`Inbox_Id`, `Username`, `Type`, `Variable_1`, `Variable_2`, `Linked_To`,`Date_Created`) VALUES ('', '$query[2]', 'Reply', '$username', '$discussion_id', 'posts.php',CURDATE())"); }
}
header("Location:posts.php"); }
90
Universitas Kristen Petra
penilaian. Segmen ini disimpan dalam “edit_mark.php”. Source code terhadap Check
Assignment dapat dilihat di segmen program 4.16.
Segmen Program 4.16. Source Code Check Assignment
4.2.14. Manage Course
Manage Course adalah proses dimana Admin melakukan pengelolaan terhadap
course yang ada. Segmen ini disimpan dalam “edit_course.php”. Source code terhadap
Manage Course dapat dilihat di segmen program 4.17.
Segmen Program 4.17. Source Code Troubleshooting Payment
4.2.15. Troubleshooting Payment
Troubleshooting Payment adalah proses dimana Admin melakukan
pengecekan terhadap payment yang bermasalah. Segmen ini disimpan dalam
“manage_payment.php”. Source code terhadap Troubleshooting Payment dapat dilihat
di segmen program 4.18.
<?php include 'server.php'; if ($_POST['submit']) { $assignment_id=$_POST['assignment_id']; $mark=$_POST['mark']; if($mark>100 || $mark<0) {echo "Nilai tidak valid"; }else{
mysqli_query($con,"UPDATE `assignment` SET `Mark` = '$mark', `Status` = 'MARKED' WHERE `assignment`.`Assignment_Id` = '$assignment_id';"); } header("Location:profile.php"); } ?> <?php include 'server.php'; if (isset($_POST['submit'])) { $course_id=$_POST['course_id']; $price=$_POST['price']; $category=$_POST['category']; $description=$_POST['description']; $number_of_modules=$_POST['number_of_modules']; $course_name=''; $course_name=$_POST['course_t'];
mysqli_query($con,"UPDATE `course` SET `Course_Name`='$course_name', `Description`='$description', `Price`='$price', `Category`='$category', `Number_of_modules`='$number_of_modules' WHERE
`course`.`Course_Id`='$course_id'"); }
header("Location:manage_course.php"); ?>
91
Universitas Kristen Petra
Segmen Program 4.18. Source Code Troubleshooting Payment
<?php include 'server.php'; include 'check_login_session_admin.php'; ?> <!DOCTYPE html> <html> <head> <title>Open course</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <script type="text/javascript"> function submitdata() {
var r=confirm("Are You Sure You Want To Proceed?"); if(r==true) { } else { alert("Cancelling Transaction"); javascript:history.go(0); return false; } } </script> </head> <body> <div class="container"> <h1>Manage Transaction</h1> <table class="table"> <th>Transaction Id</th> <th>Username</th> <th>Payment Method</th> <th>Total Price</th> <th>Status</th> <th>Payment Date</th> <th>Created Date</th> <th>Bukti Transfer</th> <th>Valid</th> <!-- <th>Delete</th> --> <?php
$query=mysqli_query($con,"SELECT * FROM `transaction` WHERE Status='Paid'"); while($row=mysqli_fetch_row($query)) { ?> <tr> <td><?php echo $row[0];?></td> <td><?php echo $row[1];?></td> <td><?php echo $row[2];?></td> <td><?php echo $row[3];?></td> <td><?php echo $row[4];?></td> <td><?php echo $row[7];?></td> <td><?php echo $row[8];?></td> <td><?php echo '<a href="uploads/'.$row[1].'/payment_proof/'.$row[0].'/" class="btn btn-primary">Lihat</a>';?>
<!-- <form action="" method="post"><?php //echo '<input type="hidden" name="open_course_id" value="'.$row[0].'"><input type="hidden" name="course_id" value="'.$course[0].'">';?><input class="btn btn-primary" type="submit" name="submit" value="Edit"></form> --></td>
<td>
<?php
if ($row[9]=='') { # code... ?>
<form onsubmit="return submitdata();"
action="validate_transaction.php" method="post"><?php echo '<input type="hidden" name="transaction_id" value="'.$row[0].'"><input type="hidden" name="username" value="'.$row[1].'">';?><input class="btn btn-success" type="submit" name="submit" value="V"></form>
<form onsubmit="return submitdata();"
action="validate_transaction.php" method="post"><?php echo '<input type="hidden" name="transaction_id" value="'.$row[0].'"><input type="hidden" name="username" value="'.$row[1].'">';?><input class="btn btn-danger" type="submit" name="submit" value="X"></form>
<?php } else{
92
Universitas Kristen Petra
Segmen Program 4.18. Source Code Troubleshooting Payment (Sambungan)
<form onsubmit="return submitdata();"
action="validate_transaction.php" method="post"><?php echo '<input type="hidden" name="transaction_id" value="'.$row[0].'"><input type="hidden" name="username" value="'.$row[1].'">';?><input class="btn btn-success" type="submit" name="submit" value="V"></form>
<form onsubmit="return submitdata();"
action="validate_transaction.php" method="post"><?php echo '<input type="hidden" name="transaction_id" value="'.$row[0].'"><input type="hidden" name="username" value="'.$row[1].'">';?><input class="btn btn-danger" type="submit" name="submit" value="X"></form>
<?php } else{
if ($row[9]=='Validated') {
echo '<span class="glyphicon glyphicon-ok-sign"></span>';
}
elseif ($row[9]=='Not Validated') { echo '<span class="glyphicon glyphicon-minus-sign"></span>';
} }
?> </td>
<!-- <td><form onsubmit="return submitdata();"
action="delete_open_course.php" method="post"><?php //echo '<input type="hidden" name="course_id" value="'.$row[0].'">';?><input class="btn btn-primary"
type="submit" name="submit" value="Delete" ></form></td> --></tr> <?php } ?> </table> <?php if (isset($_POST['submit'])) { if ($_POST['submit']=='Edit') { $course_id=$_POST['course_id']; $open_course_id=$_POST['open_course_id']; echo $course_id; echo $open_course_id;
$query2=mysqli_query($con,"SELECT * FROM `course` WHERE `course`.`Course_Id`='$course_id'");
$course=mysqli_fetch_row($query2);
$query3=mysqli_query($con,"SELECT * FROM `open_course` WHERE `open_course`.`Course_Id`='$open_course_id'");
$open_course=mysqli_fetch_row($query3); ?>
<table style="margin-bottom: 100px;"> <h1>Edit Course</h1>
<form class="form-horizontal" action="edit_open_course.php" method="post">
<?php echo '<input type="hidden" name="open_course_id" value="'.$open_course_id.'">';?>
<?php echo'<tr><td>Course Title : </td><td><input type="text" name="course_title" value="'.$course[1].'"></td></tr>';?>
<?php echo'<tr><td>Start Registration Date : </td><td><input type="date" name="start_registration_date"
value="'.$open_course[2].'"></td></tr>';?>
<?php echo'<tr><td>End Registration Date : </td><td><input type="date" name="end_registration_date"
value="'.$open_course[3].'"></td></tr>';?>
<tr><td><input type="submit" name="submit" class="btn btn-primary"></td></tr> </form> </table> <?php unset($_POST['submit']); } } ?> </div> </body> </html>
93
Universitas Kristen Petra
4.2.16. Ban User
Banned User adalah proses dimana administrator melakukan banning pada user
yang bermasalah. Segmen ini disimpan dalam “banned_user.php”. Source code
terhadap Ban User dapat dilihat di segmen program 4.19.
Segmen Program 4.19. Source Code Ban User
4.2.17. App Manifest
App Manifest adalah salah satu bagian dalam progressive web app yang
digunakan untuk menyimpan logo dan mengalokasikan service worker. Segmen ini
disimpan dalam “manifest.json”. Source code terhadap App Manifest dapat dilihat di
segmen program 4.20.
<?php include 'server.php'; include 'check_login_session_admin.php'; if (isset($_POST['submit'])) { $username=$_POST['username']; if ($_POST['submit']=='Banned') {mysqli_query($con,"UPDATE `user` SET `Banned_Status` = '1' WHERE `user`.`Username` = '$username'");
}
elseif ($_POST['submit']=='Unbanned') {
mysqli_query($con,"UPDATE `user` SET `Banned_Status` = '0' WHERE `user`.`Username` = '$username'");
}
header("location:manage_user.php"); }
94
Universitas Kristen Petra
Segmen Program 4.20. Source Code App Manifest
4.2.18. Service Worker
Service Worker adalah salah satu bagian dalam progressive web app yang
digunakan untuk menentukan system caching. Segmen ini disimpan dalam “sw.js”.
Source code terhadap Service Worker dapat dilihat di segmen program 4.20.
{
"name":"Apologetika Indonesia Academy", "short_name": "API Academy",
"icons":[ { "src":"/pwa/img/logo-48x48.png", "type":"image/png", "sizes":"48x48" }, { "src":"/pwa/img/logo-96x96.png", "type":"image/png", "sizes":"96x96" }, { "src":"/pwa/img/logo-144x144.png", "type":"image/png", "sizes":"144x144" }, { "src":"/pwa/img/logo-192x192.png", "type":"image/png", "sizes":"192x192" }, { "src":"/pwa/img/logo-256x256.png", "type":"image/png", "sizes":"256x256" }, { "src":"/pwa/img/logo-384x384.png", "type":"image/png", "sizes":"384x384" }, { "src":"/pwa/img/logo-512x512.png", "type":"image/png", "sizes":"512x512" } ], "start_url":"/pwa/index.php", "scope":".", "display":"standalone", "orientation":"potrait-primary", "background":"#000", "theme_color":"#3f51b5",
"description":"This is apologetika indonesia Academy property", "dir":"ltr",
"lang":"en-US" }
95
Universitas Kristen Petra
Segmen Program 4.21. Source Code Service Worker
var CACHE_STATIC_NAME ='static-v4'; var CACHE_DYNAMIC_NAME ='dynamic-v2';
self.addEventListener('install',function(event) {
console.log('[Service Worker] Installing Service Worker ...', event);
event.waitUntil(caches.open(CACHE_STATIC_NAME).then(function(cache){ console.log('[Service Worker] Precacheing App Shell'); // cache.add('/src/js/app.js'); cache.addAll([ '/pwa/', '/pwa/index.php', ]); })); }); self.addEventListener('activate',function(event) {
console.log('[Service Worker] Activating Service Worker ...', event);
event.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function (key){ if(key !== CACHE_STATIC_NAME &&
CACHE_DYNAMIC_NAME)
{
console.log('[Service Worker] Remove Old Cache'); return caches.delete(key); } })); }) ); return self.clients.claim(); }); self.addEventListener('fetch',function(event) {
console.log('[Service Worker] Fetching Service Worker ...', event); // event.respondWith(fetch(event.request)); event.respondWith( caches.match(event.request) .then(function(response) { if (response) {return fetch(event.request) .then(function(res){ return caches.open(CACHE_DYNAMIC_NAME) .then(function(cache) { cache.put(event.request.url, res.clone()); return res; }) }).catch(function(err){return response;})} else{return fetch(event.request) .then(function(res){ return caches.open(CACHE_DYNAMIC_NAME) .then(function(cache) { cache.put(event.request.url, res.clone()); return res; }) }).catch(function(err) { return caches.open(CACHE_STATIC_NAME) .then(function(cache) { return cache.match('/pwa/index.php'); }); }); ;} }) ); // event.waitUntil(update(event.request)); });
96
Universitas Kristen Petra
Segmen Program 4.21. Source Code Service Worker (Sambungan)
4.2.19. Event Time Limit Delete Transaction
Event Time Limit Delete Transaction adalah query yang digunakan untuk
mengubah status transaksi yang limit waktunya telah habis. Source code terhadap
Event ini dapat dilihat di segmen program 4.22.
Segmen Program 4.22. Source Code Even Time Limit Delete Transaction
4.2.20. Event Update Module
Event Update module adalah query yang digunakan untuk mengubah
last_updated_module pada kelas jika sudah waktunya untuk update module baru.
Source code terhadap Event ini dapat dilihat di segmen program 4.23.
Segmen Program 4.23. Source Code Update Module
return caches.open(CACHE_STATIC_NAME) .then(function(cache) { return cache.match('/pwa/index.php'); }); }); ;} }) ); // event.waitUntil(update(event.request)); }); function update(request) {
return caches.open(CACHE).then(function (cache) { return fetch(request).then(function (response) { return cache.put(request, response);
}); }); }
UPDATE `transaction` SET `transaction`.`Status`='Transaction_Failed' WHERE `transaction`.`Time_Limit` < NOW() AND `transaction`.`Payment_Method`='Transfer' AND `transaction`.`Status` != 'Paid'
UPDATE `class` SET
Last_Updated_Module=ABS((DATEDIFF(class.Course_Period,CURDATE())/class.Update_Peri od))+1 WHERE
DATEDIFF(class.Course_Period,CURDATE())/class.Update_Period=ROUND(DATEDIFF(class.C ourse_Period,CURDATE())/class.Update_Period,0) AND
`class`.`Last_Updated_Module`<(SELECT Number_of_modules FROM course WHERE Course_Id=`class`.`Course_Id`)
97
Universitas Kristen Petra
4.2.21. Event User Fail Class
Event Update module adalah query yang digunakan untuk mengubah status
user menjadi fail jika belum menyelesaikan course pada waktu tertentu. Source code
terhadap Event ini dapat dilihat di segmen program 4.24.
Segmen Program 4.24. Source Code Update User Fail Class
UPDATE `user_class` SET `user_class`.`Class_Status`='Failed' WHERE
`user_class`.`Class_Status`='On Going' AND CURDATE()>(SELECT End_Period FROM class WHERE Class_Id=`user_class`.`Class_Id`)