} } else { add_error("A valid evaluation must be selected from the drop-down list to request an evaluation be completed for you."); } } else { add_error("An evaluation must be selected from the drop-down list to request an evaluation be completed for you."); } if (has_error()) { echo display_error(); } if (isset($notifications_sent) && $notifications_sent) { add_success("Successfully requested that " . ($notifications_sent > 1 ? $notifications_sent . " evaluators" : get_account_data("wholename", $associated_evaluator)) . " fill out this evaluation [" . $evaluation_title . "] for you."); echo display_success(); } } $evaluation_requests = Models_Evaluation::getTargetRequests($ENTRADA_USER->GetID(), false, false, true); if ($evaluation_requests) { $notice_msg = "The following Evaluation Request Codes are still active but unused: <br />"; foreach ($evaluation_requests as $evaluation_request) { $requestee = get_account_data("wholename", $evaluation_request["target_proxy_id"]); $notice_msg .= "<br />" . $evaluation_request["evaluation_title"] . " [" . $requestee . "]: <strong>" . $evaluation_request["request_code"] . "</strong>"; } add_notice($notice_msg); echo display_notice(); } if ($evaluations && $view != "review") { ?> <h1>My Evaluations and Assessments</h1> <?php if ($review_evaluations) { $sidebar_html = "<ul class=\"menu\">\n";
public static function getTargetsArray($evaluation_id, $evaluator_id = 0, $evaluator_proxy_id = 0, $simple = true, $available_only = false, $recent = false, $request_id = false, $mandatory_only = false) { global $db, $ENTRADA_USER; if (!$evaluator_proxy_id && isset($ENTRADA_USER) && $ENTRADA_USER->getProxyId()) { $evaluator_proxy_id = $ENTRADA_USER->getProxyId(); } elseif ($evaluator_id) { $query = "SELECT * FROM `evaluation_evaluators` WHERE `eevaluator_id` = " . $db->qstr($evaluator_id); $evaluator = $db->GetRow($query); if ($evaluator["evaluator_type"] == "proxy_id") { $evaluator_proxy_id = $evaluator["evaluator_value"]; } elseif ($evaluator["evaluator_type"] == "cgroup_id") { $cgroup_id = $evaluator["evaluator_value"]; } } $evaluation_targets = array(); $query = "SELECT * FROM `evaluations` AS a\n\t\t\t\t\tJOIN `evaluation_forms` AS b\n\t\t\t\t\tON a.`eform_id` = b.`eform_id`\n\t\t\t\t\tJOIN `evaluations_lu_targets` AS c\n\t\t\t\t\tON b.`target_id` = c.`target_id`\n\t\t\t\t\tWHERE `evaluation_id` = " . $db->qstr($evaluation_id); $evaluation = $db->GetRow($query); if ($evaluation) { if (isset($evaluation["allow_repeat_targets"]) && $evaluation["allow_repeat_targets"] == 1) { $available_only = false; } if (!$evaluation["max_submittable"] && $evaluation["target_shortname"] != "peer" && $evaluation["allow_repeat_targets"]) { $evaluation["max_submittable"] = 2147483647; } if ($evaluator_id) { $query = "SELECT * FROM `evaluation_evaluators`\n\t\t\t\t\t\t\tWHERE `eevaluator_id` = " . $db->qstr($evaluator_id) . "\n\t\t\t\t\t\t\tAND `evaluation_id` = " . $db->qstr($evaluation_id); $evaluator_record = $db->getRow($query); } switch ($evaluation["target_shortname"]) { case "self": if ($simple) { $evaluation_targets[] = $evaluator_proxy_id; } else { $query = "SELECT *, b.`id` AS `proxy_id` FROM `evaluation_targets` AS a\n\t\t\t\t\t\t\t\t\tJOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n\t\t\t\t\t\t\t\t\tON b.`id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\tWHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\tAND a.`target_type` = 'self'\n\t\t\t\t\t\t\t\t\tAND a.`target_active` = 1"; $evaluation_target_record = $db->GetRow($query); if ($evaluation_target_record) { $evaluation_targets[] = $evaluation_target_record; } } break; case "peer": if ($evaluator) { switch ($evaluator["evaluator_type"]) { case "cgroup_id": if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `target_record_id` FROM `evaluation_progress`\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["target_record_id"]); } } } $query = "SELECT " . ($simple ? "a.`proxy_id`" : "b.*, c.*, a.`proxy_id`") . " FROM `course_group_audience` AS a\n\t\t\t\t\t\t\t\t\t\t\tJOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n\t\t\t\t\t\t\t\t\t\t\tON a.`proxy_id` = b.`id`\n\t\t\t\t\t\t\t\t\t\t\tJOIN `evaluation_targets` AS c\n\t\t\t\t\t\t\t\t\t\t\tON c.`target_value` = a.`cgroup_id`\n\t\t\t\t\t\t\t\t\t\t\tAND c.`target_type` = 'cgroup_id'\n\t\t\t\t\t\t\t\t\t\t\tAND c.`evaluation_id` = " . $db->qstr($evaluation_id) . "\n\t\t\t\t\t\t\t\t\t\t\tWHERE a.`cgroup_id` = " . $db->qstr($evaluator["evaluator_value"]) . "\n\t\t\t\t\t\t\t\t\t\t\t" . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`proxy_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t\tAND a.`active` = 1\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY b.`id`"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { foreach ($evaluation_target_users as $evaluation_target_user) { if ($evaluation_target_user["proxy_id"] != $evaluator_proxy_id) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_targets[] = $evaluation_target_user; } } } } break; case "cohort": if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `target_record_id` FROM `evaluation_progress`\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["target_record_id"]); } } } $query = "SELECT " . ($simple ? "a.`proxy_id`" : "*") . " FROM `group_members` AS a\n\t\t\t\t\t\t\t\t\t\t\tJOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n\t\t\t\t\t\t\t\t\t\t\tON a.`proxy_id` = b.`id`\n\t\t\t\t\t\t\t\t\t\t\tJOIN `evaluation_targets` AS c\n\t\t\t\t\t\t\t\t\t\t\tON c.`target_value` = a.`group_id`\n\t\t\t\t\t\t\t\t\t\t\tAND c.`target_type` = 'cohort'\n\t\t\t\t\t\t\t\t\t\t\tAND c.`evaluation_id` = " . $db->qstr($evaluation_id) . "\n\t\t\t\t\t\t\t\t\t\t\tWHERE a.`group_id` = " . $db->qstr($evaluator["evaluator_value"]) . "\n\t\t\t\t\t\t\t\t\t\t\t" . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`proxy_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t\tAND a.`member_active` = 1\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY b.`id`"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { foreach ($evaluation_target_users as $evaluation_target_user) { if ($evaluation_target_user["proxy_id"] != $evaluator_proxy_id) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_targets[] = $evaluation_target_user; } } } } break; case "proxy_id": if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `etarget_id` FROM `evaluation_progress`\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["etarget_id"]); } } } $query = "SELECT *, b.`id` AS `proxy_id` FROM `evaluation_targets` AS a\n\t\t\t\t\t\t\t\t\t\t\tJOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n\t\t\t\t\t\t\t\t\t\t\tON a.`target_value` = b.`id`\n\t\t\t\t\t\t\t\t\t\t\tWHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\tAND a.`target_type` = 'proxy_id'\n\t\t\t\t\t\t\t\t\t\t\t" . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`etarget_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t\tAND a.`target_active` = 1"; $evaluation_target_records = $db->GetAll($query); if ($evaluation_target_records) { foreach ($evaluation_target_records as $evaluation_target_record) { if ($evaluation_target_record["target_value"] != $evaluator_proxy_id) { if ($simple) { $evaluation_targets[] = $evaluation_target_record["target_value"]; } else { $query = "SELECT *, a.`id` AS `proxy_id` FROM `" . AUTH_DATABASE . "`.`user_data` AS a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tJOIN `evaluation_targets` AS b\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON b.`target_value` = a.`id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND b.`target_type` = 'proxy_id'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND b.`evaluation_id` = " . $db->qstr($evaluation_id) . "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE a.`id` = " . $db->qstr($evaluation_target_record["target_value"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY a.`id`"; $evaluation_target_user = $db->GetRow($query); $evaluation_targets[] = $evaluation_target_user; } } } } break; } if (!$simple) { $sort_lastname = array(); $sort_firstname = array(); foreach ($evaluation_targets as $temp_target) { $sort_lastname[] = $temp_target["lastname"]; $sort_firstname[] = $temp_target["firstname"]; } array_multisort($sort_lastname, SORT_ASC, $sort_firstname, SORT_ASC, $evaluation_targets); } } break; case "preceptor": case "rotation_elective": case "rotation_core": $query = "SELECT " . ($simple ? "b.`rotation_id`" : "*") . " FROM `evaluation_targets` AS a\n\t\t\t\t\t\t\t\tJOIN `" . CLERKSHIP_DATABASE . "`.`global_lu_rotations` AS b\n\t\t\t\t\t\t\t\tON a.`target_value` = b.`rotation_id`\n\t\t\t\t\t\t\t\tAND a.`target_type` = 'rotation_id'\n\t\t\t\t\t\t\t\tWHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]); $rotations = $db->GetAll($query); foreach ($rotations as $rotation) { $evaluated_event_ids_string = ""; $fulfilled_event_ids_string = ""; if ($evaluator_proxy_id) { if ($available_only) { $query = "SELECT a.`event_id` FROM `evaluation_progress_clerkship_events` AS a\n\t\t\t\t\t\t\t\t\t\t\tJOIN `evaluation_progress` AS b\n\t\t\t\t\t\t\t\t\t\t\tON a.`eprogress_id` = b.`eprogress_id`\n\t\t\t\t\t\t\t\t\t\t\tWHERE b.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\tAND b.`proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY a.`event_id`\n\t\t\t\t\t\t\t\t\t\t\tHAVING COUNT(a.`event_id`) >= " . $evaluation["max_submittable"]; $evaluation_event_ids = $db->GetAll($query); if ($evaluation_event_ids) { foreach ($evaluation_event_ids as $event) { $evaluated_event_ids_string .= ($evaluated_event_ids_string ? ", " : "") . $db->qstr($event["event_id"]); } } } if ($mandatory_only) { $query = "SELECT a.`event_id` FROM `evaluation_progress_clerkship_events` AS a\n\t\t\t\t\t\t\t\t\t\t\tJOIN `evaluation_progress` AS b\n\t\t\t\t\t\t\t\t\t\t\tON a.`eprogress_id` = b.`eprogress_id`\n\t\t\t\t\t\t\t\t\t\t\tWHERE b.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\tAND b.`proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY a.`event_id`\n\t\t\t\t\t\t\t\t\t\t\tHAVING COUNT(a.`event_id`) >= " . $evaluation["min_submittable"]; $event_ids = $db->GetAll($query); if ($event_ids) { foreach ($event_ids as $event) { $fulfilled_event_ids_string .= ($fulfilled_event_ids_string ? ", " : "") . $db->qstr($event["event_id"]); } } } $query = "SELECT * FROM `" . CLERKSHIP_DATABASE . "`.`events` AS a\n\t\t\t\t\t\t\t\t\t\tJOIN `" . CLERKSHIP_DATABASE . "`.`event_contacts` AS b\n\t\t\t\t\t\t\t\t\t\tON a.`event_id` = b.`event_id`\n\t\t\t\t\t\t\t\t\t\tWHERE a.`rotation_id` = " . $db->qstr($rotation["rotation_id"]) . "\n AND a.`event_finish` >= " . $db->qstr($evaluation["evaluation_start"]) . "\n\t\t\t\t\t\t\t\t\t\tAND b.`etype_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t" . ($evaluated_event_ids_string && $available_only ? "AND a.`event_id` NOT IN (" . $evaluated_event_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($fulfilled_event_ids_string && $mandatory_only ? "AND a.`event_id` NOT IN (" . $fulfilled_event_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($recent ? "AND a.`event_finish` > " . $db->qstr(strtotime("-36 hours")) . "" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (defined("CLERKSHIP_EVALUATION_LOCKOUT") && CLERKSHIP_EVALUATION_LOCKOUT ? "AND a.`event_finish` > " . $db->qstr(time() - CLERKSHIP_EVALUATION_LOCKOUT) . "" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($mandatory_only && defined("CLERKSHIP_EVALUATION_TIMEOUT") && CLERKSHIP_EVALUATION_TIMEOUT ? "AND a.`event_finish` <= " . $db->qstr(time() - CLERKSHIP_EVALUATION_TIMEOUT) : "") . "\n\t\t\t\t\t\t\t\t\t\tAND a.`event_finish` <= " . $db->qstr(strtotime("+5 days")); $events = $db->GetAll($query); if ($events) { foreach ($events as $event) { if ($simple) { $evaluation_targets[] = $event["event_id"]; } else { $event = array_merge($event, $rotation); $evaluation_targets[] = $event; } } } } } break; case "student": $query = "SELECT * FROM `evaluation_targets`\n\t\t\t\t\t\t\t\tWHERE `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\tAND `target_active` = 1"; $evaluation_target_records = $db->GetAll($query); if ($evaluation_target_records) { $query = "SELECT `cgroup_id` FROM `course_group_contacts` WHERE `proxy_id` = " . $db->qstr($ENTRADA_USER->getID()); $course_groups = $db->GetAll($query); if ($course_groups) { $course_group_ids = array(); foreach ($course_groups as $course_group) { $course_group_ids[] = $course_group["cgroup_id"]; } } foreach ($evaluation_target_records as $evaluation_target_record) { switch ($evaluation_target_record["target_type"]) { case "cgroup_id": if (!isset($course_group_ids) || !count($course_group_ids) || array_search($evaluation_target_record["target_value"], $course_group_ids) !== false) { if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `target_record_id` FROM `evaluation_progress`\n WHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n AND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["target_record_id"]); } } } $query = "SELECT " . ($simple ? "a.`proxy_id`" : "*") . " FROM `course_group_audience` AS a\n JOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n ON a.`proxy_id` = b.`id`\n WHERE a.`cgroup_id` = " . $db->qstr($evaluation_target_record["target_value"]) . "\n " . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`proxy_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n AND a.`active` = 1\n GROUP BY b.`id`"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { foreach ($evaluation_target_users as $evaluation_target_user) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_target_user = array_merge($evaluation_target_user, $evaluation_target_record); $evaluation_targets[] = $evaluation_target_user; } } } } break; case "cohort": if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `target_record_id` FROM `evaluation_progress`\n WHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n AND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["target_record_id"]); } } } $query = "SELECT " . ($simple ? "a.`proxy_id`" : "*") . " FROM `group_members` AS a\n\t\t\t\t\t\t\t\t\t\t\t\tJOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n\t\t\t\t\t\t\t\t\t\t\t\tON a.`proxy_id` = b.`id`\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE a.`group_id` = " . $db->qstr($evaluation_target_record["target_value"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\t" . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`proxy_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t\t\tAND a.`member_active` = 1\n\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY b.`id`"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { foreach ($evaluation_target_users as $evaluation_target_user) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_target_user = array_merge($evaluation_target_user, $evaluation_target_record); $evaluation_targets[] = $evaluation_target_user; } } } break; case "proxy_id": if ($simple) { $evaluation_targets[] = $evaluation_target_record["target_value"]; } else { if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `target_record_id` FROM `evaluation_progress`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["target_record_id"]); } } } $query = "SELECT *, `id` AS `proxy_id` FROM `" . AUTH_DATABASE . "`.`user_data`\n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `id` = " . $db->qstr($evaluation_target_record["target_value"]) . "\n\t\t\t\t\t\t\t\t\t\t\t\t\t" . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND `id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY `id`"; $evaluation_target_user = $db->GetRow($query); if ($evaluation_target_user) { $evaluation_target_user = array_merge($evaluation_target_user, $evaluation_target_record); $evaluation_targets[] = $evaluation_target_user; } } break; } } } if (!$simple) { $sort_lastname = array(); $sort_firstname = array(); foreach ($evaluation_targets as $temp_target) { $sort_lastname[] = $temp_target["lastname"]; $sort_firstname[] = $temp_target["firstname"]; } array_multisort($sort_lastname, SORT_ASC, $sort_firstname, SORT_ASC, $evaluation_targets); } break; case "teacher": if (isset($cgroup_id) && $cgroup_id) { if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `etarget_id` FROM `evaluation_progress`\n WHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n AND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["etarget_id"]); } } } $query = "SELECT " . ($simple ? "a.`target_value` as `proxy_id`" : "*, a.`target_value` as `proxy_id`") . " FROM `evaluation_targets` AS a\n JOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n ON a.`target_value` = b.`id`\n AND a.`target_type` = 'proxy_id'\n JOIN `course_group_contacts` AS c\n ON c.`proxy_id` = b.`id`\n WHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n " . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`etarget_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n AND c.`cgroup_id` = " . $db->qstr($cgroup_id) . "\n AND a.`target_active` = 1"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { $target_found = true; foreach ($evaluation_target_users as $evaluation_target_user) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_targets[] = $evaluation_target_user; } } if (!$simple) { $sort_lastname = array(); $sort_firstname = array(); foreach ($evaluation_targets as $temp_target) { $sort_lastname[] = $temp_target["lastname"]; $sort_firstname[] = $temp_target["firstname"]; } array_multisort($sort_lastname, SORT_ASC, $sort_firstname, SORT_ASC, $evaluation_targets); } } else { $target_found = false; } } if (!isset($target_found) || !$target_found) { if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `etarget_id` FROM `evaluation_progress`\n WHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n AND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["etarget_id"]); } } } $query = "SELECT " . ($simple ? "a.`target_value` as `proxy_id`" : "*, a.`target_value` as `proxy_id`") . " FROM `evaluation_targets` AS a\n JOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n ON a.`target_value` = b.`id`\n AND a.`target_type` = 'proxy_id'\n WHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n " . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`etarget_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n AND a.`target_active` = 1"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { foreach ($evaluation_target_users as $evaluation_target_user) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_targets[] = $evaluation_target_user; } } } if (!$simple) { $sort_lastname = array(); $sort_firstname = array(); foreach ($evaluation_targets as $temp_target) { $sort_lastname[] = $temp_target["lastname"]; $sort_firstname[] = $temp_target["firstname"]; } array_multisort($sort_lastname, SORT_ASC, $sort_firstname, SORT_ASC, $evaluation_targets); } } break; case "resident": if (isset($cgroup_id) && $cgroup_id) { if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `etarget_id` FROM `evaluation_progress`\n WHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n AND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["etarget_id"]); } } } $query = "SELECT " . ($simple ? "a.`target_value` as `proxy_id`" : "*, a.`target_value` as `proxy_id`") . " FROM `evaluation_targets` AS a\n JOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n ON a.`target_value` = b.`id`\n AND a.`target_type` = 'proxy_id'\n JOIN `course_group_contacts` AS c\n ON c.`proxy_id` = b.`id`\n WHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n " . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`etarget_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n AND c.`cgroup_id` = " . $db->qstr($cgroup_id) . "\n AND a.`target_active` = 1"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { $target_found = true; foreach ($evaluation_target_users as $evaluation_target_user) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_targets[] = $evaluation_target_user; } } if (!$simple) { $sort_lastname = array(); $sort_firstname = array(); foreach ($evaluation_targets as $temp_target) { $sort_lastname[] = $temp_target["lastname"]; $sort_firstname[] = $temp_target["firstname"]; } array_multisort($sort_lastname, SORT_ASC, $sort_firstname, SORT_ASC, $evaluation_targets); } } else { $target_found = false; } } if (!isset($target_found) || !$target_found) { if ($evaluator_proxy_id && $available_only) { $unavailable_proxy_ids_string = ""; $query = "SELECT `etarget_id` FROM `evaluation_progress`\n WHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n AND `progress_value` = 'complete'"; $unavailable_proxy_ids = $db->GetAll($query); if ($unavailable_proxy_ids) { foreach ($unavailable_proxy_ids as $unavailable_proxy_id) { $unavailable_proxy_ids_string .= ($unavailable_proxy_ids_string ? ", " : "") . $db->qstr($unavailable_proxy_id["etarget_id"]); } } } $query = "SELECT " . ($simple ? "a.`target_value` as `proxy_id`" : "*, a.`target_value` as `proxy_id`") . " FROM `evaluation_targets` AS a\n JOIN `" . AUTH_DATABASE . "`.`user_data` AS b\n ON a.`target_value` = b.`id`\n AND a.`target_type` = 'proxy_id'\n WHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n " . ($evaluator_proxy_id && $available_only && $unavailable_proxy_ids_string ? "AND a.`etarget_id` NOT IN (" . $unavailable_proxy_ids_string . ")" : "") . "\n AND a.`target_active` = 1"; $evaluation_target_users = $db->GetAll($query); if ($evaluation_target_users) { foreach ($evaluation_target_users as $evaluation_target_user) { if ($simple) { $evaluation_targets[] = $evaluation_target_user["proxy_id"]; } else { $evaluation_targets[] = $evaluation_target_user; } } } if (!$simple) { $sort_lastname = array(); $sort_firstname = array(); foreach ($evaluation_targets as $temp_target) { $sort_lastname[] = $temp_target["lastname"]; $sort_firstname[] = $temp_target["firstname"]; } array_multisort($sort_lastname, SORT_ASC, $sort_firstname, SORT_ASC, $evaluation_targets); } } break; case "course": default: if ($evaluator_proxy_id && $available_only) { $unavailable_course_ids_string = ""; $query = "SELECT `etarget_id` FROM `evaluation_progress`\n\t\t\t\t\t\t\t\t\tWHERE `proxy_id` = " . $db->qstr($evaluator_proxy_id) . "\n\t\t\t\t\t\t\t\t\tAND `evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t\tAND `progress_value` = 'complete'"; $unavailable_course_ids = $db->GetAll($query); if ($unavailable_course_ids) { foreach ($unavailable_course_ids as $unavailable_course_id) { $unavailable_course_ids_string .= ($unavailable_course_ids_string ? ", " : "") . $db->qstr($unavailable_course_id["etarget_id"]); } } } $query = "SELECT " . ($simple ? "b.`course_id`" : "*") . " FROM `evaluation_targets` AS a\n\t\t\t\t\t\t\t\tJOIN `courses` AS b\n\t\t\t\t\t\t\t\tON a.`target_value` = b.`course_id`\n\t\t\t\t\t\t\t\tAND a.`target_type` = 'course_id'\n\t\t\t\t\t\t\t\tWHERE a.`evaluation_id` = " . $db->qstr($evaluation["evaluation_id"]) . "\n\t\t\t\t\t\t\t\t" . ($evaluator_proxy_id && $available_only && $unavailable_course_ids_string ? "AND a.`etarget_id` NOT IN (" . $unavailable_course_ids_string . ")" : "") . "\n\t\t\t\t\t\t\t\tAND a.`target_active` = 1\n\t\t\t\t\t\t\t\tORDER BY b.`course_code` ASC"; $evaluation_target_courses = $db->GetAll($query); if ($evaluation_target_courses) { foreach ($evaluation_target_courses as $evaluation_target_course) { if ($simple) { $evaluation_targets[] = $evaluation_target_course["course_id"]; } else { $evaluation_targets[] = $evaluation_target_course; } } } break; } } if ($request_id) { $query = "SELECT * FROM `evaluation_requests`\n WHERE `erequest_id` = " . $db->qstr($request_id) . "\n AND `evaluation_id` = " . $db->qstr($evaluation_id) . "\n AND (\n `request_expires` = 0\n OR `request_expires` > " . $db->qstr(time()) . "\n )\n AND `target_proxy_id` = " . $db->qstr($ENTRADA_USER->getID()); $request = $db->GetRow($query); if ($request) { $temp_evaluation_targets = $evaluation_targets; $evaluation_targets = array(); foreach ($temp_evaluation_targets as $evaluation_target) { if ($simple) { $temp_proxy_id = $evaluation_target; } else { $temp_proxy_id = $evaluation_target["proxy_id"]; } $requests = Models_Evaluation::getTargetRequests($temp_proxy_id, $evaluation_id, $request_id, $request["request_code"] ? true : false); if ($requests && count($requests)) { if (!$simple && $requests[0]["erequest_id"] == $request_id) { $evaluation_target["requested"] = true; } elseif (!$simple) { $evaluation_target["requested"] = false; } if ($evaluation["require_requests"]) { $evaluation_targets[] = $evaluation_target; } } if (!$evaluation["require_requests"]) { $evaluation_targets[] = $evaluation_target; } } } else { $temp_evaluation_targets = $evaluation_targets; $evaluation_targets = array(); foreach ($temp_evaluation_targets as $evaluation_target) { if ($simple) { $temp_proxy_id = $evaluation_target; } else { $temp_proxy_id = $evaluation_target["proxy_id"]; } $requests = Models_Evaluation::getTargetRequests($temp_proxy_id, $evaluation_id); if ($requests && count($requests)) { if (!$simple && !count($evaluation_targets)) { $evaluation_target["requested"] = true; } elseif (!$simple) { $evaluation_target["requested"] = false; } if ($evaluation["require_requests"]) { $evaluation_targets[] = $evaluation_target; } } if (!$evaluation["require_requests"]) { $evaluation_targets[] = $evaluation_target; } } } } return $evaluation_targets; }