';print_r($allowed);echo ''; +echo '1: Only allowed tags (column names) used?'; +$fp = fopen ( $csv_datei, 'r' ); +$y = 1; +$error = 0; +$zeile = fgetcsv( $fp, 100000, ';' ); +$maxLoopLen = count($zeile); +for ($x = 0; $x < $maxLoopLen; $x++) { + + $zeile[$x] = str_replace("\xEF\xBB\xBF", "", $zeile[$x]); + $inhalt[$y][$x] = $zeile[$x]; + if (!in_array($inhalt[1][$x], $allowed)) { + echo '
ERROR in column ' . $x . ' created by value: ' . $inhalt[1][$x] . ''; + $error = $error + 1; + } + //echo '
';var_dump($inhalt[1][$x]); +} +fclose($fp); +$erstezeile = $zeile; +if ($error != 0) echo '
Not allowed tags found !'; else echo '
Only allowed tags used !'; + +//// Check #2 +echo '
2: Not allowed multiple use of tags (column names)?'; +$compare = array_unique($zeile); + +$result = identical_values($zeile, $compare); +if ($result == false) { + echo '
There are dublicate column names !'; + $error = $error + 1; +} +else { + echo '
No dublicate column names !'; +} + + +//// Get values into memory for following checks +$fp = fopen ( $csv_datei, 'r' ); +$y = 0; +while ($zeile = fgetcsv($fp, 100000, ';')) { + + $y++; + $maxLoopLen = count($zeile); + for ($x = 0; $x < $maxLoopLen; $x++) { + $inhalt[$y][$x] = str_replace("'", "\'", $zeile[$x]); + } +} +fclose($fp); + +///// Check #3 +echo '
3: Mandatory tags available and always filled in?'; +unset($inv_array); +$inv_error = 0; + +/** + * Function for finding duplicates?. + * + * @param array $array Input array. + * + * @return array + */ +function get_duplicates(array $array):array { + return array_unique(array_diff_assoc($array, array_unique($array))); + +} + +$mandatory = ['inventory_number','object_type','object_title','object_description']; +foreach ($mandatory as $tMandatoryField) { + if (!in_array($tMandatoryField, $erstezeile)) { + echo '
Mandatory: Column ' . $tMandatoryField . ' missing'; + $error = $error + 1; + $inv_error = $inv_error + 1; + } + else { + $spaltenr = array_search($tMandatoryField, $erstezeile); + for ($j = 0; $j < $y; $j++) { + if ($inhalt[$j + 1][$spaltenr] == '') { + echo '
Missing value for ' . $tMandatoryField . ' in row ' . ($j + 1) . ''; + $error = $error + 1; + $inv_error = $inv_error + 1; + } + if ($tMandatoryField == 'inventory_number') { + $inv_array[] = $inhalt[$j + 1][$spaltenr]; + } + } + } +} +if ($inv_error == 0) echo '
All mandatory tags available and with values !'; + + +///// Check #4 +echo '
4: Inventory_number unique ?'; +if (in_array('inventory_number', $erstezeile)) { + $doppelte_inv = get_duplicates($inv_array); + $doppelte_inv = array_values($doppelte_inv); + if (!empty($doppelte_inv)) { + foreach ($doppelte_inv as $tDublicateInvNo) { + echo '
Multiple use of inventory_number ' . $tDublicateInvNo . ''; + $error = $error + 1; + } + } + else echo '
All inventory_numbers are unique !'; +} +else { + echo '
Aborted, column inventory_number is missing'; + $error = $error + 1; +} + +///// Check #5 +echo '
5: Dependent colums observed ?
'; + + +// Check for correct handling of dependent fields +foreach ($fieldsWithDependency as $tField => $tDependentFields) { + + if (array_search($tField, $erstezeile) === false) continue; + + foreach ($tDependentFields as $tDependentField) { + if (array_search($tDependentField, $erstezeile) === false) { + $depencymessage[] = "Dependency issue at column $tField: Corresponding column $tDependentField is missing"; + } + } + +} + +if (!empty($depencymessage)) { + echo 'Dependent columns were not observed !'; + foreach ($depencymessage as $tDepMsg) { + echo '
' . $tDepMsg; + $error = $error + 1; + } +} +else { + echo 'Dependent columns were observed !'; +} + +///// Check #6 +echo '
6: Dependency of content observed?'; + +$crosscheck1 = ['object_other_title','detailed_description','detailed_description','inscription','inscription','dimensions_separate_length_value', 'dimensions_separate_width_value', 'dimensions_separate_height_value', 'dimensions_separate_diameter_value', 'dimensions_separate_wall_thickness_value', 'dimensions_separate_weight_value','closer_location','bought_for','worth_value','worth_insurance_value']; +$crosscheck2 = ['object_other_title_kind_of','detailed_description_md','detailed_description_extern','inscription_md','inscription_extern','dimensions_separate_length_unit', 'dimensions_separate_width_unit', 'dimensions_separate_height_unit', 'dimensions_separate_diameter_unit', 'dimensions_separate_wall_thickness_unit', 'dimensions_separate_weight_unit','closer_location_as','bought_for_currency','worth_unit','worth_insurance_unit']; + +$depcon_error = 0; +foreach ($crosscheck1 as $l => $tCrossCheck) { + + if (in_array($tCrossCheck, $erstezeile)) { + + for ($j = 1; $j < ($y + 1); $j++) { + if ($inhalt[$j][array_search($crosscheck2[$l], $erstezeile)] !== '' and $inhalt[$j][array_search($tCrossCheck, $erstezeile)] == '') { + echo '
Tag ' . $crosscheck2[$l] . ' given but no entry for ' . $tCrossCheck . ' (row ' . $j . ')'; + $depcon_error++; + } + } + + } + +} + +foreach ($eventpart as $l => $tEventPart) { + if (in_array($tEventPart, $erstezeile)) { + for ($j = 1; $j < ($y + 1); $j++) { + if ($inhalt[$j][array_search($eventpartsure[$l], $erstezeile)] !== '' and $inhalt[$j][array_search($tEventPart, $erstezeile)] == '') { + echo '
Tag ' . $eventpartsure[$l] . ' given but no entry for ' . $tEventPart . ' (row ' . $j . ')'; + $depcon_error++; + } + } + } +} + +if (in_array('dimensions_separate_show_md', $erstezeile)) { + for ($j = 1; $j < ($y + 1); $j++) { + if ($inhalt[$j][array_search('dimensions_separate_show_md', $erstezeile)] !== '' and ($inhalt[$j][array_search('dimensions_separate_length_value', $erstezeile)] == '') and $inhalt[$j][array_search('dimensions_separate_width_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_heigt_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_weight_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_diameter_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_wall_thickness_value', $erstezeile)] == '') { + echo '
Tag dimensions_separate_show_md given but no separate values available (row ' . $j . ')'; + $depcon_error = $depcon_error + 1; + } + } +} + +if (in_array('dimensions_separate_show_extern', $erstezeile)) { + for ($j = 1; $j < ($y + 1); $j++) { + if ($inhalt[$j][array_search('dimensions_separate_show_extern', $erstezeile)] !== '' and ($inhalt[$j][array_search('dimensions_separate_length_value', $erstezeile)] == '') and $inhalt[$j][array_search('dimensions_separate_width_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_heigt_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_weight_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_diameter_value', $erstezeile)] == '' and $inhalt[$j][array_search('dimensions_separate_wall_thickness_value', $erstezeile)] == '') { + echo '
Tag dimensions_separate_show_extern given but no separate values available (row ' . $j . ')'; + $depcon_error = $depcon_error + 1; + } + } +} +/* +for ($im=1;$im<11;$im++) +{ + if (in_array('image_name'.$im,$erstezeile)) + { + for ($j=1;$j<($y+1);$j++) + { + if ($inhalt[$j][array_search('image_rights'.$im,$erstezeile)]!=='') + { + echo '
TAG image_name'.$im.' given but no value available for image_rights'.$im.' (row '.$j.')'; + $depcon_error=$depcon_error+1; + } + if ($inhalt[$j][array_search('image_visible'.$im,$erstezeile)]!=='') + { + echo '
TAG image_name'.$im.' given but no value available for image_visible'.$im.' (row '.$j.')'; + $depcon_error=$depcon_error+1; + } + } + } +} +*/ +if ($depcon_error == 0) echo '
Dependency of content was observed !'; + +///// Check #7 +echo '
7: Not allowed values in controlled lists?
'; +for ($i = 2; $i <= $y; $i++) { + + foreach ($inhalt[$i] as $key => $value) { + + $columnName = $inhalt[1][$key]; + // If the field is not restricted, then continue + if (!isset($fieldsWithAllowedValueSet[$columnName])) continue; + + // For others: check if the value is from the list of allowed values. + if (!in_array($value, $fieldsWithAllowedValueSet[$columnName])) { + + // It may be that the value is empty together with all dependent fields, + // because it's in a repeat field that was needed earlier. + if (empty($value) && !empty($fieldsWithDependency[$columnName])) { + + $allDependentsEmpty = true; + foreach ($fieldsWithDependency[$columnName] as $depField) { + // Find keys of dependent field + $depFieldKey = array_search($depField, $inhalt[1]); + if (!empty($inhalt[$i][$depFieldKey])) { + $allDependentsEmpty = false; + break; + } + } + if ($allDependentsEmpty === true) continue; + + } + + $errormessage[] = "Disallowed value in column
{$columnName}
on row {$i}
: " . $value . " (allowed values: " . implode(", ", $fieldsWithAllowedValueSet[$columnName]) . ")";
+ }
+
+ }
+}
+
+if (isset($errormessage) and $errormessage != '') {
+ echo 'Columns with controlled values contain invalid values !';
+ foreach ($errormessage as $tMsg) {
+ echo '' . $tMsg; + $error++; + } +} +else { + echo 'Values in controlled fields are all valid !'; +} + +///// Check #8 +unset($errormessage); +echo '
8: Main image or main resource given?
'; +$hasanyimage = 0; +for ($im = 1; $im < 29; $im++) +{ + if (array_search('image_name' . $im, $erstezeile) != '') {$imagemain[$im]['name'] = array_search('image_name' . $im, $erstezeile);$hasanyimage++; + } + if (array_search('image_visible' . $im, $erstezeile) != '') $imagemain[$im]['visible'] = array_search('image_visible' . $im, $erstezeile); + if (array_search('image_main' . $im, $erstezeile) != '') $imagemain[$im]['main'] = array_search('image_main' . $im, $erstezeile); +} + +if ($hasanyimage > 0) { + $imagemain = array_values($imagemain); + for ($i = 1; $i <= $y; $i++) + { + if ($i > 1) { + //check if in a row any image_name is given + $maimg = $hatimg = 0; + foreach ($imagemain as $im => $tMainImage) { + if ($inhalt[$i][$tMainImage] != '') $hatimg++; + } + if ($hatimg > 0) { + // first check: how many main-images? + foreach ($imagemain as $im => $tMainImage) { + if ($inhalt[$i][$imagemain[$im]['main']] == 'y') { + $maimg++; + $merk = $im; + } + } + // if there is exacly one main-image, is it visible? + if ($maimg == 1) { + if ($inhalt[$i][$imagemain[$merk]['visible']] == 'n') { + $errormessage[] = 'Main image in row ' . $i . ' is not visible'; + } + } + } + if ($maimg == 0 and $hatimg > 0) $errormessage[] = 'There is no visible main image given in row ' . $i . ''; + if ($maimg > 1 and $hatimg > 0) $errormessage[] = 'There are ' . $maimg . ' main images given in row ' . $i . ''; + } + } + + if (!empty($errormessage)) { + echo 'There is not one main image for each object !'; + foreach ($errormessage as $tMsg) { + echo '
' . $tMsg; + $error++; + } + } + else { + echo 'For each object that has images attached exactly one main image is given !'; + } +} +else { + echo 'No images to be imported !'; +} + +echo '
'; +if ($error + $depcon_error > 0) { + echo ' +
Error(s) found: ' . ($error + $depcon_error) . '
'; +} +else { + echo 'Create XML for md:import (utf8)'; +} echo '