/** * 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); } } }
/** Handle the requests for publications */ public function requestAction() { $form = new RequestForm(); $this->view->form = $form; if ($this->getRequest()->isPost() && $form->isValid($this->_request->getPost())) { if ($form->isValid($form->getValues())) { $data = array_filter($form->getValues()); $cc = array(); $cc[] = array('email' => $form->getvalue('email'), 'name' => $form->getValue('fullname')); $this->_helper->mailer($data, 'requestPublication', null, $cc, $cc); $this->_flashMessenger->addMessage('Your request has been submitted'); $this->_redirect('getinvolved/publications/'); } else { $this->_flashMessenger->addMessage('There are problems with your submission'); $form->populate($form->getValues()); } } }
<?php namespace Ventus\Professor; //The line that lets you run things from command line parse_str(implode('&', array_slice($argv, 1)), $_GET); //============================================================================================ // Config //============================================================================================ require '../includes/php/bootstrap.php'; $SESSION = new \Zend_Session_Namespace('professor'); //============================================================================================ // Load the Model //============================================================================================ $model = new EmailsToProfessors($dbo); $professor = new RequestForm($dbo); $student_profile = new \Ventus\Student\StudentProfile($dbo); $letters = new \Ventus\Specialist\EmailLetterGenerator(); //============================================================================================ // Load the page requested by the user //============================================================================================ if ($_GET['page'] === "trigger-first-email") { $model->firstEmail($_GET['session']); $loggers['audit']->info("FIRST email sent to professors"); } elseif ($_GET['page'] === "send-reminders") { $exams = $model->fetchAutoImportedNOE($_GET['session']); foreach ($exams as $e) { $professor->reminderToAccessServiceStudents($e['cid']); $loggers['audit']->info("Exam confirmation reminders sent to students for NOE (confirmation ID: {$e['cid']})"); } } elseif ($_GET['page'] === "retrigger-confirmation-email") {
<?php namespace Ventus\Professor; //============================================================================================ // Session, config //============================================================================================ require '../includes/php/bootstrap.php'; $SESSION = new \Zend_Session_Namespace('professor', true); //============================================================================================ // Load the Model and L10N //============================================================================================ $model = new RequestForm($dbo); if (isset($_GET['lang']) && \Ventus\Utilities\I18n\Translate::isAllowedLanguage($_GET['lang'])) { $l10n->setLanguage($_GET['lang']); } elseif (\Ventus\Utilities\I18n\Translate::isAllowedLanguage($SESSION->lang)) { $l10n->setLanguage($SESSION->lang); } \Locale::setDefault($l10n->getLanguage()); $l10n->addResource(FS_L10N . '/header-external.json'); //============================================================================================ // Load the page requested by the user //============================================================================================ if (!isset($_GET['page'])) { $l10n->addResource(__DIR__ . '/l10n/header-external.json'); $l10n->addResource(__DIR__ . '/l10n/request-form.json'); require_once FS_PHP . '/header-external.php'; require_once 'views/request-form.php'; require_once FS_PHP . '/footer-external.php'; } elseif ($_GET['page'] === "add") { $course_exists = $model->checkCourseExistence($_POST['course_code'], $_POST['course_section'], $_POST['session'], $_POST['teach_method']);
<?php namespace Ventus\Professor; //============================================================================================ // Session, config //============================================================================================ require '../includes/php/bootstrap.php'; $SESSION = new \Zend_Session_Namespace('professor', true); //============================================================================================ // Load the Model //============================================================================================ $model = new RequestForm($dbo); $controlSheets = new \Ventus\Exams\ControlSheets($dbo); $faculty = new \Ventus\Faculty\Faculty(); if (isset($_GET['lang']) && \Ventus\Utilities\I18n\Translate::isAllowedLanguage($_GET['lang'])) { $l10n->setLanguage($_GET['lang']); } elseif (\Ventus\Utilities\I18n\Translate::isAllowedLanguage($SESSION->lang)) { $l10n->setLanguage($SESSION->lang); } \Locale::setDefault($l10n->getLanguage()); $l10n->addResource(FS_L10N . '/header-external.json'); //============================================================================================ // Load the page requested by the user //============================================================================================ if (!isset($_GET['page'])) { header('location: https://' . URL_PHP . '/error-external.php?eid=P002'); exit; } elseif ($_GET['page'] === "insert") { if ($request_details = $model->checkConfirmationExistence($_GET['cid'])) { //Check if the professor has already filled out the control sheet