Пример #1
0
 /**
  * Notifies professors of missing exam files
  * @param int $days The number of days prior to the exam to notify
  */
 private final function notifyMissingExamFiles($days = PROFESSOR_DAYS_BEFORE_EXAM_SEND_REMINDER)
 {
     if (!is_int($days) || $days < 0) {
         throw new \InvalidArgumentException('Days must be a nonnegative integer');
     }
     $emailsSql = "SELECT DISTINCT p.confirmation_key, p.exam_request_id\n                        FROM org_courses c\n                        JOIN ventus_professor_exam_requests p \n                          ON p.course_code = c.code\n                         AND p.course_section = c.section\n                         AND p.session = c.session\n                       WHERE p.is_confirmed = 1\n                         AND p.cron_logged = 0\n                         AND p.exam_type <> 'final'\n                         AND p.exam_date <= CURDATE() + INTERVAL :days1 DAY\n                         AND CURDATE() <= p.exam_date\n                         AND p.deleted = 0\n                         AND (p.exam_request_id NOT IN\n                           (\n                      SELECT DISTINCT request_id\n                        FROM ventus_faculty_files AS f\n                   LEFT JOIN ventus_professor_exam_requests AS p1\n                          ON f.request_id = p1.exam_request_id\n                       WHERE p1.is_confirmed = 1\n                         AND p1.deleted = 0\n                         AND p1.exam_date <= CURDATE() + INTERVAL :days2 DAY\n                         AND CURDATE() <= p1.exam_date)\n                          OR p.exam_request_id NOT IN\n                           (\n                      SELECT DISTINCT request_id\n                        FROM ventus_faculty_control_sheets AS cs\n                   LEFT JOIN ventus_professor_exam_requests AS p2\n                          ON cs.request_id = p2.exam_request_id\n                       WHERE p2.is_confirmed = 1\n                         AND p2.deleted = 0\n                         AND p2.exam_date <= CURDATE() + INTERVAL :days3 DAY\n                         AND CURDATE() <= p2.exam_date\n                           ));";
     $requests = $this->db->query($emailsSql, array('days1' => $days, 'days2' => $days, 'days3' => $days))->fetchAll();
     $uSql = "UPDATE ventus_professor_exam_requests p\n                    JOIN org_courses c \n                      ON p.course_code = c.code\n                     AND p.course_section = c.section\n                     AND p.session = c.session\n                     SET p.cron_logged = 1, p.updated_on = NOW()\n                   WHERE p.is_confirmed = 1\n                     AND p.cron_logged = 0\n                     AND p.exam_type <> 'final'\n                     AND p.deleted = 0\n                     AND p.exam_date <= CURDATE() + INTERVAL :days1 DAY\n                     AND (p.exam_request_id NOT IN\n                       (\n                  SELECT DISTINCT request_id\n                    FROM ventus_faculty_files AS f\n               LEFT JOIN (SELECT exam_request_id, is_confirmed, exam_date, deleted FROM ventus_professor_exam_requests) AS p1\n                      ON f.request_id = p1.exam_request_id\n                   WHERE p1.is_confirmed = 1\n                     AND p1.deleted = 0\n                     AND p1.exam_date <= CURDATE() + INTERVAL :days2 DAY)\n                      OR exam_request_id NOT IN\n                       (\n                  SELECT DISTINCT request_id\n                    FROM ventus_faculty_control_sheets AS cs\n               LEFT JOIN (SELECT exam_request_id, is_confirmed, exam_date, deleted FROM ventus_professor_exam_requests) AS p2\n                      ON cs.request_id = p2.exam_request_id\n                   WHERE p2.is_confirmed = 1\n                     AND p2.deleted = 0\n                     AND p2.exam_date <= CURDATE() + INTERVAL :days3 DAY\n                       ) );";
     $this->db->query($uSql, array('days1' => $days, 'days2' => $days, 'days3' => $days));
     $noe = new RequestForm($this->db);
     $reminder['source'] = "prof";
     foreach ($requests as $r) {
         if ($this->checkIfStudentsBelongToNOE((int) $r['exam_request_id'])) {
             $reminder['cid'] = $r['confirmation_key'];
             $noe->reminderToProfessors($reminder, true);
         }
     }
 }
Пример #2
0
        $_POST['prof_name'] = $course_exists;
        $insert_id = $model->addRequest($_POST);
        $loggers['audit']->info("NOE {$insert_id} added");
        $model->sendEmailConfirmation($_POST, $insert_id);
    } else {
        echo "invalid-course";
        $loggers['audit']->notice("Attempted to add NOE for invalid course {$_POST['course_code']}{$_POST['course_section']} {$_POST['teach_method']} {$_POST['session']}");
        $model->sendInvalidInformationEmail($_POST);
    }
} elseif ($_GET['page'] === "crequest") {
    $id = $model->verifyConfirmationLink($_GET['cid']);
    //If the confirmation link has been successfully verified, then send an email to all AS students in that course
    if ($id === 1) {
        $loggers['audit']->info("Confirmed NOE with confirmation ID {$_GET['cid']}");
        $model->reminderToAccessServiceStudents($_GET['cid']);
        $model->reminderToProfessors($_GET);
    }
    $l10n->addResource(__DIR__ . '/l10n/header-external.json');
    $l10n->addResource(__DIR__ . '/l10n/confirm-request.json');
    require_once FS_PHP . '/header-external.php';
    require_once 'views/confirm-request.php';
    require_once FS_PHP . '/footer-external.php';
} elseif ($_GET['page'] === "outlook-reminder") {
    $l10n->addResource(__DIR__ . '/l10n/request-form.json');
    $l10n->addResource(FS_L10N . '/filenames.json');
    $reminder_end = \DateTime::createFromFormat(DATETIME_MYSQL, $_GET['exam_date']);
    $reminder_end->setTime(21, 0);
    $reminder_end->modify('-' . FACULTY_BUSINESS_DAYS_BEFORE_EXAM_BLOCK_CHANGES_CONTROL_SHEET . ' days');
    header("Content-Type: text/calendar");
    header("Content-Disposition: inline; filename=" . $l10n->_f('file.professor_exam_request_reminder', date('Y-m-d'), null) . ".ics");
    echo "BEGIN:VCALENDAR\n";