Exemple #1
0
 print "<td>";
 if ($row["viewableStudents"] == "Y") {
     print _("Students");
 }
 if ($row["viewableStudents"] == "Y" and $row["viewableParents"] == "Y") {
     print ", ";
 }
 if ($row["viewableParents"] == "Y") {
     print _("Parents");
 }
 print "</td>";
 print "<td>";
 if ($row["role"] == "Teacher") {
     print countLikesByContext($connection2, "Planner", "gibbonPlannerEntryID", $row["gibbonPlannerEntryID"]);
 } else {
     $likesGiven = countLikesByContextAndGiver($connection2, "Planner", "gibbonPlannerEntryID", $row["gibbonPlannerEntryID"], $_SESSION[$guid]["gibbonPersonID"]);
     if ($likesGiven != 1) {
         print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Planner/plannerProcess.php?gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&address=" . $_GET["q"] . "&viewBy={$viewBy}&gibbonCourseClassID={$gibbonCourseClassID}&date={$date}'><img src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_off.png'></a>";
     } else {
         print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Planner/plannerProcess.php?gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&address=" . $_GET["q"] . "&viewBy={$viewBy}&gibbonCourseClassID={$gibbonCourseClassID}&date={$date}'><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/" . $_SESSION[$guid]["module"] . "/planner_view_full.php&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&viewBy=class&gibbonCourseClassID={$gibbonCourseClassID}&width=1000&height=550'><img title='" . _('View') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/plus.png'/></a> ";
 if ($highestAction == "Lesson Planner_viewAllEditMyClasses" and $teacher == TRUE or $highestAction == "Lesson Planner_viewEditAllClasses") {
     print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . $_SESSION[$guid]["module"] . "/planner_edit.php&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&viewBy={$viewBy}&gibbonCourseClassID={$gibbonCourseClassID}'><img title='" . _('Edit') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/config.png'/></a> ";
     print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . $_SESSION[$guid]["module"] . "/planner_bump.php&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&viewBy={$viewBy}&gibbonCourseClassID={$gibbonCourseClassID}'><img title='" . _('Bump') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/page_right.png'/></a>";
     print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . $_SESSION[$guid]["module"] . "/planner_delete.php&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&viewBy={$viewBy}&gibbonCourseClassID={$gibbonCourseClassID}'><img title='" . _('Delete') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/garbage.png'/></a>";
     print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/" . $_SESSION[$guid]["module"] . "/planner_duplicate.php&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&viewBy={$viewBy}&gibbonCourseClassID={$gibbonCourseClassID}&date={$date}'><img style='margin-left: 3px' title='" . _('Duplicate') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/copy.png'/></a>";
 }
Exemple #2
0
function getParentalDashboardContents($connection2, $guid, $gibbonPersonID)
{
    $return = FALSE;
    $alert = getAlert($connection2, 02);
    $entryCount = 0;
    //PREPARE PLANNER SUMMARY
    $plannerOutput = "<span style='font-size: 85%; font-weight: bold'>" . _('Today\'s Classes') . "</span> . <span style='font-size: 70%'><a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner.php&search=" . $gibbonPersonID . "'>" . _('View Planner') . "</a></span>";
    if (isset($_GET["updateReturn"])) {
        $updateReturn = $_GET["updateReturn"];
    } else {
        $updateReturn = "";
    }
    $updateReturnMessage = "";
    $class = "error";
    if (!($updateReturn == "")) {
        if ($updateReturn == "fail0") {
            $updateReturnMessage = _("Your request failed because you do not have access to this action.");
        } else {
            if ($updateReturn == "fail1") {
                $updateReturnMessage = _("Your request failed because your inputs were invalid.");
            } else {
                if ($updateReturn == "fail2") {
                    $updateReturnMessage = _("Your request failed due to a database error.");
                } else {
                    if ($updateReturn == "success0") {
                        $updateReturnMessage = _("Your request was completed successfully.");
                        $class = "success";
                    }
                }
            }
        }
        $plannerOutput .= "<div class='{$class}'>";
        $plannerOutput .= $updateReturnMessage;
        $plannerOutput .= "</div>";
    }
    $classes = FALSE;
    $date = date("Y-m-d");
    if (isSchoolOpen($guid, $date, $connection2) == TRUE and isActionAccessible($guid, $connection2, "/modules/Planner/planner.php") and $_SESSION[$guid]["username"] != "") {
        try {
            $data = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "date" => $date, "gibbonPersonID" => $gibbonPersonID, "date2" => $date, "gibbonPersonID2" => $gibbonPersonID);
            $sql = "(SELECT gibbonPlannerEntry.gibbonPlannerEntryID, gibbonUnitID, gibbonHookID, gibbonPlannerEntry.gibbonCourseClassID, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, gibbonPlannerEntry.name, timeStart, timeEnd, viewableStudents, viewableParents, homework, homeworkSubmission, homeworkCrowdAssess, role, date, summary, gibbonPlannerEntryStudentHomework.homeworkDueDateTime AS myHomeworkDueDateTime FROM gibbonPlannerEntry JOIN gibbonCourseClass ON (gibbonPlannerEntry.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourseClassPerson ON (gibbonCourseClass.gibbonCourseClassID=gibbonCourseClassPerson.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) LEFT JOIN gibbonPlannerEntryStudentHomework ON (gibbonPlannerEntryStudentHomework.gibbonPlannerEntryID=gibbonPlannerEntry.gibbonPlannerEntryID AND gibbonPlannerEntryStudentHomework.gibbonPersonID=gibbonCourseClassPerson.gibbonPersonID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND date=:date AND gibbonCourseClassPerson.gibbonPersonID=:gibbonPersonID AND NOT role='Student - Left' AND NOT role='Teacher - Left') UNION (SELECT gibbonPlannerEntry.gibbonPlannerEntryID, gibbonUnitID, gibbonHookID, gibbonPlannerEntry.gibbonCourseClassID, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, gibbonPlannerEntry.name, timeStart, timeEnd, viewableStudents, viewableParents, homework, homeworkSubmission, homeworkCrowdAssess, role, date, summary, NULL AS myHomeworkDueDateTime FROM gibbonPlannerEntry JOIN gibbonCourseClass ON (gibbonPlannerEntry.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonPlannerEntryGuest ON (gibbonPlannerEntryGuest.gibbonPlannerEntryID=gibbonPlannerEntry.gibbonPlannerEntryID) JOIN gibbonCourse ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) WHERE date=:date2 AND gibbonPlannerEntryGuest.gibbonPersonID=:gibbonPersonID2) ORDER BY date, timeStart";
            $result = $connection2->prepare($sql);
            $result->execute($data);
        } catch (PDOException $e) {
            $plannerOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
        }
        if ($result->rowCount() > 0) {
            $classes = TRUE;
            $plannerOutput .= "<table cellspacing='0' style='margin: 3px 0px; width: 100%'>";
            $plannerOutput .= "<tr class='head'>";
            $plannerOutput .= "<th>";
            $plannerOutput .= _("Class") . "<br/>";
            $plannerOutput .= "</th>";
            $plannerOutput .= "<th>";
            $plannerOutput .= _("Lesson") . "<br/>";
            $plannerOutput .= "<span style='font-size: 85%; font-weight: normal; font-style: italic'>" . _("Summary") . "</span>";
            $plannerOutput .= "</th>";
            $plannerOutput .= "<th>";
            $plannerOutput .= _("Homework");
            $plannerOutput .= "</th>";
            $plannerOutput .= "<th>";
            $plannerOutput .= _("Like");
            $plannerOutput .= "</th>";
            $plannerOutput .= "<th>";
            $plannerOutput .= _("Action");
            $plannerOutput .= "</th>";
            $plannerOutput .= "</tr>";
            $count2 = 0;
            $rowNum = "odd";
            while ($row = $result->fetch()) {
                if ($count2 % 2 == 0) {
                    $rowNum = "even";
                } else {
                    $rowNum = "odd";
                }
                $count2++;
                //Highlight class in progress
                if (date("H:i:s") > $row["timeStart"] and date("H:i:s") < $row["timeEnd"] and $date == date("Y-m-d")) {
                    $rowNum = "current";
                }
                //COLOR ROW BY STATUS!
                $plannerOutput .= "<tr class={$rowNum}>";
                $plannerOutput .= "<td>";
                $plannerOutput .= "<b>" . $row["course"] . "." . $row["class"] . "</b><br/>";
                $plannerOutput .= "</td>";
                $plannerOutput .= "<td>";
                $plannerOutput .= $row["name"] . "<br/>";
                $unit = getUnit($connection2, $row["gibbonUnitID"], $row["gibbonHookID"], $row["gibbonCourseClassID"]);
                if (isset($unit[0])) {
                    $plannerOutput .= $unit[0];
                    if ($unit[1] != "") {
                        $plannerOutput .= "<br/><i>" . $unit[1] . " " . _('Unit') . "</i><br/>";
                    }
                }
                $plannerOutput .= "<span style='font-size: 85%; font-weight: normal; font-style: italic'>";
                $plannerOutput .= $row["summary"];
                $plannerOutput .= "</span>";
                $plannerOutput .= "</td>";
                $plannerOutput .= "<td>";
                if ($row["homework"] == "N" and $row["myHomeworkDueDateTime"] == "") {
                    $plannerOutput .= _("No");
                } else {
                    if ($row["homework"] == "Y") {
                        $plannerOutput .= _("Yes") . ": " . _("Teacher Recorded") . "<br/>";
                        if ($row["homeworkSubmission"] == "Y") {
                            $plannerOutput .= "<span style='font-size: 85%; font-style: italic'>+" . _("Submission") . "</span><br/>";
                            if ($row["homeworkCrowdAssess"] == "Y") {
                                $plannerOutput .= "<span style='font-size: 85%; font-style: italic'>+" . _("Crowd Assessment") . "</span><br/>";
                            }
                        }
                    }
                    if ($row["myHomeworkDueDateTime"] != "") {
                        $plannerOutput .= _("Yes") . ": " . _("Student Recorded") . "</br>";
                    }
                }
                $plannerOutput .= "</td>";
                $plannerOutput .= "<td>";
                $likesGiven = countLikesByContextAndGiver($connection2, "Planner", "gibbonPlannerEntryID", $row["gibbonPlannerEntryID"], $_SESSION[$guid]["gibbonPersonID"]);
                if ($likesGiven != 1) {
                    $plannerOutput .= "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Planner/plannerProcess.php?gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&address=/modules/Planner/planner.php&viewBy=date&date={$date}&gibbonPersonID=" . $gibbonPersonID . "&returnToIndex=Y'><img src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_off.png'></a>";
                } else {
                    $plannerOutput .= "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Planner/plannerProcess.php?gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&address=/modules/Planner/planner.php&viewBy=date&date={$date}&gibbonPersonID=" . $gibbonPersonID . "&returnToIndex=Y'><img src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_on.png'></a>";
                }
                $plannerOutput .= "</td>";
                $plannerOutput .= "<td>";
                $plannerOutput .= "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_view_full.php&search=" . $gibbonPersonID . "&viewBy=date&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&date={$date}&width=1000&height=550'><img title='" . _('View') . "' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/plus.png'/></a> ";
                $plannerOutput .= "</td>";
                $plannerOutput .= "</tr>";
            }
            $plannerOutput .= "</table>";
        }
    }
    if ($classes == FALSE) {
        $plannerOutput .= "<div style='margin-top: 2px' class='warning'>";
        $plannerOutput .= _("There are no records to display.");
        $plannerOutput .= "</div>";
    }
    //PREPARE RECENT GRADES
    $gradesOutput = "<div style='margin-top: 20px'><span style='font-size: 85%; font-weight: bold'>" . _('Recent Grades') . "</span> . <span style='font-size: 70%'><a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Markbook/markbook_view.php&search=" . $gibbonPersonID . "'>" . _('View Markbook') . "</a></span></div>";
    $grades = FALSE;
    //Get alternative header names
    $attainmentAlternativeName = getSettingByScope($connection2, "Markbook", "attainmentAlternativeName");
    $attainmentAlternativeNameAbrev = getSettingByScope($connection2, "Markbook", "attainmentAlternativeNameAbrev");
    $effortAlternativeName = getSettingByScope($connection2, "Markbook", "effortAlternativeName");
    $effortAlternativeNameAbrev = getSettingByScope($connection2, "Markbook", "effortAlternativeNameAbrev");
    try {
        $dataEntry = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $gibbonPersonID);
        $sqlEntry = "SELECT *, gibbonMarkbookColumn.comment AS commentOn, gibbonMarkbookColumn.uploadedResponse AS uploadedResponseOn, gibbonMarkbookEntry.comment AS comment FROM gibbonMarkbookEntry JOIN gibbonMarkbookColumn ON (gibbonMarkbookEntry.gibbonMarkbookColumnID=gibbonMarkbookColumn.gibbonMarkbookColumnID) JOIN gibbonCourseClass ON (gibbonMarkbookColumn.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourse.gibbonCourseID=gibbonCourseClass.gibbonCourseID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonPersonIDStudent=:gibbonPersonID AND complete='Y' AND completeDate<='" . date("Y-m-d") . "' AND viewableParents='Y' ORDER BY completeDate DESC LIMIT 0, 3";
        $resultEntry = $connection2->prepare($sqlEntry);
        $resultEntry->execute($dataEntry);
    } catch (PDOException $e) {
        $gradesOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
    }
    if ($resultEntry->rowCount() > 0) {
        $showParentAttainmentWarning = getSettingByScope($connection2, "Markbook", "showParentAttainmentWarning");
        $showParentEffortWarning = getSettingByScope($connection2, "Markbook", "showParentEffortWarning");
        $grades = TRUE;
        $gradesOutput .= "<table cellspacing='0' style='margin: 3px 0px; width: 100%'>";
        $gradesOutput .= "<tr class='head'>";
        $gradesOutput .= "<th style='width: 120px'>";
        $gradesOutput .= _("Assessment");
        $gradesOutput .= "</th>";
        $gradesOutput .= "<th style='width: 75px'>";
        if ($attainmentAlternativeName != "") {
            $gradesOutput .= $attainmentAlternativeName;
        } else {
            $gradesOutput .= _('Attainment');
        }
        $gradesOutput .= "</th>";
        $gradesOutput .= "<th style='width: 75px'>";
        if ($effortAlternativeName != "") {
            $gradesOutput .= $effortAlternativeName;
        } else {
            $gradesOutput .= _('Effort');
        }
        $gradesOutput .= "</th>";
        $gradesOutput .= "<th>";
        $gradesOutput .= _("Comment");
        $gradesOutput .= "</th>";
        $gradesOutput .= "<th style='width: 75px'>";
        $gradesOutput .= _("Submission");
        $gradesOutput .= "</th>";
        $gradesOutput .= "</tr>";
        $count3 = 0;
        while ($rowEntry = $resultEntry->fetch()) {
            if ($count3 % 2 == 0) {
                $rowNum = "even";
            } else {
                $rowNum = "odd";
            }
            $count3++;
            $gradesOutput .= "<a name='" . $rowEntry["gibbonMarkbookEntryID"] . "'></a>";
            $gradesOutput .= "<tr class={$rowNum}>";
            $gradesOutput .= "<td>";
            $gradesOutput .= "<span title='" . htmlPrep($rowEntry["description"]) . "'>" . $rowEntry["name"] . "</span><br/>";
            $gradesOutput .= "<span style='font-size: 90%; font-style: italic; font-weight: normal'>";
            $gradesOutput .= _("Marked on") . " " . dateConvertBack($guid, $rowEntry["completeDate"]) . "<br/>";
            $gradesOutput .= "</span>";
            $gradesOutput .= "</td>";
            if ($rowEntry["attainment"] == "N" or $rowEntry["gibbonScaleIDAttainment"] == "" and $rowEntry["gibbonRubricIDAttainment"] == "") {
                $gradesOutput .= "<td class='dull' style='color: #bbb; text-align: center'>";
                $gradesOutput .= _('N/A');
                $gradesOutput .= "</td>";
            } else {
                $gradesOutput .= "<td style='text-align: center'>";
                $attainmentExtra = "";
                try {
                    $dataAttainment = array("gibbonScaleID" => $rowEntry["gibbonScaleIDAttainment"]);
                    $sqlAttainment = "SELECT * FROM gibbonScale WHERE gibbonScaleID=:gibbonScaleID";
                    $resultAttainment = $connection2->prepare($sqlAttainment);
                    $resultAttainment->execute($dataAttainment);
                } catch (PDOException $e) {
                }
                if ($resultAttainment->rowCount() == 1) {
                    $rowAttainment = $resultAttainment->fetch();
                    $attainmentExtra = "<br/>" . _($rowAttainment["usage"]);
                }
                $styleAttainment = "style='font-weight: bold'";
                if ($rowEntry["attainmentConcern"] == "Y" and $showParentAttainmentWarning == "Y") {
                    $styleAttainment = "style='color: #" . $alert["color"] . "; font-weight: bold; border: 2px solid #" . $alert["color"] . "; padding: 2px 4px; background-color: #" . $alert["colorBG"] . "'";
                } else {
                    if ($rowEntry["attainmentConcern"] == "P" and $showParentAttainmentWarning == "Y") {
                        $styleAttainment = "style='color: #390; font-weight: bold; border: 2px solid #390; padding: 2px 4px; background-color: #D4F6DC'";
                    }
                }
                $gradesOutput .= "<div {$styleAttainment}>" . $rowEntry["attainmentValue"];
                if ($rowEntry["gibbonRubricIDAttainment"] != "") {
                    $gradesOutput .= "<a class='thickbox' href='" . $_SESSION[$guid]["absoluteURL"] . "/fullscreen.php?q=/modules/Markbook/markbook_view_rubric.php&gibbonRubricID=" . $rowEntry["gibbonRubricIDAttainment"] . "&gibbonCourseClassID=" . $rowEntry["gibbonCourseClassID"] . "&gibbonMarkbookColumnID=" . $rowEntry["gibbonMarkbookColumnID"] . "&gibbonPersonID=" . $gibbonPersonID . "&mark=FALSE&type=attainment&width=1100&height=550'><img style='margin-bottom: -3px; margin-left: 3px' title='View Rubric' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/rubric.png'/></a>";
                }
                $gradesOutput .= "</div>";
                if ($rowEntry["attainmentValue"] != "") {
                    $gradesOutput .= "<div class='detailItem' style='font-size: 75%; font-style: italic; margin-top: 2px'><b>" . htmlPrep(_($rowEntry["attainmentDescriptor"])) . "</b>" . _($attainmentExtra) . "</div>";
                }
                $gradesOutput .= "</td>";
            }
            if ($rowEntry["effort"] == "N" or $rowEntry["gibbonScaleIDEffort"] == "" and $rowEntry["gibbonRubricIDEffort"] == "") {
                $gradesOutput .= "<td class='dull' style='color: #bbb; text-align: center'>";
                $gradesOutput .= _('N/A');
                $gradesOutput .= "</td>";
            } else {
                $gradesOutput .= "<td style='text-align: center'>";
                $effortExtra = "";
                try {
                    $dataEffort = array("gibbonScaleID" => $rowEntry["gibbonScaleIDEffort"]);
                    $sqlEffort = "SELECT * FROM gibbonScale WHERE gibbonScaleID=:gibbonScaleID";
                    $resultEffort = $connection2->prepare($sqlEffort);
                    $resultEffort->execute($dataEffort);
                } catch (PDOException $e) {
                }
                if ($resultEffort->rowCount() == 1) {
                    $rowEffort = $resultEffort->fetch();
                    $effortExtra = "<br/>" . _($rowEffort["usage"]);
                }
                $styleEffort = "style='font-weight: bold'";
                if ($rowEntry["effortConcern"] == "Y" and $showParentEffortWarning == "Y") {
                    $styleEffort = "style='color: #" . $alert["color"] . "; font-weight: bold; border: 2px solid #" . $alert["color"] . "; padding: 2px 4px; background-color: #" . $alert["colorBG"] . "'";
                }
                $gradesOutput .= "<div {$styleEffort}>" . $rowEntry["effortValue"];
                if ($rowEntry["gibbonRubricIDEffort"] != "") {
                    $gradesOutput .= "<a class='thickbox' href='" . $_SESSION[$guid]["absoluteURL"] . "/fullscreen.php?q=/modules/Markbook/markbook_view_rubric.php&gibbonRubricID=" . $rowEntry["gibbonRubricIDEffort"] . "&gibbonCourseClassID=" . $rowEntry["gibbonCourseClassID"] . "&gibbonMarkbookColumnID=" . $rowEntry["gibbonMarkbookColumnID"] . "&gibbonPersonID=" . $gibbonPersonID . "&mark=FALSE&type=effort&width=1100&height=550'><img style='margin-bottom: -3px; margin-left: 3px' title='View Rubric' src='./themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/rubric.png'/></a>";
                }
                $gradesOutput .= "</div>";
                if ($rowEntry["effortValue"] != "") {
                    $gradesOutput .= "<div class='detailItem' style='font-size: 75%; font-style: italic; margin-top: 2px'><b>" . htmlPrep(_($rowEntry["effortDescriptor"])) . "</b>" . _($effortExtra) . "</div>";
                }
                $gradesOutput .= "</td>";
            }
            if ($rowEntry["commentOn"] == "N" and $rowEntry["uploadedResponseOn"] == "N") {
                $gradesOutput .= "<td class='dull' style='color: #bbb; text-align: left'>";
                $gradesOutput .= _('N/A');
                $gradesOutput .= "</td>";
            } else {
                $gradesOutput .= "<td>";
                if ($rowEntry["comment"] != "") {
                    if (strlen($rowEntry["comment"]) > 50) {
                        $gradesOutput .= "<script type='text/javascript'>";
                        $gradesOutput .= "\$(document).ready(function(){";
                        $gradesOutput .= "\$(\".comment-{$entryCount}-{$gibbonPersonID}\").hide();";
                        $gradesOutput .= "\$(\".show_hide-{$entryCount}-{$gibbonPersonID}\").fadeIn(1000);";
                        $gradesOutput .= "\$(\".show_hide-{$entryCount}-{$gibbonPersonID}\").click(function(){";
                        $gradesOutput .= "\$(\".comment-{$entryCount}-{$gibbonPersonID}\").fadeToggle(1000);";
                        $gradesOutput .= "});";
                        $gradesOutput .= "});";
                        $gradesOutput .= "</script>";
                        $gradesOutput .= "<span>" . substr($rowEntry["comment"], 0, 50) . "...<br/>";
                        $gradesOutput .= "<a title='" . _('View Description') . "' class='show_hide-{$entryCount}-{$gibbonPersonID}' onclick='return false;' href='#'>" . _('Read more') . "</a></span><br/>";
                    } else {
                        $gradesOutput .= $rowEntry["comment"];
                    }
                    $gradesOutput .= "<br/>";
                }
                if ($rowEntry["response"] != "") {
                    $gradesOutput .= "<a title='" . _('Uploaded Response') . "' href='" . $_SESSION[$guid]["absoluteURL"] . "/" . $rowEntry["response"] . "'>" . _('Uploaded Response') . "</a><br/>";
                }
                $gradesOutput .= "</td>";
            }
            if ($rowEntry["gibbonPlannerEntryID"] == 0) {
                $gradesOutput .= "<td class='dull' style='color: #bbb; text-align: left'>";
                $gradesOutput .= _('N/A');
                $gradesOutput .= "</td>";
            } else {
                try {
                    $dataSub = array("gibbonPlannerEntryID" => $rowEntry["gibbonPlannerEntryID"]);
                    $sqlSub = "SELECT * FROM gibbonPlannerEntry WHERE gibbonPlannerEntryID=:gibbonPlannerEntryID AND homeworkSubmission='Y'";
                    $resultSub = $connection2->prepare($sqlSub);
                    $resultSub->execute($dataSub);
                } catch (PDOException $e) {
                    $gradesOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
                }
                if ($resultSub->rowCount() != 1) {
                    $gradesOutput .= "<td class='dull' style='color: #bbb; text-align: left'>";
                    $gradesOutput .= _('N/A');
                    $gradesOutput .= "</td>";
                } else {
                    $gradesOutput .= "<td>";
                    $rowSub = $resultSub->fetch();
                    try {
                        $dataWork = array("gibbonPlannerEntryID" => $rowEntry["gibbonPlannerEntryID"], "gibbonPersonID" => $gibbonPersonID);
                        $sqlWork = "SELECT * FROM gibbonPlannerEntryHomework WHERE gibbonPlannerEntryID=:gibbonPlannerEntryID AND gibbonPersonID=:gibbonPersonID ORDER BY count DESC";
                        $resultWork = $connection2->prepare($sqlWork);
                        $resultWork->execute($dataWork);
                    } catch (PDOException $e) {
                        $gradesOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
                    }
                    if ($resultWork->rowCount() > 0) {
                        $rowWork = $resultWork->fetch();
                        if ($rowWork["status"] == "Exemption") {
                            $linkText = _("Exemption");
                        } else {
                            if ($rowWork["version"] == "Final") {
                                $linkText = _("Final");
                            } else {
                                $linkText = _("Draft") . " " . $rowWork["count"];
                            }
                        }
                        $style = "";
                        $status = "On Time";
                        if ($rowWork["status"] == "Exemption") {
                            $status = _("Exemption");
                        } else {
                            if ($rowWork["status"] == "Late") {
                                $style = "style='color: #ff0000; font-weight: bold; border: 2px solid #ff0000; padding: 2px 4px'";
                                $status = _("Late");
                            }
                        }
                        if ($rowWork["type"] == "File") {
                            $gradesOutput .= "<span title='" . $rowWork["version"] . ". {$status}. " . sprintf(_('Submitted at %1$s on %2$s'), substr($rowWork["timestamp"], 11, 5), dateConvertBack($guid, substr($rowWork["timestamp"], 0, 10))) . "' {$style}><a href='" . $_SESSION[$guid]["absoluteURL"] . "/" . $rowWork["location"] . "'>{$linkText}</a></span>";
                        } else {
                            if ($rowWork["type"] == "Link") {
                                $gradesOutput .= "<span title='" . $rowWork["version"] . ". {$status}. " . sprintf(_('Submitted at %1$s on %2$s'), substr($rowWork["timestamp"], 11, 5), dateConvertBack($guid, substr($rowWork["timestamp"], 0, 10))) . "' {$style}><a target='_blank' href='" . $rowWork["location"] . "'>{$linkText}</a></span>";
                            } else {
                                $gradesOutput .= "<span title='{$status}. " . sprintf(_('Recorded at %1$s on %2$s'), substr($rowWork["timestamp"], 11, 5), dateConvertBack($guid, substr($rowWork["timestamp"], 0, 10))) . "' {$style}>{$linkText}</span>";
                            }
                        }
                    } else {
                        if (date("Y-m-d H:i:s") < $rowSub["homeworkDueDateTime"]) {
                            $gradesOutput .= "<span title='Pending'>" . _('Pending') . "</span>";
                        } else {
                            if ($row["dateStart"] > $rowSub["date"]) {
                                $gradesOutput .= "<span title='" . _('Student joined school after assessment was given.') . "' style='color: #000; font-weight: normal; border: 2px none #ff0000; padding: 2px 4px'>" . _('NA') . "</span>";
                            } else {
                                if ($rowSub["homeworkSubmissionRequired"] == "Compulsory") {
                                    $gradesOutput .= "<div style='color: #ff0000; font-weight: bold; border: 2px solid #ff0000; padding: 2px 4px; margin: 2px 0px'>" . _('Incomplete') . "</div>";
                                } else {
                                    $gradesOutput .= _("Not submitted online");
                                }
                            }
                        }
                    }
                    $gradesOutput .= "</td>";
                }
            }
            $gradesOutput .= "</tr>";
            if (strlen($rowEntry["comment"]) > 50) {
                $gradesOutput .= "<tr class='comment-{$entryCount}-{$gibbonPersonID}' id='comment-{$entryCount}-{$gibbonPersonID}'>";
                $gradesOutput .= "<td colspan=6>";
                $gradesOutput .= $rowEntry["comment"];
                $gradesOutput .= "</td>";
                $gradesOutput .= "</tr>";
            }
            $entryCount++;
        }
        $gradesOutput .= "</table>";
    }
    if ($grades == FALSE) {
        $gradesOutput .= "<div style='margin-top: 2px' class='warning'>";
        $gradesOutput .= _("There are no records to display.");
        $gradesOutput .= "</div>";
    }
    //PREPARE UPCOMING DEADLINES
    $deadlinesOutput = "<div style='margin-top: 20px'><span style='font-size: 85%; font-weight: bold'>" . _('Upcoming Deadlines') . "</span> . <span style='font-size: 70%'><a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_deadlines.php&search=" . $gibbonPersonID . "'>" . _('View All Deadlines') . "</a></span></div>";
    $deadlines = FALSE;
    try {
        $data = array("gibbonSchoolYearID" => $_SESSION[$guid]["gibbonSchoolYearID"], "gibbonPersonID" => $gibbonPersonID);
        $sql = "\n\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\tUNION\n\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\tORDER BY homeworkDueDateTime, type";
        $result = $connection2->prepare($sql);
        $result->execute($data);
    } catch (PDOException $e) {
        $deadlinesOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
    }
    if ($result->rowCount() > 0) {
        $deadlines = TRUE;
        $deadlinesOutput .= "<ol style='margin-left: 15px'>";
        while ($row = $result->fetch()) {
            $diff = (strtotime(substr($row["homeworkDueDateTime"], 0, 10)) - strtotime(date("Y-m-d"))) / 86400;
            $style = "style='padding-right: 3px;'";
            if ($diff < 2) {
                $style = "style='padding-right: 3px; border-right: 10px solid #cc0000'";
            } else {
                if ($diff < 4) {
                    $style = "style='padding-right: 3px; border-right: 10px solid #D87718'";
                }
            }
            $deadlinesOutput .= "<li {$style}>";
            $deadlinesOutput .= "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Planner/planner_view_full.php&search=" . $gibbonPersonID . "&gibbonPlannerEntryID=" . $row["gibbonPlannerEntryID"] . "&viewBy=date&date={$date}&width=1000&height=550'>" . $row["course"] . "." . $row["class"] . "</a> ";
            $deadlinesOutput .= "<span style='font-style: italic'>" . sprintf(_('Due at %1$s on %2$s'), substr($row["homeworkDueDateTime"], 11, 5), dateConvertBack($guid, substr($row["homeworkDueDateTime"], 0, 10)));
            $deadlinesOutput .= "</li>";
        }
        $deadlinesOutput .= "</ol>";
    }
    if ($deadlines == FALSE) {
        $deadlinesOutput .= "<div style='margin-top: 2px' class='warning'>";
        $deadlinesOutput .= _("There are no records to display.");
        $deadlinesOutput .= "</div>";
    }
    //PREPARE TIMETABLE
    $timetable = FALSE;
    $timetableOutput = "";
    if (isActionAccessible($guid, $connection2, "/modules/Timetable/tt_view.php")) {
        $date = date("Y-m-d");
        if (isset($_POST["ttDate"])) {
            $date = dateConvert($guid, $_POST["ttDate"]);
        }
        $params = "";
        if ($classes != FALSE or $grades != FALSE or $deadlines != FALSE) {
            $params = "&tab=1";
        }
        $timetableOutputTemp = renderTT($guid, $connection2, $gibbonPersonID, NULL, NULL, dateConvertToTimestamp($date), "", $params, TRUE);
        if ($timetableOutputTemp != FALSE) {
            $timetable = TRUE;
            $timetableOutput .= $timetableOutputTemp;
        }
    }
    //PREPARE ACTIVITIES
    $activities = FALSE;
    $activitiesOutput = FALSE;
    if (!isActionAccessible($guid, $connection2, "/modules/Activities/activities_view.php")) {
        $activitiesOutput .= "<div class='error'>";
        $activitiesOutput .= _("Your request failed because you do not have access to this action.");
        $activitiesOutput .= "</div>";
    } else {
        $activities = TRUE;
        $activitiesOutput .= "<div class='linkTop'>";
        $activitiesOutput .= "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/index.php?q=/modules/Activities/activities_view.php'>" . _('View Available Activities') . "</a>";
        $activitiesOutput .= "</div>";
        $dateType = getSettingByScope($connection2, 'Activities', 'dateType');
        if ($dateType == "Term") {
            $maxPerTerm = getSettingByScope($connection2, 'Activities', 'maxPerTerm');
        }
        try {
            $dataYears = array("gibbonPersonID" => $gibbonPersonID);
            $sqlYears = "SELECT * FROM gibbonStudentEnrolment JOIN gibbonSchoolYear ON (gibbonStudentEnrolment.gibbonSchoolYearID=gibbonSchoolYear.gibbonSchoolYearID) WHERE gibbonSchoolYear.status='Current' AND gibbonPersonID=:gibbonPersonID ORDER BY sequenceNumber DESC";
            $resultYears = $connection2->prepare($sqlYears);
            $resultYears->execute($dataYears);
        } catch (PDOException $e) {
            $activitiesOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
        }
        if ($resultYears->rowCount() < 1) {
            $activitiesOutput .= "<div class='error'>";
            $activitiesOutput .= _("There are no records to display.");
            $activitiesOutput .= "</div>";
        } else {
            $yearCount = 0;
            while ($rowYears = $resultYears->fetch()) {
                $yearCount++;
                try {
                    $data = array("gibbonPersonID" => $gibbonPersonID, "gibbonSchoolYearID" => $rowYears["gibbonSchoolYearID"]);
                    $sql = "SELECT gibbonActivity.*, gibbonActivityStudent.status, NULL AS role FROM gibbonActivity JOIN gibbonActivityStudent ON (gibbonActivity.gibbonActivityID=gibbonActivityStudent.gibbonActivityID) WHERE gibbonActivityStudent.gibbonPersonID=:gibbonPersonID AND gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name";
                    $result = $connection2->prepare($sql);
                    $result->execute($data);
                } catch (PDOException $e) {
                    $activitiesOutput .= "<div class='error'>" . $e->getMessage() . "</div>";
                }
                if ($result->rowCount() < 1) {
                    $activitiesOutput .= "<div class='error'>";
                    $activitiesOutput .= _("There are no records to display.");
                    $activitiesOutput .= "</div>";
                } else {
                    $activitiesOutput .= "<table cellspacing='0' style='width: 100%'>";
                    $activitiesOutput .= "<tr class='head'>";
                    $activitiesOutput .= "<th>";
                    $activitiesOutput .= _("Activity");
                    $activitiesOutput .= "</th>";
                    $options = getSettingByScope($connection2, "Activities", "activityTypes");
                    if ($options != "") {
                        $activitiesOutput .= "<th>";
                        $activitiesOutput .= _("Type");
                        $activitiesOutput .= "</th>";
                    }
                    $activitiesOutput .= "<th>";
                    if ($dateType != "Date") {
                        $activitiesOutput .= _("Term");
                    } else {
                        $activitiesOutput .= _("Dates");
                    }
                    $activitiesOutput .= "</th>";
                    $activitiesOutput .= "<th>";
                    $activitiesOutput .= _("Status");
                    $activitiesOutput .= "</th>";
                    $activitiesOutput .= "</tr>";
                    $count = 0;
                    $rowNum = "odd";
                    while ($row = $result->fetch()) {
                        if ($count % 2 == 0) {
                            $rowNum = "even";
                        } else {
                            $rowNum = "odd";
                        }
                        $count++;
                        //COLOR ROW BY STATUS!
                        $activitiesOutput .= "<tr class={$rowNum}>";
                        $activitiesOutput .= "<td>";
                        $activitiesOutput .= $row["name"];
                        $activitiesOutput .= "</td>";
                        if ($options != "") {
                            $activitiesOutput .= "<td>";
                            $activitiesOutput .= trim($row["type"]);
                            $activitiesOutput .= "</td>";
                        }
                        $activitiesOutput .= "<td>";
                        if ($dateType != "Date") {
                            $terms = getTerms($connection2, $_SESSION[$guid]["gibbonSchoolYearID"], true);
                            $termList = "";
                            for ($i = 0; $i < count($terms); $i = $i + 2) {
                                if (is_numeric(strpos($row["gibbonSchoolYearTermIDList"], $terms[$i]))) {
                                    $termList .= $terms[$i + 1] . "<br/>";
                                }
                            }
                            $activitiesOutput .= $termList;
                        } else {
                            if (substr($row["programStart"], 0, 4) == substr($row["programEnd"], 0, 4)) {
                                if (substr($row["programStart"], 5, 2) == substr($row["programEnd"], 5, 2)) {
                                    $activitiesOutput .= date("F", mktime(0, 0, 0, substr($row["programStart"], 5, 2))) . " " . substr($row["programStart"], 0, 4);
                                } else {
                                    $activitiesOutput .= date("F", mktime(0, 0, 0, substr($row["programStart"], 5, 2))) . " - " . date("F", mktime(0, 0, 0, substr($row["programEnd"], 5, 2))) . "<br/>" . substr($row["programStart"], 0, 4);
                                }
                            } else {
                                $activitiesOutput .= date("F", mktime(0, 0, 0, substr($row["programStart"], 5, 2))) . " " . substr($row["programStart"], 0, 4) . " -<br/>" . date("F", mktime(0, 0, 0, substr($row["programEnd"], 5, 2))) . " " . substr($row["programEnd"], 0, 4);
                            }
                        }
                        $activitiesOutput .= "</td>";
                        $activitiesOutput .= "<td>";
                        if ($row["status"] != "") {
                            $activitiesOutput .= $row["status"];
                        } else {
                            $activitiesOutput .= "<i>" . _('NA') . "</i>";
                        }
                        $activitiesOutput .= "</td>";
                        $activitiesOutput .= "</tr>";
                    }
                    $activitiesOutput .= "</table>";
                }
            }
        }
    }
    //GET HOOKS INTO DASHBOARD
    $hooks = array();
    try {
        $dataHooks = array();
        $sqlHooks = "SELECT * FROM gibbonHook WHERE type='Parental Dashboard'";
        $resultHooks = $connection2->prepare($sqlHooks);
        $resultHooks->execute($dataHooks);
    } catch (PDOException $e) {
        print "<div class='error'>" . $e->getMessage() . "</div>";
    }
    if ($resultHooks->rowCount() > 0) {
        $count = 0;
        while ($rowHooks = $resultHooks->fetch()) {
            $options = unserialize($rowHooks["options"]);
            //Check for permission to hook
            try {
                $dataHook = array("gibbonRoleIDCurrent" => $_SESSION[$guid]["gibbonRoleIDCurrent"], "sourceModuleName" => $options["sourceModuleName"]);
                $sqlHook = "SELECT gibbonHook.name, gibbonModule.name AS module, gibbonAction.name AS action FROM gibbonHook JOIN gibbonModule ON (gibbonHook.gibbonModuleID=gibbonModule.gibbonModuleID) JOIN gibbonAction ON (gibbonAction.gibbonModuleID=gibbonModule.gibbonModuleID) JOIN gibbonPermission ON (gibbonPermission.gibbonActionID=gibbonAction.gibbonActionID) WHERE gibbonAction.gibbonModuleID=(SELECT gibbonModuleID FROM gibbonModule WHERE gibbonPermission.gibbonRoleID=:gibbonRoleIDCurrent AND name=:sourceModuleName) AND gibbonHook.type='Parental Dashboard'  AND gibbonAction.name='" . $options["sourceModuleAction"] . "' AND gibbonModule.name='" . $options["sourceModuleName"] . "' ORDER BY name";
                $resultHook = $connection2->prepare($sqlHook);
                $resultHook->execute($dataHook);
            } catch (PDOException $e) {
            }
            if ($resultHook->rowCount() == 1) {
                $rowHook = $resultHook->fetch();
                $hooks[$count]["name"] = $rowHooks["name"];
                $hooks[$count]["sourceModuleName"] = $rowHook["module"];
                $hooks[$count]["sourceModuleInclude"] = $options["sourceModuleInclude"];
                $count++;
            }
        }
    }
    if ($classes == FALSE and $grades == FALSE and $deadlines == FALSE and $timetable == FALSE and $activities == FALSE and count($hooks) < 1) {
        $return .= "<div class='warning'>";
        $return .= _("There are no records to display.");
        $return .= "</div>";
    } else {
        $defaultTab = 0;
        if (isset($_GET["tab"])) {
            $defaultTab = $_GET["tab"];
        }
        $return .= "<script type='text/javascript'>";
        $return .= "\$(function() {";
        $return .= "\$( \"#" . $gibbonPersonID . "tabs\" ).tabs({";
        $return .= "active: " . $defaultTab . ",";
        $return .= "ajaxOptions: {";
        $return .= "error: function( xhr, status, index, anchor ) {";
        $return .= "\$( anchor.hash ).html(";
        $return .= "\"Couldn't load this tab.\" );";
        $return .= "}";
        $return .= "}";
        $return .= "});";
        $return .= "});";
        $return .= "</script>";
        $return .= "<div id='" . $gibbonPersonID . "tabs' style='margin: 0 0'>";
        $return .= "<ul>";
        if ($classes != FALSE or $grades != FALSE or $deadlines != FALSE) {
            $return .= "<li><a href='#tabs1'>" . _('Learning Overview') . "</a></li>";
        }
        if ($timetable != FALSE) {
            $return .= "<li><a href='#tabs2'>" . _('Timetable') . "</a></li>";
        }
        if ($activities != FALSE) {
            $return .= "<li><a href='#tabs3'>" . _('Activities') . "</a></li>";
        }
        $tabCountExtra = 3;
        foreach ($hooks as $hook) {
            $tabCountExtra++;
            $return .= "<li><a href='#tabs" . $tabCountExtra . "'>" . _($hook["name"]) . "</a></li>";
        }
        $return .= "</ul>";
        if ($classes != FALSE or $grades != FALSE or $deadlines != FALSE) {
            $return .= "<div id='tabs1'>";
            $return .= $plannerOutput;
            $return .= $gradesOutput;
            $return .= $deadlinesOutput;
            $return .= "</div>";
        }
        if ($timetable != FALSE) {
            $return .= "<div id='tabs2'>";
            $return .= $timetableOutput;
            $return .= "</div>";
        }
        if ($activities != FALSE) {
            $return .= "<div id='tabs3'>";
            $return .= $activitiesOutput;
            $return .= "</div>";
        }
        $tabCountExtra = 3;
        foreach ($hooks as $hook) {
            $tabCountExtra++;
            $return .= "<div style='min-height: 100px' id='tabs" . $tabCountExtra . "'>";
            $include = $_SESSION[$guid]["absolutePath"] . "/modules/" . $hook["sourceModuleName"] . "/" . $hook["sourceModuleInclude"];
            if (!file_exists($include)) {
                $return .= "<div class='error'>";
                $return .= _("The selected page cannot be displayed due to a hook error.");
                $return .= "</div>";
            } else {
                $return .= (include $include);
            }
            $return .= "</div>";
        }
        $return .= "</div>";
    }
    return $return;
}
Exemple #3
0
         }
     }
     if ($rowWork["type"] == "File") {
         print "<span title='" . $rowWork["version"] . ". Submitted at " . substr($rowWork["timestamp"], 11, 5) . " on " . dateConvertBack($guid, substr($rowWork["timestamp"], 0, 10)) . "'><a href='" . $_SESSION[$guid]["absoluteURL"] . "/" . $rowWork["location"] . "'>{$linkText}</a></span>";
     } else {
         if ($rowWork["type"] == "Link") {
             print "<span title='" . $rowWork["version"] . ". Submitted at " . substr($rowWork["timestamp"], 11, 5) . " on " . dateConvertBack($guid, substr($rowWork["timestamp"], 0, 10)) . "'><a target='_blank' href='" . $rowWork["location"] . "'>{$linkText}</a></span>";
         } else {
             print "<span title='Recorded at " . substr($rowWork["timestamp"], 11, 5) . " on " . dateConvertBack($guid, substr($rowWork["timestamp"], 0, 10)) . "'>{$linkText}</span>";
         }
     }
 }
 print "</td>";
 print "<td>";
 if ($rowWork["gibbonPlannerEntryHomeworkID"] != "" and $rowList["gibbonPersonID"] != $_SESSION[$guid]["gibbonPersonID"] and $rowWork["status"] != "Exemption") {
     $likesGiven = countLikesByContextAndGiver($connection2, "Crowd Assessment", "gibbonPlannerEntryHomeworkID", $rowWork["gibbonPlannerEntryHomeworkID"], $_SESSION[$guid]["gibbonPersonID"]);
     if ($likesGiven != 1) {
         print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Crowd Assessment/crowdAssess_viewProcess.php?gibbonPlannerEntryID={$gibbonPlannerEntryID}&gibbonPlannerEntryHomeworkID=" . $rowWork["gibbonPlannerEntryHomeworkID"] . "&address=" . $_GET["q"] . "&gibbonPersonID=" . $rowList["gibbonPersonID"] . "'><img src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_off.png'></a>";
     } else {
         print "<a href='" . $_SESSION[$guid]["absoluteURL"] . "/modules/Crowd Assessment/crowdAssess_viewProcess.php?gibbonPlannerEntryID={$gibbonPlannerEntryID}&gibbonPlannerEntryHomeworkID=" . $rowWork["gibbonPlannerEntryHomeworkID"] . "&address=" . $_GET["q"] . "&gibbonPersonID=" . $rowList["gibbonPersonID"] . "'><img src='" . $_SESSION[$guid]["absoluteURL"] . "/themes/" . $_SESSION[$guid]["gibbonThemeName"] . "/img/like_on.png'></a>";
     }
     $likesTotal = countLikesByContext($connection2, "Crowd Assessment", "gibbonPlannerEntryHomeworkID", $rowWork["gibbonPlannerEntryHomeworkID"]);
     print " x " . $likesTotal;
 }
 print "</td>";
 print "<td>";
 $dataDiscuss = array("gibbonPlannerEntryHomeworkID" => $rowWork["gibbonPlannerEntryHomeworkID"]);
 $sqlDiscuss = "SELECT gibbonCrowdAssessDiscuss.*, title, surname, preferredName, category FROM gibbonCrowdAssessDiscuss JOIN gibbonPerson ON (gibbonCrowdAssessDiscuss.gibbonPersonID=gibbonPerson.gibbonPersonID) JOIN gibbonRole ON (gibbonPerson.gibbonRoleIDPrimary=gibbonRole.gibbonRoleID) WHERE gibbonPlannerEntryHomeworkID=:gibbonPlannerEntryHomeworkID";
 $resultDiscuss = $connection2->prepare($sqlDiscuss);
 $resultDiscuss->execute($dataDiscuss);
 print $resultDiscuss->rowCount();
Exemple #4
0
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;
        }
    }
}