Forráskód Böngészése

Update 'ilm_handlers/java.php'

Synchronizing iAssign Git with the current iAssign stable version (until Moodle 5.0).
Small changes in: ilm_manager.php, lang/*/iassign.php
Bigger changes in: ilm_manager_form.php, lib.php, settings_form.php, settings.php, version.php, backup/moodle2/*.php, ilm_debug/escreva.php, ilm_handlers/java.php
New iLM versions: iassign/ilm/iFractions/, iassign/ilm/iHanoi/, iassign/ilm/iVProg/
New file (was missing): settings_activities.php
leo 2 hete
szülő
commit
22edb8f9af
1 módosított fájl, 103 hozzáadás és 100 törlés
  1. 103 100
      ilm_handlers/java.php

+ 103 - 100
ilm_handlers/java.php

@@ -174,7 +174,7 @@ class java implements ilm_handle {
       }
       </script>'; // '
     return $verify_java . $html;
-    }
+    } // public static function build_ilm_tags($ilm_id, $options = array())
 
 
   /// Presents an activity with its iLM
@@ -182,30 +182,42 @@ class java implements ilm_handle {
     global $USER, $CFG, $DB;
 
     $ilm = $DB->get_record('iassign_ilm', array('id' => $iassign_statement_activity_item->iassign_ilmid));
-
     // enderecoPOST: eliminei a tag '&write_solution=0' deixando para este 'view' completar, eventualmente com '&write_solution=1'!
-
     $special_param1 = $iassign_statement_activity_item->special_param1;
 
     $context = context_module::instance($USER->cm);
 
+    //D if ($USER->id==3) echo "<br/> * java.php: show_activity_in_ilm(.): {context}.id=" . $context->id . ", iassign_statement_activity_item.id=" . $iassign_statement_activity_item->id . ", view_teacherfileversion=" . $view_teacherfileversion . "<br/>\n";
     //TODO Given an activity => find its correspondent file in Moodle data. Bad solution!
     //TODO Change the meaning of 'iassign_statement.file' from insertion order to the ID in table 'files'.
     //TODO This demands update to each 'iassign_statement', find its corresponding on in 'files', and update 'iassign_statement.file = files.id'
     if ($view_teacherfileversion) { // get the exercise in Moodle data (teacher file)
+      //D if ($USER->id==3) echo " * java.php: show_activity_in_ilm(.): iassign_statement_activity_item.id=" . $iassign_statement_activity_item->id . ": carrega " . $CFG->dirroot . '/mod/iassign/files_functions.php' . "<br/>\n";
       $fileid = "";
       $fs = get_file_storage();
-      $files = $fs->get_area_files($context->id, 'mod_iassign', 'exercise', $iassign_statement_activity_item->file); // iassign_statement_activity_item = table 'iassign_statement'
-      if ($files) {
-        foreach ($files as $value) {
-          if ($value->get_filename() != '.')
-            $fileid = $value->get_id();
-          }
+
+      require_once($CFG->dirroot . '/mod/iassign/files_functions.php');
+      $answer_files = get_from_files(
+        $iassign_statement_activity_item->id, $iassign_statement_activity_item->file, $iassign_statement_activity_item->filesid,
+        $fs, $context->id, 'mod_iassign', 'exercise');
+
+      //D if ($USER->id==3) echo " * java.php: show_activity_in_ilm(.): #answer_files=" . count($answer_files) . "<br/>\n"; //exit;
+      if ($answer_files == NULL) { // Error: no {files} were found in this context with these 3 itemid
+        //D print "Error: {iassign_statement}.id=" . $iassign_statement_activity_item->id . " associated file not found!<br/>\n";
+        $one_files = NULL;
+        $one_files_id = -1;
+        $one_files_filename = "<empty>";
+        }
+      else {
+        $one_files = $answer_files[0]; // get $f1_obj from 'files_functions.php!get_from_files(.)'
+        $one_files_id = $one_files->get_id(); // write_iLM_security(.) will use this ID to get file content
+        $one_files_filename = $one_files->get_filename();
+        //D if ($USER->id==3) echo " &nbsp; + {files} : id=" . $one_files_id . ", itemid=" . $one_files->get_itemid() . ", filename=" . $one_files_filename . "<br/>\n"; //leo
         }
-      if (!$fileid) { // 'Something is wrong. Maybe your teacher withdrew this exercise file. Please, inform your teacher.';
+      if ($one_files_id == -1) { // 'Something is wrong. Maybe your teacher withdrew this exercise file. Please, inform your teacher.';
         print iassign::warning_message_iassign('error_exercise_removed') . "<br/>\n"; // I couldn't find the file in table 'files'!
         }
-      }
+      } // if ($view_teacherfileversion)
 
     $ilm_name = strtolower($ilm->name);
     $extension = iassign_utils::filename_extension($ilm_name);
@@ -261,8 +273,7 @@ class java implements ilm_handle {
     $end_file = $CFG->wwwroot . '/mod/iassign/ilm_security.php?id=' . $id_iLM_security . '&token=' . $token . '&view=' . $view_teacherfileversion; // need full path...
     //TODO iLM_HTML5 :: Need to use '*_iassign_ilm.ilm_type' in { 'jar', 'html5' }
     //TODO iLM_HTML5 :: For now I use the particular case of
-    //leo Ou usar: if ($extension == "html" || $extension == "ivph") // if iLM is HTML5 is inside a frame
-
+    //leo TODO or to use: if ($extension == "html" || $extension == "ivph") // if iLM is HTML5 is inside a frame
 
     $iassign = "
   <script type='text/javascript'>
@@ -285,8 +296,6 @@ class java implements ilm_handle {
    //]]>
   </script>\n"; //
 
-
-
     $iassign .= "\n<center>\n<form name='formEnvio' id='formEnvio' method='post' action='$enderecoPOST' enctype='multipart/form-data'>\n";
 
     // Attention: The actual iLM content will be provided by the indirect access in './mod/iassign/ilm_security.php',
@@ -295,19 +304,18 @@ class java implements ilm_handle {
     // Calls static function bellow: parameters are data to store in table '*_iassign_submission'
     //leo $iassign .= ilm_settings::build_ilm_tags($this->ilm->id, array(
     $iassign .= ilm_settings::build_ilm_tags($ilm->id, array(//leo para testar 'iassign_security'
-          "type" => "activity",
-          "notSEND" => "false",
-          "addresPOST" => $enderecoPOST,
-          "Proposition" => $end_file,
-          "special_param" => $special_param1,
-          "student_answer" => $student_answer,
-          "id_iLM_security" => $id_iLM_security,
-          "iassign_statement" => $iassign_statement_activity_item->id // MOOC 2016
-    ));
+      "type" => "activity",
+      "notSEND" => "false",
+      "addresPOST" => $enderecoPOST,
+      "Proposition" => $end_file,
+      "special_param" => $special_param1,
+      "student_answer" => $student_answer,
+      "id_iLM_security" => $id_iLM_security,
+      "iassign_statement" => $iassign_statement_activity_item->id // MOOC 2016
+      ));
 
     if (!isguestuser() && $iassign_statement_activity_item->type_iassign != 1 
         && ($ilm->editingbehavior == 1 || ($ilm->editingbehavior == 0 && !in_array($_GET['action'], array('viewsubmission', 'view'))))) {
-
       $iassign .= " <input type='hidden' name='iLM_PARAM_ArchiveContent' value=''>\n";
       $iassign .= " <input type='hidden' name='iLM_PARAM_ActivityEvaluation' value=''>\n";
 
@@ -318,29 +326,28 @@ class java implements ilm_handle {
 
       if ($allow_submission) { // it is not iGeom
         $iassign .= "<center>\n<!-- load button -->\n" .
-            "  <input type=button value='" . get_string('submit_iassign', 'iassign') . "' onClick = 'javascript:window.jsAnalyseAnswer();' title='" .
-            get_string('message_submit_iassign', 'iassign') . "'>\n" . "</center>\n";
-        } else {
+          "  <input type=button value='" . get_string('submit_iassign', 'iassign') . "' onClick = 'javascript:window.jsAnalyseAnswer();' title='" .
+          get_string('message_submit_iassign', 'iassign') . "'>\n" . "</center>\n";
+        }
+      else {
         // Works with 'javascript:window.jsAnalyseAnswer()' or simply 'jsAnalyseAnswer()'
         $iassign .= "<center>\n<!-- load button -->\n" .
-            "  <input type=button value='" . get_string('submit_iassign', 'iassign') . "' onClick = 'javascript:window.jsAnalyseAnswer();' title='" .
-            get_string('message_submit_iassign', 'iassign') . "'>\n" . "</center>\n";
+          "  <input type=button value='" . get_string('submit_iassign', 'iassign') . "' onClick = 'javascript:window.jsAnalyseAnswer();' title='" .
+          get_string('message_submit_iassign', 'iassign') . "'>\n" . "</center>\n";
         }
       } // if (!isguestuser() && $iassign_statement_activity_item->type_iassign != 1)
       elseif ($ilm->editingbehavior == 0) {
-      
-        $iassign .= "<center><br><a href=\"view.php?action=repeat&id=".$_GET['id']
-              ."&iassign_current=".$_GET['iassign_current']."\">
-                <input type='button' value='".get_string('repeat', 'iassign')."'></a></center>";
+        $iassign .= "<center><br><a href=\"view.php?action=repeat&id=" . $_GET['id'] .
+          "&iassign_current=" . $_GET['iassign_current'] . "\">" .
+          "<input type='button' value='" . get_string('repeat', 'iassign') . "'></a></center>\n";
       }
     $iassign .= "</form></center>\n\n";
     return $iassign;
     }
 
-  /**
-   * Exibe os dados de um iLM
-   */
-  public static function view_ilm($ilmid, $from) {
+
+  /// Presents the iLM and its content
+  public static function view_ilm ($ilmid, $from) {
     global $DB;
 
     $url = new moodle_url('/admin/settings.php', array('section' => 'modsettingiassign'));
@@ -361,7 +368,8 @@ class java implements ilm_handle {
       $iassign_statement_activity_item = $DB->get_records('iassign_statement', array("iassign_ilmid" => $iassign_ilm->id));
       if ($iassign_statement_activity_item) {
         $total = count($iassign_statement_activity_item);
-        } else {
+        }
+      else {
         $total = 0;
         }
 
@@ -380,14 +388,16 @@ class java implements ilm_handle {
         $str .= '<td ><strong>' . get_string('file_class', 'iassign') . ':</strong>&nbsp;' . $iassign_ilm->file_class . '</td></tr>' . "\n";
         if ($iassign_ilm->evaluate == 1) {
           $evaluate = get_string('yes', 'iassign');
-          } else {
+          }
+        else {
           $evaluate = get_string('no', 'iassign');
           }
 
         $str .= '<tr><td width="50%"><strong>' . get_string('evaluate', 'iassign') . ':</strong>&nbsp;' . $evaluate . '</td>' . "\n";
         if ($iassign_ilm->enable == 1) {
           $enable = get_string('yes', 'iassign');
-          } else {
+          }
+        else {
           $enable = get_string('no', 'iassign');
           }
         $str .= '<td width="50%"><strong>' . get_string('enable', 'iassign') . ':</strong>&nbsp;' . $enable . '</td></tr>' . "\n";
@@ -416,7 +426,8 @@ class java implements ilm_handle {
 
         //TODO: REVIEW: missing code to manage parameters
         //MOOC2014: tem este codigo!
-        } else {
+        }
+      else {
         $str .= '<tr class=\'cell c0 actvity\'>' . "\n";
         $str .= '<td colspan=2 align=center>' . get_string('null_file', 'iassign') . '</td>' . "\n";
         $str .= '<td align=center><a href="' . $url . '</a></td>' . "\n";
@@ -428,20 +439,17 @@ class java implements ilm_handle {
     $str .= '</table>' . "\n";
 
     return $str;
-    }
+    } //  public static function view_ilm($ilmid, $from)
+
 
-  /**
-   * Copia ou gera uma nova versão do iLM
-   */
-  public static function copy_new_version_ilm($param, $files_extract) {
+  /// Copy or build a new version of iLM
+  public static function copy_new_version_ilm ($param, $files_extract) {
     global $DB, $CFG;
 
     $iassign_ilm = new stdClass();
     $iassign_ilm->name = $param->name;
     $iassign_ilm->version = $param->version;
     $iassign_ilm->file_jar = null;
-
-
     $file_jar = null;
     if (!is_null($files_extract)) {
       foreach ($files_extract as $key => $value) {
@@ -450,10 +458,9 @@ class java implements ilm_handle {
           $extract->file_jar = $key;
           $extract->name = $param->name;
           $extract->version = $param->version;
-
-          echo $key;
+          print $key;
           $file_jar = self::save_ilm_by_xml($extract, $files_extract)[0];
-          echo $file_jar;
+          print $file_jar;
           break;
           }
         }
@@ -489,7 +496,7 @@ class java implements ilm_handle {
     // log event --------------------------------------------------------------------------------------
     iassign_log::add_log('copy_iassign_ilm', 'name: ' . $param->name . ' ' . $param->version, 0, $newentry->id);
     // log event --------------------------------------------------------------------------------------
-    }
+    } // public static function copy_new_version_ilm($param, $files_extract)
 
 
   /// Export an iLM to a package of the iLM (with its descriptor XML)
@@ -515,7 +522,6 @@ class java implements ilm_handle {
 
     foreach ($allfiles as $file) {
       $mini = basename(str_replace($CFG->dirroot . '/mod/iassign/ilm/', "", $file));
-
       if (!is_dir($file)) {
         $zip->add_file_from_pathname($mini, $file);
         $base_jar = $mini;
@@ -566,9 +572,10 @@ class java implements ilm_handle {
     @readfile("$zip_filename") || die("File not found.");
     unlink($zip_filename);
     exit;
-    }
+    } // public static function export_ilm($ilm_id)
+
 
-  public static function delete_ilm($ilm_id) {
+  public static function delete_ilm ($ilm_id) {
     global $DB, $CFG, $OUTPUT;
 
     $iassign_ilm = $DB->get_record('iassign_ilm', array('id' => $ilm_id));
@@ -604,30 +611,27 @@ class java implements ilm_handle {
     // log event --------------------------------------------------------------------------------------
 
     return $iassign_ilm->parent;
-    }
-
-  /*public static function delete_ilm($ilm_id) {
-    global $DB, $CFG;
-
-    $fs = get_file_storage();
-    $contextsystem = context_system::instance();
-    $iassign_ilm = $DB->get_record('iassign_ilm', array('id' => $ilm_id));
-
-    $files_jar = explode(",", $iassign_ilm->file_jar);
-    foreach ($files_jar as $file_jar) {
-      $file = $fs->get_file_by_id($file_jar);
-      if ($file)
-        $fs->delete_area_files($contextsystem->id, 'mod_iassign', 'ilm', $file->get_itemid());
-      }
-
-    $DB->delete_records("iassign_ilm", array('id' => $ilm_id));
-    $DB->delete_records("iassign_ilm_config", array('iassign_ilmid' => $ilm_id)); //MOOC 2016
-    // log event --------------------------------------------------------------------------------------
-    iassign_log::add_log('delete_iassign_ilm', 'name: ' . $iassign_ilm->name . ' ' . $iassign_ilm->version, 0, $iassign_ilm->id);
-    // log event --------------------------------------------------------------------------------------
-
-    return $iassign_ilm->parent;
-    }*/
+    } // public static function delete_ilm($ilm_id)
+
+
+  //x public static function delete_ilm($ilm_id) {
+  //x global $DB, $CFG;
+  //x $fs = get_file_storage();
+  //x $contextsystem = context_system::instance();
+  //x $iassign_ilm = $DB->get_record('iassign_ilm', array('id' => $ilm_id));
+  //x $files_jar = explode(",", $iassign_ilm->file_jar);
+  //x foreach ($files_jar as $file_jar) {
+  //x   $file = $fs->get_file_by_id($file_jar);
+  //x   if ($file)
+  //x     $fs->delete_area_files($contextsystem->id, 'mod_iassign', 'ilm', $file->get_itemid());
+  //x   }
+  //x $DB->delete_records("iassign_ilm", array('id' => $ilm_id));
+  //x $DB->delete_records("iassign_ilm_config", array('iassign_ilmid' => $ilm_id)); //MOOC 2016
+  //x // log event --------------------------------------------------------------------------------------
+  //x iassign_log::add_log('delete_iassign_ilm', 'name: ' . $iassign_ilm->name . ' ' . $iassign_ilm->version, 0, $iassign_ilm->id);
+  //x // log event --------------------------------------------------------------------------------------
+  //x return $iassign_ilm->parent;
+  //x }
 
 
   /// Register data from an iLM after to updated it
@@ -648,9 +652,9 @@ class java implements ilm_handle {
           $extract->name = $param->name;
           $extract->version = $param->version;
 
-          echo $key;
+          print $key;
           $file_jar = self::save_ilm_by_xml($extract, $files_extract)[0];
-          echo $file_jar;
+          print $file_jar;
           break;
           }
         }
@@ -682,13 +686,11 @@ class java implements ilm_handle {
     // log event --------------------------------------------------------------------------------------
     iassign_log::add_log('update_iassign_ilm', 'name: ' . $param->name . ' ' . $param->version, 0, $param->id);
     // log event --------------------------------------------------------------------------------------
-    }
+    } // public static function edit_ilm($param, $itemid, $files_extract, $contextuser)
 
-  /**
-   * Realiza os procedimentos relacionados ao armazenamento dos dados do iLM e seus arquivos
-   */
-  public static function new_ilm($itemid, $files_extract, $application_xml, $contextuser, $fs) {
 
+  /// Realiza os procedimentos relacionados ao armazenamento dos dados do iLM e seus arquivos
+  public static function new_ilm ($itemid, $files_extract, $application_xml, $contextuser, $fs) {
     global $DB, $CFG, $USER, $OUTPUT;
 
     $description_str = str_replace(array('<description>', '</description>'), array('', ''), $application_xml->description->asXML());
@@ -702,7 +704,8 @@ class java implements ilm_handle {
         }
 
       print($OUTPUT->notification(get_string('error_import_ilm_version', 'iassign'), 'notifyproblem'));
-      } else {
+      }
+    else {
       $file_jar = self::save_ilm_by_xml($application_xml, $files_extract);
 
       if (empty($file_jar))
@@ -763,13 +766,12 @@ class java implements ilm_handle {
 
     $fs->delete_area_files($contextuser->id, 'user', 'draft', $itemid);
     return true;
-    }
+    } // public static function new_ilm($itemid, $files_extract, $application_xml, $contextuser, $fs)
 
-  /**
-   * Realiza os procedimentos relacionados ao armazenamento de um iLM por meio da importação
-   */
-  public static function import_ilm($itemid, $files_extract, $application_xml, $contextuser, $fs) {
 
+  /// Perform all the necessary steps to import a new iLM
+  //  It creates the directory "./mod/iassign/ilm/<iLM name>/<version>/" and the inserts in {iassign_ilm}
+  public static function import_ilm ($itemid, $files_extract, $application_xml, $contextuser, $fs) {
     global $DB, $CFG, $USER, $OUTPUT;
 
     $description_str = str_replace(array('<description>', '</description>'), array('', ''), $application_xml->description->asXML());
@@ -783,7 +785,8 @@ class java implements ilm_handle {
         }
 
       print($OUTPUT->notification(get_string('error_import_ilm_version', 'iassign'), 'notifyproblem'));
-      } else {
+      }
+    else {
       $file_jar = self::save_ilm_by_xml($application_xml, $files_extract);
 
       if (empty($file_jar))
@@ -802,9 +805,7 @@ class java implements ilm_handle {
         $newentry->url = (String) $application_xml->url;
         $newentry->description = strip_tags($description_str);
         $newentry->extension = strtolower((String) $application_xml->extension);
-
         $newentry->file_jar = implode(",", $file_jar);
-
         $newentry->file_class = (String) $application_xml->file_class;
         $newentry->width = (String) $application_xml->width;
         $newentry->height = (String) $application_xml->height;
@@ -840,14 +841,14 @@ class java implements ilm_handle {
       } // else if ($iassign_ilm)
 
     $fs->delete_area_files($contextuser->id, 'user', 'draft', $itemid);
-    }
+    } // public static function import_ilm($itemid, $files_extract, $application_xml, $contextuser, $fs)
+
 
   /// Function for save iLM from XML descriptor
   //  @param array $application_xml Data of XML descriptor
   //  @param array $files_extract Filenames of extract files
   //  @return array Return an array content id of JAR files
-  static function save_ilm_by_xml($application_xml, $files_extract) {
-
+  static function save_ilm_by_xml ($application_xml, $files_extract) {
     global $CFG, $USER, $OUTPUT;
 
     // Check if the iLM directory is writable
@@ -913,6 +914,7 @@ class java implements ilm_handle {
     return $files;
     }
 
+
   /// Function for delete directory where the iLM is allocated.
   //  @param string $dirPath
   //  @throws InvalidArgumentException
@@ -924,7 +926,8 @@ class java implements ilm_handle {
     foreach ($files as $file) {
       if (is_dir($file)) {
         self::delete_dir($file);
-      } else {
+        }
+      else {
         unlink($file);
         }
       }