Page Nav

HIDE

Grid

GRID_STYLE

Breaking News

latest

Baca File Format Aiken (Moodle) dengan PHP

Format Aiken   merupakan salah satu format file yang sangat sederhana yang dapat digunakan untuk membuat pertanyaan jenis pilihan ganda  (mu...

Format Aiken merupakan salah satu format file yang sangat sederhana yang dapat digunakan untuk membuat pertanyaan jenis pilihan ganda (multiple choice) di aplikasi Moodle (sebuah aplikasi e-learning open source). Format Aiken memiliki kelebihan yaitu dapat dibuat dengan bantuan aplikasi pengolah teks biasa seperti Notepad, WordPad, GEdit dan sebagainya. Kelemahannya memang tidak bisa mengimport pertanyaan yang memiliki gambar. Untuk lebih jelasnya mengenai format AIKEN ini dapat dilihat di dokumentasi resmi Moodle.

Pada tutorial ini, saya iseng-iseng bikin program PHP sederhana untuk membaca format Aiken tersebut dan memasukannya menjadi sebuah array. Sebenarnya program ini saya perlukan untuk melengkapi sistem pembelajaran online di D3 UnggulanFakultas Teknologi InformasiUniversitas Budi Luhur yang pernah saya buat. Dengan demikian, bank-bank soal yang sudah saya buat dengan format Aiken untuk keperluan kuliah online di sistem elearning S1 dapat digunakan dengan cara import langsung, tanpa perlu mengentri satu-satu lagi. :D

Berikut ini source code program tersebut.


  1. <html>



  2. <head><title>Moodle's Aiken Format Importer</title></head>



  3. <body>



  4. <h1>Choose file to import</h1>



  5. <form action="" method="post" enctype="multipart/form-data">



  6. <input type="file" name="file"/>



  7. <input type="submit" name="Import" value="Import"/>



  8. </form>



  9. <?php



  10. //upload



  11. if(isset($_POST['Import'])) {



  12. if (is_uploaded_file($_FILES['file']['tmp_name'])) {



  13. //read file



  14. $questions = array();



  15. $temp = array();



  16. $handle = fopen($_FILES['file']['tmp_name'], "r");



  17. if ($handle) {



  18. while ($baris = fgets($handle, 4096)) {



  19. if (empty($baris) or trim($baris)=="") {



  20. continue;



  21. }



  22. //echo strip_tags($baris)."<br/>";



  23. $temp[] = trim($baris);



  24. if (preg_match("/ANSWER:/", $baris)) {



  25. array_push($questions, $temp);



  26. $temp = array();



  27. }



  28. }



  29. } else {



  30. die ("Cannot read the file");



  31. }



  32. } else {



  33. die ("File not uploaded");



  34. }



  35. //



  36. $newquestions = array();



  37. foreach($questions as $question) {



  38. $tmp = array();






  39. //get the first member



  40. $question_text = array_shift($question);



  41. //get the last member



  42. $answer = array_pop($question);



  43. $answer = substr($answer,-1);



  44. //the options



  45. $options = array();



  46. for($i=0; $i<count($question); $i++) {



  47. $options[$i]['text'] = htmlspecialchars(substr($question[$i],3));






  48. $options[$i]['right_answer'] = false;



  49. if ($i== ord($answer)-65) {



  50. $options[$i]['right_answer'] = true;



  51. }



  52. }






  53. $tmp['question'] = htmlspecialchars($question_text);



  54. $tmp['options'] = $options;






  55. array_push($newquestions, $tmp);



  56. }






  57. echo "<pre>"; print_r ($newquestions); echo"</pre>";



  58. }



  59. ?>



  60. </body>



  61. </html>



Dan berikut ini alternatif parsing file Format Aiken yang dibuat oleh Konglie Huang (terima kasih atas masukannya, begitu indahnya berbagi pengetahuan….)


  1. <?php



  2. /*



  3. SOURCE: http://docs.moodle.org/22/en/Aiken_format






  4. a. The question must be all on one line.



  5. b. Each answer must start with a single uppercase letter,



  6. c. followed by a period '.' or a bracket ')', then a space.



  7. d. The answer line must immediately follow, starting with "ANSWER: " (NOTE the space after the colon)



  8. and then giving the appropriate letter.






  9. NOTE: script dibawah mengabaikan syarat b



  10. */



  11. function parseAikenFormat($file)



  12. {



  13. $result = array();






  14. if(!is_readable($file))



  15. return FALSE;






  16. $lines = file($file);



  17. if(!is_array($lines))



  18. return FALSE;






  19. $start = true;



  20. $question = array();



  21. foreach($lines as $line)



  22. {



  23. $line = trim($line);



  24. if($line == "") continue;






  25. if($start)



  26. {



  27. $question = array(



  28. 'question' => $line, // syarat a



  29. 'options' => array()



  30. );



  31. $start = false;



  32. }



  33. else if(preg_match("/^ANSWER:\s{1}/", $line))



  34. {



  35. //syarat d, starting with "ANSWER: "



  36. $answer = trim(preg_replace("/^ANSWER:\s{1}/", '', $line));



  37. $question['answer'] = $answer;



  38. $result[] = $question;



  39. $start = true;



  40. }



  41. else



  42. {



  43. $options = explode(' ', $line, 2);



  44. list($opt, $optText) = $options;



  45. // syarat c '.' atau ')'



  46. $opt = trim(preg_replace("/\.|\)/", '', $opt));



  47. $question['options'][$opt] = trim($optText);



  48. }



  49. }






  50. return $result;



  51. }






  52. $aikenFile = "aiken-example.txt";



  53. $parsed = parseAikenFormat($aikenFile);






  54. print_r($parsed);



Semoga contoh program PHP tersebut dapat bermanfaat bagi kita semua.

Sumber - Achmatim.Net

Tidak ada komentar