import of substitutions in MoodleDB (rd)

This commit is contained in:
L_DA 2020-06-30 19:26:24 +00:00
parent 85f5a13f9f
commit a6334e6c86
15 changed files with 154 additions and 32 deletions

95
classes/task/import_data.php Normal file → Executable file
View file

@ -20,15 +20,77 @@ class import_data extends \core\task\scheduled_task {
* Execute the task.
*/
public function execute() {
global $DB;
global $DB,$CFG;
$filehash = get_config('block_timetable', 'filehash');
$lastmtime = get_config('block_timetable', 'lastmtime');
$filename = get_config('timetable', 'fnamelesson');
echo $filename;
if (!$filename) return;
$filenamel = get_config('timetable', 'fnamelesson');
$filenames = get_config('timetable', 'fnamesubst');
if ($filenames && (file_exists ($filenames))) {
if (($handle = fopen($filenames, 'r')) !== FALSE) {
$hash = hash_file('md5', $filenames);
if ($hash != $filehash) {
$max_id = 0;
$max_changetime = 0;
if ($result = $DB->get_record_sql("select max(id), max(changetime) from {$CFG->prefix}timetable_substitution")) {
$max_id = $result->{'max(id)'};
$max_changetime = $result->{'max(changetime)'};
}
echo "Max id = $max_id\n";
echo "Max changetime = $max_changetime\n";
try {
$transaction = $DB->start_delegated_transaction();
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
$dataobject = (object)array('id' => $data[0],
'date' => $data[1],
'period' => $data[2],
'absence' => $data[3],
'lesson' => $data[4],
'teachera' => $data[5],
'teacherb' => $data[6],
'subjecta' => utf8_encode($data[7]),
'statistica' => $data[8],
'subjectb' => utf8_encode($data[9]),
'statisticb' => $data[10],
'rooma' => $data[11],
'roomb' => $data[12],
'statisticflag' => $data[13],
'classesa' => utf8_encode($data[14]),
'reason' => utf8_encode($data[15]),
'text' => utf8_encode($data[16]),
'type' => $data[17],
'classesb' => utf8_encode($data[18]),
'substitutiontype' => $data[19],
'changetime' => $data[20],
'unknown' => $data[21]);
//echo var_dump($dataobject);
foreach (get_object_vars($dataobject) as $key => $value) {
if ($value=='') unset($dataobject->{$key});
}
if ($dataobject->id > $max_id) {
$DB->insert_record_raw("timetable_substitution", $dataobject,false, false, true);
echo "Object (id={$data[0]}) inserted\n";
} elseif ($dataobject->changetime >= $max_changetime) {
$DB->update_record("timetable_substitution", $dataobject);
echo "Object (id={$data[0]}) updated\n";
}
}
$transaction->allow_commit();
fclose($handle);
set_config('filehash', $hash, 'block_timetable');
} catch(Exception $e) {
$transaction->rollback($e);
}
}
}
}
//$filename = "/srv/stundenplan/lesson.txt";
echo "Lastmtime = $lastmtime\n";
if (file_exists ( $filename )) {
$mtime = filemtime ( $filename );
if ($filenamel && (file_exists ($filenamel))) {
$mtime = filemtime ( $filenamel );
echo "mtime = $mtime\n";
if ($mtime<=$lastmtime) return;
echo "after return\n";
@ -37,31 +99,13 @@ class import_data extends \core\task\scheduled_task {
echo "before delete\n";
$DB->delete_records_select("timetable_lesson", "id>0");
echo "after delete\n";
$handle = @fopen($filename, "r");
$handle = @fopen($filenamel, "r");
echo "after handle\n";
while (($buffer = fgets($handle, 4096)) !== false) {
// echo $buffer;
$buffer = utf8_encode(rtrim($buffer));
$data = explode("\t", $buffer);
// echo "Num elements: ".count($data)."\n";
if (count($data) != 10) throw new Exception('Wrong size of elements');
// echo "after count data \n";
// echo "data 0 =$data[0]\n";
/*
$dataobject = new stdClass();
//$dataobject = new object;
$dataobject->teacher = $data[0];
$dataobject->day = $data[1];
$dataobject->period = $data[2];
$dataobject->subject = $data[3];
$dataobject->room = $data[4];
$dataobject->lessonid= $data[5];
$dataobject->flag = $data[6];
$dataobject->class = $data[7];
$dataobject->week = $data[8];
$dataobject->unknown = $data[9];
*/
$dataobject = (object)array('teacher' => $data[0],
'day' => $data[1],
'period' => $data[2],
@ -73,7 +117,6 @@ class import_data extends \core\task\scheduled_task {
'week' => $data[8],
'unknown' => $data[9]);
// echo "after dataobject\n";
$DB->insert_record("timetable_lesson", $dataobject);
}
$transaction->allow_commit();

View file

@ -46,8 +46,8 @@ class timetable {
global $USER, $DB, $CFG;
$this->week = $week;
//$sql = "$this->type = '$this->name' and not (mid(week, $this->week, 1) = '0')";
$sql = "$this->type = '$this->name' and (mid(week, $this->week, 1) = '1')";
$sql = "$this->type = '$this->name' and not (mid(week, $this->week, 1) = '0')";
//$sql = "$this->type = '$this->name' and (mid(week, $this->week, 1) = '1')";
if ($result = $DB->get_records_select('timetable_lesson',$sql)) {
foreach ($result as $lesson) {
$this->data[$lesson->day][$lesson->period][] = $lesson;
@ -84,7 +84,9 @@ class timetable {
foreach ($this->data[$k][$i] as $lesson) {
if ($content) $content .= "<br>";
if ($lesson->flag) $content .= "<span style='color:red;'>";
$content .= $lesson->{$view};
//if (substr($lesson->week,$this->week,1) == '1') $content .= $lesson->{$view};
if ($lesson->week[$this->week-1] == '1') $content .= $lesson->{$view};
if ($lesson->week[$this->week-1] == 'x') $content .= "---";
if ($lesson->flag) $content .= "</span>";
$flag += $lesson->flag;
}