$count = 0; $rowNum = "odd"; while ($row = $resultLike->fetch()) { if ($count % 2 == 0) { $rowNum = "even"; } else { $rowNum = "odd"; } $count++; //COLOR ROW BY STATUS! print "<tr class={$rowNum}>"; print "<td>"; print getUserPhoto($guid, $row["image_240"], 75); print "</td>"; print "<td>"; $roleCategory = getRoleCategory($row["gibbonRoleIDPrimary"], $connection2); if ($roleCategory == "Student" and isActionAccessible($guid, $connection2, "/modules/Students/student_view_details.php")) { print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Students/student_view_details.php&gibbonPersonID=" . $row["gibbonPersonID"] . "'>" . formatName("", $row["preferredName"], $row["surname"], $roleCategory, false) . "</a><br/>"; print "<span style='font-size: 85%; font-style: italic'>" . _($roleCategory) . "</i>"; } else { print formatName("", $row["preferredName"], $row["surname"], $roleCategory, false) . "<br/>"; print "<span style='font-size: 85%; font-style: italic'>" . _($roleCategory) . "</i>"; } print "</td>"; print "<td>"; print _($row["title"]) . "<br/>"; print "<span style='font-size: 85%; font-style: italic'>" . $row["comment"] . "</span>"; print "</td>"; print "<td>"; print dateConvertBack($guid, substr($row["timestamp"], 0, 10)); print "</td>";
} catch (PDOException $e) { print "<div class='error'>" . $e->getMessage() . "</div>"; } } } if ($result->rowCount() != 1) { print "<div class='error'>"; print _("The selected record does not exist, or you do not have access to it."); print "</div>"; } else { $row = $result->fetch(); print "<div class='trail'>"; print "<div class='trailHead'><a href='" . $_SESSION[$guid]["absoluteURL"] . "'>" . _("Home") . "</a> > <a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . getModuleName($_GET["q"]) . "/" . getModuleEntry($_GET["q"], $connection2, $guid) . "'>" . _(getModuleName($_GET["q"])) . "</a> > </div><div class='trailEnd'>" . _('Planner') . " " . $row["course"] . "." . $row["class"] . "</div>"; print "</div>"; //Get Smart Workflow help message $category = getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2); if ($category == "Staff") { $smartWorkflowHelp = getSmartWorkflowHelp($connection2, $guid, 3); if ($smartWorkflowHelp != false) { print $smartWorkflowHelp; } } if (isset($_GET["updateReturn"])) { $updateReturn = $_GET["updateReturn"]; } else { $updateReturn = ""; } $updateReturnMessage = ""; $class = "error"; if (!($updateReturn == "")) { if ($updateReturn == "fail0") {
?> </i></span> </td> <td class="hiddenReveal right"> <select name="activities[]" id="activities[]" multiple style="width: 302px; height: 100px"> <?php try { if (isActionAccessible($guid, $connection2, "/modules/Messenger/messenger_post.php", "New Message_activities_any")) { $dataSelect = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"]); $sqlSelect = "SELECT * FROM gibbonActivity WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name"; } else { if (getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2) == "Staff") { $dataSelect = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlSelect = "SELECT * FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivityStaff.gibbonActivityID=gibbonActivity.gibbonActivityID) WHERE gibbonPersonID=:gibbonPersonID AND gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name"; } if (getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2) == "Student") { $dataSelect = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlSelect = "SELECT * FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonActivityID=gibbonActivity.gibbonActivityID) WHERE gibbonPersonID=:gibbonPersonID AND gibbonSchoolYearID=:gibbonSchoolYearID AND status='Accepted' AND active='Y' ORDER BY name"; } } $resultSelect = $connection2->prepare($sqlSelect); $resultSelect->execute($dataSelect); } catch (PDOException $e) { } while ($rowSelect = $resultSelect->fetch()) { print "<option value='" . $rowSelect["gibbonActivityID"] . "'>" . htmlPrep($rowSelect["name"]) . "</option>"; } ?> </select> </td> </tr>
} if ($result->rowCount() != 1) { print "<div class='error'>"; print _("The specified record cannot be found."); print "</div>"; } else { //Let's go! $row = $result->fetch(); //Get categories $staff = FALSE; $student = FALSE; $parent = FALSE; $other = FALSE; $roles = explode(",", $row["gibbonRoleIDAll"]); foreach ($roles as $role) { $roleCategory = getRoleCategory($role, $connection2); if ($roleCategory == "Staff") { $staff = TRUE; } if ($roleCategory == "Student") { $student = TRUE; } if ($roleCategory == "Parent") { $parent = TRUE; } if ($roleCategory == "Other") { $other = TRUE; } } $search = ""; if (isset($_GET["search"])) {
function sidebar($connection2, $guid) { $googleOAuth = getSettingByScope($connection2, "System", "googleOAuth"); if (isset($_GET["loginReturn"])) { $loginReturn = $_GET["loginReturn"]; } else { $loginReturn = ""; } $loginReturnMessage = ""; if (!($loginReturn == "")) { if ($loginReturn == "fail0b") { $loginReturnMessage = _("Username or password not set."); } else { if ($loginReturn == "fail1") { $loginReturnMessage = _("Incorrect username and password."); } else { if ($loginReturn == "fail2") { $loginReturnMessage = _("You do not have sufficient privileges to login."); } else { if ($loginReturn == "fail5") { $loginReturnMessage = _("Your request failed due to a database error."); } else { if ($loginReturn == "fail6") { $loginReturnMessage = sprintf(_('Too many failed logins: please %1$sreset password%2$s.'), "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/passwordReset.php'>", "</a>"); } else { if ($loginReturn == "fail7") { $loginReturnMessage = sprintf(_('Error with Google Authentication. Please contact %1$s if you have any questions.'), "<a href='mailto:" . $_SESSION[$guid]["organisationDBAEmail"] . "'>" . $_SESSION[$guid]["organisationDBAName"] . "</a>"); } else { if ($loginReturn == "fail8") { $loginReturnMessage = sprintf(_('Gmail account does not match the email stored in %1$s. If you have logged in with your school Gmail account please contact %2$s if you have any questions.'), $_SESSION[$guid]["systemName"], "<a href='mailto:" . $_SESSION[$guid]["organisationDBAEmail"] . "'>" . $_SESSION[$guid]["organisationDBAName"] . "</a>"); } else { if ($loginReturn == "fail9") { $loginReturnMessage = _('Your primary role does not support the ability to log into the specified year.'); } } } } } } } } print "<div class='error'>"; print $loginReturnMessage; print "</div>"; } if ($_SESSION[$guid]["sidebarExtra"] != "" and $_SESSION[$guid]["sidebarExtraPosition"] != "bottom") { print "<div class='sidebarExtra'>"; print $_SESSION[$guid]["sidebarExtra"]; print "</div>"; } // Add Google Login Button if (isset($_SESSION[$guid]["username"]) == FALSE && isset($_SESSION[$guid]["email"]) == FALSE) { if ($googleOAuth == "Y") { print "<h2>"; print _("Login with Google"); print "</h2>"; ?> <script> $(function(){ $('#siteloader').load('lib/google/index.php'); }); </script> <div id="siteloader"></div> <?php } //End Check for Google Auth if (isset($_SESSION[$guid]["username"]) == FALSE) { // If Google Auth set to No make sure login screen not visible when logged in ?> <h2> <?php print _("Login"); ?> </h2> <form name="loginForm" method="post" action="./login.php?<?php if (isset($_GET["q"])) { print "q=" . $_GET["q"]; } ?> "> <table class='noIntBorder' cellspacing='0' style="width: 100%; margin: 0px 0px"> <tr> <td> <b><?php print _("Username"); ?> </b> </td> <td class="right"> <input name="username" id="username" maxlength=20 type="text" style="width:120px"> <script type="text/javascript"> var username=new LiveValidation('username', {onlyOnSubmit: true }); username.add(Validate.Presence); </script> </td> </tr> <tr> <td> <b><?php print _("Password"); ?> </b> </td> <td class="right"> <input name="password" id="password" maxlength=30 type="password" style="width:120px"> <script type="text/javascript"> var password=new LiveValidation('password', {onlyOnSubmit: true }); password.add(Validate.Presence); </script> </td> </tr> <tr class='schoolYear' id='schoolYear'> <td> <b><?php print _("School Year"); ?> </b> </td> <td class="right"> <select name="gibbonSchoolYearID" id="gibbonSchoolYearID" style="width: 120px"> <?php try { $dataSelect = array(); $sqlSelect = "SELECT * FROM gibbonSchoolYear ORDER BY sequenceNumber"; $resultSelect = $connection2->prepare($sqlSelect); $resultSelect->execute($dataSelect); } catch (PDOException $e) { print "<div class='error'>" . $e->getMessage() . "</div>"; } while ($rowSelect = $resultSelect->fetch()) { $selected = ""; if ($rowSelect["status"] == "Current") { $selected = "selected"; } print "<option {$selected} value='" . $rowSelect["gibbonSchoolYearID"] . "'>" . htmlPrep($rowSelect["name"]) . "</option>"; } ?> </select> </td> </tr> <tr class='language' id='language'> <td> <b><?php print _("Language"); ?> </b> </td> <td class="right"> <select name="gibboni18nID" id="gibboni18nID" style="width: 120px"> <?php try { $dataSelect = array(); $sqlSelect = "SELECT * FROM gibboni18n WHERE active='Y' ORDER BY name"; $resultSelect = $connection2->prepare($sqlSelect); $resultSelect->execute($dataSelect); } catch (PDOException $e) { print "<div class='error'>" . $e->getMessage() . "</div>"; } while ($rowSelect = $resultSelect->fetch()) { $selected = ""; if ($rowSelect["systemDefault"] == "Y") { $selected = "selected"; } print "<option {$selected} value='" . $rowSelect["gibboni18nID"] . "'>" . htmlPrep($rowSelect["name"]) . "</option>"; } ?> </select> </td> </tr> <tr> <td> </td> <td class="right"> <?php print "<script type='text/javascript'>"; print "\$(document).ready(function(){"; print "\$(\".schoolYear\").hide();"; print "\$(\".language\").hide();"; print "\$(\".show_hide\").fadeIn(1000);"; print "\$(\".show_hide\").click(function(){"; print "\$(\".schoolYear\").fadeToggle(1000);"; print "\$(\".language\").fadeToggle(1000);"; print "});"; print "});"; print "</script>"; ?> <span style='font-size: 10px'><a class='show_hide' onclick='false' href='#'><?php print _("Options"); ?> </a> . <a href="<?php print $_SESSION[$guid]["absoluteURL"]; ?> /index.php?q=passwordReset.php"><?php print _("Forgot Password?"); ?> </a></span> </td> </tr> <tr> <td class="right" colspan=2> <input type="hidden" name="address" value="<?php print $_SESSION[$guid]["address"]; ?> "> <input type="submit" value="Login"> </td> </tr> </table> </form> <?php } } //Show Module Menu //Check address to see if we are in the module area if (substr($_SESSION[$guid]["address"], 0, 8) == "/modules") { //Get and check the module name $moduleID = checkModuleReady($_SESSION[$guid]["address"], $connection2); if ($moduleID != FALSE) { $gibbonRoleIDCurrent = NULL; if (isset($_SESSION[$guid]["gibbonRoleIDCurrent"])) { $gibbonRoleIDCurrent = $_SESSION[$guid]["gibbonRoleIDCurrent"]; } try { $data = array("gibbonModuleID" => $moduleID, "gibbonRoleID" => $gibbonRoleIDCurrent); $sql = "SELECT gibbonModule.entryURL AS moduleEntry, gibbonModule.name AS moduleName, gibbonAction.name, gibbonAction.precedence, gibbonAction.category, gibbonAction.entryURL, URLList FROM gibbonModule, gibbonAction, gibbonPermission WHERE (gibbonModule.gibbonModuleID=:gibbonModuleID) AND (gibbonModule.gibbonModuleID=gibbonAction.gibbonModuleID) AND (gibbonAction.gibbonActionID=gibbonPermission.gibbonActionID) AND (gibbonPermission.gibbonRoleID=:gibbonRoleID) AND NOT gibbonAction.entryURL='' ORDER BY gibbonModule.name, category, gibbonAction.name, precedence DESC"; $result = $connection2->prepare($sql); $result->execute($data); } catch (PDOException $e) { } if ($result->rowCount() > 0) { $output = "<ul class='moduleMenu'>"; $currentCategory = ""; $lastCategory = ""; $currentName = ""; $lastName = ""; $count = 0; $links = 0; while ($row = $result->fetch()) { $moduleName = $row["moduleName"]; $moduleEntry = $row["moduleEntry"]; //Set active link class $style = ""; if (strpos($row["URLList"], getActionName($_SESSION[$guid]["address"])) === 0) { $style = "class='active'"; } $currentCategory = $row["category"]; if (strpos($row["name"], "_") > 0) { $currentName = _(substr($row["name"], 0, strpos($row["name"], "_"))); } else { $currentName = _($row["name"]); } if ($currentName != $lastName) { if ($currentCategory != $lastCategory) { if ($count > 0) { $output .= "</ul></li>"; } $output .= "<li><h4>" . _($currentCategory) . "</h4>"; $output .= "<ul>"; $output .= "<li><a {$style} href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . $row["moduleName"] . "/" . $row["entryURL"] . "'>" . _($currentName) . "</a></li>"; } else { $output .= "<li><a {$style} href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . $row["moduleName"] . "/" . $row["entryURL"] . "'>" . _($currentName) . "</a></li>"; } $links++; } $lastCategory = $currentCategory; $lastName = $currentName; $count++; } if ($count > 0) { $output .= "</ul></li>"; } $output .= "</ul>"; if ($links > 1 or isActionAccessible($guid, $connection2, "/modules/{$moduleName}/{$moduleEntry}") == FALSE) { print $output; } } } } //Show custom sidebar content on homepage for logged in users if ($_SESSION[$guid]["address"] == "" and isset($_SESSION[$guid]["username"])) { if (isset($_SESSION[$guid]["index_customSidebar.php"]) == FALSE) { if (is_file("./index_customSidebar.php")) { $_SESSION[$guid]["index_customSidebar.php"] = (include "./index_customSidebar.php"); } else { $_SESSION[$guid]["index_customSidebar.php"] = NULL; } } if (isset($_SESSION[$guid]["index_customSidebar.php"])) { print $_SESSION[$guid]["index_customSidebar.php"]; } } //Show parent photo uploader if ($_SESSION[$guid]["address"] == "" and isset($_SESSION[$guid]["username"])) { $sidebar = getParentPhotoUploader($connection2, $guid); if ($sidebar != FALSE) { print $sidebar; } } //Show homescreen widget for message wall if ($_SESSION[$guid]["address"] == "") { if (isset($_SESSION[$guid]["messageWallOutput"])) { if (isActionAccessible($guid, $connection2, "/modules/Messenger/messageWall_view.php")) { $attainmentAlternativeName = getSettingByScope($connection2, "Messenger", "enableHomeScreenWidget"); if ($attainmentAlternativeName == "Y") { print "<h2>"; print _("Message Wall"); print "</h2>"; if (count($_SESSION[$guid]["messageWallOutput"]) < 1) { print "<div class='warning'>"; print _("There are no records to display."); print "</div>"; } else { if (is_array($_SESSION[$guid]["messageWallOutput"]) == FALSE) { print "<div class='error'>"; print _("An error occurred."); print "</div>"; } else { $height = 283; if (count($_SESSION[$guid]["messageWallOutput"]) == 1) { $height = 94; } else { if (count($_SESSION[$guid]["messageWallOutput"]) == 2) { $height = 197; } } print "<table id='messageWallWidget' style='width: 100%; height: " . $height . "px; border: 1px solid grey; padding: 6px; background-color: #eeeeee'>"; //Content added by JS $rand = rand(0, count($_SESSION[$guid]["messageWallOutput"])); $total = count($_SESSION[$guid]["messageWallOutput"]); $order = ""; for ($i = 0; $i < $total; $i++) { $pos = ($rand + $i) % $total; $order .= "{$pos}, "; $message = $_SESSION[$guid]["messageWallOutput"][$pos]; //COLOR ROW BY STATUS! print "<tr id='messageWall" . $pos . "' style='z-index: 1;'>"; print "<td style='font-size: 95%; letter-spacing: 85%;'>"; //Image $style = "style='width: 45px; height: 60px; float: right; margin-left: 6px; border: 1px solid black'"; if ($message["photo"] == "" or file_exists($_SESSION[$guid]["absolutePath"] . "/" . $message["photo"]) == FALSE) { print "<img {$style} src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/anonymous_75.jpg'/>"; } else { print "<img {$style} src='" . $_SESSION[$guid]["absoluteURL"] . "/" . $message["photo"] . "'/>"; } //Message number print "<div style='margin-bottom: 4px; text-transform: uppercase; font-size: 70%; color: #888'>Message " . ($pos + 1) . "</div>"; //Title $URL = $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Messenger/messageWall_view.php#" . $message["gibbonMessengerID"]; if (strlen($message["subject"]) <= 16) { print "<a style='font-weight: bold; font-size: 105%; letter-spacing: 85%; text-transform: uppercase' href='{$URL}'>" . $message["subject"] . "</a><br/>"; } else { print "<a style='font-weight: bold; font-size: 105%; letter-spacing: 85%; text-transform: uppercase' href='{$URL}'>" . substr($message["subject"], 0, 16) . "...</a><br/>"; } //Text print "<div style='margin-top: 5px'>"; if (strlen(strip_tags($message["details"])) <= 40) { print strip_tags($message["details"]) . "<br/>"; } else { print substr(strip_tags($message["details"]), 0, 40) . "...<br/>"; } print "</div>"; print "</td>"; print "</tr>"; print "\n\t\t\t\t\t\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t\t\t\t\t\t\$(document).ready(function(){\n\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall{$pos}\").hide();\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t</script>"; } print "</table>"; $order = substr($order, 0, strlen($order) - 2); print "\n\t\t\t\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t\t\t\t\$(document).ready(function(){\n\t\t\t\t\t\t\t\t\tvar order=[" . $order . "];\n\t\t\t\t\t\t\t\t\tvar interval = 1;\n\n\t\t\t\t\t\t\t\t\t\tfor(var i=0; i<order.length; i++) {\n\t\t\t\t\t\t\t\t\t\t\tvar tRow = \$(\"#messageWall\".concat(order[i].toString()));\n\t\t\t\t\t\t\t\t\t\t\tif(i<3) {\n\t\t\t\t\t\t\t\t\t\t\t\ttRow.show();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\ttRow.hide();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[0].toString())).attr('class', 'even');\n\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[1].toString())).attr('class', 'odd');\n\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[2].toString())).attr('class', 'even');\n\n\t\t\t\t\t\t\t\t\tsetInterval(function() {\n\t\t\t\t\t\t\t\t\t\tif(order.length > 3) {\n\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[0].toString())).hide();\n\t\t\t\t\t\t\t\t\t\t\tvar fRow = \$(\"#messageWall\".concat(order[0].toString()));\n\t\t\t\t\t\t\t\t\t\t\tvar lRow = \$(\"#messageWall\".concat(order[order.length-1].toString()));\n\t\t\t\t\t\t\t\t\t\t\tfRow.insertAfter(lRow);\n\t\t\t\t\t\t\t\t\t\t\torder.push(order.shift());\n\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[2].toString())).show();\n\n\t\t\t\t\t\t\t\t\t\t\tif(interval%2===0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[0].toString())).attr('class', 'even');\n\t\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[1].toString())).attr('class', 'odd');\n\t\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[2].toString())).attr('class', 'even');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[0].toString())).attr('class', 'odd');\n\t\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[1].toString())).attr('class', 'even');\n\t\t\t\t\t\t\t\t\t\t\t\t\$(\"#messageWall\".concat(order[2].toString())).attr('class', 'odd');\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tinterval++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, 8000);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t</script>"; } } print "<p style='padding-top: 5px; text-align: right'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Messenger/messageWall_view.php'>" . _('View Message Wall') . "</a>"; print "</p>"; } } } } //Show upcoming deadlines if ($_SESSION[$guid]["address"] == "" and isActionAccessible($guid, $connection2, "/modules/Planner/planner.php")) { $highestAction = getHighestGroupedAction($guid, "/modules/Planner/planner.php", $connection2); if ($highestAction == "Lesson Planner_viewMyClasses" or $highestAction == "Lesson Planner_viewAllEditMyClasses" or $highestAction == "Lesson Planner_viewEditAllClasses") { print "<h2>"; print _("Homework & Deadlines"); print "</h2>"; try { $data = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sql = "\n\t\t\t\t(SELECT 'teacherRecorded' AS type, gibbonPlannerEntryID, gibbonUnitID, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, gibbonPlannerEntry.name, date, timeStart, timeEnd, viewableStudents, viewableParents, homework, homeworkDueDateTime, role FROM gibbonPlannerEntry JOIN gibbonCourseClass ON (gibbonPlannerEntry.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourseClassPerson ON (gibbonCourseClass.gibbonCourseClassID=gibbonCourseClassPerson.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonCourseClassPerson.gibbonPersonID=:gibbonPersonID AND NOT role='Student - Left' AND NOT role='Teacher - Left' AND homework='Y' AND (role='Teacher' OR (role='Student' AND viewableStudents='Y')) AND homeworkDueDateTime>'" . date("Y-m-d H:i:s") . "' AND ((date<'" . date("Y-m-d") . "') OR (date='" . date("Y-m-d") . "' AND timeEnd<='" . date("H:i:s") . "')))\n\t\t\t\tUNION\n\t\t\t\t(SELECT 'studentRecorded' AS type, gibbonPlannerEntry.gibbonPlannerEntryID, gibbonUnitID, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, gibbonPlannerEntry.name, date, timeStart, timeEnd, 'Y' AS viewableStudents, 'Y' AS viewableParents, 'Y' AS homework, gibbonPlannerEntryStudentHomework.homeworkDueDateTime, role FROM gibbonPlannerEntry JOIN gibbonCourseClass ON (gibbonPlannerEntry.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourseClassPerson ON (gibbonCourseClass.gibbonCourseClassID=gibbonCourseClassPerson.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) JOIN gibbonPlannerEntryStudentHomework ON (gibbonPlannerEntryStudentHomework.gibbonPlannerEntryID=gibbonPlannerEntry.gibbonPlannerEntryID AND gibbonPlannerEntryStudentHomework.gibbonPersonID=gibbonCourseClassPerson.gibbonPersonID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonCourseClassPerson.gibbonPersonID=:gibbonPersonID AND NOT role='Student - Left' AND NOT role='Teacher - Left' AND (role='Teacher' OR (role='Student' AND viewableStudents='Y')) AND gibbonPlannerEntryStudentHomework.homeworkDueDateTime>'" . date("Y-m-d H:i:s") . "' AND ((date<'" . date("Y-m-d") . "') OR (date='" . date("Y-m-d") . "' AND timeEnd<='" . date("H:i:s") . "')))\n\t\t\t\t ORDER BY homeworkDueDateTime, type"; $result = $connection2->prepare($sql); $result->execute($data); } catch (PDOException $e) { print $e->getMessage(); } if ($result->rowCount() < 1) { print "<div class='success'>"; print _("No upcoming deadlines. Yay!"); print "</div>"; } else { print "<ol>"; $count = 0; while ($row = $result->fetch()) { if ($count < 5) { $diff = (strtotime(substr($row["homeworkDueDateTime"], 0, 10)) - strtotime(date("Y-m-d"))) / 86400; $category = getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2); $style = "padding-right: 3px;"; if ($category == "Student") { //Calculate style for student-specified completion of teacher-recorded homework try { $dataCompletion = array("gibbonPlannerEntryID" => $row["gibbonPlannerEntryID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlCompletion = "SELECT gibbonPlannerEntryID FROM gibbonPlannerEntryStudentTracker WHERE gibbonPlannerEntryID=:gibbonPlannerEntryID AND gibbonPersonID=:gibbonPersonID AND homeworkComplete='Y'"; $resultCompletion = $connection2->prepare($sqlCompletion); $resultCompletion->execute($dataCompletion); } catch (PDOException $e) { } if ($resultCompletion->rowCount() == 1) { $style .= "; background-color: #B3EFC2"; } //Calculate style for student-specified completion of student-recorded homework try { $dataCompletion = array("gibbonPlannerEntryID" => $row["gibbonPlannerEntryID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlCompletion = "SELECT gibbonPlannerEntryID FROM gibbonPlannerEntryStudentHomework WHERE gibbonPlannerEntryID=:gibbonPlannerEntryID AND gibbonPersonID=:gibbonPersonID AND homeworkComplete='Y'"; $resultCompletion = $connection2->prepare($sqlCompletion); $resultCompletion->execute($dataCompletion); } catch (PDOException $e) { } if ($resultCompletion->rowCount() == 1) { $style .= "; background-color: #B3EFC2"; } //Calculate style for online submission completion try { $dataCompletion = array("gibbonPlannerEntryID" => $row["gibbonPlannerEntryID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlCompletion = "SELECT gibbonPlannerEntryID FROM gibbonPlannerEntryHomework WHERE gibbonPlannerEntryID=:gibbonPlannerEntryID AND gibbonPersonID=:gibbonPersonID AND version='Final'"; $resultCompletion = $connection2->prepare($sqlCompletion); $resultCompletion->execute($dataCompletion); } catch (PDOException $e) { } if ($resultCompletion->rowCount() == 1) { $style .= "; background-color: #B3EFC2"; } } //Calculate style for deadline if ($diff < 2) { $style .= "; border-right: 10px solid #cc0000"; } else { if ($diff < 4) { $style .= "; border-right: 10px solid #D87718"; } } print "<li style='{$style}'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_view_full.php&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&date=" . $row["date"] . "'>" . $row["course"] . "." . $row["class"] . "</a><br/>"; print "<span style='font-style: italic'>Due at " . substr($row["homeworkDueDateTime"], 11, 5) . " on " . dateConvertBack($guid, substr($row["homeworkDueDateTime"], 0, 10)); print "</li>"; } $count++; } print "</ol>"; } print "<p style='padding-top: 0px; text-align: right'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_deadlines.php'>" . _('View Homework') . "</a>"; print "</p>"; } } //Show recent results if ($_SESSION[$guid]["address"] == "" and isActionAccessible($guid, $connection2, "/modules/Markbook/markbook_view.php")) { $highestAction = getHighestGroupedAction($guid, "/modules/Markbook/markbook_view.php", $connection2); if ($highestAction == "View Markbook_myMarks") { try { $dataEntry = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlEntry = "SELECT gibbonMarkbookEntryID, gibbonMarkbookColumn.name, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class FROM gibbonMarkbookEntry JOIN gibbonMarkbookColumn ON (gibbonMarkbookEntry.gibbonMarkbookColumnID=gibbonMarkbookColumn.gibbonMarkbookColumnID) JOIN gibbonCourseClass ON (gibbonMarkbookColumn.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourseClass.gibbonCourseID=gibbonCourse.gibbonCourseID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonPersonIDStudent=:gibbonPersonID AND complete='Y' AND completeDate<='" . date("Y-m-d") . "' AND viewableStudents='Y' ORDER BY completeDate DESC, name"; $resultEntry = $connection2->prepare($sqlEntry); $resultEntry->execute($dataEntry); } catch (PDOException $e) { } if ($resultEntry->rowCount() > 0) { print "<h2>"; print _("Recent Marks"); print "</h2>"; print "<ol>"; $count = 0; while ($rowEntry = $resultEntry->fetch() and $count < 5) { print "<li><a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Markbook/markbook_view.php#" . $rowEntry["gibbonMarkbookEntryID"] . "'>" . $rowEntry["course"] . "." . $rowEntry["class"] . "<br/><span style='font-size: 85%; font-style: italic'>" . $rowEntry["name"] . "</span></a></li>"; $count++; } print "</ol>"; } } } //Show My Classes if ($_SESSION[$guid]["address"] == "" and isset($_SESSION[$guid]["username"])) { try { $data = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sql = "SELECT gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, gibbonCourseClass.gibbonCourseClassID FROM gibbonCourse, gibbonCourseClass, gibbonCourseClassPerson WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID AND gibbonCourseClass.gibbonCourseClassID=gibbonCourseClassPerson.gibbonCourseClassID AND gibbonCourseClassPerson.gibbonPersonID=:gibbonPersonID AND NOT role LIKE '% - Left%' ORDER BY course, class"; $result = $connection2->prepare($sql); $result->execute($data); } catch (PDOException $e) { } if ($result->rowCount() > 0) { print "<h2 style='margin-bottom: 10px' class='sidebar'>"; print _("My Classes"); print "</h2>"; print "<table class='mini' cellspacing='0' style='width: 100%; table-layout: fixed;'>"; print "<tr class='head'>"; print "<th style='width: 36%; font-size: 85%; text-transform: uppercase'>"; print _("Class"); print "</th>"; if (isActionAccessible($guid, $connection2, "/modules/Planner/planner.php")) { print "<th style='width: 16%; font-size: 60%; text-align: center; text-transform: uppercase'>"; print _("Plan"); print "</th>"; } if (getHighestGroupedAction($guid, "/modules/Markbook/markbook_view.php", $connection2) == "View Markbook_allClassesAllData") { print "<th style='width: 16%; font-size: 60%; text-align: center; text-transform: uppercase'>"; print _("Mark"); print "</th>"; } print "<th style='width: 16%; font-size: 60%; text-align: center; text-transform: uppercase'>"; print _("People"); print "</th>"; if (isActionAccessible($guid, $connection2, "/modules/Planner/planner.php")) { print "<th style='width: 16%; font-size: 60%; text-align: center; text-transform: uppercase'>"; print _("Tasks"); print "</th>"; } print "</tr>"; $count = 0; $rowNum = "odd"; while ($row = $result->fetch()) { if ($count % 2 == 0) { $rowNum = "even"; } else { $rowNum = "odd"; } $count++; //COLOR ROW BY STATUS! print "<tr class={$rowNum}>"; print "<td style='word-wrap: break-word'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Departments/department_course_class.php&gibbonCourseClassID=" . $row["gibbonCourseClassID"] . "'>" . $row["course"] . "." . $row["class"] . "</a>"; print "</td>"; if (isActionAccessible($guid, $connection2, "/modules/Planner/planner.php")) { print "<td style='text-align: center'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner.php&gibbonCourseClassID=" . $row["gibbonCourseClassID"] . "&viewBy=class'><img style='margin-top: 3px' title='" . _('View Planner') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/planner.png'/></a> "; print "</td>"; } if (getHighestGroupedAction($guid, "/modules/Markbook/markbook_view.php", $connection2) == "View Markbook_allClassesAllData") { print "<td style='text-align: center'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Markbook/markbook_view.php&gibbonCourseClassID=" . $row["gibbonCourseClassID"] . "'><img style='margin-top: 3px' title='" . _('View Markbook') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/markbook.png'/></a> "; print "</td>"; } print "<td style='text-align: center'>"; print "<a href='index.php?q=/modules/Departments/department_course_class.php&gibbonCourseClassID=" . $row["gibbonCourseClassID"] . "&subpage=Participants'><img title='" . _('Participants') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/attendance.png'/></a>"; print "</td>"; if (isActionAccessible($guid, $connection2, "/modules/Planner/planner.php")) { print "<td style='text-align: center'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_deadlines.php&gibbonCourseClassIDFilter=" . $row["gibbonCourseClassID"] . "'><img style='margin-top: 3px' title='" . _('View Homework') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/homework.png'/></a> "; print "</td>"; } print "</tr>"; } print "</table>"; } } //Show tag cloud if ($_SESSION[$guid]["address"] == "" and isActionAccessible($guid, $connection2, "/modules/Resources/resources_view.php")) { include "./modules/Resources/moduleFunctions.php"; print "<h2 class='sidebar'>"; print _("Resource Tags"); print "</h2>"; print getTagCloud($guid, $connection2, 20); print "<p style='margin-bototm: 20px; text-align: right'>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Resources/resources_view.php'>" . _('View Resources') . "</a>"; print "</p>"; } //Show role switcher if user has more than one role if (isset($_SESSION[$guid]["username"])) { if (count($_SESSION[$guid]["gibbonRoleIDAll"]) > 1 and $_SESSION[$guid]["address"] == "") { print "<h2 style='margin-bottom: 10px' class='sidebar'>"; print _("Role Switcher"); print "</h2>"; if (isset($_GET["switchReturn"])) { $switchReturn = $_GET["switchReturn"]; } else { $switchReturn = ""; } $switchReturnMessage = ""; $class = "error"; if (!($switchReturn == "")) { if ($switchReturn == "fail0") { $switchReturnMessage = _("Role ID not specified."); } else { if ($switchReturn == "fail1") { $switchReturnMessage = _("You do not have access to the specified role."); } else { if ($switchReturn == "success0") { $switchReturnMessage = _("Role switched successfully."); $class = "success"; } } } print "<div class='{$class}'>"; print $switchReturnMessage; print "</div>"; } print "<p>"; print _("You have multiple roles within the system. Use the list below to switch role:"); print "</p>"; print "<ul>"; for ($i = 0; $i < count($_SESSION[$guid]["gibbonRoleIDAll"]); $i++) { if ($_SESSION[$guid]["gibbonRoleIDAll"][$i][0] == $_SESSION[$guid]["gibbonRoleIDCurrent"]) { print "<li><a href='roleSwitcherProcess.php?gibbonRoleID=" . $_SESSION[$guid]["gibbonRoleIDAll"][$i][0] . "'>" . _($_SESSION[$guid]["gibbonRoleIDAll"][$i][1]) . "</a> <i>" . _('(Active)') . "</i></li>"; } else { print "<li><a href='roleSwitcherProcess.php?gibbonRoleID=" . $_SESSION[$guid]["gibbonRoleIDAll"][$i][0] . "'>" . _($_SESSION[$guid]["gibbonRoleIDAll"][$i][1]) . "</a></li>"; } } print "</ul>"; } } if ($_SESSION[$guid]["sidebarExtra"] != "" and $_SESSION[$guid]["sidebarExtraPosition"] == "bottom") { print "<div class='sidebarExtra'>"; print $_SESSION[$guid]["sidebarExtra"]; print "</div>"; } }
function renderTTDay($guid, $connection2, $gibbonTTID, $schoolOpen, $startDayStamp, $count, $daysInWeek, $gibbonPersonID, $gridTimeStart, $eventsSchool, $eventsPersonal, $eventsSpaceBooking, $diffTime, $maxAllDays, $narrow, $specialDayStart = "", $specialDayEnd = "", $edit = FALSE) { $schoolCalendarAlpha = 0.85; $ttAlpha = 1.0; if ($_SESSION[$guid]["viewCalendarSchool"] != "N" or $_SESSION[$guid]["viewCalendarPersonal"] != "N" or $_SESSION[$guid]["viewCalendarSpaceBooking"] != "N") { $ttAlpha = 0.75; } $date = date("Y-m-d", $startDayStamp + 86400 * $count); $self = FALSE; if ($gibbonPersonID == $_SESSION[$guid]["gibbonPersonID"] and $edit == FALSE) { $self = TRUE; $roleCategory = getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2); } if ($narrow) { $width = ceil(515 / $daysInWeek) - 20 . "px"; } else { $width = ceil(690 / $daysInWeek) - 20 . "px"; } $output = ""; $blank = TRUE; $zCount = 0; $allDay = 0; if ($schoolOpen == FALSE) { $output .= "<td style='text-align: center; vertical-align: top; font-size: 11px'>"; $output .= "<div style='position: relative'>"; $output .= "<div class='ttClosure' style='z-index: {$zCount}; position: absolute; width: {$width} ; height: " . ceil($diffTime / 60) . "px; margin: 0px; padding: 0px; opacity: {$ttAlpha}'>"; $output .= "<div style='position: relative; top: 50%'>"; $output .= "<span style='color: rgba(255,0,0,{$ttAlpha});'>" . _('School Closed') . "</span>"; $output .= "</div>"; $output .= "</div>"; $zCount = 1; //Draw periods from school calendar if ($eventsSchool != FALSE) { $height = 0; $top = 0; $dayTimeStart = ""; foreach ($eventsSchool as $event) { if (date("Y-m-d", $event[2]) == date("Y-m-d", $startDayStamp + 86400 * $count)) { if ($event[1] == "All Day") { $label = $event[0]; $title = ""; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . "'"; } $height = "30px"; $top = $maxAllDays * -31 - 8 + $allDay * 30 . "px"; $output .= "<div class='ttSchoolCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; $allDay++; } else { $label = $event[0]; $title = "title='" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . "'"; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . " (" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . ")'"; } $height = ceil(($event[3] - $event[2]) / 60) . "px"; $top = ceil(($event[2] - strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $gridTimeStart)) / 60 + $startPad / 60) . "px"; $output .= "<div class='ttSchoolCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; } $zCount++; } } } //Draw periods from personal calendar if ($eventsPersonal != FALSE) { $height = 0; $top = 0; $bg = "rgba(103,153,207,{$schoolCalendarAlpha})"; foreach ($eventsPersonal as $event) { if (date("Y-m-d", $event[2]) == date("Y-m-d", $startDayStamp + 86400 * $count)) { if ($event[1] == "All Day") { $label = $event[0]; $title = ""; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . "'"; } $height = "30px"; $top = $maxAllDays * -31 - 8 + $allDay * 30 . "px"; $output .= "<div class='ttPersonalCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; $allDay++; } else { $label = $event[0]; $title = "title='" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . "'"; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . " (" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . ")'"; } $height = ceil(($event[3] - $event[2]) / 60) . "px"; $top = ceil(($event[2] - strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $gridTimeStart)) / 60 + $startPad / 60) . "px"; $output .= "<div class='ttPersonalCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; } $zCount++; } } } $output .= "</div>"; $output .= "</td>"; } else { //Make array of space changes $spaceChanges = array(); try { $dataSpaceChange = array("date" => date("Y-m-d", $startDayStamp + 86400 * $count)); $sqlSpaceChange = "SELECT gibbonTTSpaceChange.*, gibbonSpace.name AS space, phoneInternal FROM gibbonTTSpaceChange LEFT JOIN gibbonSpace ON (gibbonTTSpaceChange.gibbonSpaceID=gibbonSpace.gibbonSpaceID) WHERE date=:date"; $resultSpaceChange = $connection2->prepare($sqlSpaceChange); $resultSpaceChange->execute($dataSpaceChange); } catch (PDOException $e) { } while ($rowSpaceChange = $resultSpaceChange->fetch()) { $spaceChanges[$rowSpaceChange["gibbonTTDayRowClassID"]][0] = $rowSpaceChange["space"]; $spaceChanges[$rowSpaceChange["gibbonTTDayRowClassID"]][1] = $rowSpaceChange["phoneInternal"]; } //Get day start and end! $dayTimeStart = ""; $dayTimeEnd = ""; try { $dataDiff = array("date" => date("Y-m-d", $startDayStamp + 86400 * $count), "gibbonTTID" => $gibbonTTID); $sqlDiff = "SELECT timeStart, timeEnd FROM gibbonTTDay JOIN gibbonTTDayDate ON (gibbonTTDay.gibbonTTDayID=gibbonTTDayDate.gibbonTTDayID) JOIN gibbonTTColumn ON (gibbonTTDay.gibbonTTColumnID=gibbonTTColumn.gibbonTTColumnID) JOIN gibbonTTColumnRow ON (gibbonTTColumn.gibbonTTColumnID=gibbonTTColumnRow.gibbonTTColumnID) WHERE date=:date AND gibbonTTID=:gibbonTTID"; $resultDiff = $connection2->prepare($sqlDiff); $resultDiff->execute($dataDiff); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } while ($rowDiff = $resultDiff->fetch()) { if ($dayTimeStart == "") { $dayTimeStart = $rowDiff["timeStart"]; } if ($rowDiff["timeStart"] < $dayTimeStart) { $dayTimeStart = $rowDiff["timeStart"]; } if ($dayTimeEnd == "") { $dayTimeEnd = $rowDiff["timeEnd"]; } if ($rowDiff["timeEnd"] > $dayTimeEnd) { $dayTimeEnd = $rowDiff["timeEnd"]; } } if ($specialDayStart != "") { $dayTimeStart = $specialDayStart; } if ($specialDayEnd != "") { $dayTimeEnd = $specialDayEnd; } $dayDiffTime = strtotime($dayTimeEnd) - strtotime($dayTimeStart); $startPad = strtotime($dayTimeStart) - strtotime($gridTimeStart); $output .= "<td style='text-align: center; vertical-align: top; font-size: 11px'>"; try { $dataDay = array("gibbonTTID" => $gibbonTTID, "date" => date("Y-m-d", $startDayStamp + 86400 * $count)); $sqlDay = "SELECT gibbonTTDay.gibbonTTDayID FROM gibbonTTDayDate JOIN gibbonTTDay ON (gibbonTTDayDate.gibbonTTDayID=gibbonTTDay.gibbonTTDayID) WHERE gibbonTTID=:gibbonTTID AND date=:date"; $resultDay = $connection2->prepare($sqlDay); $resultDay->execute($dataDay); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } if ($resultDay->rowCount() == 1) { $rowDay = $resultDay->fetch(); $zCount = 0; $output .= "<div style='position: relative'>"; //Draw outline of the day try { $dataPeriods = array("gibbonTTDayID" => $rowDay["gibbonTTDayID"], "date" => date("Y-m-d", $startDayStamp + 86400 * $count)); $sqlPeriods = "SELECT gibbonTTColumnRow.name, timeStart, timeEnd, type, date FROM gibbonTTDay JOIN gibbonTTDayDate ON (gibbonTTDay.gibbonTTDayID=gibbonTTDayDate.gibbonTTDayID) JOIN gibbonTTColumn ON (gibbonTTDay.gibbonTTColumnID=gibbonTTColumn.gibbonTTColumnID) JOIN gibbonTTColumnRow ON (gibbonTTColumnRow.gibbonTTColumnID=gibbonTTColumn.gibbonTTColumnID) WHERE gibbonTTDayDate.gibbonTTDayID=:gibbonTTDayID AND date=:date ORDER BY timeStart, timeEnd"; $resultPeriods = $connection2->prepare($sqlPeriods); $resultPeriods->execute($dataPeriods); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } while ($rowPeriods = $resultPeriods->fetch()) { $isSlotInTime = FALSE; if ($rowPeriods["timeStart"] <= $dayTimeStart and $rowPeriods["timeEnd"] > $dayTimeStart) { $isSlotInTime = TRUE; } else { if ($rowPeriods["timeStart"] >= $dayTimeStart and $rowPeriods["timeEnd"] <= $dayTimeEnd) { $isSlotInTime = TRUE; } else { if ($rowPeriods["timeStart"] < $dayTimeEnd and $rowPeriods["timeEnd"] >= $dayTimeEnd) { $isSlotInTime = TRUE; } } } if ($isSlotInTime == TRUE) { $effectiveStart = $rowPeriods["timeStart"]; $effectiveEnd = $rowPeriods["timeEnd"]; if ($dayTimeStart > $rowPeriods["timeStart"]) { $effectiveStart = $dayTimeStart; } if ($dayTimeEnd < $rowPeriods["timeEnd"]) { $effectiveEnd = $dayTimeEnd; } $height = ceil((strtotime($effectiveEnd) - strtotime($effectiveStart)) / 60) . "px"; $top = ceil((strtotime($effectiveStart) - strtotime($dayTimeStart) + $startPad) / 60) . "px"; $title = ""; if ($rowPeriods["type"] != "Lesson" and $height > 15 and $height < 30) { $title = "title='" . substr($effectiveStart, 0, 5) . " - " . substr($effectiveEnd, 0, 5) . "'"; } else { if ($rowPeriods["type"] != "Lesson" and $height <= 15) { $title = "title='" . $rowPeriods["name"] . " (" . substr($effectiveStart, 0, 5) . "-" . substr($effectiveEnd, 0, 5) . ")'"; } } $class = "ttGeneric"; if (date("H:i:s") > $effectiveStart and date("H:i:s") < $effectiveEnd and $rowPeriods["date"] == date("Y-m-d")) { $class = "ttCurrent"; } $style = ""; if ($rowPeriods["type"] == "Lesson") { $class = 'ttLesson'; } $output .= "<div class='{$class}' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width}; height: {$height}; margin: 0px; padding: 0px; opacity: {$ttAlpha}'>"; if ($height > 15 and $height < 30) { $output .= $rowPeriods["name"] . "<br/>"; } else { if ($height >= 30) { $output .= $rowPeriods["name"] . "<br/>"; $output .= "<i>" . substr($effectiveStart, 0, 5) . "-" . substr($effectiveEnd, 0, 5) . "</i><br/>"; } } $output .= "</div>"; $zCount++; } } //Draw periods from TT try { $dataPeriods = array("gibbonTTDayID" => $rowDay["gibbonTTDayID"], "gibbonPersonID" => $gibbonPersonID); $sqlPeriods = "SELECT gibbonTTDayID, gibbonTTDayRowClassID, gibbonTTColumnRow.gibbonTTColumnRowID, gibbonCourseClass.gibbonCourseClassID, gibbonTTColumnRow.name, gibbonCourse.gibbonCourseID, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, timeStart, timeEnd, phoneInternal, gibbonSpace.name AS roomName FROM gibbonCourse JOIN gibbonCourseClass ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) JOIN gibbonCourseClassPerson ON (gibbonCourseClass.gibbonCourseClassID=gibbonCourseClassPerson.gibbonCourseClassID) JOIN gibbonTTDayRowClass ON (gibbonCourseClass.gibbonCourseClassID=gibbonTTDayRowClass.gibbonCourseClassID) JOIN gibbonTTColumnRow ON (gibbonTTDayRowClass.gibbonTTColumnRowID=gibbonTTColumnRow.gibbonTTColumnRowID) LEFT JOIN gibbonSpace ON (gibbonTTDayRowClass.gibbonSpaceID=gibbonSpace.gibbonSpaceID) WHERE gibbonTTDayID=:gibbonTTDayID AND gibbonCourseClassPerson.gibbonPersonID=:gibbonPersonID AND NOT role LIKE '% - Left' ORDER BY timeStart, timeEnd"; $resultPeriods = $connection2->prepare($sqlPeriods); $resultPeriods->execute($dataPeriods); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } while ($rowPeriods = $resultPeriods->fetch()) { $isSlotInTime = FALSE; if ($rowPeriods["timeStart"] <= $dayTimeStart and $rowPeriods["timeEnd"] > $dayTimeStart) { $isSlotInTime = TRUE; } else { if ($rowPeriods["timeStart"] >= $dayTimeStart and $rowPeriods["timeEnd"] <= $dayTimeEnd) { $isSlotInTime = TRUE; } else { if ($rowPeriods["timeStart"] < $dayTimeEnd and $rowPeriods["timeEnd"] >= $dayTimeEnd) { $isSlotInTime = TRUE; } } } if ($isSlotInTime == TRUE) { //Check for an exception for the current user try { $dataException = array("gibbonPersonID" => $gibbonPersonID); $sqlException = "SELECT * FROM gibbonTTDayRowClassException WHERE gibbonTTDayRowClassID=" . $rowPeriods["gibbonTTDayRowClassID"] . " AND gibbonPersonID=:gibbonPersonID"; $resultException = $connection2->prepare($sqlException); $resultException->execute($dataException); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } if ($resultException->rowCount() < 1) { $effectiveStart = $rowPeriods["timeStart"]; $effectiveEnd = $rowPeriods["timeEnd"]; if ($dayTimeStart > $rowPeriods["timeStart"]) { $effectiveStart = $dayTimeStart; } if ($dayTimeEnd < $rowPeriods["timeEnd"]) { $effectiveEnd = $dayTimeEnd; } $blank = FALSE; if ($narrow) { $width = ceil(515 / $daysInWeek) - 20 . "px"; } else { $width = ceil(690 / $daysInWeek) - 20 . "px"; } $height = ceil((strtotime($effectiveEnd) - strtotime($effectiveStart)) / 60) . "px"; $top = ceil((strtotime($effectiveStart) - strtotime($dayTimeStart)) / 60 + $startPad / 60) . "px"; $title = "title='"; if ($height < 45) { $title .= _('Time:') . " " . substr($effectiveStart, 0, 5) . " - " . substr($effectiveEnd, 0, 5) . " | "; $title .= _("Timeslot:") . " " . $rowPeriods["name"] . " | "; } if ($rowPeriods["roomName"] != "") { if ($height < 60) { if (isset($spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]][0]) == FALSE) { $title .= _("Room:") . " " . $rowPeriods["roomName"] . " | "; } else { $title .= _("Room:") . " " . $spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]][0] . " | "; } } if ($rowPeriods["phoneInternal"] != "") { if (isset($spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]][0]) == FALSE) { $title .= _("Phone:") . " " . $rowPeriods["phoneInternal"] . " | "; } else { $title .= _("Phone:") . " " . $spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]][1] . " | "; } } } $title = substr($title, 0, -3); $title .= "'"; $class2 = "ttPeriod"; if (date("H:i:s") > $effectiveStart and date("H:i:s") < $effectiveEnd and $date == date("Y-m-d")) { $class2 = "ttPeriodCurrent"; } //Create div to represent period $output .= "<div class='{$class2}' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width}; height: {$height}; margin: 0px; padding: 0px; opacity: {$ttAlpha}'>"; if ($height >= 45) { $output .= $rowPeriods["name"] . "<br/>"; $output .= "<i>" . substr($effectiveStart, 0, 5) . " - " . substr($effectiveEnd, 0, 5) . "</i><br/>"; } if (isActionAccessible($guid, $connection2, "/modules/Departments/department_course_class.php") and $edit == FALSE) { $output .= "<a style='text-decoration: none; font-weight: bold; font-size: 120%' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Departments/department_course_class.php&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "'>" . $rowPeriods["course"] . "." . $rowPeriods["class"] . "</a><br/>"; } else { if (isActionAccessible($guid, $connection2, "/modules/Timetable Admin/courseEnrolment_manage_class_edit.php") and $edit == TRUE) { $output .= "<a style='text-decoration: none; font-weight: bold; font-size: 120%' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Timetable Admin/courseEnrolment_manage_class_edit.php&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "&gibbonSchoolYearID=" . $_SESSION[$guid]["gibbonSchoolYearID"] . "&gibbonCourseID=" . $rowPeriods["gibbonCourseID"] . "'>" . $rowPeriods["course"] . "." . $rowPeriods["class"] . "</a><br/>"; } else { $output .= "<span style='font-size: 120%'><b>" . $rowPeriods["course"] . "." . $rowPeriods["class"] . "</b></span><br/>"; } } if ($height >= 60) { if ($edit == FALSE) { if (isset($spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]]) == FALSE) { $output .= $rowPeriods["roomName"]; } else { if ($spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]][0] != "") { $output .= "<span style='border: 1px solid #c00; padding: 0 2px'>" . $spaceChanges[$rowPeriods["gibbonTTDayRowClassID"]][0] . "</span>"; } else { $output .= "<span style='border: 1px solid #c00; padding: 0 2px'><i>" . _("No Space Allocated") . "</i></span>"; } } } else { $output .= "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Timetable Admin/tt_edit_day_edit_class_edit.php&gibbonTTDayID=" . $rowPeriods["gibbonTTDayID"] . "&gibbonTTID={$gibbonTTID}&gibbonSchoolYearID=" . $_SESSION[$guid]["gibbonSchoolYearID"] . "&gibbonTTColumnRowID=" . $rowPeriods["gibbonTTColumnRowID"] . "&gibbonTTDayRowClass=" . $rowPeriods["gibbonTTDayRowClassID"] . "&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "'>" . $rowPeriods["roomName"] . "</a>"; } } $output .= "</div>"; $zCount++; if ($narrow == FALSE) { if ($edit == FALSE) { //Add planner link icons for staff looking at own TT. if ($self == TRUE and $roleCategory == "Staff") { if ($height >= 30) { $output .= "<div {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid rgba(136,136,136, {$ttAlpha}); height: {$height}; margin: 0px; padding: 0px; background-color: none; pointer-events: none'>"; //Check for lesson plan $bgImg = "none"; try { $dataPlan = array("gibbonCourseClassID" => $rowPeriods["gibbonCourseClassID"], "date" => $date, "timeStart" => $rowPeriods["timeStart"], "timeEnd" => $rowPeriods["timeEnd"]); $sqlPlan = "SELECT * FROM gibbonPlannerEntry WHERE gibbonCourseClassID=:gibbonCourseClassID AND date=:date AND timeStart=:timeStart AND timeEnd=:timeEnd"; $resultPlan = $connection2->prepare($sqlPlan); $resultPlan->execute($dataPlan); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } if ($resultPlan->rowCount() == 1) { $rowPlan = $resultPlan->fetch(); $output .= "<a style='pointer-events: auto' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_view_full.php&viewBy=class&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "&gibbonPlannerEntryID=" . $rowPlan["gibbonPlannerEntryID"] . "'><img style='float: right; margin: " . (substr($height, 0, -2) - 27) . "px 2px 0 0' title='Lesson planned: " . htmlPrep($rowPlan["name"]) . "' src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/iconTick.png'/></a>"; } else { if ($resultPlan->rowCount() == 0) { $output .= "<a style='pointer-events: auto' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_add.php&viewBy=class&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "&date=" . $date . "&timeStart=" . $effectiveStart . "&timeEnd=" . $effectiveEnd . "'><img style='float: right; margin: " . (substr($height, 0, -2) - 27) . "px 2px 0 0' title='Add lesson plan' src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/page_new.png'/></a>"; } else { $output .= "<a style='pointer-events: auto' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner.php&viewBy=class&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "&date=" . $date . "&timeStart=" . $effectiveStart . "&timeEnd=" . $effectiveEnd . "'><div style='float: right; margin: " . (substr($height, 0, -2) - 17) . "px 5px 0 0'>" . _('Error') . "</div></a>"; } } $output .= "</div>"; $zCount++; } } else { $output .= "<div {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid rgba(136,136,136, {$ttAlpha}); height: {$height}; margin: 0px; padding: 0px; background-color: none; pointer-events: none'>"; //Check for lesson plan $bgImg = "none"; try { $dataPlan = array("gibbonCourseClassID" => $rowPeriods["gibbonCourseClassID"], "date" => $date, "timeStart" => $rowPeriods["timeStart"], "timeEnd" => $rowPeriods["timeEnd"]); $sqlPlan = "SELECT * FROM gibbonPlannerEntry WHERE gibbonCourseClassID=:gibbonCourseClassID AND date=:date AND timeStart=:timeStart AND timeEnd=:timeEnd"; $resultPlan = $connection2->prepare($sqlPlan); $resultPlan->execute($dataPlan); } catch (PDOException $e) { $output .= "<div class='error'>" . $e->getMessage() . "</div>"; } if ($resultPlan->rowCount() == 1) { $rowPlan = $resultPlan->fetch(); $output .= "<a style='pointer-events: auto' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_view_full.php&viewBy=class&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "&gibbonPlannerEntryID=" . $rowPlan["gibbonPlannerEntryID"] . "&search={$gibbonPersonID}'><img style='float: right; margin: " . (substr($height, 0, -2) - 27) . "px 2px 0 0' title='" . _('View lesson:') . " " . htmlPrep($rowPlan["name"]) . "' src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/plus.png'/></a>"; } $output .= "</div>"; $zCount++; } } else { if ($edit) { $output .= "<div {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid rgba(136,136,136, {$ttAlpha}); height: {$height}; margin: 0px; padding: 0px; background-color: none; pointer-events: none'>"; //Check for lesson plan $bgImg = "none"; $output .= "<a style='pointer-events: auto' href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Timetable Admin/tt_edit_day_edit_class_exception.php&gibbonTTDayID=" . $rowPeriods["gibbonTTDayID"] . "&gibbonTTID={$gibbonTTID}&gibbonSchoolYearID=" . $_SESSION[$guid]["gibbonSchoolYearID"] . "&gibbonTTColumnRowID=" . $rowPeriods["gibbonTTColumnRowID"] . "&gibbonTTDayRowClass=" . $rowPeriods["gibbonTTDayRowClassID"] . "&gibbonCourseClassID=" . $rowPeriods["gibbonCourseClassID"] . "'><img style='float: right; margin: " . (substr($height, 0, -2) - 27) . "px 2px 0 0' title='" . _('Manage Exceptions') . "' src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/attendance.png'/></a>"; $output .= "</div>"; $zCount++; } } } } } } //Draw periods from school calendar if ($eventsSchool != FALSE) { $height = 0; $top = 0; foreach ($eventsSchool as $event) { if (date("Y-m-d", $event[2]) == date("Y-m-d", $startDayStamp + 86400 * $count)) { if ($event[1] == "All Day") { $label = $event[0]; $title = ""; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . "'"; } $height = "30px"; $top = $maxAllDays * -31 - 8 + $allDay * 30 . "px"; $output .= "<div class='ttSchoolCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; $allDay++; } else { $label = $event[0]; $title = "title='" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . "'"; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . " (" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . ")'"; } $height = ceil(($event[3] - $event[2]) / 60) . "px"; $top = ceil(($event[2] - strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $dayTimeStart)) / 60 + $startPad / 60) . "px"; $output .= "<div class='ttSchoolCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; } $zCount++; } } } //Draw periods from personal calendar if ($eventsPersonal != FALSE) { $height = 0; $top = 0; $bg = "rgba(103,153,207,{$schoolCalendarAlpha})"; foreach ($eventsPersonal as $event) { if (date("Y-m-d", $event[2]) == date("Y-m-d", $startDayStamp + 86400 * $count)) { if ($event[1] == "All Day") { $label = $event[0]; $title = ""; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . "'"; } $height = "30px"; $top = $maxAllDays * -31 - 8 + $allDay * 30 . "px"; $output .= "<div class='ttPersonalCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; $allDay++; } else { $label = $event[0]; $title = "title='" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . "'"; if (strlen($label) > 20) { $label = substr($label, 0, 20) . "..."; $title = "title='" . $event[0] . " (" . date("H:i", $event[2]) . " to " . date("H:i", $event[3]) . ")'"; } $height = ceil(($event[3] - $event[2]) / 60) . "px"; $top = ceil(($event[2] - strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $dayTimeStart)) / 60 + $startPad / 60) . "px"; $output .= "<div class='ttPersonalCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= "<a target=_blank style='color: #fff' href='" . $event[5] . "'>" . $label . "</a>"; $output .= "</div>"; } $zCount++; } } } //Draw space bookings if ($eventsSpaceBooking != FALSE) { $height = 0; $top = 0; foreach ($eventsSpaceBooking as $event) { if ($event[3] == date("Y-m-d", $startDayStamp + 86400 * $count)) { $height = ceil((strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $event[5]) - strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $event[4])) / 60) . "px"; $top = ceil((strtotime($event[3] . " " . $event[4]) - strtotime(date("Y-m-d", $startDayStamp + 86400 * $count) . " " . $dayTimeStart)) / 60 + $startPad / 60) . "px"; if ($height < 45) { $label = $event[1]; $title = "title='" . substr($event[4], 0, 5) . "-" . substr($event[5], 0, 5) . "'"; } else { $label = $event[1] . "<br/><span style='font-weight: normal'>(" . substr($event[4], 0, 5) . "-" . substr($event[5], 0, 5) . ")<br/></span>"; $title = ""; } $output .= "<div class='ttSpaceBookingCalendar' {$title} style='z-index: {$zCount}; position: absolute; top: {$top}; width: {$width} ; border: 1px solid #555; height: {$height}; margin: 0px; padding: 0px; opacity: {$schoolCalendarAlpha}'>"; $output .= $label; $output .= "</div>"; $zCount++; } } } $output .= "</div>"; } } $output .= "</td>"; return $output; }
} else { print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Planner/plannerProcess.php?gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&address=/modules/Planner/planner.php&viewBy=Class&gibbonCourseClassID=" . $row["gibbonCourseClassID"] . "&date=&returnToIndex=Y'><img src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_on.png'></a>"; } } print "</td>"; print "<td>"; print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_view_full.php&viewBy=class&gibbonCourseClassID=" . $row["gibbonCourseClassID"] . "&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "'><img title='" . _('View') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/plus.png'/></a>"; print "</td>"; print "</tr>"; } } print "</table>"; } } //Display TT if (isActionAccessible($guid, $connection2, "/modules/Timetable/tt.php") and $_SESSION[$guid]["username"] != "" and (getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2) == "Staff" or getRoleCategory($_SESSION[$guid]["gibbonRoleIDCurrent"], $connection2) == "Student")) { ?> <script type="text/javascript"> $(document).ready(function(){ $("#tt").load("<?php print $_SESSION[$guid]["absoluteURL"]; ?> /index_tt_ajax.php",{"gibbonTTID": "<?php print @$_GET["gibbonTTID"]; ?> ", "ttDate": "<?php print @$_POST["ttDate"]; ?> ", "fromTT": "<?php print @$_POST["fromTT"]; ?>
$_SESSION[$guid]["passwordStrong"] = $row["passwordStrong"]; $_SESSION[$guid]["passwordStrongSalt"] = $row["passwordStrongSalt"]; $_SESSION[$guid]["passwordForceReset"] = $row["passwordForceReset"]; $_SESSION[$guid]["gibbonPersonID"] = $row["gibbonPersonID"]; $_SESSION[$guid]["surname"] = $row["surname"]; $_SESSION[$guid]["firstName"] = $row["firstName"]; $_SESSION[$guid]["preferredName"] = $row["preferredName"]; $_SESSION[$guid]["officialName"] = $row["officialName"]; $_SESSION[$guid]["email"] = $row["email"]; $_SESSION[$guid]["emailAlternate"] = $row["emailAlternate"]; $_SESSION[$guid]["website"] = $row["website"]; $_SESSION[$guid]["gender"] = $row["gender"]; $_SESSION[$guid]["status"] = $row["status"]; $_SESSION[$guid]["gibbonRoleIDPrimary"] = $row["gibbonRoleIDPrimary"]; $_SESSION[$guid]["gibbonRoleIDCurrent"] = $row["gibbonRoleIDPrimary"]; $_SESSION[$guid]["gibbonRoleIDCurrentCategory"] = getRoleCategory($row["gibbonRoleIDPrimary"], $connection2); $_SESSION[$guid]["gibbonRoleIDAll"] = getRoleList($row["gibbonRoleIDAll"], $connection2); $_SESSION[$guid]["image_240"] = $row["image_240"]; $_SESSION[$guid]["lastTimestamp"] = $row["lastTimestamp"]; $_SESSION[$guid]["calendarFeedPersonal"] = $row["calendarFeedPersonal"]; $_SESSION[$guid]["viewCalendarSchool"] = $row["viewCalendarSchool"]; $_SESSION[$guid]["viewCalendarPersonal"] = $row["viewCalendarPersonal"]; $_SESSION[$guid]["viewCalendarSpaceBooking"] = $row["viewCalendarSpaceBooking"]; $_SESSION[$guid]["dateStart"] = $row["dateStart"]; $_SESSION[$guid]["personalBackground"] = $row["personalBackground"]; $_SESSION[$guid]["messengerLastBubble"] = $row["messengerLastBubble"]; $_SESSION[$guid]["gibbonThemeIDPersonal"] = $row["gibbonThemeIDPersonal"]; $_SESSION[$guid]["gibboni18nIDPersonal"] = $row["gibboni18nIDPersonal"]; $_SESSION[$guid]["googleAPIRefreshToken"] = $row["googleAPIRefreshToken"]; $_SESSION[$guid]['receiveNotificationEmails'] = $row["receiveNotificationEmails"]; $_SESSION[$guid]['gibbonHouseID'] = $row["gibbonHouseID"];
print "</tr>"; //Check if any roles are "Student" $privacySet = false; try { $dataRoles = array("gibbonPersonID" => $row["gibbonPersonID"]); $sqlRoles = "SELECT gibbonRoleIDAll FROM gibbonPerson WHERE gibbonPersonID=:gibbonPersonID"; $resultRoles = $connection2->prepare($sqlRoles); $resultRoles->execute($dataRoles); } catch (PDOException $e) { } if ($resultRoles->rowCount() == 1) { $rowRoles = $resultRoles->fetch(); $isStudent = false; $roles = explode(",", $rowRoles["gibbonRoleIDAll"]); foreach ($roles as $role) { if (getRoleCategory($role, $connection2) == "Student") { $isStudent = true; } } if ($isStudent) { $privacySetting = getSettingByScope($connection2, "User Admin", "privacy"); $privacyBlurb = getSettingByScope($connection2, "User Admin", "privacyBlurb"); if ($privacySetting == "Y" and $privacyBlurb != "") { print "<tr class='even'>"; print "<td>"; print _("Image Privacy"); print "</td>"; print "<td>"; print $row["privacy"]; print "</td>"; print "<td>";
function getMessages($guid, $connection2, $mode = "", $date = "") { $return = ""; $dataPosts = array(); if ($date == "") { $date = date("Y-m-d"); } if ($mode != "print" and $mode != "count" and $mode != "result") { $mode = "print"; } //Work out all role categories this user has, ignoring "Other" $roles = $_SESSION[$guid]["gibbonRoleIDAll"]; $roleCategory = ""; $staff = FALSE; $student = FALSE; $parent = FALSE; for ($i = 0; $i < count($roles); $i++) { $roleCategory = getRoleCategory($roles[$i][0], $connection2); if ($roleCategory == "Staff") { $staff = TRUE; } else { if ($roleCategory == "Student") { $student = TRUE; } else { if ($roleCategory == "Parent") { $parent = TRUE; } } } } //If parent get a list of student IDs if ($parent) { $children = "("; try { $data = array("gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sql = "SELECT * FROM gibbonFamilyAdult WHERE gibbonPersonID=:gibbonPersonID AND childDataAccess='Y'"; $result = $connection2->prepare($sql); $result->execute($data); } catch (PDOException $e) { } while ($row = $result->fetch()) { try { $dataChild = array("gibbonFamilyID" => $row["gibbonFamilyID"], "gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"]); $sqlChild = "SELECT * FROM gibbonFamilyChild JOIN gibbonPerson ON (gibbonFamilyChild.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) WHERE gibbonFamilyID=:gibbonFamilyID 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 gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID ORDER BY surname, preferredName "; $resultChild = $connection2->prepare($sqlChild); $resultChild->execute($dataChild); } catch (PDOException $e) { } while ($rowChild = $resultChild->fetch()) { $children .= "gibbonPersonID=" . $rowChild["gibbonPersonID"] . " OR "; } } if ($children != "(") { $children = substr($children, 0, -4) . ")"; } else { $children = FALSE; } } //My roles $roles = $_SESSION[$guid]["gibbonRoleIDAll"]; $sqlWhere = "("; if (count($roles) > 0) { for ($i = 0; $i < count($roles); $i++) { $dataPosts["role" . $roles[$i][0]] = $roles[$i][0]; $sqlWhere .= "id=:role" . $roles[$i][0] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; } if ($sqlWhere != "(") { $dataPosts["date1"] = $date; $dataPosts["date2"] = $date; $dataPosts["date3"] = $date; $sqlPosts = "(SELECT gibbonMessenger.*, title, surname, preferredName, authorRole.category AS category, image_240, concat('Role: ', gibbonRole.name) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole AS authorRole ON (gibbonPerson.gibbonRoleIDPrimary=authorRole.gibbonRoleID) JOIN gibbonRole ON (gibbonMessengerTarget.id=gibbonRole.gibbonRoleID) WHERE gibbonMessengerTarget.type='Role' AND (messageWall_date1=:date1 OR messageWall_date2=:date2 OR messageWall_date3=:date3) AND {$sqlWhere})"; } //My role categories try { $dataRoleCategory = array("gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlRoleCategory = "SELECT DISTINCT category FROM gibbonRole JOIN gibbonPerson ON (gibbonPerson.gibbonRoleIDAll LIKE CONCAT('%', gibbonRole.gibbonRoleID, '%')) WHERE gibbonPersonID=:gibbonPersonID"; $resultRoleCategory = $connection2->prepare($sqlRoleCategory); $resultRoleCategory->execute($dataRoleCategory); } catch (PDOException $e) { print $e->getMessage(); } $sqlWhere = "("; if ($resultRoleCategory->rowCount() > 0) { $i = 0; while ($rowRoleCategory = $resultRoleCategory->fetch()) { $dataPosts["role" . $rowRoleCategory["category"]] = $rowRoleCategory["category"]; $sqlWhere .= "id=:role" . $rowRoleCategory["category"] . " OR "; $i++; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; } if ($sqlWhere != "(") { $dataPosts["date1"] = $date; $dataPosts["date2"] = $date; $dataPosts["date3"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT DISTINCT gibbonMessenger.*, title, surname, preferredName, authorRole.category AS category, image_240, concat('Role Category: ', gibbonRole.category) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole AS authorRole ON (gibbonPerson.gibbonRoleIDPrimary=authorRole.gibbonRoleID) JOIN gibbonRole ON (gibbonMessengerTarget.id=gibbonRole.category) WHERE gibbonMessengerTarget.type='Role Category' AND (messageWall_date1=:date1 OR messageWall_date2=:date2 OR messageWall_date3=:date3) AND {$sqlWhere})"; } //My year groups if ($staff) { $dataPosts["date4"] = $date; $dataPosts["date5"] = $date; $dataPosts["date6"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, 'Year Groups' AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) WHERE gibbonMessengerTarget.type='Year Group' AND (messageWall_date1=:date4 OR messageWall_date2=:date5 OR messageWall_date3=:date6) AND staff='Y')"; } if ($student) { $dataPosts["date7"] = $date; $dataPosts["date8"] = $date; $dataPosts["date9"] = $date; $dataPosts["gibbonSchoolYearID1"] = $_SESSION[$guid]["gibbonSchoolYearID"]; $dataPosts["gibbonPersonID1"] = $_SESSION[$guid]["gibbonPersonID"]; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Year Group ', gibbonYearGroup.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonStudentEnrolment ON (gibbonMessengerTarget.id=gibbonStudentEnrolment.gibbonYearGroupID) JOIN gibbonYearGroup ON (gibbonStudentEnrolment.gibbonYearGroupID=gibbonYearGroup.gibbonYearGroupID) WHERE gibbonStudentEnrolment.gibbonPersonID=:gibbonPersonID1 AND gibbonMessengerTarget.type='Year Group' AND (messageWall_date1=:date7 OR messageWall_date2=:date8 OR messageWall_date3=:date9) AND gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID1 AND students='Y')"; } if ($parent and $children != FALSE) { $dataPosts["date10"] = $date; $dataPosts["date11"] = $date; $dataPosts["date12"] = $date; $dataPosts["gibbonSchoolYearID2"] = $_SESSION[$guid]["gibbonSchoolYearID"]; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Year Group: ', gibbonYearGroup.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonStudentEnrolment ON (gibbonMessengerTarget.id=gibbonStudentEnrolment.gibbonYearGroupID) JOIN gibbonYearGroup ON (gibbonStudentEnrolment.gibbonYearGroupID=gibbonYearGroup.gibbonYearGroupID) WHERE " . preg_replace("/gibbonPersonID/", "gibbonStudentEnrolment.gibbonPersonID", $children) . " AND gibbonMessengerTarget.type='Year Group' AND (messageWall_date1=:date10 OR messageWall_date2=:date11 OR messageWall_date3=:date12) AND gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID2 AND parents='Y')"; } //My roll groups if ($staff) { $sqlWhere = "("; try { $dataRollGroup = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonIDTutor" => $_SESSION[$guid]["gibbonPersonID"], "gibbonPersonIDTutor2" => $_SESSION[$guid]["gibbonPersonID"], "gibbonPersonIDTutor3" => $_SESSION[$guid]["gibbonPersonID"]); $sqlRollGroup = "SELECT * FROM gibbonRollGroup WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND (gibbonPersonIDTutor=:gibbonPersonIDTutor OR gibbonPersonIDTutor2=:gibbonPersonIDTutor2 OR gibbonPersonIDTutor3=:gibbonPersonIDTutor3)"; $resultRollGroup = $connection2->prepare($sqlRollGroup); $resultRollGroup->execute($dataRollGroup); } catch (PDOException $e) { } if ($resultRollGroup->rowCount() > 0) { while ($rowRollGroup = $resultRollGroup->fetch()) { $dataPosts["roll" . $rowRollGroup["gibbonRollGroupID"]] = $rowRollGroup["gibbonRollGroupID"]; $sqlWhere .= "id=:roll" . $rowRollGroup["gibbonRollGroupID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { $dataPosts["date13"] = $date; $dataPosts["date14"] = $date; $dataPosts["date15"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Roll Group: ', gibbonRollGroup.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonRollGroup ON (gibbonMessengerTarget.id=gibbonRollGroup.gibbonRollGroupID) WHERE gibbonMessengerTarget.type='Roll Group' AND (messageWall_date1=:date13 OR messageWall_date2=:date14 OR messageWall_date3=:date15) AND {$sqlWhere} AND staff='Y')"; } } } if ($student) { $dataPosts["date16"] = $date; $dataPosts["date17"] = $date; $dataPosts["date18"] = $date; $dataPosts["gibbonSchoolYearID3"] = $_SESSION[$guid]["gibbonSchoolYearID"]; $dataPosts["gibbonPersonID2"] = $_SESSION[$guid]["gibbonPersonID"]; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Roll Group: ', gibbonRollGroup.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonStudentEnrolment ON (gibbonMessengerTarget.id=gibbonStudentEnrolment.gibbonRollGroupID) JOIN gibbonRollGroup ON (gibbonStudentEnrolment.gibbonRollGroupID=gibbonRollGroup.gibbonRollGroupID) WHERE gibbonStudentEnrolment.gibbonPersonID=:gibbonPersonID2 AND gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID3 AND gibbonMessengerTarget.type='Roll Group' AND (messageWall_date1=:date16 OR messageWall_date2=:date17 OR messageWall_date3=:date18) AND students='Y')"; } if ($parent and $children != FALSE) { $dataPosts["date19"] = $date; $dataPosts["date20"] = $date; $dataPosts["date21"] = $date; $dataPosts["gibbonSchoolYearID4"] = $_SESSION[$guid]["gibbonSchoolYearID"]; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Roll Group: ', gibbonRollGroup.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonStudentEnrolment ON (gibbonMessengerTarget.id=gibbonStudentEnrolment.gibbonRollGroupID) JOIN gibbonRollGroup ON (gibbonStudentEnrolment.gibbonRollGroupID=gibbonRollGroup.gibbonRollGroupID) WHERE " . preg_replace("/gibbonPersonID/", "gibbonStudentEnrolment.gibbonPersonID", $children) . " AND gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID4 AND gibbonMessengerTarget.type='Roll Group' AND (messageWall_date1=:date19 OR messageWall_date2=:date20 OR messageWall_date3=:date21) AND parents='Y')"; } //My courses //First check for any course, then do specific parent check try { $dataClasses = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlClasses = "SELECT DISTINCT gibbonCourseClass.gibbonCourseID FROM gibbonCourse JOIN gibbonCourseClass ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) JOIN gibbonCourseClassPerson ON (gibbonCourseClassPerson.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonPersonID=:gibbonPersonID AND NOT role LIKE '%- Left'"; $resultClasses = $connection2->prepare($sqlClasses); $resultClasses->execute($dataClasses); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultClasses->rowCount() > 0) { while ($rowClasses = $resultClasses->fetch()) { $dataPosts["course" . $rowClasses["gibbonCourseID"]] = $rowClasses["gibbonCourseID"]; $sqlWhere .= "id=:course" . $rowClasses["gibbonCourseID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { if ($staff) { $dataPosts["date22"] = $date; $dataPosts["date23"] = $date; $dataPosts["date24"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Course: ', gibbonCourse.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonCourse ON (gibbonMessengerTarget.id=gibbonCourse.gibbonCourseID) WHERE gibbonMessengerTarget.type='Course' AND (messageWall_date1=:date22 OR messageWall_date2=:date23 OR messageWall_date3=:date24) AND {$sqlWhere} AND staff='Y')"; } if ($student) { $dataPosts["date25"] = $date; $dataPosts["date26"] = $date; $dataPosts["date27"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Course: ', gibbonCourse.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonCourse ON (gibbonMessengerTarget.id=gibbonCourse.gibbonCourseID) WHERE gibbonMessengerTarget.type='Course' AND (messageWall_date1=:date25 OR messageWall_date2=:date26 OR messageWall_date3=:date27) AND {$sqlWhere} AND students='Y')"; } } } if ($parent and $children != FALSE) { try { $dataClasses = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"]); $sqlClasses = "SELECT DISTINCT gibbonCourseClass.gibbonCourseID FROM gibbonCourse JOIN gibbonCourseClass ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) JOIN gibbonCourseClassPerson ON (gibbonCourseClassPerson.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND " . preg_replace("/gibbonPersonID/", "gibbonCourseClassPerson.gibbonPersonID", $children) . " AND NOT role LIKE '%- Left'"; $resultClasses = $connection2->prepare($sqlClasses); $resultClasses->execute($dataClasses); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultClasses->rowCount() > 0) { while ($rowClasses = $resultClasses->fetch()) { $dataPosts["course" . $rowClasses["gibbonCourseID"]] = $rowClasses["gibbonCourseID"]; $sqlWhere .= "id=:course" . $rowClasses["gibbonCourseID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { $dataPosts["date28"] = $date; $dataPosts["date29"] = $date; $dataPosts["date30"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Course: ', gibbonCourse.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonCourse ON (gibbonMessengerTarget.id=gibbonCourse.gibbonCourseID) WHERE gibbonMessengerTarget.type='Course' AND (messageWall_date1=:date28 OR messageWall_date2=:date29 OR messageWall_date3=:date30) AND {$sqlWhere} AND parents='Y')"; } } } //My classes //First check for any role, then do specific parent check try { $dataClasses = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlClasses = "SELECT gibbonCourseClass.gibbonCourseClassID FROM gibbonCourse JOIN gibbonCourseClass ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) JOIN gibbonCourseClassPerson ON (gibbonCourseClassPerson.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonPersonID=:gibbonPersonID AND NOT role LIKE '%- Left'"; $resultClasses = $connection2->prepare($sqlClasses); $resultClasses->execute($dataClasses); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultClasses->rowCount() > 0) { while ($rowClasses = $resultClasses->fetch()) { $dataPosts["class" . $rowClasses["gibbonCourseClassID"]] = $rowClasses["gibbonCourseClassID"]; $sqlWhere .= "id=:class" . $rowClasses["gibbonCourseClassID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { if ($staff) { $dataPosts["date31"] = $date; $dataPosts["date32"] = $date; $dataPosts["date33"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Class: ', gibbonCourse.nameShort, '.', gibbonCourseClass.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonCourseClass ON (gibbonMessengerTarget.id=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourseClass.gibbonCourseID=gibbonCourse.gibbonCourseID) WHERE gibbonMessengerTarget.type='Class' AND (messageWall_date1=:date31 OR messageWall_date2=:date32 OR messageWall_date3=:date33) AND {$sqlWhere} AND staff='Y')"; } if ($student) { $dataPosts["date34"] = $date; $dataPosts["date35"] = $date; $dataPosts["date36"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Class: ', gibbonCourse.nameShort, '.', gibbonCourseClass.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonCourseClass ON (gibbonMessengerTarget.id=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourseClass.gibbonCourseID=gibbonCourse.gibbonCourseID) WHERE gibbonMessengerTarget.type='Class' AND (messageWall_date1=:date34 OR messageWall_date2=:date35 OR messageWall_date3=:date36) AND {$sqlWhere} AND students='Y')"; } } } if ($parent and $children != FALSE) { try { $dataClasses = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"]); $sqlClasses = "SELECT gibbonCourseClass.gibbonCourseClassID FROM gibbonCourse JOIN gibbonCourseClass ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) JOIN gibbonCourseClassPerson ON (gibbonCourseClassPerson.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND " . preg_replace("/gibbonPersonID/", "gibbonCourseClassPerson.gibbonPersonID", $children) . " AND NOT role LIKE '%- Left'"; $resultClasses = $connection2->prepare($sqlClasses); $resultClasses->execute($dataClasses); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultClasses->rowCount() > 0) { while ($rowClasses = $resultClasses->fetch()) { $dataPosts["class" . $rowClasses["gibbonCourseClassID"]] = $rowClasses["gibbonCourseClassID"]; $sqlWhere .= "id=:class" . $rowClasses["gibbonCourseClassID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { $dataPosts["date37"] = $date; $dataPosts["date38"] = $date; $dataPosts["date39"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Class: ', gibbonCourse.nameShort, '.', gibbonCourseClass.nameShort) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonCourseClass ON (gibbonMessengerTarget.id=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourseClass.gibbonCourseID=gibbonCourse.gibbonCourseID) WHERE gibbonMessengerTarget.type='Class' AND (messageWall_date1=:date37 OR messageWall_date2=:date38 OR messageWall_date3=:date39) AND {$sqlWhere} AND parents='Y')"; } } } //My activities if ($staff) { try { $dataActivities = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlActivities = "SELECT gibbonActivity.gibbonActivityID FROM gibbonActivity JOIN gibbonActivityStaff ON (gibbonActivityStaff.gibbonActivityID=gibbonActivity.gibbonActivityID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID"; $resultActivities = $connection2->prepare($sqlActivities); $resultActivities->execute($dataActivities); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultActivities->rowCount() > 0) { while ($rowActivities = $resultActivities->fetch()) { $dataPosts["activity" . $rowActivities["gibbonActivityID"]] = $rowActivities["gibbonActivityID"]; $sqlWhere .= "id=:activity" . $rowActivities["gibbonActivityID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { $dataPosts["date40"] = $date; $dataPosts["date41"] = $date; $dataPosts["date42"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Activity: ', gibbonActivity.name) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonActivity ON (gibbonMessengerTarget.id=gibbonActivity.gibbonActivityID) WHERE gibbonMessengerTarget.type='Activity' AND (messageWall_date1=:date40 OR messageWall_date2=:date41 OR messageWall_date3=:date42) AND {$sqlWhere} AND staff='Y')"; } } } if ($student) { try { $dataActivities = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $_SESSION[$guid]["gibbonPersonID"]); $sqlActivities = "SELECT gibbonActivity.gibbonActivityID FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonActivityID=gibbonActivity.gibbonActivityID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStudent.gibbonPersonID=:gibbonPersonID AND status='Accepted'"; $resultActivities = $connection2->prepare($sqlActivities); $resultActivities->execute($dataActivities); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultActivities->rowCount() > 0) { while ($rowActivities = $resultActivities->fetch()) { $dataPosts["activity" . $rowActivities["gibbonActivityID"]] = $rowActivities["gibbonActivityID"]; $sqlWhere .= "id=:activity" . $rowActivities["gibbonActivityID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { $dataPosts["date43"] = $date; $dataPosts["date44"] = $date; $dataPosts["date45"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Activity: ', gibbonActivity.name) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonActivity ON (gibbonMessengerTarget.id=gibbonActivity.gibbonActivityID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) WHERE gibbonMessengerTarget.type='Activity' AND (messageWall_date1=:date43 OR messageWall_date2=:date44 OR messageWall_date3=:date45) AND {$sqlWhere} AND students='Y')"; } } } if ($parent and $children != FALSE) { try { $dataActivities = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"]); $sqlActivities = "SELECT gibbonActivity.gibbonActivityID FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonActivityID=gibbonActivity.gibbonActivityID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND " . preg_replace("/gibbonPersonID/", "gibbonActivityStudent.gibbonPersonID", $children) . " AND status='Accepted'"; $resultActivities = $connection2->prepare($sqlActivities); $resultActivities->execute($dataActivities); } catch (PDOException $e) { } $sqlWhere = "("; if ($resultActivities->rowCount() > 0) { while ($rowActivities = $resultActivities->fetch()) { $dataPosts["activity" . $rowActivities["gibbonActivityID"]] = $rowActivities["gibbonActivityID"]; $sqlWhere .= "id=:activity" . $rowActivities["gibbonActivityID"] . " OR "; } $sqlWhere = substr($sqlWhere, 0, -3) . ")"; if ($sqlWhere != "(") { $dataPosts["date46"] = $date; $dataPosts["date47"] = $date; $dataPosts["date48"] = $date; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, title, surname, preferredName, category, image_240, concat('Activity: ', gibbonActivity.name) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonActivity ON (gibbonMessengerTarget.id=gibbonActivity.gibbonActivityID) WHERE gibbonMessengerTarget.type='Activity' AND (messageWall_date1=:date46 OR messageWall_date2=:date47 OR messageWall_date3=:date48) AND {$sqlWhere} AND parents='Y')"; } } } //Houses $dataPosts["date49"] = $date; $dataPosts["date50"] = $date; $dataPosts["date51"] = $date; $dataPosts["gibbonPersonID3"] = $_SESSION[$guid]["gibbonPersonID"]; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, gibbonPerson.title, gibbonPerson.surname, gibbonPerson.preferredName, category, gibbonPerson.image_240, concat('Houses: ', gibbonHouse.name) AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonPerson AS inHouse ON (gibbonMessengerTarget.id=inHouse.gibbonHouseID) JOIN gibbonHouse ON (gibbonPerson.gibbonHouseID=gibbonHouse.gibbonHouseID)WHERE gibbonMessengerTarget.type='Houses' AND (messageWall_date1=:date49 OR messageWall_date2=:date50 OR messageWall_date3=:date51) AND inHouse.gibbonPersonID=:gibbonPersonID3)"; //Individuals $dataPosts["date52"] = $date; $dataPosts["date53"] = $date; $dataPosts["date54"] = $date; $dataPosts["gibbonPersonID4"] = $_SESSION[$guid]["gibbonPersonID"]; $sqlPosts = $sqlPosts . " UNION (SELECT gibbonMessenger.*, gibbonPerson.title, gibbonPerson.surname, gibbonPerson.preferredName, category, gibbonPerson.image_240, 'Individual: You' AS source FROM gibbonMessenger JOIN gibbonMessengerTarget ON (gibbonMessengerTarget.gibbonMessengerID=gibbonMessenger.gibbonMessengerID) JOIN gibbonPerson ON (gibbonMessenger.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) JOIN gibbonPerson AS individual ON (gibbonMessengerTarget.id=individual.gibbonPersonID) WHERE gibbonMessengerTarget.type='Individuals' AND (messageWall_date1=:date52 OR messageWall_date2=:date53 OR messageWall_date3=:date54) AND individual.gibbonPersonID=:gibbonPersonID4)"; //SPIT OUT RESULTS if ($mode == "result") { $resultReturn = array(); $resultReturn[0] = $dataPosts; $resultReturn[1] = $sqlPosts . " ORDER BY subject, gibbonMessengerID, source"; return serialize($resultReturn); } else { $count = 0; try { $sqlPosts = $sqlPosts . " ORDER BY subject, gibbonMessengerID, source"; $resultPosts = $connection2->prepare($sqlPosts); $resultPosts->execute($dataPosts); } catch (PDOException $e) { print $e->getMessage(); } if ($resultPosts->rowCount() < 1) { $return .= "<div class='warning'>"; $return .= _("There are no records to display."); $return .= "</div>"; } else { $output = array(); $last = ""; while ($rowPosts = $resultPosts->fetch()) { if ($last == $rowPosts["gibbonMessengerID"]) { $output[$count - 1]["source"] = $output[$count - 1]["source"] . "<br/>" . $rowPosts["source"]; } else { $output[$count]["photo"] = $rowPosts["image_240"]; $output[$count]["subject"] = $rowPosts["subject"]; $output[$count]["details"] = $rowPosts["body"]; $output[$count]["author"] = formatName($rowPosts["title"], $rowPosts["preferredName"], $rowPosts["surname"], $rowPosts["category"]); $output[$count]["source"] = $rowPosts["source"]; $output[$count]["gibbonMessengerID"] = $rowPosts["gibbonMessengerID"]; $output[$count]["gibbonPersonID"] = $rowPosts["gibbonPersonID"]; $count++; $last = $rowPosts["gibbonMessengerID"]; } } $return .= "<table cellspacing='0' style='margin-top: 10px'>"; $return .= "<tr>"; $return .= "<th style='text-align: center'>"; $return .= _("Sharing"); $return .= "</th>"; $return .= "<th>"; $return .= _("Message"); $return .= "</th>"; $return .= "</tr>"; $rowCount = 0; $rowNum = "odd"; for ($i = 0; $i < count($output); $i++) { if ($rowCount % 2 == 0) { $rowNum = "even"; } else { $rowNum = "odd"; } $rowCount++; $return .= "<tr class={$rowNum}>"; $return .= "<td style='text-align: center; vertical-align: top; padding-bottom: 10px; padding-top: 10px; border-top: 1px solid #666; width: 100px'>"; $return .= "<a name='" . $output[$i]["gibbonMessengerID"] . "'></a>"; $return .= getUserPhoto($guid, $output[$i]["photo"], 75) . "<br/>"; //DEAL WITH LIKES $likesGiven = countLikesByContextAndGiver($connection2, "Messenger", "gibbonMessengerID", $output[$i]["gibbonMessengerID"], $_SESSION[$guid]["gibbonPersonID"], $output[$i]["gibbonPersonID"]); if ($output[$i]["gibbonPersonID"] == $_SESSION[$guid]["gibbonPersonID"]) { if ($likesGiven == 1) { $return .= $likesGiven . "x " . _('Like') . "<br/><br/>"; } else { $return .= $likesGiven . "x " . _('Likes') . "<br/><br/>"; } } else { $comment = addSlashes($output[$i]["subject"]); $return .= "<div id='star" . $output[$i]["gibbonMessengerID"] . "'>"; $return .= "<script type=\"text/javascript\">"; $return .= "\$(document).ready(function(){"; $return .= "\$(\"#starAdd" . $output[$i]["gibbonMessengerID"] . "\").click(function(){"; $return .= "\$(\"#star" . $output[$i]["gibbonMessengerID"] . "\").load(\"" . $_SESSION[$guid]["absoluteURL"] . "/modules/Messenger/messageWall_view_starAjax.php\",{\"gibbonPersonID\": \"" . $output[$i]["gibbonPersonID"] . "\", \"gibbonMessengerID\": \"" . $output[$i]["gibbonMessengerID"] . "\", \"mode\": \"add\", \"comment\": \"" . $comment . "\"});"; $return .= "});"; $return .= "\$(\"#starRemove" . $output[$i]["gibbonMessengerID"] . "\").click(function(){"; $return .= "\$(\"#star" . $output[$i]["gibbonMessengerID"] . "\").load(\"" . $_SESSION[$guid]["absoluteURL"] . "/modules/Messenger/messageWall_view_starAjax.php\",{\"gibbonPersonID\": \"" . $output[$i]["gibbonPersonID"] . "\", \"gibbonMessengerID\": \"" . $output[$i]["gibbonMessengerID"] . "\", \"mode\": \"remove\", \"comment\": \"" . $comment . "\"});"; $return .= "});"; $return .= "});"; $return .= "</script>"; if ($likesGiven != 1) { $return .= "<a id='starAdd" . $output[$i]["gibbonMessengerID"] . "' onclick='return false;' href='#'><img style='margin-top: -8px; margin-bottom: 5px' src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_off.png'></a>"; } else { $return .= "<a id='starRemove" . $output[$i]["gibbonMessengerID"] . "' onclick='return false;' href='#'><img style='margin-top: -8px; margin-bottom: 5px' src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_on.png'></a>"; } $return .= "</div>"; } $return .= "<b><u>Posted By</b></u><br/>"; $return .= $output[$i]["author"] . "<br/><br/>"; $return .= "<b><u>Shared Via</b></u><br/>"; $return .= $output[$i]["source"] . "<br/><br/>"; $return .= "</td>"; $return .= "<td style='border-left: none; vertical-align: top; padding-bottom: 10px; padding-top: 10px; border-top: 1px solid #666; width: 640px'>"; $return .= "<h3 style='margin-top: 3px'>"; $return .= $output[$i]["subject"]; $return .= "</h3>"; $return .= "</p>"; $return .= $output[$i]["details"]; $return .= "</p>"; $return .= "</td>"; $return .= "</tr>"; } $return .= "</table>"; } if ($mode == "print") { return $return; } else { return $count; } } }
} if ($resultCheck1->rowCount() == 0) { //There are no active siblings, so let's check parents to see if we can set anyone to left try { $dataCheck2 = array("gibbonFamilyID" => $row["gibbonFamilyID"]); $sqlCheck2 = "SELECT gibbonPerson.gibbonPersonID, status, gibbonRoleIDAll FROM gibbonPerson JOIN gibbonFamilyAdult ON (gibbonFamilyAdult.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonFamilyID=:gibbonFamilyID AND NOT status='Left' ORDER BY gibbonPersonID"; $resultCheck2 = $connection2->prepare($sqlCheck2); $resultCheck2->execute($dataCheck2); } catch (PDOException $e) { } while ($rowCheck2 = $resultCheck2->fetch()) { //Check to see if parent has any non-staff roles. If not, mark as 'Left' $nonParentRole = FALSE; $roles = explode(",", $rowCheck2["gibbonRoleIDAll"]); foreach ($roles as $role) { if (getRoleCategory($role, $connection2) != "Parent") { $nonParentRole = TRUE; } } if ($nonParentRole == FALSE) { //Update status to 'Left' try { $dataUpdate = array("gibbonPersonID" => $rowCheck2["gibbonPersonID"]); $sqlUpdate = "UPDATE gibbonPerson SET status='Left' WHERE gibbonPersonID=:gibbonPersonID"; $resultUpdate = $connection2->prepare($sqlUpdate); $resultUpdate->execute($dataUpdate); } catch (PDOException $e) { } $count++; } }
//Roles if (isActionAccessible($guid, $connection2, "/modules/Messenger/messenger_post.php", "New Message_role")) { if ($_POST["role"] == "Y") { $choices = $_POST["roles"]; if ($choices != "") { foreach ($choices as $t) { try { $data = array("AI" => $AI, "t" => $t); $sql = "INSERT INTO gibbonMessengerTarget SET gibbonMessengerID=:AI, type='Role', id=:t"; $result = $connection2->prepare($sql); $result->execute($data); } catch (PDOException $e) { $partialFail = TRUE; } //Get email addresses $category = getRoleCategory($t, $connection2); if ($email == "Y") { if ($category == "Parent") { try { $dataEmail = array("gibbonRoleIDAll" => "%{$t}%"); $sqlEmail = "SELECT DISTINCT email, title, surname, preferredName FROM gibbonPerson JOIN gibbonFamilyAdult ON (gibbonFamilyAdult.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE NOT email='' AND gibbonRoleIDAll LIKE :gibbonRoleIDAll AND status='Full' AND contactEmail='Y'"; $resultEmail = $connection2->prepare($sqlEmail); $resultEmail->execute($dataEmail); } catch (PDOException $e) { } while ($rowEmail = $resultEmail->fetch()) { $emails .= $rowEmail["email"] . ","; $emailsReport .= formatName('', $rowEmail["preferredName"], $rowEmail["surname"], "Student", false) . " (" . $rowEmail["email"] . "),"; } } else { try {
print "<div class='error'>"; print _("Your request failed because you do not have access to this action."); print "</div>"; } else { //Proceed! //Check if school year specified $gibbonCourseClassID = $_GET["gibbonCourseClassID"]; $gibbonMarkbookColumnID = $_GET["gibbonMarkbookColumnID"]; $gibbonPersonID = $_GET["gibbonPersonID"]; $gibbonRubricID = $_GET["gibbonRubricID"]; if ($gibbonCourseClassID == "" or $gibbonMarkbookColumnID == "" or $gibbonPersonID == "" or $gibbonRubricID == "") { print "<div class='error'>"; print _("You have not specified one or more required parameters."); print "</div>"; } else { $roleCategory = getRoleCategory($_SESSION[$guid]["gibbonRoleIDPrimary"], $connection2); $contextDBTableGibbonRubricIDField = "gibbonRubricID"; if ($_GET["type"] == "attainment") { $contextDBTableGibbonRubricIDField = "gibbonRubricIDAttainment"; } else { if ($_GET["type"] == "effort") { $contextDBTableGibbonRubricIDField = "gibbonRubricIDEffort"; } } try { if ($roleCategory == "Staff") { $data = array("gibbonCourseClassID" => $gibbonCourseClassID); $sql = "SELECT gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, gibbonCourseClass.gibbonCourseClassID FROM gibbonCourse, gibbonCourseClass WHERE gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID AND gibbonCourseClass.gibbonCourseClassID=:gibbonCourseClassID ORDER BY course, class"; } else { if ($roleCategory == "Student") { $data = array("gibbonPersonID" => $gibbonPersonID, "gibbonCourseClassID" => $gibbonCourseClassID);