first version
This commit is contained in:
parent
83a8dc5d90
commit
52f3f359af
10 changed files with 633 additions and 344 deletions
|
|
@ -243,6 +243,118 @@ class import_data extends \core\task\scheduled_task {
|
|||
}
|
||||
}
|
||||
|
||||
private function read_absence() {
|
||||
global $DB,$CFG;
|
||||
$filehash = get_config('timetable', 'filehash_abs');
|
||||
$filename = get_config('timetable', 'fname_absence');
|
||||
|
||||
if (!$filename || !file_exists($filename)) return;
|
||||
if (($handle = fopen($filename, 'r')) == FALSE) return;
|
||||
$hash = hash_file('md5', $filename);
|
||||
if ($hash == $filehash) return;
|
||||
try {
|
||||
$transaction = $DB->start_delegated_transaction();
|
||||
echo "before delete\n";
|
||||
$DB->delete_records_select("timetable_absence", "id>0");
|
||||
echo "after delete\n";
|
||||
$handle = @fopen($filename, "r");
|
||||
echo "after handle\n";
|
||||
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
|
||||
$dataobject = (object)array('id' => $data[0],
|
||||
'type' => $data[1],
|
||||
'name' => utf8_encode($data[2]),
|
||||
'startdate' => $data[3],
|
||||
'enddate' => $data[4],
|
||||
'startperiod' => $data[5],
|
||||
'endperiod' => $data[6],
|
||||
'reason' => utf8_encode($data[7]),
|
||||
'text' => utf8_encode($data[8]));
|
||||
//echo var_dump($dataobject);
|
||||
foreach (get_object_vars($dataobject) as $key => $value) {
|
||||
if ($value=='') unset($dataobject->{$key});
|
||||
}
|
||||
$DB->insert_record("timetable_absence", $dataobject);
|
||||
}
|
||||
$transaction->allow_commit();
|
||||
fclose($handle);
|
||||
set_config('filehash_abs', $hash, 'timetable');
|
||||
} catch(Exception $e) {
|
||||
$transaction->rollback($e);
|
||||
}
|
||||
}
|
||||
|
||||
private function read_absence_reason() {
|
||||
global $DB,$CFG;
|
||||
$filehash = get_config('timetable', 'filehash_absreas');
|
||||
$filename = get_config('timetable', 'fname_absence_reason');
|
||||
|
||||
if (!$filename || !file_exists($filename)) return;
|
||||
if (($handle = fopen($filename, 'r')) == FALSE) return;
|
||||
$hash = hash_file('md5', $filename);
|
||||
if ($hash == $filehash) return;
|
||||
try {
|
||||
$transaction = $DB->start_delegated_transaction();
|
||||
echo "before delete\n";
|
||||
$DB->delete_records_select("timetable_absence_reason", "id>0");
|
||||
echo "after delete\n";
|
||||
$handle = @fopen($filename, "r");
|
||||
echo "after handle\n";
|
||||
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
|
||||
$dataobject = (object)array('reason' => utf8_encode($data[0]),
|
||||
'description' => utf8_encode($data[1]),
|
||||
'flag' => $data[2],
|
||||
'statistic' => $data[3]);
|
||||
//echo var_dump($dataobject);
|
||||
foreach (get_object_vars($dataobject) as $key => $value) {
|
||||
if ($value=='') unset($dataobject->{$key});
|
||||
}
|
||||
$DB->insert_record("timetable_absence_reason", $dataobject);
|
||||
}
|
||||
$transaction->allow_commit();
|
||||
fclose($handle);
|
||||
set_config('filehash_absreas', $hash, 'timetable');
|
||||
} catch(Exception $e) {
|
||||
$transaction->rollback($e);
|
||||
}
|
||||
}
|
||||
|
||||
private function read_times() {
|
||||
global $DB,$CFG;
|
||||
$filehash = get_config('timetable', 'filehash_times');
|
||||
$filename = get_config('timetable', 'fname_times');
|
||||
|
||||
if (!$filename || !file_exists($filename)) return;
|
||||
if (($handle = fopen($filename, 'r')) == FALSE) return;
|
||||
$hash = hash_file('md5', $filename);
|
||||
if ($hash == $filehash) return;
|
||||
try {
|
||||
$transaction = $DB->start_delegated_transaction();
|
||||
echo "before delete\n";
|
||||
$DB->delete_records_select("timetable_time", "id>0");
|
||||
echo "after delete\n";
|
||||
$handle = @fopen($filename, "r");
|
||||
echo "after handle\n";
|
||||
while (($buffer = fgets($handle, 4096)) !== false) {
|
||||
// echo $buffer;
|
||||
$buffer = utf8_encode(rtrim($buffer));
|
||||
$data = explode("\t", $buffer);
|
||||
|
||||
$dataobject = (object)array('day' => $data[0],
|
||||
'period' => $data[1],
|
||||
'maxperiod' => $data[2],
|
||||
'starttime' => $data[3],
|
||||
'endtime' => $data[4]);
|
||||
|
||||
$DB->insert_record("timetable_time", $dataobject);
|
||||
}
|
||||
$transaction->allow_commit();
|
||||
fclose($handle);
|
||||
set_config('filehash_times', $hash, 'timetable');
|
||||
} catch(Exception $e) {
|
||||
$transaction->rollback($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the task.
|
||||
*/
|
||||
|
|
@ -254,6 +366,9 @@ class import_data extends \core\task\scheduled_task {
|
|||
$this->read_teacher();
|
||||
$this->read_room();
|
||||
$this->read_class();
|
||||
$this->read_absence();
|
||||
$this->read_absence_reason();
|
||||
$this->read_times();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue