#!/usr/bin/perl

# Module Laden
use strict;
#use Getopt::Long;
use DBI;

my ($uid, $uidNum, $dn);

# Parameter mit GetOpt einlesen
#
#GetOptions(
#            "uid=s"       	=> \$uid,
#            "uidnumber=i"   => \$uidNum,
#            "dn=s"			=> \$dn,
#);

#Parameter von STDIN lesen
while(<STDIN>)
{
 my ( $key, $value ) = split / /,$_,2;
 chomp $value;

 if( $key =~ /^uid$/i )
 {
   $uid = $value;
 }
 elsif ( $key =~ /^uidnumber$/i)
 {
   $uidNum = $value;
 }
}

# Falls uid,dn nicht gegeben, aus LDAP einlesen
if ( $uid =~ /^$/ ){
	chomp($uid = (`ldapsearch -x '(&(uidnumber=$uidNum)(objectclass=SchoolAccount))' | grep uid:`)); $uid =~ s/^.*\s//g;
}
if ( $dn =~ /^$/ ){
	chomp($dn = (`ldapsearch -x '(&(uidnumber=$uidNum)(objectclass=SchoolAccount))' | grep dn:`)); $dn =~ s/^.*\s//g;
}

# Gruppenzugehrigkeit einlesen
chomp( my $gidNum = (`ldapsearch -x uidnumber=$uidNum | grep gidNumber`)); $gidNum =~ s/^.*\s//g;

if ($gidNum eq '502') # ist ein Lehrer
{
	# Datenbankname setzen
	my $dbname = "moodle";

	# Querys definieren
	my $q_sel = "SELECT username FROM mdl_user WHERE username='$uid'";
	my $q_mod = "UPDATE mdl_user SET username = '$uid' , teacher_dn = '$dn' WHERE username='$uid'";
	my $q_add = "INSERT INTO mdl_user VALUES ($uidNum,'ldap',1,0,0,'$uid','','','ADMIN_FIRST_NAME','ADMIN_LAST_NAME','$uid@DOMAIN',0,'','','','','','','','','','','CITY','LANG','lang_lowercase','','99',0,1153772453,0,0,'SCHOOL_MAILSERVER','',0,'','',0,2,2,0,1,1,1153769462)";

	# Datenbank-Verbindung aufbauen
	my $dbh = DBI->connect( 'dbi:mysql:'.$dbname, 'root', '')
			  || die "Kann keine Verbindung zum MySQL-Server aufbauen: $DBI::errstr\n";

	# Ist der benutzer vorhanden?
	my $sth = $dbh->prepare($q_sel); $sth->execute();

	if ( $sth->fetchrow_array() ne '')
	{
		# Ja, modifizieren
		$sth->finish(); $sth = $dbh->prepare($q_mod); $sth->execute();
	} else {
		# Nein, neu anlegen
		$sth->finish(); $sth = $dbh->prepare($q_add); $sth->execute();
	}

	# Abfragehandle freigeben
	$sth->finish();
	# Datenbank-Verbindung beenden
	$dbh->disconnect;

	exit 1;
}
else
{
	exit 0;
}
