<?php

// Laden van alle EDEX bestanden. 
$aEDEXLL = file ('EDEXLL.txt');
$aEDEXLK = file ('EDEXLK.txt');
$aEDEXGR = file ('EDEXGR.txt');
$aEDEXLG = file ('EDEXLG.txt');
    
### Record-layout leerlinggegevens in EDEXLL.TXT ################################################################
#                                                                                                                #
#      BRON: http://serveropschool.nl/?section=7&page=36                                                        #
#                                                                                                                #
# Een regel in EDEXLL.TXT bevat de volgende gegevens van een leerling.                                            #
# Nr - Veldnaam - Grootte - Positie - Toelichting                                                                #
# 1 achternaam 40 karakters 01 t/m 40                                                                            #
# 2 tussenvoegsel 10 karakters 41 t/m 50                                                                        #
# 3 voornaam 20 karakters 51 t/m 70                                                                                #
# 4 geboortedatum 8 karakters 71 t/m 78 format: DD/MM/JJ [1]                                                    #
# 5 geslacht 1 karakter 79 format J of M                                                                        #
# 6 land van herkomst  1 karakter 80 numeriek: 0 = autochtoon, 1 = allochtoon                                    #
# 7 leerlingkey 5 karakters 81 t/m 85 numeriek [2]                                                                #
# 8 groeps key 5 karakters 86 t/m 90 alfanumeriek [3]                                                            #
#---------------------------------------------------------------------------------------------------------------#
# [1] Er zijn ook pakketten die een dash in plaats van een slash gebruiken, dus DD-MM-JJ.                        #
# Bij het importeren is het verstandig om met beide varianten rekening te houden.                                #
# [2] Er zijn ook pakketten die een (decimale) punt in de leerlingkey opnemen.                                    #
# [3] Een leerling komt in precies één groep voor.                                                                #
#################################################################################################################


### Uitzonderling van EDEX export van ESIS .#####################################################################
# Esis reserveerd niet de juiste hoeveelheid tekens voor Groep dit zorgt voor onregelmatigheid in de regels.    #
# Een groep kan uit meerdere tekens bestaan.                                                                    #
# In de laatste regel van de foreach word er niet van het begin gerekent maar vanaf het einde.                    #
# Zo ontrekken we de datum en groep.                                                                            #
# ESIS gebruikt ook een Schooljaar. Deze staat niet in record lay-out omschreven.                                 #
#################################################################################################################


#### EDEXLL.TXT ####
foreach ($aEDEXLL as $line_num => $line) {

    $aLL[$line_num]['achternaam']	=trim(substr($line, 0,40)," ");    // 1
    $aLL[$line_num]['tussenvoeg']	=trim(substr($line,40,10)," ");    // 2
    $aLL[$line_num]['voornaam']		=trim(substr($line,50,20)," ");    // 3 
    $aLL[$line_num]['geboortedatum']=trim(substr($line,70,8)," ");    // 4
    $aLL[$line_num]['geslacht']		=trim(substr($line,78,1)," ");    // 5
    $aLL[$line_num]['herkomst']		=trim(substr($line,79,1)," ");    // 6 
    $aLL[$line_num]['leerlingkey']	=trim(substr($line,80,5)," ");    // 7 
    $aLL[$line_num]['groep']		=trim(substr($line,85,-11)," ");    // 8 
    $aLL[$line_num]['schooljaar']	=trim(substr($line,-11)," ");    // 9 
    }

#### Einde EDEXLL.TXT ###########################################################################################

### Record-layout leerkrachtgegevens in EDEXLK.TXT ##############################################################
#                                                                                                                #
#      BRON: http://serveropschool.nl/?section=7&page=36                                                        #
#                                                                                                                #
# Een regel in EDEXLK.TXT bevat de volgende gegevens van een leerkracht.                                        #
# Nr - Veldnaam - Grootte - Positie - Toelichting                                                                #
# 1 achternaam 40 karakters 01 t/m 40                                                                            #
# 2 tussenvoegsel 10 karakters 41 t/m 50                                                                        #
# 3 voornaam 20 karakters 51 t/m 70                                                                                #
# 4 leerkrachtkey 5 karakters 71 t/m 75 alfanumeriek                                                            #
#                                                                                                                #
#################################################################################################################


#### EDEX.TXT ####
foreach($aEDEXLK as $line_num =>$line){
    $aLK[$line_num]['achternaam']        =trim(substr($line, 0,40)," ");
    $aLK[$line_num]['tussenvoeg']        =trim(substr($line, 40,10)," ");
    $aLK[$line_num]['voornaam']            =trim(substr($line, 50,20)," ");
    $aLK[$line_num]['leerkrachtkey']    =trim(substr($line, 70,5)," ");
}

#### Einde EDEXLK.TXT ############################################################################################


### Record-layout groepgegevens in EDEXGR.TXT ###################################################################
#                                                                                                                #
#      BRON: http://serveropschool.nl/?section=7&page=36                                                        #
#                                                                                                                #
# Een regel in EDEXGR.TXT bevat de volgende gegevens van een groep.                                                #
# Nr - Veldnaam - Grootte - Positie - Toelichting                                                                #
# 1 groepsnaam 30 karakters 01 t/m 30                                                                            #
# 2 jaargroep 1 karakter 31 1 t/m 8 voor jaargroepen 1 t/m 8;                                                    #
# S voor speciaal onderwijs; H voor historische groepen [1]                                                        #
# 3 groepkey 5 karakters 32 t/m 36 alfanumeriek                                                                    #
#                                                                                                                #
#################################################################################################################

### Uitzonderling van EDEX export van ESIS .#####################################################################
# ESIS staat mEer tekens toe in velden dan word aangegeven in Recaord lay-out                                    #
# In het geval van speciaal onderwijs of combinatie groepen ( 7/8 ) kunnen er meerder tekens in het veld groep    #
# voorkomen. In dit geval is er gekozen dan een groep uit maximaal 5 tekens kan bestaan.                        #
#################################################################################################################

#### EDEXGR.TXT ####
foreach($aEDEXGR as $line_num =>$line){
    $aGR[$line_num]['groepsnaam']        =trim(substr($line, 0,30)," ");    // 1
    $aGR[$line_num]['jaargroep']        =trim(substr($line, 29,5)," ");    // 2
    $aGR[$line_num]['groepskey']        =trim(substr($line, 34)," ");    // 3
}

#### Einde EDEXGR.TXT ###########################################################################################


### Record-layout koppeling leerkrachten en groepen in EDEXLG.TXT ###############################################
#                                                                                                                #
#      BRON: http://serveropschool.nl/?section=7&page=36                                                        #
#                                                                                                                #
# Een regel in EDEXLG.TXT geeft aan welke leerkracht bij welke groep behoort. Hierbij kan het voorkomen dat een    #
# leerkracht bij verschillende groepen behoort, en dat bij een groep verschillende leerkrachten horen.            #
# Nr - Veldnaam -  Grootte - Positie - Toelichting                                                                #
# 1 leerkrachtkey 5 karakters 01 t/m 05 alfanumeriek; zie EDEXLK.TXT; koppeling met veld 4                        #
# 2 groepkey 5 karakters 06 t/m 10 alfanumeriek; zie EDEXGR.TXT; koppeling met veld 3                            #
#################################################################################################################

foreach($aEDEXLG as $line_num =>$line){
    $aLG[$line_num]['leerkrachtkey']    =trim(substr($line, 0,5)," ");    // 1
    $aLG[$line_num]['groepskey']        =trim(substr($line, 5,5)," ");    // 2
}

#### Einde EDEXLG.TXT ###########################################################################################

class cls_EdexXML extends DomDocument{
	private $m_Root;
	private $m_Datum;

	function __construct(){
		parent::__construct('1.0');

		$this->m_Root= $this->createElement("root");
		$this->m_Root= $this->appendChild($this->m_Root);
		
		$this->m_Datum = $this->createElement("update_datum");
		$this->m_Datum = $this->m_Root->appendChild($this->m_Datum);
		$Node = $this->createTextNode(date("m-d-y H:i "));
		$Node = $this->m_Datum->appendChild($Node);

	}

	function XML($ap_List, $p_ElementName){


		foreach ($ap_List as $key => $value){
			$p_ParentElement =  $this->createElement($p_ElementName);
			$p_ParentElement = $this->m_Root->appendChild($p_ParentElement);
			$p_ParentElement->setAttribute("id", $key);
			foreach ($value as $ChildElement =>$Node ){
				if (!empty($ChildElement)){ 
					$ChildElement = $this->createElement($ChildElement);
					$ChildElement = $p_ParentElement->appendChild($ChildElement);
					$Node = $this->createTextNode($Node);
					$Node = $ChildElement->appendChild($Node);
				}    
			}
		}
		
	}
}
?>

<?php
//Print_r($aLL);
$Object = new cls_EdexXML;
$Object->XML($aLL,'leerling');
$Object->XML($aLK,'leerkracht');
$Object->XML($aGR,'groepen');
$Object->XML($aLG,'Leerkachtengroepen');
$Object->save("edex.xml");
?> 