import of substitutions in MoodleDB (rd)
This commit is contained in:
parent
85f5a13f9f
commit
a6334e6c86
15 changed files with 154 additions and 32 deletions
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
README.md
Normal file → Executable file
0
README.md
Normal file → Executable file
1
block_timetable.php
Normal file → Executable file
1
block_timetable.php
Normal file → Executable file
|
@ -107,6 +107,7 @@ class block_timetable extends block_base {
|
|||
}
|
||||
|
||||
$week = $monday->format("W");
|
||||
$week++;
|
||||
$lastday = new DateTime($monday->format('Y-m-d\TH:i:sP'));
|
||||
$lastday->add(new DateInterval("P".($numdayweek-1)."D"));
|
||||
$this->content->text .= $monday->format('d.m') . " - " . $lastday->format('d.m');
|
||||
|
|
95
classes/task/import_data.php
Normal file → Executable file
95
classes/task/import_data.php
Normal file → Executable 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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
0
composer.json
Normal file → Executable file
0
composer.json
Normal file → Executable file
0
db/access.php
Normal file → Executable file
0
db/access.php
Normal file → Executable file
31
db/install.xml
Normal file → Executable file
31
db/install.xml
Normal file → Executable file
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<XMLDB PATH="blocks/timetable/db" VERSION="20200624" COMMENT="XMLDB file for Moodle blocks/timetable"
|
||||
<XMLDB PATH="blocks/timetable/db" VERSION="20200629" COMMENT="XMLDB file for Moodle blocks/timetable"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
|
||||
>
|
||||
|
@ -30,5 +30,34 @@
|
|||
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
|
||||
</KEYS>
|
||||
</TABLE>
|
||||
<TABLE NAME="timetable_substitution" COMMENT="Substitutions">
|
||||
<FIELDS>
|
||||
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
|
||||
<FIELD NAME="date" TYPE="char" LENGTH="8" NOTNULL="false" SEQUENCE="false" COMMENT="date of substitution"/>
|
||||
<FIELD NAME="period" TYPE="int" LENGTH="2" NOTNULL="false" SEQUENCE="false" COMMENT="period of day"/>
|
||||
<FIELD NAME="absence" TYPE="int" LENGTH="6" NOTNULL="false" SEQUENCE="false" COMMENT="number of absence"/>
|
||||
<FIELD NAME="lesson" TYPE="int" LENGTH="6" NOTNULL="false" SEQUENCE="false" COMMENT="number of lessen"/>
|
||||
<FIELD NAME="teachera" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="absent teacher"/>
|
||||
<FIELD NAME="teacherb" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="substitution teacher"/>
|
||||
<FIELD NAME="subjecta" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="subject"/>
|
||||
<FIELD NAME="statistica" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="statistic flag subject a"/>
|
||||
<FIELD NAME="subjectb" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="subject"/>
|
||||
<FIELD NAME="statisticb" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="statistic flag subject b"/>
|
||||
<FIELD NAME="rooma" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="rooma"/>
|
||||
<FIELD NAME="roomb" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="roomb"/>
|
||||
<FIELD NAME="statisticflag" TYPE="char" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="statistic flag"/>
|
||||
<FIELD NAME="classesa" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="classesa"/>
|
||||
<FIELD NAME="reason" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="reason of substitition"/>
|
||||
<FIELD NAME="text" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="text"/>
|
||||
<FIELD NAME="type" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="type"/>
|
||||
<FIELD NAME="classesb" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="classesb"/>
|
||||
<FIELD NAME="substitutiontype" TYPE="char" LENGTH="1" NOTNULL="false" SEQUENCE="false" COMMENT="type of substitution"/>
|
||||
<FIELD NAME="changetime" TYPE="int" LENGTH="12" NOTNULL="false" SEQUENCE="false" COMMENT="timestamp"/>
|
||||
<FIELD NAME="unknown" TYPE="char" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="undocumented field"/>
|
||||
</FIELDS>
|
||||
<KEYS>
|
||||
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
|
||||
</KEYS>
|
||||
</TABLE>
|
||||
</TABLES>
|
||||
</XMLDB>
|
||||
|
|
0
db/tasks.php
Normal file → Executable file
0
db/tasks.php
Normal file → Executable file
40
db/upgrade.php
Normal file → Executable file
40
db/upgrade.php
Normal file → Executable file
|
@ -53,6 +53,46 @@ function xmldb_block_timetable_upgrade($oldversion) {
|
|||
|
||||
|
||||
}
|
||||
if ($oldversion < 2020063001) {
|
||||
|
||||
// Define table timetable_substitution to be created.
|
||||
$table = new xmldb_table('timetable_substitution');
|
||||
|
||||
// Adding fields to table timetable_substitution.
|
||||
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
|
||||
$table->add_field('date', XMLDB_TYPE_CHAR, '8', null, null, null, null);
|
||||
$table->add_field('period', XMLDB_TYPE_INTEGER, '2', null, null, null, null);
|
||||
$table->add_field('absence', XMLDB_TYPE_INTEGER, '6', null, null, null, null);
|
||||
$table->add_field('lesson', XMLDB_TYPE_INTEGER, '6', null, null, null, null);
|
||||
$table->add_field('teachera', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('teacherb', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('subjecta', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('statistica', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('subjectb', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('statisticb', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('rooma', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('roomb', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('statisticflag', XMLDB_TYPE_CHAR, '10', null, null, null, null);
|
||||
$table->add_field('classesa', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('reason', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('text', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('type', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
|
||||
$table->add_field('classesb', XMLDB_TYPE_CHAR, '255', null, null, null, null);
|
||||
$table->add_field('substitutiontype', XMLDB_TYPE_CHAR, '1', null, null, null, null);
|
||||
$table->add_field('changetime', XMLDB_TYPE_INTEGER, '12', null, null, null, null);
|
||||
$table->add_field('unknown', XMLDB_TYPE_CHAR, '10', null, null, null, null);
|
||||
|
||||
// Adding keys to table timetable_substitution.
|
||||
$table->add_key('primary', XMLDB_KEY_PRIMARY, ['id']);
|
||||
|
||||
// Conditionally launch create table for timetable_substitution.
|
||||
if (!$dbman->table_exists($table)) {
|
||||
$dbman->create_table($table);
|
||||
}
|
||||
|
||||
// Timetable savepoint reached.
|
||||
upgrade_block_savepoint(true, 2020063001, 'timetable');
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
|
|
0
edit_form.php
Normal file → Executable file
0
edit_form.php
Normal file → Executable file
0
lang/de/block_timetable.php
Normal file → Executable file
0
lang/de/block_timetable.php
Normal file → Executable file
4
lang/en/block_timetable.php
Normal file → Executable file
4
lang/en/block_timetable.php
Normal file → Executable file
|
@ -32,8 +32,10 @@ $string['timetable:addinstance'] = 'Add a timetable block';
|
|||
$string['timetable:myaddinstance'] = 'Add a timetable block to my moodle';
|
||||
$string['pluginname'] = 'Timetable';
|
||||
$string['import_data'] = 'import_data';
|
||||
$string['labelfnamelesson'] = 'import file';
|
||||
$string['labelfnamelesson'] = 'lesson import file';
|
||||
$string['descfnamelesson'] = 'Absolute path and Filename of untis import file lesson.txt';
|
||||
$string['labelfnamesubst'] = 'substitution import file';
|
||||
$string['descfnamesubst'] = 'Absolute path and Filename of untis import file GPU014.TXT';
|
||||
$string['labelnumperiod'] = 'max period';
|
||||
$string['descnumperiod'] = 'max period per day';
|
||||
$string['labelsaturday'] = 'saturday';
|
||||
|
|
5
settings.php
Normal file → Executable file
5
settings.php
Normal file → Executable file
|
@ -38,6 +38,11 @@ $settings->add(new admin_setting_configtext('timetable/fnamelesson',
|
|||
get_string('descfnamelesson', 'block_timetable'),
|
||||
''));
|
||||
|
||||
$settings->add(new admin_setting_configtext('timetable/fnamesubst',
|
||||
get_string('labelfnamesubst', 'block_timetable'),
|
||||
get_string('descfnamesubst', 'block_timetable'),
|
||||
''));
|
||||
|
||||
$settings->add(new admin_setting_configtext('timetable/numperiod',
|
||||
get_string('labelnumperiod', 'block_timetable'),
|
||||
get_string('descnumperiod', 'block_timetable'),
|
||||
|
|
2
version.php
Normal file → Executable file
2
version.php
Normal file → Executable file
|
@ -24,6 +24,6 @@
|
|||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2020062702; // The current plugin version (Date: YYYYMMDDXX)
|
||||
$plugin->version = 2020063001; // The current plugin version (Date: YYYYMMDDXX)
|
||||
$plugin->requires = 2012112900; // Requires this Moodle version
|
||||
$plugin->component = 'block_timetable'; // Full name of the plugin (used for diagnostics)
|
||||
|
|
Loading…
Add table
Reference in a new issue