|
59 | 59 | $lastColumn = $objWorksheet->getHighestDataColumn();
|
60 | 60 | $lastColumn++;
|
61 | 61 |
|
| 62 | + $lastColumnID = $lastColumn; |
| 63 | + $lastColumnID++; |
| 64 | + |
62 | 65 | $objWorksheet->setCellValue($lastColumn.'1', 'Username');
|
| 66 | + $objWorksheet->setCellValue($lastColumnID.'1', 'Gibbon ID'); |
63 | 67 |
|
64 | 68 | $studentCount = 0;
|
65 | 69 | $studentFoundCount = 0;
|
66 | 70 |
|
67 | 71 | // Grab the header & first row for Step 1
|
68 | 72 | foreach ($objWorksheet->getRowIterator(2) as $rowIndex => $row) {
|
69 |
| - $array = $objWorksheet->rangeToArray('A'.$rowIndex.':'.$lastColumn.$rowIndex, null, true, true, false); |
| 73 | + $array = $objWorksheet->rangeToArray('A'.$rowIndex.':'.$lastColumnID.$rowIndex, null, true, true, false); |
70 | 74 |
|
71 | 75 | $studentName = isset($array[0][$nameColumn])? $array[0][$nameColumn] : '';
|
72 | 76 | $yearGroup = isset($array[0][$yearGroupColumn])? $array[0][$yearGroupColumn] : '';
|
73 | 77 |
|
74 | 78 | if ($columnType == 'one') {
|
75 | 79 | // Parse the student name, then copy into variables based on the name format
|
76 | 80 | $matches = array();
|
77 |
| - $preferredName = $firstName = $surname1 = $surname2 = ''; |
| 81 | + $preferredName = $firstName = $surname1 = $surname2; |
78 | 82 |
|
79 | 83 | switch ($nameFormat) {
|
80 | 84 | case 'firstLast': // Handle names with spaces: Alpha Beta + Gamma as well as Alpha + Beta Gamma
|
|
118 | 122 |
|
119 | 123 | if ($roleCategory == 'Student') {
|
120 | 124 | // Locate a student enrolment for the target year group with a matching student name
|
121 |
| - $data = ['gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'yearGroup' => $yearGroup, 'preferredName' => trim($preferredName), 'firstName' => trim($firstName), 'surname1' => trim($surname1), 'surname2' => trim($surname2) ]; |
122 |
| - $sql = "SELECT gibbonPerson.username |
| 125 | + $data = ['gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'yearGroup' => $yearGroup, 'preferredName' => trim($preferredName), 'firstName' => trim($firstName), 'surname1' => trim($surname1), 'surname2' => trim($surname2), 'fullName' => $studentName ]; |
| 126 | + $sql = "SELECT gibbonPerson.username, gibbonPerson.gibbonPersonID |
123 | 127 | FROM gibbonPerson
|
124 | 128 | JOIN gibbonStudentEnrolment ON (gibbonStudentEnrolment.gibbonPersonID=gibbonPerson.gibbonPersonID)
|
125 | 129 | WHERE gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID
|
126 | 130 | AND gibbonStudentEnrolment.gibbonYearGroupID=(SELECT gibbonYearGroupID FROM gibbonYearGroup WHERE nameShort=:yearGroup)
|
127 | 131 | AND (
|
128 | 132 | (gibbonPerson.surname = :surname1 AND gibbonPerson.preferredName = :preferredName)
|
129 | 133 | OR (gibbonPerson.surname = :surname2 AND gibbonPerson.firstName = :firstName)
|
| 134 | + OR (CONCAT(gibbonPerson.preferredName, ' ', gibbonPerson.surname) =:fullName ) |
130 | 135 | )";
|
131 | 136 | } else {
|
132 | 137 | $data = ['preferredName' => trim($preferredName), 'firstName' => trim($firstName), 'surname1' => trim($surname1), 'surname2' => trim($surname2) ];
|
133 |
| - $sql = "SELECT gibbonPerson.username |
| 138 | + $sql = "SELECT gibbonPerson.username, gibbonPerson.gibbonPersonID |
134 | 139 | FROM gibbonPerson
|
135 | 140 | WHERE (gibbonPerson.status='Full' OR gibbonPerson.status='Expected')
|
136 | 141 | AND (
|
|
142 | 147 | $result = $pdo->select($sql, $data);
|
143 | 148 |
|
144 | 149 | if ($result->rowCount() == 1) {
|
145 |
| - $foundValue = $result->fetchColumn(); |
| 150 | + $values = $result->fetch(); |
| 151 | + $foundUsername = $values['username'] ?? ''; |
| 152 | + $foundID = $values['gibbonPersonID'] ?? ''; |
146 | 153 | $studentFoundCount++;
|
147 | 154 | } else {
|
148 |
| - $foundValue = ''; |
| 155 | + $foundUsername = ''; |
| 156 | + $foundID = ''; |
149 | 157 | }
|
150 | 158 |
|
151 | 159 | // Write the ID to the last column
|
152 |
| - $objWorksheet->setCellValue($lastColumn.$rowIndex, $foundValue); |
| 160 | + $objWorksheet->setCellValue($lastColumn.$rowIndex, $foundUsername); |
| 161 | + $objWorksheet->setCellValue($lastColumnID.$rowIndex, $foundID); |
153 | 162 |
|
154 | 163 | $studentCount++;
|
155 | 164 | }
|
|
0 commit comments