diff --git a/modules/Activities/activities_attendance.php b/modules/Activities/activities_attendance.php
index afc73da7c7..9f2a5fdea5 100644
--- a/modules/Activities/activities_attendance.php
+++ b/modules/Activities/activities_attendance.php
@@ -19,12 +19,17 @@
along with this program. If not, see .
*/
+use Gibbon\Forms\Form;
+use Gibbon\Services\Format;
+use Gibbon\Domain\User\UserGateway;
+use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\Activities\ActivityGateway;
+use Gibbon\Domain\Activities\ActivityStaffGateway;
+use Gibbon\Domain\Activities\ActivityStudentGateway;
+use Gibbon\Domain\Activities\ActivityAttendanceGateway;
use Gibbon\Domain\Attendance\AttendanceLogPersonGateway;
use Gibbon\Domain\Calendar\CalendarEventGateway;
use Gibbon\Domain\System\SettingGateway;
-use Gibbon\Forms\Form;
-use Gibbon\Services\Format;
//Module includes
require_once __DIR__ . '/moduleFunctions.php';
@@ -47,14 +52,11 @@
}
$settingGateway = $container->get(SettingGateway::class);
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'));
- $sql = "";
if($highestAction == "Enter Activity Attendance") {
- $sql = "SELECT gibbonActivity.gibbonActivityID AS value, name, programStart FROM gibbonActivity WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name, programStart";
+ $result = $container->get(ActivityGateway::class)->selectActivitiesBySchoolYear($session->get('gibbonSchoolYearID'));
} elseif($highestAction == "Enter Activity Attendance_leader") {
- $data["gibbonPersonID"] = $session->get("gibbonPersonID");
- $sql = "SELECT gibbonActivity.gibbonActivityID AS value, name, programStart FROM gibbonActivityStaff JOIN gibbonActivity ON (gibbonActivityStaff.gibbonActivityID = gibbonActivity.gibbonActivityID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND (gibbonActivityStaff.role='Organiser' OR gibbonActivityStaff.role='Assistant' OR gibbonActivityStaff.role='Coach') ORDER BY name, programStart";
+ $result = $container->get(ActivityStaffGateway::class)-> selectActivityByStaff($session->get('gibbonPersonID'));
}
$form = Form::create('action', $session->get('absoluteURL').'/index.php','get');
@@ -64,7 +66,7 @@
$row = $form->addRow();
$row->addLabel('gibbonActivityID', __('Activity'));
- $row->addSearchSelect('gibbonActivityID')->fromQuery($pdo, $sql, $data)->selected($gibbonActivityID)->required()->placeholder();
+ $row->addSearchSelect('gibbonActivityID')->fromResults($result)->selected($gibbonActivityID)->required()->placeholder();
$row = $form->addRow();
$row->addSearchSubmit($session);
@@ -75,18 +77,8 @@
if (empty($gibbonActivityID)) {
return;
}
-
-
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonPerson.gibbonPersonID, surname, preferredName, gibbonFormGroup.gibbonFormGroupID, gibbonActivityStudent.status, gibbonFormGroup.nameShort as formGroup FROM gibbonPerson JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) JOIN gibbonFormGroup ON (gibbonFormGroup.gibbonFormGroupID=gibbonStudentEnrolment.gibbonFormGroupID) JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<='".date('Y-m-d')."') AND (dateEnd IS NULL OR dateEnd>='".date('Y-m-d')."') AND gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStudent.status='Accepted' AND gibbonActivityID=:gibbonActivityID ORDER BY gibbonActivityStudent.status, surname, preferredName";
- $studentResult = $connection2->prepare($sql);
- $studentResult->execute($data);
-
-
- $data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonSchoolYearTermIDList, maxParticipants, programStart, programEnd, (SELECT COUNT(*) FROM gibbonActivityStudent JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityStudent.gibbonActivityID=gibbonActivity.gibbonActivityID AND gibbonActivityStudent.status='Waiting List' AND gibbonPerson.status='Full') AS waiting FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID";
- $activityResult = $connection2->prepare($sql);
- $activityResult->execute($data);
+ $studentResult = $container->get(UserGateway::class)->selectStudentsByActivity($session->get('gibbonSchoolYearID'), $gibbonActivityID);
+ $activityResult = $container->get(ActivityStudentGateway::class)->selectActivityByStudents($gibbonActivityID);
if ($studentResult->rowCount() < 1 || $activityResult->rowCount() < 1) {
echo $page->getBlankSlate();
@@ -94,13 +86,9 @@
return;
}
-
$students = $studentResult->fetchAll();
- $data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = 'SELECT gibbonActivityAttendance.date, gibbonActivityAttendance.timestampTaken, gibbonActivityAttendance.attendance, gibbonPerson.preferredName, gibbonPerson.surname FROM gibbonActivityAttendance, gibbonPerson WHERE gibbonActivityAttendance.gibbonPersonIDTaker=gibbonPerson.gibbonPersonID AND gibbonActivityAttendance.gibbonActivityID=:gibbonActivityID';
- $attendanceResult = $connection2->prepare($sql);
- $attendanceResult->execute($data);
+ $attendanceResult = $container->get(ActivityAttendanceGateway::class)->selectStudentAttendanceByActivity($gibbonActivityID);
// Gather the existing attendance data (by date and not index, should the time slots change)
$sessionAttendanceData = array();
@@ -108,8 +96,8 @@
while ($attendance = $attendanceResult->fetch()) {
$sessionAttendanceData[ $attendance['date'] ] = array(
'data' => (!empty($attendance['attendance'])) ? unserialize($attendance['attendance']) : array(),
- 'info' => sprintf(__('Recorded at %1$s on %2$s by %3$s.'), substr($attendance['timestampTaken'], 11), Format::date(substr($attendance['timestampTaken'], 0, 10)), Format::name('', $attendance['preferredName'], $attendance['surname'], 'Staff', false, true)),
- );
+ 'info' => sprintf(__('Recorded at %1$s on %2$s by %3$s.'), substr($attendance['timestampTaken'], 11), Format::date(substr($attendance['timestampTaken'], 0, 10)), Format::name('', $attendance['preferredName'], $attendance['surname'], 'Staff', false, true),
+ ));
}
$today = date('Y-m-d');
diff --git a/modules/Activities/activities_attendanceProcess.php b/modules/Activities/activities_attendanceProcess.php
index bb798813ca..3e8da1d1e1 100644
--- a/modules/Activities/activities_attendanceProcess.php
+++ b/modules/Activities/activities_attendanceProcess.php
@@ -19,6 +19,8 @@
along with this program. If not, see .
*/
use Gibbon\Data\Validator;
+use Gibbon\Domain\Activities\ActivityStaffGateway;
+use Gibbon\Domain\Activities\ActivityAttendanceGateway;
require_once '../../gibbon.php';
@@ -39,11 +41,9 @@
$highestAction = getHighestGroupedAction($guid, '/modules/Activities/activities_attendance.php', $connection2);
if($highestAction == "Enter Activity Attendance_leader") {
- try {
- $dataCheck = array("gibbonPersonID" => $gibbonPersonID, "gibbonActivityID" => $gibbonActivityID);
- $sqlCheck = "SELECT role FROM gibbonActivityStaff WHERE gibbonActivityID=:gibbonActivityID AND gibbonPersonID=:gibbonPersonID";
- $resultCheck = $connection2->prepare($sqlCheck);
- $resultCheck->execute($dataCheck);
+ try {
+
+ $resultCheck = $container->get(ActivityStaffGateway::class)->selectStaffRoleByActivity($gibbonPersonID, $gibbonActivityID);
if ($resultCheck->rowCount() > 0) {
$row = $resultCheck->fetch();
@@ -90,14 +90,8 @@
$sessionAttendance = (isset($attendance[$i])) ? serialize($attendance[$i]) : '';
- try {
- $data = array('gibbonActivityID' => $gibbonActivityID, 'date' => $sessionDate);
- $sql = 'SELECT gibbonActivityAttendanceID FROM gibbonActivityAttendance WHERE gibbonActivityID=:gibbonActivityID AND date=:date';
- $result = $connection2->prepare($sql);
- $result->execute($data);
- } catch (PDOException $e) {
- $partialFail = true;
- }
+ $result = $container->get(ActivityAttendanceGateway::class)->selectActivityAttendanceByActivity($gibbonActivityID, $sessionDate);
+
// INSERT
if ($result->rowCount() <= 0) {
@@ -109,7 +103,8 @@
try {
$data = array('gibbonActivityID' => $gibbonActivityID, 'gibbonPersonIDTaker' => $gibbonPersonID, 'attendance' => $sessionAttendance, 'date' => $sessionDate);
- $sql = 'INSERT INTO gibbonActivityAttendance SET gibbonActivityID=:gibbonActivityID, gibbonPersonIDTaker=:gibbonPersonIDTaker, attendance=:attendance, date=:date ';
+ $sql = 'INSERT INTO gibbonActivityAttendance
+ SET gibbonActivityID=:gibbonActivityID, gibbonPersonIDTaker=:gibbonPersonIDTaker, attendance=:attendance, date=:date ';
$result = $connection2->prepare($sql);
$result->execute($data);
} catch (PDOException $e) {
@@ -140,3 +135,4 @@
}
}
}
+
\ No newline at end of file
diff --git a/modules/Activities/activities_attendance_sheet.php b/modules/Activities/activities_attendance_sheet.php
index 53461f1ec1..4f151b8b36 100644
--- a/modules/Activities/activities_attendance_sheet.php
+++ b/modules/Activities/activities_attendance_sheet.php
@@ -20,8 +20,11 @@
*/
use Gibbon\Forms\Form;
-use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Services\Format;
+use Gibbon\Domain\User\UserGateway;
+use Gibbon\Forms\DatabaseFormFactory;
+use Gibbon\Domain\Activities\ActivityGateway;
+use Gibbon\Domain\Activities\ActivityStudentGateway;
//Module includes
require_once __DIR__ . '/moduleFunctions.php';
@@ -51,11 +54,10 @@
$form->addHiddenValue('q', "/modules/".$session->get('module')."/activities_attendance_sheet.php");
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'));
- $sql = "SELECT gibbonActivityID AS value, name FROM gibbonActivity WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name, programStart";
+ $result = $container->get(ActivityGateway::class)->selectActivitiesBySchoolYear($session->get('gibbonSchoolYearID'));
$row = $form->addRow();
$row->addLabel('gibbonActivityID', __('Activity'));
- $row->addSearchSelect('gibbonActivityID')->fromQuery($pdo, $sql, $data)->selected($gibbonActivityID)->required()->placeholder();
+ $row->addSearchSelect('gibbonActivityID')->fromResults($result)->selected($gibbonActivityID)->required()->placeholder();
$row = $form->addRow();
$row->addLabel('numberOfColumns', __('Number of Columns'));
@@ -73,12 +75,9 @@
echo __('Report Data');
echo '';
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonPerson.gibbonPersonID, surname, preferredName, gibbonFormGroupID, gibbonActivityStudent.status FROM gibbonPerson JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<='".date('Y-m-d')."') AND (dateEnd IS NULL OR dateEnd>='".date('Y-m-d')."') AND gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStudent.status='Accepted' AND gibbonActivityID=:gibbonActivityID ORDER BY gibbonActivityStudent.status, surname, preferredName";
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $result = $container->get(UserGateway::class)->selectStudentsByActivity($session->get('gibbonSchoolYearID'), $gibbonActivityID);
- if ($result->rowCount() < 1) {
+ if (empty($result)) {
echo $page->getBlankSlate();
} else {
$form = Form::createBlank('buttons');
diff --git a/modules/Activities/activities_manage.php b/modules/Activities/activities_manage.php
index 9f9a79464d..1ab5982f7d 100644
--- a/modules/Activities/activities_manage.php
+++ b/modules/Activities/activities_manage.php
@@ -20,6 +20,7 @@
*/
use Gibbon\Domain\Activities\ActivityGateway;
+use Gibbon\Domain\School\SchoolYearGateway;
use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Forms\Prefab\BulkActionForm;
@@ -83,11 +84,11 @@
$row->addTextField('search')->setValue($criteria->getSearchText());
if ($dateType != 'Date') {
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'));
- $sql = "SELECT gibbonSchoolYearTermID as value, name FROM gibbonSchoolYearTerm WHERE gibbonSchoolYearID=:gibbonSchoolYearID ORDER BY sequenceNumber";
+ $result = $container->get(SchoolYearTermGateway::class)->selectSchoolYearTermName($session->get('gibbonSchoolYearID'));
+
$row = $form->addRow();
$row->addLabel('gibbonSchoolYearTermID', __('Term'));
- $row->addSelect('gibbonSchoolYearTermID')->fromQuery($pdo, $sql, $data)->selected($gibbonSchoolYearTermID)->placeholder();
+ $row->addSelect('gibbonSchoolYearTermID')->fromResults($result)->selected($gibbonSchoolYearTermID)->placeholder();
}
$row = $form->addRow();
@@ -119,11 +120,11 @@
'DuplicateParticipants' => __('Duplicate With Participants'),
'Delete' => __('Delete'),
);
- $sql = "SELECT gibbonSchoolYearID as value, gibbonSchoolYear.name FROM gibbonSchoolYear WHERE (status='Upcoming' OR status='Current') ORDER BY sequenceNumber LIMIT 0, 2";
+ $result = $container->get(SchoolYearGateway::class)->selectCurrentOrUpcomingSchoolYear();
$col = $form->createBulkActionColumn($bulkActions);
$col->addSelect('gibbonSchoolYearIDCopyTo')
- ->fromQuery($pdo, $sql)
+ ->fromResults($result)
->setClass('shortWidth schoolYear');
$col->addSubmit(__('Go'));
diff --git a/modules/Activities/activities_manageProcessBulk.php b/modules/Activities/activities_manageProcessBulk.php
index 3b01e3e036..3c70894c9c 100644
--- a/modules/Activities/activities_manageProcessBulk.php
+++ b/modules/Activities/activities_manageProcessBulk.php
@@ -1,4 +1,9 @@
$gibbonActivityID];
- $sql = 'SELECT * FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $result = $container->get(ActivityGateway::class)->getByID($gibbonActivityID);
} catch (PDOException $e) {
$partialFail = true;
}
- if ($result->rowCount() != 1) {
+ if (!empty($result)) {
$partialFail = true;
} else {
- $row = $result->fetch();
+ $row = $result;
$name = $row['name'];
if ($gibbonSchoolYearIDCopyTo == $session->get('gibbonSchoolYearID')) {
$name .= ' (Copy)';
@@ -91,14 +93,9 @@
$AI = str_pad($connection2->lastInsertID(), 8, '0', STR_PAD_LEFT);
//Check and create staff
- try {
- $dataParticipants = array('gibbonActivityID' => $gibbonActivityID);
- $sqlParticipants = 'SELECT * FROM gibbonActivityStaff WHERE gibbonActivityID=:gibbonActivityID';
- $resultParticipants = $connection2->prepare($sqlParticipants);
- $resultParticipants->execute($dataParticipants);
- } catch (PDOException $e) {
- $partialFail = true;
- }
+ $resultParticipants = $container->get(ActivityStaffGateway::class)->selectWhere(['gibbonActivityID' => $gibbonActivityID]);
+
+
while ($rowParticipants = $resultParticipants->fetch()) {
try {
$dataParticipants2 = array('gibbonActivityID' => $AI, 'gibbonPersonID' => $rowParticipants['gibbonPersonID'], 'role' => $rowParticipants['role']);
@@ -111,14 +108,8 @@
}
//Check and create slots
- try {
- $dataParticipants = array('gibbonActivityID' => $gibbonActivityID);
- $sqlParticipants = 'SELECT * FROM gibbonActivitySlot WHERE gibbonActivityID=:gibbonActivityID';
- $resultParticipants = $connection2->prepare($sqlParticipants);
- $resultParticipants->execute($dataParticipants);
- } catch (PDOException $e) {
- $partialFail = true;
- }
+ $resultParticipants = $container->get(ActivitySlotGateway::class)->selectWhere(['gibbonActivityID' => $gibbonActivityID]);
+
while ($rowParticipants = $resultParticipants->fetch()) {
try {
$dataParticipants2 = array('gibbonActivityID' => $AI, 'gibbonSpaceID' => $rowParticipants['gibbonSpaceID'], 'locationExternal' => $rowParticipants['locationExternal'], 'gibbonDaysOfWeekID' => $rowParticipants['gibbonDaysOfWeekID'], 'timeStart' => $rowParticipants['timeStart'], 'timeEnd' => $rowParticipants['timeEnd']);
@@ -133,14 +124,8 @@
//Deal with participants
if ($action == 'DuplicateParticipants') {
//Check and create staff
- try {
- $dataParticipants = array('gibbonActivityID' => $gibbonActivityID);
- $sqlParticipants = 'SELECT * FROM gibbonActivityStudent WHERE gibbonActivityID=:gibbonActivityID';
- $resultParticipants = $connection2->prepare($sqlParticipants);
- $resultParticipants->execute($dataParticipants);
- } catch (PDOException $e) {
- $partialFail = true;
- }
+ $resultParticipants = $container->get(ActivityStudentGateway::class)->selectWhere(['gibbonActivityID' => $gibbonActivityID]);
+
while ($rowParticipants = $resultParticipants->fetch()) {
try {
$dataParticipants2 = array('gibbonActivityID' => $AI, 'gibbonPersonID' => $rowParticipants['gibbonPersonID'], 'status' => $rowParticipants['status'], 'timestamp' => $rowParticipants['timestamp']);
@@ -167,10 +152,7 @@
foreach ($activities AS $gibbonActivityID) { //For every activity to be copied
//Check existence of activity and fetch details
try {
- $data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = 'SELECT * FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $result = $container->get(ActivityGateway::class)->selectActvity($gibbonActivityID);
} catch (PDOException $e) {
$partialFail = true;
}
diff --git a/modules/Activities/activities_manage_add.php b/modules/Activities/activities_manage_add.php
index 69946be847..354e62898b 100644
--- a/modules/Activities/activities_manage_add.php
+++ b/modules/Activities/activities_manage_add.php
@@ -22,6 +22,8 @@
use Gibbon\Forms\Form;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Domain\Activities\ActivityGateway;
+use Gibbon\Domain\School\DaysOfWeekGateway;
+use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\Activities\ActivityCategoryGateway;
@@ -105,10 +107,8 @@
$row->addCheckboxSchoolYearTerm('gibbonSchoolYearTermIDList', $session->get('gibbonSchoolYearID'))->checkAll();
} else {
$listingStart = $listingEnd = $programStart = $programEnd = new DateTime();
+ $result = $container->get(SchoolYearTermGateway::class)->selectBySchoolYear($session->get('gibbonSchoolYearID'));
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'today' => date('Y-m-d'));
- $sql = "SELECT * FROM gibbonSchoolYearTerm WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND lastDay>=:today ORDER BY sequenceNumber";
- $result = $pdo->executeQuery($data, $sql);
if ($result->rowCount() > 0) {
if ($currentTerm = $result->fetch()) {
$listingStart = (new DateTime($currentTerm['lastDay']))->modify('-2 weeks');
@@ -206,13 +206,14 @@
$form->addRow()->addHeading('Time Slots', __('Time Slots'));
//Block template
- $sqlWeekdays = "SELECT gibbonDaysOfWeekID as value, name FROM gibbonDaysOfWeek ORDER BY sequenceNumber";
+
+ $result = $container->get(DaysOfWeekGateway::class)->selectDaysOfWeek();
$slotBlock = $form->getFactory()->createTable()->setClass('blank');
$row = $slotBlock->addRow();
$row->addLabel('gibbonDaysOfWeekID', __('Slot Day'));
$row->addSelect('gibbonDaysOfWeekID')
- ->fromQuery($pdo, $sqlWeekdays)
+ ->fromResults($result)
->placeholder()
->addClass('floatLeft');
diff --git a/modules/Activities/activities_manage_delete.php b/modules/Activities/activities_manage_delete.php
index bb59091eff..5212860694 100644
--- a/modules/Activities/activities_manage_delete.php
+++ b/modules/Activities/activities_manage_delete.php
@@ -19,6 +19,7 @@
along with this program. If not, see .
*/
+use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Forms\Prefab\DeleteForm;
//Module includes
@@ -34,20 +35,16 @@
if ($gibbonActivityID == '') {
$page->addError(__('You have not specified one or more required parameters.'));
} else {
+ $values = $container->get(ActivityGateway::class)->getByID($gibbonActivityID);
- $data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = 'SELECT * FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
- if ($result) {
- if ($result->rowCount() != 1) {
+ if (empty($values)) {
$page->addError( __('The selected record does not exist, or you do not have access to it.'));
} else {
$form = DeleteForm::createForm($session->get('absoluteURL').'/modules/'.$session->get('module')."/activities_manage_deleteProcess.php?search=".$_GET['search']."&gibbonSchoolYearTermID=".$_GET['gibbonSchoolYearTermID']);
$form->addHiddenValue('gibbonActivityID', $gibbonActivityID);
echo $form->getOutput();
}
- }
+
}
}
?>
diff --git a/modules/Activities/activities_manage_deleteProcess.php b/modules/Activities/activities_manage_deleteProcess.php
index 183137321e..2978eb943e 100644
--- a/modules/Activities/activities_manage_deleteProcess.php
+++ b/modules/Activities/activities_manage_deleteProcess.php
@@ -19,6 +19,8 @@
along with this program. If not, see .
*/
+use Gibbon\Domain\Activities\ActivityGateway;
+
include '../../gibbon.php';
$gibbonActivityID = $_POST['gibbonActivityID'] ?? '';
@@ -36,17 +38,14 @@
header("Location: {$URL}");
} else {
try {
- $data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = 'SELECT * FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $values = $container->get(ActivityGateway::class)->getByID($gibbonActivityID);
} catch (PDOException $e) {
$URL .= '&return=error2';
header("Location: {$URL}");
exit();
}
- if ($result->rowCount() != 1) {
+ if (empty($values)) {
$URL .= '&return=error2';
header("Location: {$URL}");
} else {
diff --git a/modules/Activities/activities_manage_edit.php b/modules/Activities/activities_manage_edit.php
index 6979ff02aa..d07e19a8f9 100644
--- a/modules/Activities/activities_manage_edit.php
+++ b/modules/Activities/activities_manage_edit.php
@@ -22,10 +22,11 @@
use Gibbon\Services\Format;
use Gibbon\Forms\Form;
use Gibbon\Forms\DatabaseFormFactory;
-use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Domain\Activities\ActivityStaffGateway;
use Gibbon\Domain\Activities\ActivitySlotGateway;
+use Gibbon\Domain\School\DaysOfWeekGateway;
+use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\Activities\ActivityPhotoGateway;
use Gibbon\Domain\Activities\ActivityCategoryGateway;
@@ -232,13 +233,13 @@
$form->addRow()->addHeading('Time Slots', __('Time Slots'));
//Block template
- $sqlWeekdays = "SELECT gibbonDaysOfWeekID as value, name FROM gibbonDaysOfWeek ORDER BY sequenceNumber";
+ $result = $container->get(DaysOfWeekGateway::class)->selectDaysOfWeek();
$slotBlock = $form->getFactory()->createTable()->setClass('blank');
$row = $slotBlock->addRow();
$row->addLabel('gibbonDaysOfWeekID', __('Slot Day'));
$row->addSelect('gibbonDaysOfWeekID')
- ->fromQuery($pdo, $sqlWeekdays)
+ ->fromResults($result)
->placeholder()
->addClass('floatLeft');
diff --git a/modules/Activities/activities_manage_enrolment_add.php b/modules/Activities/activities_manage_enrolment_add.php
index 0398889c59..39fb91d504 100644
--- a/modules/Activities/activities_manage_enrolment_add.php
+++ b/modules/Activities/activities_manage_enrolment_add.php
@@ -19,8 +19,10 @@
along with this program. If not, see .
*/
+use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Domain\System\SettingGateway;
+use Gibbon\Domain\User\UserGateway;
use Gibbon\Forms\Form;
use Gibbon\Services\Format;
@@ -36,10 +38,7 @@
$highestAction = getHighestGroupedAction($guid, '/modules/Activities/activities_manage_enrolment.php', $connection2);
if ($highestAction == 'My Activities_viewEditEnrolment') {
- $data = array('gibbonPersonID' => $session->get('gibbonPersonID'), 'gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonActivity.*, NULL as status, gibbonActivityStaff.role FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivity.gibbonActivityID=gibbonActivityStaff.gibbonActivityID) WHERE gibbonActivity.gibbonActivityID=:gibbonActivityID AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND gibbonActivityStaff.role='Organiser' AND gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name";
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $result = $container->get(ActivityGateway::class)->selectActivityByYearandStaff($session->get('gibbonPersonID'), $session->get('gibbonSchoolYearID'), $gibbonActivityID);
if (!$result || $result->rowCount() == 0) {
//Acess denied
@@ -60,16 +59,11 @@
if ($gibbonActivityID == '') {
$page->addError(__('You have not specified one or more required parameters.'));
} else {
- $data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = 'SELECT gibbonActivity.*, gibbonActivityType.access, gibbonActivityType.maxPerStudent, gibbonActivityType.enrolmentType, gibbonActivityType.backupChoice, gibbonActivityType.waitingList FROM gibbonActivity LEFT JOIN gibbonActivityType ON (gibbonActivity.type=gibbonActivityType.name) WHERE gibbonActivityID=:gibbonActivityID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $values = $container->get(ActivityGateway::class)->getActivityDetailsByID($gibbonActivityID);
- if ($result->rowCount() != 1) {
+ if (empty($values)) {
$page->addError(__('The specified record does not exist.'));
} else {
- $values = $result->fetch();
-
$settingGateway = $container->get(SettingGateway::class);
$dateType = $settingGateway->getSettingByScope('Activities', 'dateType');
@@ -114,18 +108,8 @@
}
$students = array();
- $data = array('gibbonYearGroupIDList' => $values['gibbonYearGroupIDList'], 'gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'date' => date('Y-m-d'));
- $sql = "SELECT gibbonPerson.gibbonPersonID, preferredName, surname, gibbonFormGroup.name AS formGroupName
- FROM gibbonPerson
- JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID)
- JOIN gibbonFormGroup ON (gibbonStudentEnrolment.gibbonFormGroupID=gibbonFormGroup.gibbonFormGroupID)
- JOIN gibbonYearGroup ON (gibbonStudentEnrolment.gibbonYearGroupID=gibbonYearGroup.gibbonYearGroupID)
- WHERE gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID
- AND FIND_IN_SET(gibbonYearGroup.gibbonYearGroupID, :gibbonYearGroupIDList)
- AND gibbonPerson.status='FULL'
- AND (dateStart IS NULL OR dateStart<=:date) AND (dateEnd IS NULL OR dateEnd>=:date)
- ORDER BY formGroupName, gibbonPerson.surname, gibbonPerson.preferredName";
- $result = $pdo->executeQuery($data, $sql);
+
+ $result = $container->get(UserGateway::class)->selectUserByFormGroup($values['gibbonYearGroupIDList'], $session->get('gibbonSchoolYearID'));
if ($result->rowCount() > 0) {
$students['--'.__('Enrolable Students').'--'] = array_reduce($result->fetchAll(), function($group, $item) {
@@ -134,8 +118,7 @@
}, array());
}
- $sql = "SELECT gibbonPersonID, surname, preferredName, status, username FROM gibbonPerson WHERE status='Full' OR status='Expected' ORDER BY surname, preferredName";
- $result = $pdo->executeQuery(array(), $sql);
+ $result = $container->get(UserGateway::class)->selectUsers();
if ($result->rowCount() > 0) {
$students['--'.__('All Users').'--'] = array_reduce($result->fetchAll(), function ($group, $item) {
@@ -173,4 +156,4 @@
echo $form->getOutput();
}
}
-}
+}
\ No newline at end of file
diff --git a/modules/Activities/activities_manage_enrolment_delete.php b/modules/Activities/activities_manage_enrolment_delete.php
index 28e449fec5..3c171b1fb5 100644
--- a/modules/Activities/activities_manage_enrolment_delete.php
+++ b/modules/Activities/activities_manage_enrolment_delete.php
@@ -20,6 +20,7 @@
*/
use Gibbon\Forms\Prefab\DeleteForm;
+use Gibbon\Domain\Activities\ActivityGateway;
if (isActionAccessible($guid, $connection2, '/modules/Activities/activities_manage_enrolment_delete.php') == false) {
// Access denied
@@ -31,12 +32,8 @@
$highestAction = getHighestGroupedAction($guid, '/modules/Activities/activities_manage_enrolment.php', $connection2);
if ($highestAction == 'My Activities_viewEditEnrolment') {
-
- $data = array('gibbonPersonID' => $session->get('gibbonPersonID'), 'gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonActivity.*, NULL as status, gibbonActivityStaff.role FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivity.gibbonActivityID=gibbonActivityStaff.gibbonActivityID) WHERE gibbonActivity.gibbonActivityID=:gibbonActivityID AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND gibbonActivityStaff.role='Organiser' AND gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name";
- $result = $connection2->prepare($sql);
- $result->execute($data);
-
+ $result = $container->get(ActivityGateway::class)->selectActivityByYearandStaff($session->get('gibbonPersonID'), $session->get('gibbonSchoolYearID'), $gibbonActivityID);
+
if (!$result || $result->rowCount() == 0) {
//Acess denied
$page->addError(__('You do not have access to this action.'));
@@ -51,10 +48,7 @@
$page->addError(__('You have not specified one or more required parameters.'));
} else {
- $data = array('gibbonActivityID' => $gibbonActivityID, 'gibbonPersonID' => $gibbonPersonID);
- $sql = 'SELECT gibbonActivity.*, gibbonActivityStudent.*, surname, preferredName FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID) JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityStudent.gibbonActivityID=:gibbonActivityID AND gibbonActivityStudent.gibbonPersonID=:gibbonPersonID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $result = $container->get(ActivityGateway::class)->selectActivityAndStudent($gibbonActivityID, $gibbonPersonID);
if ($result->rowCount() != 1) {
$page->addError(__('The specified record cannot be found.'));
@@ -69,4 +63,4 @@
}
}
}
-?>
+?>
\ No newline at end of file
diff --git a/modules/Activities/activities_manage_enrolment_edit.php b/modules/Activities/activities_manage_enrolment_edit.php
index e553d9ab73..b0c54333ec 100644
--- a/modules/Activities/activities_manage_enrolment_edit.php
+++ b/modules/Activities/activities_manage_enrolment_edit.php
@@ -19,13 +19,14 @@
along with this program. If not, see .
*/
-use Gibbon\Domain\School\SchoolYearTermGateway;
-use Gibbon\Domain\System\SettingGateway;
use Gibbon\Forms\Form;
use Gibbon\Services\Format;
+use Gibbon\Domain\System\SettingGateway;
+use Gibbon\Domain\Activities\ActivityGateway;
+use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Http\Url;
-//Module includes
+// Module includes
require_once __DIR__ . '/moduleFunctions.php';
if (isActionAccessible($guid, $connection2, '/modules/Activities/activities_manage_enrolment_edit.php') == false) {
@@ -38,11 +39,7 @@
$highestAction = getHighestGroupedAction($guid, '/modules/Activities/activities_manage_enrolment.php', $connection2);
if ($highestAction == 'My Activities_viewEditEnrolment') {
-
- $data = array('gibbonPersonID' => $session->get('gibbonPersonID'), 'gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonActivity.*, NULL as status, gibbonActivityStaff.role FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivity.gibbonActivityID=gibbonActivityStaff.gibbonActivityID) WHERE gibbonActivity.gibbonActivityID=:gibbonActivityID AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND gibbonActivityStaff.role='Organiser' AND gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name";
- $result = $connection2->prepare($sql);
- $result->execute($data);
+ $result = $container->get(ActivityGateway::class)->selectActivityByYearandStaff($session->get('gibbonPersonID'), $session->get('gibbonSchoolYearID'), $gibbonActivityID);
if (!$result || $result->rowCount() == 0) {
//Acess denied
@@ -64,18 +61,14 @@
if ($gibbonPersonID == '' or $gibbonActivityID == '') {
$page->addError(__('You have not specified one or more required parameters.'));
} else {
-
- $data = array('gibbonActivityID' => $gibbonActivityID, 'gibbonPersonID' => $gibbonPersonID);
- $sql = 'SELECT gibbonActivity.*, gibbonActivityStudent.*, surname, preferredName, gibbonActivityType.access, gibbonActivityType.maxPerStudent, gibbonActivityType.enrolmentType, gibbonActivityType.backupChoice, gibbonActivityType.waitingList FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID) JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) LEFT JOIN gibbonActivityType ON (gibbonActivity.type=gibbonActivityType.name) WHERE gibbonActivityStudent.gibbonActivityID=:gibbonActivityID AND gibbonActivityStudent.gibbonPersonID=:gibbonPersonID';
- $result = $connection2->prepare($sql);
- $result->execute($data);
-
+ $result = $container->get(ActivityGateway::class)->getActivityAndStudentDetails($gibbonActivityID, $gibbonPersonID);
+
if ($result->rowCount() != 1) {
$page->addError(__('The specified record cannot be found.'));
} else {
//Let's go!
$values = $result->fetch();
-
+
$settingGateway = $container->get(SettingGateway::class);
$dateType = $settingGateway->getSettingByScope('Activities', 'dateType');
diff --git a/modules/Activities/activities_my_full.php b/modules/Activities/activities_my_full.php
index c9f05d6ea1..6b4839f1aa 100644
--- a/modules/Activities/activities_my_full.php
+++ b/modules/Activities/activities_my_full.php
@@ -19,6 +19,8 @@
along with this program. If not, see .
*/
+use Gibbon\Domain\Activities\ActivityGateway;
+use Gibbon\Domain\Activities\ActivityStaffGateway;
use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Services\Format;
@@ -47,11 +49,8 @@
else {
$today = date('Y-m-d');
- $data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT gibbonActivity.*, gibbonActivityType.description as activityTypeDescription FROM gibbonActivity LEFT JOIN gibbonActivityType ON (gibbonActivity.type=gibbonActivityType.name) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' AND gibbonActivityID=:gibbonActivityID";
- $result = $connection2->prepare($sql);
- $result->execute($data);
-
+ $result = $container->get(ActivityGateway::class)->getActivityAndDescription($session->get('gibbonSchoolYearID'), $gibbonActivityID);
+
if ($result->rowCount() != 1) {
echo "
";
echo __('The selected record does not exist, or you do not have access to it.');
@@ -123,12 +122,9 @@
echo '';
echo "
";
echo "".__('Staff').' ';
-
- $dataStaff = array('gibbonActivityID' => $row['gibbonActivityID']);
- $sqlStaff = "SELECT title, preferredName, surname, role FROM gibbonActivityStaff JOIN gibbonPerson ON (gibbonActivityStaff.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityID=:gibbonActivityID AND gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<='".date('Y-m-d')."') AND (dateEnd IS NULL OR dateEnd>='".date('Y-m-d')."') ORDER BY surname, preferredName";
- $resultStaff = $connection2->prepare($sqlStaff);
- $resultStaff->execute($dataStaff);
-
+
+ $resultStaff = $container->get(ActivityStaffGateway::class)->selectStaffByActivity( $row['gibbonActivityID']);
+
if ($resultStaff->rowCount() < 1) {
echo ''.__('None').'';
} else {
@@ -218,7 +214,6 @@
echo '';
}
-
$dataStudents = array('gibbonActivityID' => $row['gibbonActivityID']);
$sqlStudents = "SELECT title, preferredName, surname FROM gibbonActivityStudent JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityID=:gibbonActivityID AND gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<='".date('Y-m-d')."') AND (dateEnd IS NULL OR dateEnd>='".date('Y-m-d')."') AND gibbonActivityStudent.status='Waiting List' ORDER BY timestamp";
$resultStudents = $connection2->prepare($sqlStudents);
diff --git a/modules/Library/library_lending_item_edit.php b/modules/Library/library_lending_item_edit.php
index c111b90738..81bf7a1e0c 100644
--- a/modules/Library/library_lending_item_edit.php
+++ b/modules/Library/library_lending_item_edit.php
@@ -20,8 +20,9 @@
*/
use Gibbon\Forms\Form;
-use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Services\Format;
+use Gibbon\Domain\User\UserGateway;
+use Gibbon\Forms\DatabaseFormFactory;
$gibbonLibraryItemEventID = trim($_GET['gibbonLibraryItemEventID']) ?? '';
$gibbonLibraryItemID = trim($_GET['gibbonLibraryItemID']) ?? '';
@@ -152,8 +153,7 @@
}, array());
}
- $sql = "SELECT gibbonPersonID, surname, preferredName, status, username FROM gibbonPerson WHERE status='Full' OR status='Expected' ORDER BY surname, preferredName";
- $result = $pdo->executeQuery(array(), $sql);
+ $result = $container->get(UserGateway::class)->selectUsers();
if ($result->rowCount() > 0) {
$people['--'.__('All Users').'--'] = array_reduce($result->fetchAll(), function($group, $item) {
diff --git a/modules/Library/library_lending_item_return.php b/modules/Library/library_lending_item_return.php
index 2360bcbe1d..7bd7372736 100644
--- a/modules/Library/library_lending_item_return.php
+++ b/modules/Library/library_lending_item_return.php
@@ -20,8 +20,9 @@
*/
use Gibbon\Forms\Form;
-use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Services\Format;
+use Gibbon\Domain\User\UserGateway;
+use Gibbon\Forms\DatabaseFormFactory;
$gibbonLibraryItemEventID = trim($_GET['gibbonLibraryItemEventID']) ?? '';
$gibbonLibraryItemID = trim($_GET['gibbonLibraryItemID']) ?? '';
@@ -127,8 +128,7 @@
}, array());
}
- $sql = "SELECT gibbonPersonID, surname, preferredName, status, username FROM gibbonPerson WHERE status='Full' OR status='Expected' ORDER BY surname, preferredName";
- $result = $pdo->executeQuery(array(), $sql);
+ $result = $container->get(UserGateway::class)->selectUsers();
if ($result->rowCount() > 0) {
$people['--'.__('All Users').'--'] = array_reduce($result->fetchAll(), function($group, $item) {
diff --git a/modules/Library/library_lending_item_signout.php b/modules/Library/library_lending_item_signout.php
index 7524b05dbb..8991707096 100644
--- a/modules/Library/library_lending_item_signout.php
+++ b/modules/Library/library_lending_item_signout.php
@@ -19,10 +19,11 @@
along with this program. If not, see .
*/
-use Gibbon\Domain\System\SettingGateway;
use Gibbon\Forms\Form;
-use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Services\Format;
+use Gibbon\Domain\User\UserGateway;
+use Gibbon\Forms\DatabaseFormFactory;
+use Gibbon\Domain\System\SettingGateway;
$gibbonLibraryItemID = trim($_GET['gibbonLibraryItemID'] ?? '');
$gibbonLibraryItemEventID = $_GET['gibbonLibraryItemEventID'] ?? '';
diff --git a/modules/Markbook/moduleFunctions.php b/modules/Markbook/moduleFunctions.php
index e55f91ade5..3afcdbc99e 100644
--- a/modules/Markbook/moduleFunctions.php
+++ b/modules/Markbook/moduleFunctions.php
@@ -101,7 +101,15 @@ function classChooser($guid, $pdo, $gibbonCourseClassID)
if (isset($currentTerm['gibbonSchoolYearTermID'])) {
$selectTerm = $currentTerm['gibbonSchoolYearTermID'];
}
-
+ $result = $container->get(SchoolYearTermGateway::class)->selectSchoolYearTermName($session->get('gibbonSchoolYearID'));
+ $terms = ($result->rowCount() > 0)? $result->fetchAll(\PDO::FETCH_KEY_PAIR) : array();
+
+ $col->addContent(__('Term').':')->prepend(' ');
+ $col->addSelect('gibbonSchoolYearTermID')
+ ->fromArray(array('-1' => __('All Terms')))
+ ->fromArray($terms)
+ ->selected($selectTerm)
+ ->setClass('shortWidth');
}
$data = array("gibbonSchoolYearID" => $session->get('gibbonSchoolYearID'));
diff --git a/src/Domain/Activities/ActivityAttendanceGateway.php b/src/Domain/Activities/ActivityAttendanceGateway.php
new file mode 100644
index 0000000000..f5d4e6eba5
--- /dev/null
+++ b/src/Domain/Activities/ActivityAttendanceGateway.php
@@ -0,0 +1,65 @@
+.
+*/
+
+namespace Gibbon\Domain\Activities;
+
+use Gibbon\Domain\Traits\TableAware;
+use Gibbon\Domain\QueryCriteria;
+use Gibbon\Domain\QueryableGateway;
+use Gibbon\Services\Format;
+
+/**
+ * Activity Gateway
+ *
+ * @version v27
+ * @since v27
+ */
+class ActivityAttendanceGateway extends QueryableGateway
+{
+ use TableAware;
+
+ private static $tableName = 'gibbonActivityAttendance';
+ private static $primaryKey = 'gibbonActivityAttendanceID';
+
+ private static $searchableColumns = [];
+
+ public function selectStudentAttendanceByActivity($gibbonActivityID) {
+
+ $data = ['gibbonActivityID' => $gibbonActivityID];
+
+ $sql = 'SELECT gibbonActivityAttendance.date, gibbonActivityAttendance.timestampTaken, gibbonActivityAttendance.attendance, gibbonPerson.preferredName, gibbonPerson.surname
+ FROM gibbonActivityAttendance, gibbonPerson
+ WHERE gibbonActivityAttendance.gibbonPersonIDTaker=gibbonPerson.gibbonPersonID
+ AND gibbonActivityAttendance.gibbonActivityID=:gibbonActivityID';
+
+ return $this->db()->select($sql, $data);
+
+ }
+
+ public function selectActivityAttendanceByActivity ($gibbonActivityID, $date) {
+ $data = ['gibbonActivityID' => $gibbonActivityID, 'date' => $date];
+
+ $sql = 'SELECT gibbonActivityAttendanceID FROM gibbonActivityAttendance WHERE gibbonActivityID=:gibbonActivityID AND date=:date';
+
+ return $this->db()->select($sql, $data);
+ }
+
+}
diff --git a/src/Domain/Activities/ActivityGateway.php b/src/Domain/Activities/ActivityGateway.php
index eb14b55c9f..bd21dd677d 100644
--- a/src/Domain/Activities/ActivityGateway.php
+++ b/src/Domain/Activities/ActivityGateway.php
@@ -289,11 +289,7 @@ public function selectActivityEnrolmentByStudent($gibbonSchoolYearID, $gibbonPer
public function selectWeekdayNamesByActivity($gibbonActivityID)
{
$data = array('gibbonActivityID' => $gibbonActivityID);
- $sql = "SELECT DISTINCT nameShort
- FROM gibbonActivitySlot
- JOIN gibbonDaysOfWeek ON (gibbonActivitySlot.gibbonDaysOfWeekID=gibbonDaysOfWeek.gibbonDaysOfWeekID)
- WHERE gibbonActivityID=:gibbonActivityID
- ORDER BY sequenceNumber";
+ $sql = "SELECT DISTINCT nameShort FROM gibbonActivitySlot JOIN gibbonDaysOfWeek ON (gibbonActivitySlot.gibbonDaysOfWeekID=gibbonDaysOfWeek.gibbonDaysOfWeekID) WHERE gibbonActivityID=:gibbonActivityID ORDER BY sequenceNumber";
return $this->db()->select($sql, $data);
}
@@ -419,32 +415,15 @@ public function selectActivityDetailsByCategory($gibbonActivityCategoryID)
function getStudentActivityCountByType($type, $gibbonPersonID)
{
$data = array('gibbonPersonID' => $gibbonPersonID, 'type' => $type, 'date' => date('Y-m-d'));
- $sql = "SELECT COUNT(*)
- FROM gibbonActivity
- JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID)
- JOIN gibbonSchoolYear ON (gibbonSchoolYear.gibbonSchoolYearID=gibbonActivity.gibbonSchoolYearID)
- WHERE gibbonActivityStudent.gibbonPersonID=:gibbonPersonID
- AND gibbonActivityStudent.status='Accepted'
- AND gibbonActivity.type=:type
- AND gibbonActivity.active='Y'
- AND :date BETWEEN gibbonSchoolYear.firstDay AND gibbonSchoolYear.lastDay";
+ $sql = "SELECT COUNT(*) FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID) JOIN gibbonSchoolYear ON (gibbonSchoolYear.gibbonSchoolYearID=gibbonActivity.gibbonSchoolYearID) WHERE gibbonActivityStudent.gibbonPersonID=:gibbonPersonID AND gibbonActivityStudent.status='Accepted' AND gibbonActivity.type=:type AND gibbonActivity.active='Y' AND :date BETWEEN gibbonSchoolYear.firstDay AND gibbonSchoolYear.lastDay";
+
return $this->db()->selectOne($sql, $data);
}
function getOverlappingActivityTimeSlot($gibbonActivityID, $gibbonPersonID, $dateType)
{
$data = ['gibbonActivityID' => $gibbonActivityID, 'gibbonPersonID' => $gibbonPersonID];
- $sql = "SELECT existingActivity.gibbonActivityID as id, existingActivity.name
- FROM gibbonActivity as sourceActivity
- JOIN gibbonActivitySlot as sourceSlot ON (sourceActivity.gibbonActivityID=sourceSlot.gibbonActivityID)
- JOIN gibbonActivity as existingActivity ON (existingActivity.gibbonSchoolYearID=sourceActivity.gibbonSchoolYearID)
- LEFT JOIN gibbonActivitySlot as existingSlot ON (existingActivity.gibbonActivityID=existingSlot.gibbonActivityID)
- LEFT JOIN gibbonActivityStudent as existingEnrolment ON (existingActivity.gibbonActivityID=existingEnrolment.gibbonActivityID AND existingEnrolment.gibbonPersonID=:gibbonPersonID )
- WHERE sourceActivity.gibbonActivityID=:gibbonActivityID
- AND existingEnrolment.status='Accepted'
- AND existingActivity.active='Y'
- AND existingSlot.gibbonDaysOfWeekID=sourceSlot.gibbonDaysOfWeekID
- AND (
+ $sql = "SELECT existingActivity.gibbonActivityID as id, existingActivity.name FROM gibbonActivity as sourceActivity JOIN gibbonActivitySlot as sourceSlot ON (sourceActivity.gibbonActivityID=sourceSlot.gibbonActivityID)JOIN gibbonActivity as existingActivity ON (existingActivity.gibbonSchoolYearID=sourceActivity.gibbonSchoolYearID) LEFT JOIN gibbonActivitySlot as existingSlot ON (existingActivity.gibbonActivityID=existingSlot.gibbonActivityID) LEFT JOIN gibbonActivityStudent as existingEnrolment ON (existingActivity.gibbonActivityID=existingEnrolment.gibbonActivityID AND existingEnrolment.gibbonPersonID=:gibbonPersonID) WHERE sourceActivity.gibbonActivityID=:gibbonActivityID AND existingEnrolment.status='Accepted' AND existingActivity.active='Y' AND existingSlot.gibbonDaysOfWeekID=sourceSlot.gibbonDaysOfWeekID AND (
(existingSlot.timeStart >= sourceSlot.timeStart AND existingSlot.timeStart < sourceSlot.timeEnd) OR
(sourceSlot.timeStart >= existingSlot.timeStart AND sourceSlot.timeStart < existingSlot.timeEnd)
)
@@ -461,7 +440,39 @@ function getOverlappingActivityTimeSlot($gibbonActivityID, $gibbonPersonID, $dat
return $this->db()->select($sql, $data);
}
+
+ public function selectActivityByYearandStaff($gibbonPersonID, $gibbonSchoolYearID, $gibbonActivityID)
+ {
+ $data = ['gibbonPersonID' => $gibbonPersonID, 'gibbonSchoolYearID' => $gibbonSchoolYearID, 'gibbonActivityID' => $gibbonActivityID];
+ $sql = "SELECT gibbonActivity.*, NULL as status, gibbonActivityStaff.role FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivity.gibbonActivityID=gibbonActivityStaff.gibbonActivityID) WHERE gibbonActivity.gibbonActivityID=:gibbonActivityID AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND gibbonActivityStaff.role='Organiser' AND gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name";
+
+ return $this->db()->select($sql, $data);
+ }
+
+ public function selectActivityAndStudent($gibbonActivityID, $gibbonPersonID)
+ {
+ $data = ['gibbonActivityID' => $gibbonActivityID, 'gibbonPersonID' => $gibbonPersonID];
+ $sql = 'SELECT gibbonActivity.*, gibbonActivityStudent.*, surname, preferredName FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID) JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityStudent.gibbonActivityID=:gibbonActivityID AND gibbonActivityStudent.gibbonPersonID=:gibbonPersonID';
+
+ return $this->db()->select($sql, $data);
+ }
+
+ public function getActivityAndStudentDetails($gibbonActivityID, $gibbonPersonID)
+ {
+ $data = ['gibbonActivityID' => $gibbonActivityID, 'gibbonPersonID' => $gibbonPersonID];
+ $sql = 'SELECT gibbonActivity.*, gibbonActivityStudent.*, surname, preferredName, gibbonActivityType.access, gibbonActivityType.maxPerStudent, gibbonActivityType.enrolmentType, gibbonActivityType.backupChoice FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID) JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) LEFT JOIN gibbonActivityType ON (gibbonActivity.type=gibbonActivityType.name) WHERE gibbonActivityStudent.gibbonActivityID=:gibbonActivityID AND gibbonActivityStudent.gibbonPersonID=:gibbonPersonID';
+
+ return $this->db()->select($sql, $data);
+ }
+
+ public function getActivityAndDescription($gibbonSchoolYearID, $gibbonActivityID)
+ {
+ $data = ['gibbonSchoolYearID' => $gibbonSchoolYearID, 'gibbonActivityID' => $gibbonActivityID];
+ $sql = "SELECT gibbonActivity.*, gibbonActivityType.description as activityTypeDescription FROM gibbonActivity LEFT JOIN gibbonActivityType ON (gibbonActivity.type=gibbonActivityType.name) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' AND gibbonActivityID=:gibbonActivityID";
+ return $this->db()->select($sql, $data);
+ }
+
public function getActivitySignUpAccess($gibbonActivityID, $gibbonPersonID)
{
$data = ['gibbonActivityID' => $gibbonActivityID, 'gibbonPersonID' => $gibbonPersonID];
diff --git a/src/Domain/Activities/ActivityStaffGateway.php b/src/Domain/Activities/ActivityStaffGateway.php
index b3f2a44bf8..160f98809b 100644
--- a/src/Domain/Activities/ActivityStaffGateway.php
+++ b/src/Domain/Activities/ActivityStaffGateway.php
@@ -40,7 +40,8 @@ class ActivityStaffGateway extends QueryableGateway
private static $searchableColumns = ['surname', 'preferredName'];
- public function selectActivityStaff($gibbonActivityID) {
+ public function selectActivityStaff($gibbonActivityID)
+ {
$select = $this
->newSelect()
->cols(['preferredName, surname, gibbonActivityStaff.*'])
@@ -123,18 +124,21 @@ public function selectStaffByCategory($gibbonActivityCategoryID)
public function selectStaffByActivity($gibbonActivityID) {
$gibbonActivityID = is_array($gibbonActivityID) ? $gibbonActivityID : [$gibbonActivityID];
- $data = ['gibbonActivityID' => $gibbonActivityID];
+ $data = ['gibbonActivityID' => $gibbonActivityID, 'today' => date('Y-m-d')];
$sql = "SELECT gibbonActivity.*, gibbonActivityStaff.gibbonPersonID, gibbonActivityStaff.role
FROM gibbonActivity
JOIN gibbonActivityStaff ON (gibbonActivity.gibbonActivityID=gibbonActivityStaff.gibbonActivityID)
+ JOIN gibbonPerson ON (gibbonPerson.gibbonPersonID=gibbonActivityStaff.gibbonPersonID)
WHERE gibbonActivity.gibbonActivityID=:gibbonActivityID
AND gibbonActivityStaff.role='Organiser' AND active='Y'
+ AND gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<=:today) AND (dateEnd IS NULL OR dateEnd>=:today)
ORDER BY name";
return $this->db()->select($sql, $data);
}
- public function selectActivityOrganiserByPerson($gibbonActivityID, $gibbonPersonID) {
+ public function selectActivityOrganiserByPerson($gibbonActivityID, $gibbonPersonID)
+ {
$data = ['gibbonPersonID' => $gibbonPersonID, 'gibbonActivityID' => $gibbonActivityID];
$sql = "SELECT gibbonActivity.*, NULL as status, gibbonActivityStaff.role FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivity.gibbonActivityID=gibbonActivityStaff.gibbonActivityID) WHERE gibbonActivity.gibbonActivityID=:gibbonActivityID AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND gibbonActivityStaff.role='Organiser' AND active='Y' ORDER BY name";
@@ -183,11 +187,28 @@ public function selectActivityStaffByID($gibbonActivityID, $gibbonPersonID) {
]);
}
- public function insertActivityStaff($gibbonActivityID, $gibbonPersonID, $role) {
+ public function insertActivityStaff($gibbonActivityID, $gibbonPersonID, $role)
+ {
return $this->insert([
'gibbonPersonID' => $gibbonPersonID,
'gibbonActivityID' => $gibbonActivityID,
'role' => $role
]);
}
+
+ public function selectActivityByStaff($gibbonPersonID)
+ {
+ $data = ['gibbonPersonID' => $gibbonPersonID];
+ $sql = "SELECT gibbonActivity.gibbonActivityID AS value, name, programStart FROM gibbonActivityStaff JOIN gibbonActivity ON (gibbonActivityStaff.gibbonActivityID = gibbonActivity.gibbonActivityID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND (gibbonActivityStaff.role='Organiser' OR gibbonActivityStaff.role='Assistant' OR gibbonActivityStaff.role='Coach') ORDER BY name, programStart";
+
+ return $this->db()->select($sql, $data);
+ }
+
+ public function selectStaffRoleByActivity($gibbonPersonID, $gibbonActivityID )
+ {
+ $dataCheck = ['gibbonPersonID' => $gibbonPersonID, 'gibbonActivityID' => $gibbonActivityID];
+ $sqlCheck = "SELECT role FROM gibbonActivityStaff WHERE gibbonActivityID=:gibbonActivityID AND gibbonPersonID=:gibbonPersonID";
+
+ return $this->db()->select($sqlCheck, $dataCheck);
+ }
}
diff --git a/src/Domain/Activities/ActivityStudentGateway.php b/src/Domain/Activities/ActivityStudentGateway.php
index 500aa738ea..15d3f1fbd1 100644
--- a/src/Domain/Activities/ActivityStudentGateway.php
+++ b/src/Domain/Activities/ActivityStudentGateway.php
@@ -40,7 +40,8 @@ class ActivityStudentGateway extends QueryableGateway
private static $searchableColumns = ['surname', 'preferredName'];
- public function queryActivityEnrolment($criteria, $gibbonActivityID) {
+ public function queryActivityEnrolment($criteria, $gibbonActivityID)
+ {
$query = $this
->newQuery()
->cols(['gibbonActivityStudent.*', 'surname', 'preferredName', 'gibbonFormGroup.nameShort as formGroup', 'FIND_IN_SET(gibbonActivityStudent.status, "Accepted,Pending,Waiting List,Not Accepted,Left") as sortOrder'])
@@ -55,7 +56,16 @@ public function queryActivityEnrolment($criteria, $gibbonActivityID) {
return $this->runQuery($query, $criteria);
}
-
+
+ public function selectActivityByStudents($gibbonActivityID)
+ {
+ $data = ['gibbonActivityID' => $gibbonActivityID];
+ $sql = "SELECT gibbonSchoolYearTermIDList, maxParticipants, programStart, programEnd, (SELECT COUNT(*)
+ FROM gibbonActivityStudent JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityStudent.gibbonActivityID=gibbonActivity.gibbonActivityID AND gibbonActivityStudent.status='Waiting List' AND gibbonPerson.status='Full') AS waiting FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID";
+
+ return $this->db()->select($sql, $data);
+ }
+
public function queryAllActivityParticipants($criteria, $gibbonActivityID) {
$query = $this
->newQuery()
@@ -168,10 +178,10 @@ public function selectEnrolmentsByCategory($gibbonActivityCategoryID)
AND (gibbonPerson.dateEnd IS NULL OR gibbonPerson.dateEnd >= :today)
GROUP BY gibbonActivityStudent.gibbonPersonID
ORDER BY gibbonYearGroup.sequenceNumber, gibbonFormGroup.name, gibbonPerson.surname, gibbonPerson.preferredName";
-
+
return $this->db()->select($sql, $data);
}
-
+
public function getEnrolmentByCategoryAndPerson($gibbonActivityCategoryID, $gibbonPersonID)
{
$data = ['gibbonActivityCategoryID' => $gibbonActivityCategoryID, 'gibbonPersonID' => $gibbonPersonID];
@@ -196,5 +206,4 @@ public function deleteEnrolmentByCategoryAndPerson($gibbonActivityCategoryID, $g
return $this->db()->selectOne($sql, $data);
}
-
}
diff --git a/src/Domain/School/DaysOfWeekGateway.php b/src/Domain/School/DaysOfWeekGateway.php
index 64df551be7..e94ad24567 100644
--- a/src/Domain/School/DaysOfWeekGateway.php
+++ b/src/Domain/School/DaysOfWeekGateway.php
@@ -53,5 +53,11 @@ public function getDayOfWeekByDate($date)
return $this->db()->selectOne($sql, $data);
}
-
+ public function selectDaysOfWeek()
+ {
+ $sql = "SELECT gibbonDaysOfWeekID as value, name FROM gibbonDaysOfWeek ORDER BY sequenceNumber";
+
+ return $this->db()->select($sql);
+
+ }
}
diff --git a/src/Domain/School/SchoolYearGateway.php b/src/Domain/School/SchoolYearGateway.php
index 739e7936a3..a223dd8fd8 100644
--- a/src/Domain/School/SchoolYearGateway.php
+++ b/src/Domain/School/SchoolYearGateway.php
@@ -169,4 +169,11 @@ public function getCurrentSchoolYear()
{
return $this->db()->selectOne("SELECT * FROM gibbonSchoolYear WHERE status='Current'");
}
+
+ public function selectCurrentOrUpcomingSchoolYear()
+ {
+ $sql = "SELECT gibbonSchoolYearID as value, gibbonSchoolYear.name FROM gibbonSchoolYear WHERE (status='Upcoming' OR status='Current') ORDER BY sequenceNumber LIMIT 0, 2";
+
+ return $this->db()->select($sql);
+ }
}
diff --git a/src/Domain/School/SchoolYearTermGateway.php b/src/Domain/School/SchoolYearTermGateway.php
index cfad84ee27..2e911e4d51 100644
--- a/src/Domain/School/SchoolYearTermGateway.php
+++ b/src/Domain/School/SchoolYearTermGateway.php
@@ -198,4 +198,20 @@ public function getTermNamesByID($gibbonSchoolYearTermID): array
])->fetchAll(\PDO::FETCH_COLUMN, 0);
}
+ public function selectBySchoolYear($gibbonSchoolYearID)
+ {
+ $data = ['gibbonSchoolYearID' => $gibbonSchoolYearID, 'today' => date('Y-m-d')];
+ $sql = "SELECT * FROM gibbonSchoolYearTerm WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND lastDay>=:today ORDER BY sequenceNumber";
+
+ return $this->db()->select($sql, $data);
+ }
+
+ public function selectSchoolYearTermName($gibbonSchoolYearID)
+ {
+ $data = ['gibbonSchoolYearID' => $gibbonSchoolYearID];
+ $sql = "SELECT gibbonSchoolYearTermID as value, name FROM gibbonSchoolYearTerm WHERE gibbonSchoolYearID=:gibbonSchoolYearID ORDER BY sequenceNumber";
+
+ return $this->db()->select($sql, $data);
+ }
+
}
diff --git a/src/Domain/User/UserGateway.php b/src/Domain/User/UserGateway.php
index 782a79b223..b05e91e03d 100644
--- a/src/Domain/User/UserGateway.php
+++ b/src/Domain/User/UserGateway.php
@@ -213,7 +213,15 @@ public function removeRoleFromUser($gibbonPersonID, $gibbonRoleID)
return $this->db()->update($sql, $data);
}
-
+
+ public function selectUserByFormGroup($gibbonYearGroupIDList, $gibbonSchoolYearID)
+ {
+ $data = ['gibbonYearGroupIDList' => $gibbonYearGroupIDList, 'gibbonSchoolYearID' => $gibbonSchoolYearID, 'date' => date('Y-m-d')];
+ $sql = "SELECT gibbonPerson.gibbonPersonID, preferredName, surname, gibbonFormGroup.name AS formGroupName FROM gibbonPerson JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) JOIN gibbonFormGroup ON (gibbonStudentEnrolment.gibbonFormGroupID=gibbonFormGroup.gibbonFormGroupID) JOIN gibbonYearGroup ON (gibbonStudentEnrolment.gibbonYearGroupID=gibbonYearGroup.gibbonYearGroupID) WHERE gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID AND FIND_IN_SET(gibbonYearGroup.gibbonYearGroupID, :gibbonYearGroupIDList) AND gibbonPerson.status='FULL' AND (dateStart IS NULL OR dateStart<=:date) AND (dateEnd IS NULL OR dateEnd>=:date) ORDER BY formGroupName, gibbonPerson.surname, gibbonPerson.preferredName";
+
+ return $this->db()->select($sql, $data);
+ }
+
public function selectActiveUsersBySchoolYear($gibbonSchoolYearID)
{
$data = ['gibbonSchoolYearID' => $gibbonSchoolYearID];
@@ -221,6 +229,20 @@ public function selectActiveUsersBySchoolYear($gibbonSchoolYearID)
return $this->db()->select($sql, $data);
}
+
+ public function selectUsers()
+ {
+ $sql = "SELECT gibbonPersonID, surname, preferredName, status, username FROM gibbonPerson WHERE status='Full' OR status='Expected' ORDER BY surname, preferredName";
+
+ return $this->db()->select($sql);
+ }
+
+ public function selectStudentsByActivity($gibbonSchoolYearID, $gibbonActivityID)
+ {
+ $data = ['gibbonSchoolYearID' => $gibbonSchoolYearID, 'gibbonActivityID' => $gibbonActivityID, 'today' => date('Y-m-d')];
+ $sql = "SELECT gibbonPerson.gibbonPersonID, surname, preferredName, gibbonFormGroupID, gibbonActivityStudent.status
+ FROM gibbonPerson JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart <= :today) AND (dateEnd IS NULL OR dateEnd >= :today) AND gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStudent.status='Accepted' AND gibbonActivityID=:gibbonActivityID ORDER BY gibbonActivityStudent.status, surname, preferredName";
+ }
public function selectTransportList()
{
|