• Tidak ada hasil yang ditemukan

4. IMPLEMENTASI SISTEM

N/A
N/A
Protected

Academic year: 2021

Membagikan "4. IMPLEMENTASI SISTEM"

Copied!
32
0
0

Teks penuh

(1)

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.

(2)

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 {

(3)

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'); } ?>

(4)

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"); ?>

(5)

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"); ?>

(6)

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");

} }

(7)

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"); }

(8)

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]'"); } } } ?>

(9)

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';");

} }

(10)

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>';

(11)

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>';

} ?>

(12)

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": [

(13)

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",

(14)

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.' {

(15)

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;

(16)

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,

(17)

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": {

(18)

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": ""

(19)

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": "",

(20)

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);

(21)

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); } } ?>

(22)

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'); ?>

(23)

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"); } ?>

(24)

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"); }

(25)

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"); ?>

(26)

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{

(27)

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>

(28)

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"); }

(29)

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" }

(30)

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)); });

(31)

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`)

(32)

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`)

Referensi

Dokumen terkait

Sesuai dengan sifatnya yang sangat dipengaruhi oleh kondisi perairan, lingkungan bagi kegiatan budi daya laut dalam karamba jaring apung sangat menentukan keberhasilan usaha.

Bakteri koliform dapat dihitung dengan menggunakan metode cawan petri (metode  perhitungan secara tidak langsung yang didasarkan pada anggapan bahwa setiap sel yang

Website Century Healthcare dikategorikan dalam nonexistent, dimana website tidak ada media komunitas yang disediakan kepada pelanggan untuk berinteraksi satu dengan lainnya,

Dalam penggalan cerita diatas terlihat bahwa Prabu Brawijaya sedang bertitah kepada kedua abdinya. Beliau merasa telah saatnya mundur dan tidak menjabat sebagai

Tanggungan keluarga adalah orang atau orang-orang yang masih berhubungan keluarga atau masih dianggap berhubungan keluarga serta hidupnya pun ditangung (Ridwan

b. dalam hal anak yang diangkat adalah anak yang dilahirkan di luar nikah, diperlukan persetujuan dari kedua orang tuanya, jika anak tersebut diakui sebagai

Variabel dependen yang digunakan adalah data profitabilitas, struktur aktiva, ukuran perusahaan dan struktur modal pada perusahaan manufaktur yang terdaftar di Bursa Efek

I HSG pada perdagangan kemarin berhasil menguat terbatas teru- tama ditopang aksi beli atas saham tambang logam dan energi menyusul kenaikan harga komoditasnya.. Lonjakan