if ($PROCESSED["count"] == 1 || $PROCESSED["count"] == 2) { $query = "\tSELECT b.`course_id`, b.`course_name`, `course_code`\n FROM `course_objectives` AS a\n JOIN `courses` As b\n ON a.`course_id` = b.`course_id`\n JOIN `objective_organisation` AS c\n ON a.`objective_id` = c.`objective_id`\n WHERE a.`objective_id` = " . $db->qstr($PROCESSED["objective_parent"]) . "\n AND b.`course_active` = 1\n AND c.`organisation_id` = " . $db->qstr($ENTRADA_USER->getActiveOrganisation()) . ($PROCESSED["course_id"] ? " AND a.`course_id` = " . $db->qstr($PROCESSED["course_id"]) : "'1' = '1'"); $mapped_courses = $db->GetAll($query); } if ($PROCESSED["count"] == 1 || $PROCESSED["count"] == 3) { $query = "\tSELECT c.`event_id`, c.`event_title`, c.`event_start`, d.`objective_name`, e.`course_code`, e.`course_name`, d.`objective_description`\n FROM `event_objectives` AS a\n JOIN `objective_organisation` AS b\n ON a.`objective_id` = b.`objective_id`\n JOIN `events` AS c\n ON a.`event_id` = c.`event_id`\n JOIN `global_lu_objectives` AS d\n ON a.`objective_id` = d.`objective_id`\n JOIN `courses` AS e\n ON c.`course_id` = e.`course_id`\n LEFT JOIN `event_audience` AS f\n ON c.`event_id` = f.`event_id` " . ($PROCESSED["group_id"] ? " AND f.`audience_type` = 'cohort' " : "") . "\n WHERE a.`objective_id` = " . $db->qstr($PROCESSED["objective_parent"]) . "\n AND b.`organisation_id` = " . $db->qstr($ENTRADA_USER->getActiveOrganisation()) . ($PROCESSED["year"] ? " AND (IF (c.`event_id` IS NOT NULL, c.`event_start` BETWEEN " . $db->qstr($SEARCH_DURATION["start"]) . " AND " . $db->qstr($SEARCH_DURATION["end"]) . ", '1' = '1'))" : "") . ($PROCESSED["course_id"] ? " AND c.`course_id` = " . $db->qstr($PROCESSED["course_id"]) : "'1' = '1'"); ($PROCESSED["group_id"] ? " AND f.`audience_value` = " . $db->qstr($PROCESSED["group_id"]) : "") . "\n ORDER BY c.`course_id`, c.`event_start` DESC"; $event_objectives = $db->GetAll($query); } $query = "\tSELECT a.`objective_id`, a.`objective_name`, a.`objective_parent`\n\n FROM `global_lu_objectives` AS a\n JOIN `objective_organisation` AS b\n ON a.`objective_id` = b.`objective_id`\n\n WHERE a.`objective_parent` = " . $db->qstr($objective_info["objective_parent"] != 0 && $PROCESSED["objective_parent"] == $PROCESSED["id"] ? $objective_info["objective_parent"] : $PROCESSED["objective_parent"]) . "\n AND a.`objective_active` = '1'\n AND b.`organisation_id` = " . $db->qstr($ENTRADA_USER->getActiveOrganisation()) . "\n\n GROUP BY a.`objective_id`\n ORDER BY a.`objective_id` ASC"; $child_objectives = $db->GetAll($query); if ($child_objectives) { $i = 0; foreach ($child_objectives as $child) { if ($PROCESSED["count"] == 1 || $PROCESSED["count"] == 2) { $course_count = array_sum(count_objective_child_courses($child["objective_id"])); } else { $course_count = 0; } $child_objectives[$i]["course_count"] = $course_count; if ($PROCESSED["count"] == 1 || $PROCESSED["count"] == 3) { $event_count = array_sum(count_objective_child_events($child["objective_id"], $SEARCH_DURATION["start"], $SEARCH_DURATION["end"], $PROCESSED["course_id"], $PROCESSED["group_id"])); } else { $event_count = 0; } $child_objectives[$i]["event_count"] = $event_count; $i++; } } $objective_parents = fetch_objective_parents($PROCESSED["objective_parent"]); if ($objective_parents) {
function count_objective_child_courses($objective_id = 0, $level = 0) { global $db, $ENTRADA_USER; if ($level >= 99) { application_log("error", "Recursion depth out of bounds in [count_objective_child_courses]."); return false; } $objective_id = (int) $objective_id; /* Fetch Objective Mapped Courses */ $query = "\tSELECT COUNT(DISTINCT a.`course_id`) AS `course_count`\n\t\t\t\tFROM `course_objectives` AS a\n\t\t\t\tJOIN `objective_organisation` AS b\n\t\t\t\tON a.`objective_id` = b.`objective_id`\n\t\t\t\tJOIN `courses` AS c\n\t\t\t\tON a.`course_id` = c.`course_id`\n\t\t\t\tWHERE a.`objective_id` = " . $db->qstr($objective_id) . "\n AND a.`active` = '1'\n\t\t\t\tAND c.`course_active` = '1'\n\t\t\t\tAND b.`organisation_id` = " . $db->qstr($ENTRADA_USER->getActiveOrganisation()); $output[$objective_id] = $db->GetOne($query); /* Fetch objective children */ $query = "\tSELECT a.`objective_id`\n\t\t\t\tFROM `global_lu_objectives` AS a\n\t\t\t\tJOIN `objective_organisation` AS b\n\t\t\t\tON a.`objective_id` = b.`objective_id`\n\t\t\t\tWHERE a.`objective_parent` = " . $db->qstr($objective_id) . "\n\t\t\t\tAND a.`objective_active` = '1'\n\t\t\t\tAND b.`organisation_id` = " . $ENTRADA_USER->getActiveOrganisation(); $children = $db->GetAll($query); if ($children) { foreach ($children as $child) { $child_count = count_objective_child_courses($child["objective_id"], $level++); if (is_array($child_count)) { $return = array_sum($child_count); } else { $return = $course_count; } $output[$child["objective_id"]] = $return; } } return $output; }