diff --git a/content/statistik/mitarbeiterexport.xls.php b/content/statistik/mitarbeiterexport.xls.php index 502ae281f..3c943cde8 100644 --- a/content/statistik/mitarbeiterexport.xls.php +++ b/content/statistik/mitarbeiterexport.xls.php @@ -223,11 +223,24 @@ foreach ($mitarbeiterDAO->result as $mitarbeiter) { if (isset($udfPerson[$udfTitle['name']])) { - if (mb_strlen($udfPerson[$udfTitle['name']]) > $maxlength[$col]) + if (is_string($udfPerson[$udfTitle['name']]) || is_numeric($udfPerson[$udfTitle['name']])) { - $maxlength[$col] = mb_strlen($udfPerson[$udfTitle['name']]); + if (mb_strlen($udfPerson[$udfTitle['name']]) > $maxlength[$col]) + { + $maxlength[$col] = mb_strlen($udfPerson[$udfTitle['name']]); + } + $worksheet->write($zeile, $col, $udfPerson[$udfTitle['name']]); + } + else if(is_array($udfPerson[$udfTitle['name']]) && isset($udfTitle['enum'])) + { + $toWrite = $udf->dropdownListValuesToString($udfPerson[$udfTitle['name']], $udfTitle['enum']); + + if (mb_strlen($toWrite) > $maxlength[$col]) + { + $maxlength[$col] = mb_strlen($toWrite); + } + $worksheet->write($zeile, $col, $toWrite); } - $worksheet->write($zeile, $col, $udfPerson[$udfTitle['name']]); } $col++; } diff --git a/content/statistik/studentenexportextended.xls.php b/content/statistik/studentenexportextended.xls.php index 0d8ea980c..2a55601cf 100644 --- a/content/statistik/studentenexportextended.xls.php +++ b/content/statistik/studentenexportextended.xls.php @@ -241,7 +241,7 @@ function draw_content($row) global $zeile, $worksheet; global $zgv_arr, $zgvmas_arr; global $studiensemester_kurzbz; - global $udfTitlesPerson, $udfTitlesPrestudent; + global $udfTitlesPerson, $udfTitlesPrestudent, $udf; $db = new basis_db(); $prestudent = new prestudent(); @@ -558,11 +558,24 @@ function draw_content($row) { if (isset($udfPerson[$udfTitle['name']])) { - if (mb_strlen($udfPerson[$udfTitle['name']]) > $maxlength[$i]) + if (is_string($udfPerson[$udfTitle['name']]) || is_numeric($udfPerson[$udfTitle['name']])) { - $maxlength[$i] = mb_strlen($udfPerson[$udfTitle['name']]); + if (mb_strlen($udfPerson[$udfTitle['name']]) > $maxlength[$i]) + { + $maxlength[$i] = mb_strlen($udfPerson[$udfTitle['name']]); + } + $worksheet->write($zeile, $i, $udfPerson[$udfTitle['name']]); + } + else if(is_array($udfPerson[$udfTitle['name']]) && isset($udfTitle['enum'])) + { + $toWrite = $udf->dropdownListValuesToString($udfPerson[$udfTitle['name']], $udfTitle['enum']); + + if (mb_strlen($toWrite) > $maxlength[$i]) + { + $maxlength[$i] = mb_strlen($toWrite); + } + $worksheet->write($zeile, $i, $toWrite); } - $worksheet->write($zeile, $i, $udfPerson[$udfTitle['name']]); } $i++; } @@ -577,11 +590,24 @@ function draw_content($row) { if (isset($udfPrestudent[$udfTitle['name']])) { - if (mb_strlen($udfPrestudent[$udfTitle['name']]) > $maxlength[$i]) + if (is_string($udfPrestudent[$udfTitle['name']]) || is_numeric($udfPrestudent[$udfTitle['name']])) { - $maxlength[$i] = mb_strlen($udfPrestudent[$udfTitle['name']]); + if (mb_strlen($udfPrestudent[$udfTitle['name']]) > $maxlength[$i]) + { + $maxlength[$i] = mb_strlen($udfPrestudent[$udfTitle['name']]); + } + $worksheet->write($zeile, $i, $udfPrestudent[$udfTitle['name']]); + } + else if(is_array($udfPrestudent[$udfTitle['name']]) && isset($udfTitle['enum'])) + { + $toWrite = $udf->dropdownListValuesToString($udfPrestudent[$udfTitle['name']], $udfTitle['enum']); + + if (mb_strlen($toWrite) > $maxlength[$i]) + { + $maxlength[$i] = mb_strlen($toWrite); + } + $worksheet->write($zeile, $i, $toWrite); } - $worksheet->write($zeile, $i, $udfPrestudent[$udfTitle['name']]); } $i++; } diff --git a/include/udf.class.php b/include/udf.class.php index ce8e4751a..fff3e31f0 100644 --- a/include/udf.class.php +++ b/include/udf.class.php @@ -172,6 +172,45 @@ class UDF extends basis_db return $prestudentHasUDF; } + /** + * Concatenates a list of values of a dropdown element to a string + */ + public function dropdownListValuesToString($listValues, $enum) + { + $toWrite = ''; + + foreach ($listValues as $value) + { + foreach ($enum as $element) + { + if (is_object($element)) + { + if ($element->id == $value) + { + $toWrite .= $element->description; + break; + } + } + else if (is_array($element)) + { + if ($element[0] == $value) + { + $toWrite .= $element[1]; + break; + } + } + else if ($element == $value) + { + $toWrite .= $element; + break; + } + } + $toWrite .= ' '; + } + + return $toWrite; + } + /** * Loads the UDF definitions related to the given schema and table */ @@ -243,7 +282,16 @@ class UDF extends basis_db { if (isset($udfJsonShema->name) && isset($udfJsonShema->title)) { - $names[] = array('name' => $udfJsonShema->name, 'title' => $udfJsonShema->title); + $tmpArray = array('name' => $udfJsonShema->name, 'title' => $udfJsonShema->title); + + if (isset($udfJsonShema->type) + && ($udfJsonShema->type == 'dropdown' || $udfJsonShema->type == 'multipledropdown') + && isset($udfJsonShema->listValues) && isset($udfJsonShema->listValues->enum)) + { + $tmpArray['enum'] = $udfJsonShema->listValues->enum; + } + + $names[] = $tmpArray; } } }