Example #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);
         }
     }
 }
 /** 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());
         }
     }
 }
Example #3
0
<?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") {
Example #4
0
<?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']);
Example #5
0
<?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