public static function getStudentsPositions()
 {
     $studentModel = new StudentModel();
     $positions = $studentModel->getStudentsPositions();
     $processedPositions = [];
     foreach ($positions as $pos) {
         array_push($processedPositions, [floatval($pos[0]), floatval($pos[1])]);
     }
     (new ServiceView())->showPlainText($processedPositions);
 }
 public static function listStudentFeesView($studentId)
 {
     $feeModel = new FeeModel();
     $studentModel = new StudentModel();
     $payedFees = $feeModel->getPaidFeesOfStudent($studentId);
     $unPayedFees = $feeModel->getUnPaidFeesOfStudent($studentId);
     $student = $studentModel->getStudent($studentId);
     $expiredFees = $feeModel->getExpiredFeesOfStudent($studentId);
     $view = new ListStudentFeesView();
     $view->show($payedFees, $unPayedFees, $expiredFees, $student);
 }
 public static function listAdmittedStudentsView($startingIndex = 0)
 {
     $StudentModel = new StudentModel();
     $responsibleAssociated = (new UserModel())->getResponsibleAssociated($_SESSION["username"]);
     // si estamos en rol de consulta, y el usuario logeado tiene un responsable asociado...
     // mostramos unicamente los alumnos que tiene asociado ese responsable.
     if ($_SESSION["role"] == 3 and $responsibleAssociated != "ERROR") {
         $students = (new GuardianOfStudentModel())->getStudentsOfGuardian($responsibleAssociated["id"]);
     } else {
         $students = $StudentModel->getAdmittedStudents($startingIndex);
     }
     (new ListAdmittedStudentsView())->show(static::getGuardiansAmount($students));
 }
예제 #4
0
 private static function getPerDayForSchool($schoolName, $numIntervals)
 {
     $cursor = StudentModel::getAll();
     $pattern = "/(.*)@(.*)/";
     $timeNow = time() - 18000;
     $intervals = array();
     $resultArray = array();
     for ($x = $numIntervals; $x > 0; $x--) {
         array_push($intervals, strtotime("today -" . ($x - 1) . " day") - 18000);
         array_push($resultArray, array(date('D', strtotime("today -" . ($x - 1) . " day") - 18000), 0));
     }
     array_push($intervals, $timeNow);
     //$intervals = array_map(function ($x) { return $x-46035245; } , $intervals);
     foreach ($cursor as $doc) {
         $success = preg_match($pattern, $doc["email"], $match);
         if ($success && $match[2] == $schoolName) {
             $docTime = $doc["_id"]->getTimeStamp();
             for ($i = 0; $i < $numIntervals; $i++) {
                 if ($docTime >= $intervals[$i] and $docTime < $intervals[$i + 1]) {
                     $resultArray[$i][1]++;
                 }
             }
         }
     }
     return $resultArray;
 }
예제 #5
0
 public static function getProfile(MongoId $studentId)
 {
     $profileData = StudentModel::getProfile($studentId);
     if ($profileData === null) {
         $profileData = [];
     }
     return new StudentProfile($studentId, $profileData);
 }
예제 #6
0
 private static function getStudentProfile(MongoId $studentId)
 {
     $name = StudentModel::getName($studentId);
     $profile = StudentProfile::getProfile($studentId)->getData();
     if (is_null($profile)) {
         $profile = [];
     }
     $profile['name'] = $name;
     return $profile;
 }
예제 #7
0
 public static function run()
 {
     $class = get_called_class();
     TEST($class, "{$class}.correctCollection", function () {
         $actualCollection = StudentModel::myCollection();
         $correctCollection = 'emails';
         EQ($actualCollection, $correctCollection, "Collection name invalid: {$actualCollection}");
     });
     TEST($class, "{$class}.save", function () {
         $id = self::$MStudentTest->save(array());
         TRUE(self::$MStudentTest->exists($id));
     });
 }
예제 #8
0
 public static function login()
 {
     self::ensureAdmin();
     global $params;
     if (!isset($params['login'])) {
         self::render('admin/login');
         return;
     }
     function data(array $data)
     {
         $type = clean($data['type']);
         $email = clean($data['email']);
         return ['type' => $type, 'email' => $email];
     }
     extract($data = data($params));
     session_unset();
     $_SESSION['email'] = $email;
     $_SESSION['pass'] = '';
     $_SESSION['skippass'] = true;
     switch ($data['type']) {
         case 'student':
             $_SESSION['loggedinstudent'] = true;
             $student = StudentModel::get($email);
             $_SESSION['_id'] = $student['_id'];
             $_SESSION['name'] = $student['name'];
             break;
         case 'recruiter':
             $_SESSION['loggedin'] = true;
             $recruiter = RecruiterModel::get($email);
             $_SESSION['_id'] = $recruiter['_id'];
             if (MongoId::isValid($recruiter['company'])) {
                 $_SESSION['company'] = $recruiter['company'];
             }
             break;
     }
     self::redirect($GLOBALS['dirpreFromRoute'] . '../');
 }
예제 #9
0
<script type="text/javascript">
  function verifySubmit() {

    // check if number already exists in DB

    var val = document.getElementById('input_text_field').value;
    var n = parseInt(val);
    if (n < 0) {
      alert('no table values less than 0 accepted.');
      return false;
    }

    return true;
  }
</script>

<!--
    <?php 
foreach (StudentModel::getSubSubjects($idNo) as $ss) {
    ?>
      var opt = document.createElement("option");
      document.getElementById("sub_subj_DD").appendChild(opt);
    <?php 
}
?>
-->

</body>
</html>
 private static function getSchoolsForUnclaimed(MongoId $jobId)
 {
     global $S;
     $schools = [];
     $unclaimed = ApplicationStudent::getUnclaimedByJob($jobId);
     foreach ($unclaimed as $application) {
         $studentId = $application->getStudentId();
         $student = StudentModel::getById($studentId, ['email' => 1]);
         $email = $student['email'];
         $school = $S->nameOf($email);
         $schools[] = $school;
     }
     return $schools;
 }
예제 #11
0
 /**
  * @function table_setup
  * @public
  * @returns NONE
  * @desc NONE
  * @param NONE
  * @example NONE
  */
 public function table_setup()
 {
     $verify_table_num = StudentModel::table_num_setup();
     if ($verify_table_num) {
         //      self::index();
         Redirect::to('index/index');
     } else {
         Session::add('feedback_negative', 'please enter a different table number');
         self::tableSetup();
     }
 }
<?php

/**
 * Created by PhpStorm.
 * User: nillernoels
 * Date: 03/01/16
 * Time: 22:17
 */
require_once "../model/StudentModel.php";
require_once "../model/TeamModel.php";
require_once "../model/ProjectModel.php";
session_start();
$studentId = $_SESSION['student_id'];
if (isset($_POST['project_id'])) {
    $summary = "";
    if (isset($_POST['summary'])) {
        $summary .= $_POST['summary'];
    }
    if (TeamModel::createTeam($summary, $studentId, $_POST['project_id'])) {
        header("location: home-student");
    }
    $msg = "<div></div>";
} else {
    $classId = StudentModel::getStudentClassById($studentId);
    $listOfAvailableProjects = ProjectModel::getAllProjectsInClassById($classId);
    $projects = "";
    foreach ($listOfAvailableProjects as $project) {
        $projects .= "<option value=\"" . $project['Project_id'] . "\">" . $project['Title'] . "</option>";
    }
    include_once "../view/create-team.php";
}
        if (isset($_POST['is-trainer']) && $_POST['is-trainer'] == 'true') {
            $trainer = TrainerModel::getTrainerFromDB($userID, $p_wd);
            if ($trainer != null) {
                session_start();
                $_SESSION['isTrainer'] = 'true';
                $_SESSION['trainer_id'] = $userID;
                // add user-id to session
                $_SESSION['name'] = $trainer['name'];
                // add name to session
                header("Location: home-trainer");
            } else {
                $error = "<div class='alert alert-danger'>Username or password was not entered correctly - please try again</div>";
                include_once "../index.php";
            }
        } else {
            $student = StudentModel::getStudent($userID, $p_wd);
            if ($student != null) {
                session_start();
                $_SESSION['isTrainer'] = 'false';
                $_SESSION['student_id'] = $userID;
                // add user-id to session
                $_SESSION['name'] = $student['name'];
                // add name to session
                header("Location: home-student");
            } else {
                $error = "<div class='alert alert-danger'>Username or password was not entered correctly - please try again</div>";
                include_once "../index.php";
            }
        }
    }
} else {
 public function actionAccountSettings()
 {
     StudentModel::setAccountSuspensionAndDeletionStatus(Request::post('suspension'), Request::post('softDelete'), Request::post('user_id'));
     Redirect::to("student");
 }
예제 #15
0
 /**
  * load文件并给与权限判断
  */
 protected static function loadList($p_where = null, $p_order = null, $p_pageIndex = null, $p_pageSize = null, &$p_countThis = null, $isDetail = false)
 {
     $tmpResult = parent::loadList($p_where, $p_order, $p_pageIndex, $p_pageSize, $p_countThis, $isDetail);
     if (is_array($tmpResult) && array_key_exists('errorCode', $tmpResult)) {
         return $tmpResult;
     }
     switch ($auth = static::getAuthIfUserCanDoIt(Utility::getCurrentUserID(), $isDetail ? 'detail' : 'list', $tmpResult)) {
         case 'admin':
             //有管理权限
         //有管理权限
         case 'self':
             //作者
             break;
         case 'normal':
             //正常用户
         //正常用户
         case 'draft':
             //未激活
         //未激活
         case 'pending':
             //待审禁言
         //待审禁言
         case 'disabled':
             //封号
         //封号
         case 'visitor':
             //游客
             return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '您没有权限执行该操作');
             break;
         case 'empty':
             //空
             return Utility::getArrayForResults(RUNTIME_CODE_ERROR_DATA_EMPTY, '不存在对应数据');
             break;
         default:
             return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '您没有权限执行该操作');
             break;
     }
     StudentModel::$authViewDisabled = static::$authViewDisabledList[$auth];
     return $tmpResult;
 }
예제 #16
0
 /**
  * 学生成绩列表
  *
  * @param  int  $exam_id
  * @return  void
  */
 public function index($exam_pid = 0)
 {
     if (!$this->check_power('exam_list,exam_manage')) {
         return;
     }
     $page = intval($this->input->get('page'));
     $per_page = intval($this->input->get('per_page'));
     $exam_pid = intval($this->input->get('exam_pid'));
     $flag = $this->input->get('flag');
     $place_id = intval($this->input->get('place_id'));
     $school_id = intval($this->input->get('school_id'));
     $ticket = trim($this->input->get('ticket'));
     $score_start = trim($this->input->get('score_start'));
     $score_end = trim($this->input->get('score_end'));
     $subject_id = intval($this->input->get('subject_id'));
     $keyword = trim($this->input->get('keyword'));
     //var_dump($place_id);die;
     // 查询条件
     $query = array();
     $param = array();
     $search = array('exam_pid' => '', 'place_id' => '', 'flag' => '-2', 'keyword' => '', 'subject_id' => '', 'school_id' => '', 'school_name' => '', 'ticket' => '', 'score_start' => '', 'score_end' => '');
     $flags = array('-1' => '结果作废', '0' => '未生成分数(考试中)', '1' => '已交卷(未统计结果)', '2' => '已生成分数');
     //考试期次
     $exam_pid = !$exam_pid ? 0 : $exam_pid;
     if ($exam_pid) {
         $query['exam_pid'] = $exam_pid;
         $param[] = "exam_pid={$exam_pid}";
         $search['exam_pid'] = $exam_pid;
     }
     //状态
     if ($flag === false) {
     } else {
         if ($flag > -2) {
             $query['etp_flag'] = $flag;
             $param[] = "flag={$flag}";
             $search['flag'] = $flag;
         }
     }
     /*
     if (isset($query['etp_flag']) && $query['etp_flag'] == '2') {
     	$query['etp_flag'] = array('2', '-1');
     }
     */
     //考场
     if ($place_id) {
         $query['place_id'] = $place_id;
         $param[] = "place_id={$place_id}";
         $search['place_id'] = $place_id;
     }
     //学科
     if ($subject_id) {
         $query['subject_id'] = $subject_id;
         $param[] = "subject_id={$subject_id}";
         $search['subject_id'] = $subject_id;
     }
     //学科
     if ($keyword) {
         $escape_keyword = $this->db->escape_like_str($keyword);
         $where = "fullname LIKE '%" . $escape_keyword . "%'";
         $sql = "SELECT group_concat(uid) as uid FROM v_rd_student s WHERE {$where} ";
         $res = $this->db->query($sql)->row_array();
         $uids = explode(',', $res['uid']);
         $query['uid'] = $uids;
         $search['keyword'] = $keyword;
         $param[] = "keyword=" . urlencode($search['keyword']);
     }
     //得分查询
     if ($score_start != '') {
         $query['test_score']['>='] = $score_start;
         $param[] = "score_start={$score_start}";
         $search['score_start'] = $score_start;
     }
     if ($score_end != '') {
         $query['test_score']['<='] = $score_end;
         $param[] = "score_end={$score_end}";
         $search['score_end'] = $score_end;
     }
     //获取该学校下所有的学生
     if ($school_id) {
         $param[] = "school_id={$school_id}";
         $search['school_id'] = $school_id;
         $row = SchoolModel::schoolInfo($school_id, 'school_name');
         if ($row) {
             $school_name = trim($row['school_name']);
         } else {
             $school_name = '';
         }
         if (!count($school_name)) {
             $query = null;
             $search['school_name'] = $school_id;
         } else {
             $students = StudentModel::get_student_list(array('school_id' => $school_id), false, false, null, 'uid');
             if (count($students)) {
                 $uids = array();
                 foreach ($students as $student) {
                     $uids[] = $student['uid'];
                 }
                 $query['uid'] = $uids;
             } else {
                 $query = null;
             }
             $search['school_name'] = $school_name;
         }
     }
     //准考证号
     if ($ticket) {
         if (stripos($ticket, '@') === false) {
             $uid = StudentModel::get_student_by_exam_ticket($ticket, 'uid');
         } else {
             $uid = StudentModel::get_student_by_email($ticket, 'uid');
         }
         if (count($uid)) {
             $query['uid'] = $uid;
         } else {
             $query = null;
         }
         $param[] = "ticket={$ticket}";
         $search['ticket'] = $ticket;
     }
     $select_what = '*';
     $page = $page <= 0 ? 1 : $page;
     $per_page = $per_page <= 0 ? 10 : $per_page;
     $list = array();
     if (!is_null($query)) {
         $list = ExamTestPaperModel::get_test_paper_list($query, $page, $per_page, 'subject_id ASC,etp_id ASC', $select_what);
     }
     //获取学生信息
     $grades = C('grades');
     $subjects = C('subject');
     $data['subjects'] = $subjects;
     $tmp_list = array();
     foreach ($list as $k => $item) {
         $student = StudentModel::get_student($item['uid'], 'first_name, last_name, school_id, exam_ticket, grade_id');
         if (!count($student)) {
             $tmp_list[$k] = array_merge($item, array('truename' => '--', 'school_name' => '--', 'grade_name' => '--', 'subject_name' => '--'));
             continue;
         }
         $student['truename'] = $student['last_name'] . $student['first_name'];
         //获取学生学校信息
         $row = SchoolModel::schoolInfo($student['school_id'], 'school_name');
         if ($row) {
             $school_name = trim($row['school_name']);
         } else {
             $school_name = '';
         }
         $student['school_name'] = count($school_name) ? $school_name : '--';
         //获取该学生所在的年级
         $student['grade_name'] = isset($grades[$student['grade_id']]) ? $grades[$student['grade_id']] : '--';
         //获取科目
         $subject_name = SubjectModel::get_subject($item['subject_id'], 'subject_name');
         $student['subject_name'] = count($subject_name) ? $subject_name : '--';
         //获取考试试卷信息
         $paper_name = ExamPaperModel::get_paper($item['paper_id'], 'paper_name');
         $item['paper_name'] = count($paper_name) ? $paper_name : '--';
         //获取作废记录
         $etp_invalid_record = ExamTestPaperModel::get_etp_invalid_record($item['etp_id']);
         if (!$etp_invalid_record) {
             $item['invalid_record'] = false;
             $item['invalid_record_note'] = '';
         } else {
             $item['invalid_record'] = true;
             $item['invalid_record_note'] = $etp_invalid_record['note'];
         }
         $tmp_list[$k] = array_merge($item, $student);
     }
     $data['list'] =& $tmp_list;
     $data['search'] =& $search;
     $data['flags'] =& $flags;
     // 分页
     $purl = site_url('admin/exam_student_result/index/') . (count($param) ? '?' . implode('&', $param) : '');
     $total = ExamTestPaperModel::count_list($query);
     $data['pagination'] = multipage($total, $per_page, $page, $purl);
     $data['priv_manage'] = $this->check_power('exam_manage', FALSE);
     $this->load->view('exam_student_result/index', $data);
 }
예제 #17
0
 public function oldStulist()
 {
     $student = new StudentModel();
     $student_res = $student->findAll();
     $this->assign("student_res", $student_res);
     $this->display();
 }
예제 #18
0
 /**
  * @param   int     $rule_id
  * @param   int     $exam_id
  * @param   int     $stu_id
  * @return  mixed
  */
 public static function studentTranscriptInfo($rule_id, $exam_id, $stu_id)
 {
     $rule_id = intval($rule_id);
     $exam_id = intval($exam_id);
     $stu_id = intval($stu_id);
     if (!$rule_id || !$exam_id || !$stu_id) {
         return array();
     }
     //考试信息
     $exam = self::$_data['exam_info'][$exam_id];
     if (!$exam) {
         $exam = ExamModel::get_exam($exam_id);
         if (!$exam) {
             return array();
         }
         self::$_data['exam_info'][$exam_id] = $exam;
     }
     //学生信息
     $stu_info = StudentModel::get_student($stu_id, 'school_id,last_name,first_name,external_account,exam_ticket');
     if (!$stu_info) {
         return array();
     }
     $db = Fn::db();
     $data = array();
     $subject_id = $exam['subject_id'];
     $exam_pid = $exam['exam_pid'];
     $subject_name = C('subject/' . $subject_id);
     if (!isset(self::$_data['school_rank'][$exam_id][$stu_info['school_id']])) {
         $sql = "SELECT uid, rank\n                    FROM rd_summary_region_student_rank\n                    WHERE exam_id = {$exam_id} AND region_id = ?\n                    AND is_school = 1 AND is_class = 0\n                    ORDER BY rank ASC";
         $grade_rank = $db->fetchPairs($sql, array($stu_info['school_id']));
         self::$_data['school_rank'][$exam_id][$stu_info['school_id']] = $grade_rank;
     } else {
         $grade_rank = self::$_data['school_rank'][$exam_id][$stu_info['school_id']];
     }
     $sql = "SELECT a.etp_id, paper_id, test_score, ques_id FROM rd_exam_test_paper a\n                LEFT JOIN rd_exam_test_paper_question b ON a.etp_id = b.etp_id\n                WHERE uid = ? AND exam_id = ?";
     $bind = array($stu_id, $exam_id);
     $etp = $db->fetchRow($sql, $bind);
     if (!$etp) {
         return array();
     }
     $proportion = self::$_data['distribution_proportion'][$rule_id];
     if (!$proportion) {
         $proportion = json_decode(EvaluateRuleModel::get_evaluate_rule($rule_id, 'distribution_proportion'), true);
         if (!$proportion) {
             $proportion = array('高分段' => 27, '中分段' => 73, '低分段' => 100);
         }
         $proportion = array_values($proportion);
         self::$_data['distribution_proportion'][$rule_id] = $proportion;
     }
     $level_results = 'A';
     $prev_rank = 0;
     $stu_num = count($grade_rank);
     $stu_rank = $grade_rank[$stu_id];
     foreach ($proportion as $k => $rate) {
         $rank = $stu_num * $rate / 100;
         if ($prev_rank < $stu_rank && $stu_rank <= $rank) {
             break;
         }
         $level_results++;
         $prev_rank = $rank;
     }
     $sch_name = self::$_data['school_info'][$stu_info['school_id']];
     if (!$sch_name) {
         $school = SchoolModel::schoolInfo($stu_info['school_id'], 'school_name');
         $sch_name = $school['school_name'];
         self::$_data['school_info'][$stu_info['school_id']] = $sch_name;
     }
     //成绩信息
     $data['results'] = array('exam_name' => $exam['exam_name'], 'stu_fullname' => $stu_info['last_name'] . $stu_info['first_name'], 'stu_schname' => $sch_name, 'subject_name' => $subject_name, 'exam_ticket' => $stu_info['external_account'] ? $stu_info['external_account'] : $stu_info['exam_ticket'], 'test_score' => $etp['test_score'], 'level_results' => $level_results);
     //试题得分
     //计算学校总体试卷试题得分率
     $level_percent = self::$_data['school_question_level_percent'][$etp['paper_id']][$stu_info['school_id']];
     if (!$level_percent) {
         $sql = "SELECT ques_id, ROUND(test_score / total_score * 100) AS percent\n                    FROM rd_summary_region_question\n                    WHERE exam_id = {$exam_id} AND region_id = {$stu_info['school_id']}\n                    AND is_school = 1";
         $stmt = $db->query($sql);
         while ($item = $stmt->fetch(PDO_DB::FETCH_ASSOC)) {
             self::calLevelPercent($item['ques_id'], $item['percent'], $level_percent);
         }
         self::$_data['school_level_percent'][$etp['paper_id']][$stu_info['school_id']] = $level_percent;
     }
     //计算本次学生试题得分率
     $sql = "SELECT ques_id, ROUND(SUM(test_score) / SUM(full_score) * 100) AS percent\n                FROM rd_exam_test_result WHERE etp_id = ?\n                GROUP BY ques_id";
     $stu_percent = $db->fetchPairs($sql, array($etp['etp_id']));
     //计算学生考试试题得分率对应等级
     $ques_ids = explode(',', $etp['ques_id']);
     $data['question'] = array(1 => array(), 2 => array(), 3 => array(), 4 => array(), 5 => array());
     foreach ($ques_ids as $index => $ques_id) {
         $percent = $stu_percent[$ques_id] > 100 ? 100 : (int) $stu_percent[$ques_id];
         foreach ($level_percent[$ques_id] as $level => $v) {
             if ($v[0] <= $percent && $percent <= $v[1]) {
                 $data['question'][$level][] = $index + 1;
                 break;
             }
         }
     }
     ksort($data['question']);
     //知识点
     $level_percent = self::$_data['school_knowledge_level_percent'][$etp['paper_id']][$stu_info['school_id']];
     if (!$level_percent) {
         $sql = "SELECT knowledge_id, ROUND(test_score / total_score * 100) AS percent\n                    FROM rd_summary_region_knowledge\n                    WHERE exam_id = {$exam_id} AND region_id = {$stu_info['school_id']}\n                    AND is_school = 1 AND is_parent = 0";
         $stmt = $db->query($sql);
         while ($item = $stmt->fetch(PDO::FETCH_ASSOC)) {
             self::calLevelPercent($item['knowledge_id'], $item['percent'], $level_percent);
         }
         self::$_data['school_knowledge_level_percent'][$etp['paper_id']][$stu_info['school_id']] = $level_percent;
     }
     //计算本次学生知识点得分率
     $sql = "SELECT knowledge_id, knowledge_name, ROUND(test_score / total_score * 100) AS percent\n                FROM rd_summary_student_knowledge ssk\n                LEFT JOIN rd_knowledge k ON k.id = ssk.knowledge_id\n                WHERE paper_id = ? AND uid = ? AND is_parent = 0";
     $stu_percent = $db->fetchAssoc($sql, array($etp['paper_id'], $stu_id));
     $data['knowledge'] = array(1 => array(), 2 => array(), 3 => array(), 4 => array(), 5 => array());
     foreach ($level_percent as $knowledge_id => $levels) {
         $percent = $stu_percent[$knowledge_id]['percent'] > 100 ? 100 : (int) $stu_percent[$knowledge_id]['percent'];
         foreach ($levels as $level => $v) {
             if ($v[0] <= $percent && $percent <= $v[1]) {
                 $data['knowledge'][$level][] = $stu_percent[$knowledge_id]['knowledge_name'];
                 break;
             }
         }
     }
     ksort($data['knowledge']);
     //方法策略
     $sql = "SELECT DISTINCT(subject_id) FROM rd_subject_category_subject";
     $subject_ids = $db->fetchCol($sql);
     if (in_array($subject_id, $subject_ids)) {
         $level_percent = self::$_data['school_method_tactic_level_percent'][$etp['paper_id']][$stu_info['school_id']];
         if (!$level_percent) {
             $sql = "SELECT method_tactic_id, ROUND(test_score / total_score * 100) AS percent\n                        FROM rd_summary_region_method_tactic\n                        WHERE exam_id = {$exam_id} AND region_id = {$stu_info['school_id']}\n                        AND is_school = 1";
             $stmt = $db->query($sql);
             while ($item = $stmt->fetch(PDO::FETCH_ASSOC)) {
                 self::calLevelPercent($item['method_tactic_id'], $item['percent'], $level_percent);
             }
             self::$_data['school_method_tactic_level_percent'][$etp['paper_id']][$stu_info['school_id']] = $level_percent;
         }
         //计算本次学生方法策略得分率
         $sql = "SELECT method_tactic_id, name, ROUND(test_score / total_score * 100) AS percent\n                    FROM rd_summary_student_method_tactic ssmt\n                    LEFT JOIN rd_method_tactic mt ON mt.id = ssmt.method_tactic_id\n                    WHERE paper_id = ? AND uid = ?";
         $stu_percent = $db->fetchAssoc($sql, array($etp['paper_id'], $stu_id));
         $data['method_tactic'] = array(1 => array(), 2 => array(), 3 => array(), 4 => array(), 5 => array());
         foreach ($level_percent as $method_tactic_id => $levels) {
             $percent = $stu_percent[$method_tactic_id]['percent'] > 100 ? 100 : (int) $stu_percent[$method_tactic_id]['percent'];
             foreach ($levels as $level => $v) {
                 if ($v[0] <= $percent && $percent <= $v[1]) {
                     $data['method_tactic'][$level][] = $stu_percent[$method_tactic_id]['name'];
                     break;
                 }
             }
         }
         ksort($data['method_tactic']);
     } else {
         if ($subject_id == 3) {
             $level_percent = self::$_data['school_group_type_level_percent'][$etp['paper_id']][$stu_info['school_id']];
             if (!$level_percent) {
                 $sql = "SELECT group_type_id, ROUND(test_score / total_score * 100) AS percent\n                        FROM rd_summary_region_group_type\n                        WHERE exam_id = {$exam_id} AND region_id = {$stu_info['school_id']}\n                        AND is_school = 1 AND is_parent = 0";
                 $stmt = $db->query($sql);
                 while ($item = $stmt->fetch(PDO::FETCH_ASSOC)) {
                     self::calLevelPercent($item['group_type_id'], $item['percent'], $level_percent);
                 }
                 self::$_data['school_group_type_level_percent'][$etp['paper_id']][$stu_info['school_id']] = $level_percent;
             }
             //计算本次学生信息提取方式得分率
             $sql = "SELECT group_type_id, group_type_name, ROUND(test_score / total_score * 100) AS percent\n                    FROM rd_summary_student_group_type ssgt\n                    LEFT JOIN rd_group_type gt ON gt.id = ssgt.group_type_id\n                    WHERE paper_id = ? AND uid = ? AND is_parent = 0";
             $stu_percent = $db->fetchAssoc($sql, array($etp['paper_id'], $stu_id));
             $data['group_type'] = array(1 => array(), 2 => array(), 3 => array(), 4 => array(), 5 => array());
             foreach ($level_percent as $group_type_id => $levels) {
                 $percent = $stu_percent[$group_type_id]['percent'] > 100 ? 100 : (int) $stu_percent[$group_type_id]['percent'];
                 foreach ($levels as $level => $v) {
                     if ($v[0] <= $percent && $percent <= $v[1]) {
                         $data['group_type'][$level][] = $stu_percent[$group_type_id]['group_type_name'];
                         break;
                     }
                 }
             }
             ksort($data['group_type']);
         }
     }
     return $data;
 }
예제 #19
0
    /**
     * 考试成绩查询
     */
    public function examresult()
    {
        Fn::ajax_call($this, 'logout', 'login');
        $uid = $this->_uinfo['uid'];
        $data = array();
        $data['page_title'] = '考试成绩';
        $data['uinfo'] = $this->_uinfo;
        if (!$uid) {
            redirect('student/exam/index');
        } else {
            $data['student'] = StudentModel::get_student($this->_uinfo['uid']);
            // 检查学生信息是否完善
            // $check_message = $this->check_perfect_student();
            if ($check_message) {
                $data['check_message'] = $check_message;
            } else {
                $sql = <<<EOT
SELECT DISTINCT(e.exam_id), e.exam_name
FROM rd_exam e
JOIN rd_exam_result_publish erp ON e.exam_id = erp.exam_pid
JOIN rd_exam_place ep ON e.exam_id = ep.exam_pid
JOIN rd_exam_place_student eps ON ep.place_id = eps.place_id
WHERE eps.uid = {$uid}
EOT;
                $exam_list = Fn::db()->fetchAssoc($sql);
                if (!empty($exam_list)) {
                    $exam_pid_str = implode(',', array_keys($exam_list));
                    $sql = <<<EOT
SELECT exam_pid, id, subject_id FROM rd_evaluate_rule 
WHERE exam_pid IN ({$exam_pid_str})
ORDER BY subject_id
EOT;
                    $rule_list = Fn::db()->fetchAll($sql);
                    foreach ($rule_list as $v) {
                        $source_path = $v['id'] . "/{$uid}.zip";
                        $filepath = realpath(dirname(APPPATH)) . "/cache/zip/report/" . $source_path;
                        if (!file_exists($filepath)) {
                            //continue;
                        }
                        if (!isset($exam_list[$v['exam_pid']]['list'])) {
                            $exam_list[$v['exam_pid']]['list'] = array();
                        }
                        $v['subject_name'] = $this->_subject_name($uid, $v['exam_pid'], $v['subject_id']);
                        $exam_list[$v['exam_pid']]['list'][] = $v;
                    }
                    asort($exam_list);
                }
                $data['exam_result_list'] = array_values($exam_list);
                $data['subject'] = C('subject');
                $data['subject'][0] = '总结';
                if (C('sfe_data_gz')) {
                    $sql = <<<EOT
SELECT sfe_uid, sfe_exampid, sfe_placeid, sfe_starttime, sfe_endtime, 
    sfe_report_status, sfe_subjectid,
    b.exam_name, c.place_name
FROM t_student_free_exam a
LEFT JOIN rd_exam b ON a.sfe_exampid = b.exam_id
LEFT JOIN rd_exam_place c ON a.sfe_placeid = c.place_id
WHERE sfe_uid = {$uid}
ORDER BY sfe_exampid DESC, sfe_placeid ASC
EOT;
                    $rows = Fn::db()->fetchAll($sql);
                    $exam_free_list = array();
                    $exam_free_map = array();
                    foreach ($rows as $row) {
                        $exam_pid = $row['sfe_exampid'];
                        $exam_free_list[] = $exam_pid;
                        if (!isset($exam_free_map[$exam_pid])) {
                            $exam_free_map[$exam_pid] = array();
                        }
                        $row['subject'] = explode(',', trim($row['sfe_subjectid']));
                        $exam_free_map[$exam_pid][] = $row;
                    }
                    $data['exam_free_list'] = array_unique($exam_free_list);
                    $data['exam_free_map'] = $exam_free_map;
                } else {
                    $sql = <<<EOT
SELECT sfe_uid, sfe_exampid, sfe_placeid, sfe_starttime, sfe_endtime, 
    sfe_report_status, sfe_data,
    b.exam_name, c.place_name
FROM t_student_free_exam a
LEFT JOIN rd_exam b ON a.sfe_exampid = b.exam_id
LEFT JOIN rd_exam_place c ON a.sfe_placeid = c.place_id
WHERE sfe_uid = {$uid}
ORDER BY sfe_exampid DESC, sfe_placeid ASC
EOT;
                    $rows = Fn::db()->fetchAll($sql);
                    $exam_free_list = array();
                    $exam_free_map = array();
                    foreach ($rows as $row) {
                        $exam_pid = $row['sfe_exampid'];
                        $exam_free_list[] = $exam_pid;
                        if (!isset($exam_free_map[$exam_pid])) {
                            $exam_free_map[$exam_pid] = array();
                        }
                        $v = json_decode($row['sfe_data'], true);
                        $row['subject'] = array_keys($v);
                        $exam_free_map[$exam_pid][] = $row;
                    }
                    $data['exam_free_list'] = array_unique($exam_free_list);
                    $data['exam_free_map'] = $exam_free_map;
                }
            }
        }
        $this->load->view('exam/examresult', $data);
    }
예제 #20
0
    function email_hash($operation, $key, $validate_time = 0)
    {
        if ($operation == 'encode') {
            $uid = intval($key);
            $CI =& get_instance();
            $addtime = StudentModel::get_student($uid, 'addtime');
            $hash = substr(md5($uid . C('hash_code') . $addtime), 16, 8);
            $hash_code = base64_encode($uid . ',' . $hash . ',' . time());
            $sql = "SELECT COUNT(1) as 'count' FROM {pre}user_resetpassword WHERE uid='{$uid}' ";
            $row = $CI->db->query($sql)->row_array();
            if ($row['count']) {
                $expiretime = time() + 1800;
                $sql = "update  {pre}user_resetpassword  set hash = '{$hash_code}',expiretime = '{$expiretime}'\n                    WHERE uid = '{$uid}' ";
                $CI->db->query($sql);
            } else {
                $expiretime = time() + 1800;
                $sql = "INSERT INTO   {pre}user_resetpassword  ( hash, uid, expiretime ) values( '{$hash_code}','{$uid}', '{$expiretime}')";
                $CI->db->query($sql);
            }
            return $hash_code;
        } else {
            $CI =& get_instance();
            $hash_code = trim($key);
            $now_time = time();
            $hash = base64_decode(trim($key));
            $row = explode(',', $hash);
            if (count($row) != 3) {
                return FALSE;
            }
            $uid = intval($row[0]);
            $salt = trim($row[1]);
            $time = intval($row[2]);
            $sql = <<<EOT
SELECT uid FROM rd_user_resetpassword 
WHERE uid = ? AND expiretime >= ? AND hash = ?
EOT;
            $row = Fn::db()->fetchRow($sql, array($uid, $now_time, $hash_code));
            if (empty($row)) {
                return FALSE;
            }
            if ($uid <= 0 || $validate_time && time() - $time > $validate_time) {
                return FALSE;
            }
            $sql = <<<EOT
SELECT addtime FROM rd_student WHERE uid = {$uid}
EOT;
            $row = Fn::db()->fetchRow($sql);
            $pre_salt = substr(md5($uid . C('hash_code') . $row['addtime']), 16, 8);
            if ($pre_salt == $salt) {
                return $uid;
            } else {
                return FALSE;
            }
        }
    }
예제 #21
0
 /**
  * Update a student document's 'answers' field with new saved answers.
  */
 private static function saveStudentAnswers(Application $application)
 {
     $studentId = $application->getStudentId();
     $questions = $application->getQuestions();
     if (count($questions) == 0) {
         return;
     }
     // Retrieves the question-answer pairs.
     $answers = StudentModel::getAnswers($studentId);
     // Loop through $questions, replace answer for the corresponding question
     // in $answers, or append to $answers if it is not in $answers.
     $answersHash = arrayToHashByKey($answers, '_id', 'index');
     foreach ($questions as $question) {
         $questionId = $question['_id'];
         $newAnswer = $question['answer'];
         if (isset($answersHash[$questionId . ''])) {
             $index = $answersHash[$questionId . ''];
             $answers[$index]['answer'] = $newAnswer;
         } else {
             $answers[] = ['_id' => $questionId, 'answer' => $newAnswer];
         }
     }
     StudentModel::replaceAnswers($studentId, $answers);
 }
예제 #22
0
 /**
  * 编辑信息
  *
  * @param int $id
  * @return void
  */
 public function edit($id)
 {
     if (!$this->check_power('evaluate_rule_manage')) {
         return;
     }
     $data = array();
     $query = array('id' => $id);
     $detail = EvaluateRuleModel::get_evaluate_rule_list($query);
     if (!$id || !count($detail)) {
         message('不存在评估规则信息');
         return;
     }
     $detail = $detail[0];
     $detail['is_reportting'] = $this->rule_is_reportting($id);
     // 获取关联知识点
     $query = array('er_id' => $id);
     $knowledge_list = EvaluateRuleModel::get_evaluate_knowledge_list($query, null, null, null, null, true);
     // 按照 等级 归档
     $tmp_knowledge_list = array();
     foreach ($knowledge_list as $k => $v) {
         $subject_id = $k;
         foreach ($v as $i) {
             $knowledge_id = $i['knowledge_id'];
             $tmp_knowledge_list['s_' . $subject_id]['k_' . $knowledge_id]['l_' . $i['level']] = array('comment' => $i['comment'], 'suggest' => $i['suggest']);
         }
     }
     // 获取关联 方法策略
     $query = array('er_id' => $id);
     $method_tactic_list = EvaluateRuleModel::get_evaluate_method_tactic_list($query, null, null, null, null, true);
     $method_tactic_ids = array();
     foreach ($method_tactic_list as $val) {
         foreach ($val as $item) {
             $method_tactic_ids[] = $item['method_tactic_id'];
         }
     }
     $method_tactic_ids = array_filter($method_tactic_ids);
     $method_tactic_ids = array_unique($method_tactic_ids);
     $method_tactic_ids = count($method_tactic_ids) ? $method_tactic_ids : array(0);
     $method_tactic_ids = implode(',', $method_tactic_ids);
     $subject_category = $this->db->query("select sc.id as subject_category_id,mt.id as method_tactic_id, mt.name, scs.subject_id from {pre}method_tactic mt, {pre}subject_category_subject scs,{pre}subject_category sc where mt.subject_category_id=scs.subject_category_id and sc.id=scs.subject_category_id and mt.id in ({$method_tactic_ids})")->result_array();
     // 按照 等级 归档
     $tmp_method_tactic_list = array();
     foreach ($method_tactic_list as $k => $v) {
         $subject_id = $k;
         foreach ($v as $i) {
             $method_tactic_id = $i['method_tactic_id'];
             foreach ($subject_category as $item) {
                 if ($method_tactic_id == $item['method_tactic_id']) {
                     $tmp_method_tactic_list['sc_' . $item['subject_category_id']]['method_tactic_' . $method_tactic_id]['l_' . $i['level']] = array('comment' => $i['comment'], 'suggest' => $i['suggest']);
                     continue;
                 } else {
                     $tmp_method_tactic_list['s_' . $subject_id]['method_tactic_' . $method_tactic_id]['l_' . $i['level']] = array('comment' => $i['comment'], 'suggest' => $i['suggest']);
                 }
             }
         }
     }
     // 获取关联信息提取方式
     $query = array('er_id' => $id);
     $group_type_list = EvaluateRuleModel::get_evaluate_group_type_list($query, null, null, null, null, true);
     // 按照 等级 归档
     $tmp_group_type_list = array();
     foreach ($group_type_list as $k => $v) {
         $subject_id = $k;
         foreach ($v as $i) {
             $gr_id = $i['group_type_id'];
             $tmp_group_type_list['s_' . $subject_id]['gr_' . $gr_id]['l_' . $i['level']] = array('comment' => $i['comment'], 'suggest' => $i['suggest']);
         }
     }
     // 获取单人模式下被搜索考生
     $student = array();
     if ($detail['generate_mode'] == '1') {
         $student = StudentModel::get_student($detail['generate_uid']);
     }
     $detail['generate_u_keyword'] = count($student) ? $student['email'] : '';
     // 获取当前期次
     $exam = ExamModel::get_exam($detail['exam_pid'], 'exam_id, exam_name');
     $detail['exam_name'] = count($exam) ? $exam['exam_name'] : '该考试期次已经被删除';
     // 获取当前考场
     $place = ExamPlaceModel::get_place($detail['place_id'], 'place_id, place_name');
     $detail['place_name'] = is_array($place) && count($place) ? $place['place_name'] : ($detail['place_id'] == 0 ? '所有考场' : '该考场已经被删除');
     // 外部对比信息
     $comparison_info = unserialize($detail['comparison_info']);
     $comparison_info = is_array($comparison_info) ? $comparison_info : array();
     $detail['comparison_info'] = $comparison_info;
     $this->session->set_userdata(array('comparison_info' => $detail['comparison_info']));
     $data['detail'] =& $detail;
     $data['knowledge_list'] =& $tmp_knowledge_list;
     $data['method_tactic_list'] =& $tmp_method_tactic_list;
     $data['group_type_list'] =& $tmp_group_type_list;
     $data['comparison_types'] = $this->_get_comparison_info();
     $data['mode'] = 'edit';
     $data['comparison_levels'] = C('evaluate_comparison_level');
     $this->load->view('evaluate_rule/add', $data);
 }
예제 #23
0
 /**
  * @description 重置密码
  * @author
  * @final
  * @param int $uid 学生id
  * @param string $new_password 新密码
  * @param string $confirm_password 重复密码
  */
 public function reset_password()
 {
     if (!$this->check_power('student_manage')) {
         return;
     }
     $new_password = $this->input->post('new_password');
     $new_confirm_password = $this->input->post('confirm_password');
     $uid = intval($this->input->post('uid'));
     if (is_string($passwd_msg = is_password($new_password))) {
         output_json(CODE_ERROR, $passwd_msg);
     }
     if (!strlen(trim($new_confirm_password))) {
         output_json(CODE_ERROR, '确认密码不能为空.');
     }
     if ($new_confirm_password != $new_password) {
         output_json(CODE_ERROR, '两次密码输入不一致.');
     }
     //检查是否存在该学生
     $passwd = StudentModel::get_student($uid, 'password');
     if (!count($passwd)) {
         output_json(CODE_ERROR, '不存在该学生.');
     }
     //修改学生密码
     $flag = StudentModel::reset_password($uid, my_md5($new_password));
     if (!$flag) {
         output_json(CODE_ERROR, '密码修改失败,请重试');
     }
     output_json(CODE_SUCCESS, '密码修改成功.');
 }
예제 #24
0
 /**
  * 面试成绩下载
  */
 public function down_interview_file($rule_id)
 {
     $uid = StudentModel::studentLoginUID();
     if (!$uid) {
         // 登录失效
         redirect('student/index/login');
     }
     //检查学生信息是否完善
     //$this->check_perfect_student();
     $name = "{$uid}.zip";
     $source_path = $rule_id . "/{$uid}.zip";
     $filepath = realpath(dirname(APPPATH)) . "/cache/zip/interview_report/" . $source_path;
     if (!file_exists($filepath)) {
         message('你的考试成绩还未生成,请稍后下载...');
     }
     header("Cache-Control: public");
     header("Content-Description: File Transfer");
     header('Content-disposition: attachment; filename=' . $name);
     //文件名
     header("Content-Type: application/zip");
     //zip格式的
     header("Content-Transfer-Encoding: binary");
     //告诉浏览器,这是二进制文件
     header('Content-Length: ' . filesize($filepath));
     //告诉浏览器,文件大小
     @readfile($filepath);
 }
예제 #25
0
 /**
  * 邮件通知
  */
 public function batch_mail($rule_id = 0)
 {
     $rule_id = intval($rule_id);
     $rule_id && ($rule = EvaluateRuleModel::get_evaluate_rule($rule_id));
     if (empty($rule)) {
         message('不存在该评估规则');
     }
     $uid = $this->input->post('uid');
     $send_all = intval($this->input->post('send_all'));
     if (!$send_all && (!is_array($uid) || !count($uid))) {
         message('请选择要通知的考生');
     }
     $uids = array();
     if ($send_all) {
         $sql = "select uids from {pre}evaluate_student where rule_id={$rule_id}";
         $result = $this->db->query($sql)->row_array();
         $uids = isset($result['uids']) ? trim($result['uids']) : '';
         $uids = explode(',', $uids);
     } else {
         $uids = $uid;
     }
     //获取考试期次信息
     $rule['exam_name'] = ExamModel::get_exam($rule['exam_pid'], 'exam_name');
     //获取该期次所考到的科目
     $exam_subjects = array();
     $exam_names = array();
     $sql = "select exam_id, subject_id from {pre}exam where exam_pid=" . $rule['exam_pid'];
     $result = $this->db->query($sql)->result_array();
     foreach ($result as $item) {
         $exam_names[$item['exam_id']] = C('subject/' . $item['subject_id']);
     }
     $rule['exams'] = $exam_names;
     //获取未生成zip的考生
     $sql = "select uid from {pre}evaluate_student_stat where rule_id={$rule_id} and zip_ready=0 and uid in(" . implode(',', $uids) . ")";
     $result = $this->db->query($sql)->result_array();
     $no_zip_ready_uids = array();
     foreach ($result as $item) {
         $no_zip_ready_uids[] = $item['uid'];
     }
     $data = array();
     $fails = array();
     $email_tpl = C('email_template/send_zip');
     foreach ($uids as $uid) {
         $uid && ($student = StudentModel::get_student($uid, 'uid, email, last_name, first_name'));
         if (empty($student)) {
             $fails[] = 'uid:' . $uid . '【原因:考生不存在】';
             continue;
         }
         if (in_array($uid, $no_zip_ready_uids)) {
             $fails[] = 'uid:' . $uid . '【原因:未生成zip压缩包】';
             continue;
         }
         $email = $student['email'];
         if (!is_email($email)) {
             $fails[] = 'uid:' . $uid . '->email:' . $email . '【原因:邮件地址格式不正确】';
             continue;
         }
         $email_content = $this->load->view($email_tpl['tpl'], array('rule' => $rule, 'student' => $student), true);
         $data[] = array('type' => 1, 'target_id' => "{$rule_id}-{$uid}", 'email' => $email, 'title' => $email_tpl['subject'], 'content' => $email_content, 'attache' => "report/{$rule_id}/{$uid}.zip");
     }
     $res = $this->cron_task_email_model->insert_batch($data);
     if ($res) {
         if (count($fails)) {
             message('已成功将部分该考生加入通知队列中,等待系统处理中,以下考生出现异常:<br/>' . implode('<hr/>', $fails));
         } else {
             message('已成功将该考生加入通知队列中,等待系统处理中');
         }
     } else {
         message('操作失败,请重试.');
     }
 }
예제 #26
0
 function view()
 {
     global $MSublet;
     global $MStudent;
     // Validations
     $this->startValidations();
     $this->validate(isset($_GET['id']) and ($entry = $MSublet->get($id = $_GET['id'])) != NULL, $err, 'unknown sublet');
     if ($this->isValid()) {
         $this->validate($entry['publish'] or isset($_SESSION['_id']) and $entry['student'] == $_SESSION['_id'], $err, 'access denied');
     }
     // Code
     if ($this->isValid()) {
         $data = array('commented' => false);
         if (isset($_POST['addcomment'])) {
             function dataComment($data)
             {
                 $comment = clean($data['comment']);
                 return array('comment' => $comment);
             }
             global $params;
             extract($data = dataComment($params));
             array_unshift($entry['comments'], array('time' => time(), 'commenter' => $_SESSION['_id'], 'comment' => $comment));
             $data['commented'] = true;
             // Notify us of the comment
             $commenter = $_SESSION['email'];
             $message = "\n            <b>{$commenter}</b> has commented on <a href=\"http://sublite.net/housing/sublet.php?id={$id}\">{$id}</a>:\n            <br /><br />\n            {$comment}\n          ";
             sendgmail(array('*****@*****.**', '*****@*****.**'), "*****@*****.**", 'Comment posted on SubLite!', $message);
             // Notify the subletter of the comment
             $subletterEmail = StudentModel::getById($entry['student'])['email'];
             $subletterName = $_SESSION['name'];
             $message = "\n            Hey there!\n            <br /><br />\n            {$subletterName} has commented on your sublet!\n            Check it out <a href=\"http://sublite.net/housing/sublet.php?id={$id}\">here</a>.\n            <br /><br />\n            View your sublet:\n            <a href=\"http://sublite.net/housing/sublet.php?id={$id}\">\n              http://sublite.net/housing/sublet.php?id={$id}\n            </a>\n            <br /><br />\n            Happy subletting,<br />\n            SubLite Team\n          ";
             sendgmail(array($subletterEmail), "*****@*****.**", 'You have a new comment on your sublet! | SubLite', $message);
         }
         $entry['stats']['views']++;
         $MSublet->save($entry);
         $data = array_merge($entry, $data);
         $data['_id'] = $entry['_id'];
         $data['mine'] = (isset($_SESSION['_id']) and $entry['student'] == $_SESSION['_id']);
         // ANY MODiFICATIONS ON DATA GOES HERE
         $s = $MStudent->getById($entry['student']);
         if ($s == NULL) {
             $entry['publish'] = false;
             $MSublet->save($entry);
             self::error('this listing is no longer available');
             self::render('notice');
             return;
         }
         $data['studentname'] = $s['name'];
         $data['studentid'] = $s['_id']->{'$id'};
         $data['studentclass'] = $s['class'] > 0 ? " '" . substr($s['class'], -2) : '';
         $data['studentschool'] = strlen($s['school']) > 0 ? $s['school'] : 'Undergraduate';
         $data['studentpic'] = isset($s['photo']) ? $s['photo'] : $GLOBALS['dirpreFromRoute'] . 'assets/gfx/defaultpic.png';
         global $S;
         $data['studentcollege'] = $S->nameOf($s['email']);
         $data['studentbio'] = isset($s['bio']) ? $s['bio'] : 'Welcome to my profile!';
         if (isset($_SESSION['loggedinstudent'])) {
             $me = $MStudent->me();
             $data['studentmsg'] = "Hi " . $data['studentname'] . ",%0A%0A" . "I am writing to inquire about your listing '" . $data['title'] . "' (http://sublite.net/housing/sublet.php?id=" . $entry['_id'] . ").%0A%0A" . "Best,%0A" . $me['name'];
         }
         $data['latitude'] = $data['geocode']['latitude'];
         $data['longitude'] = $data['geocode']['longitude'];
         $data['address'] = $data['address'] . ', ' . $data['city'] . ', ' . $data['state'];
         if (count($data['photos']) == 0) {
             $data['photos'][] = $GLOBALS['dirpreFromRoute'] . 'assets/gfx/subletnophoto.png';
         }
         $data['startdate'] = fdate($data['startdate']);
         $data['enddate'] = fdate($data['enddate']);
         switch ($data['gender']) {
             case 'male':
                 $data['gender'] = 'Male only';
                 break;
             case 'female':
                 $data['gender'] = 'Female only';
                 break;
         }
         for ($i = 0; $i < count($data['comments']); $i++) {
             $comment = $data['comments'][$i];
             $commenter = $MStudent->getById($comment['commenter']);
             $data['comments'][$i] = array('name' => $commenter['name'], 'photo' => $commenter['photo'], 'time' => timeAgo($comment['time']), 'text' => $comment['comment']);
         }
         self::displayMetatags('sublet');
         self::render('student/sublets/viewsublet', $data);
         return;
     }
     self::error($err);
     self::render('notice');
 }
 private static function submit(MongoId $jobId, MongoId $studentId, array $questions)
 {
     $answers = array();
     foreach ($questions as $_id => $answer) {
         $answers[] = ['_id' => $_id, 'answer' => $answer];
     }
     $application = ApplicationStudent::save($jobId, $studentId, $answers);
     $applicationId = $application->getId();
     $submitted = ApplicationStudent::submit($applicationId);
     if ($submitted) {
         $job = JobModel::getByIdMinimal($jobId);
         $jobTitle = $job['title'];
         $linkApplicants = "http://sublite.net/employers/viewapplicants/{$jobId}";
         $linkManage = "http://sublite.net/employers/home";
         $recruiterId = $job['recruiter'];
         $recruiter = RecruiterModel::getByIdMinimal($recruiterId);
         $recruiterFirstname = $recruiter['firstname'];
         $recruiterEmail = $recruiter['email'];
         $message = "\n          Hi {$recruiterFirstname},\n          <br /><br />\n          You have received a new applicant for your job: <b>{$jobTitle}</b>!\n          <br /><br />\n          To unlock and view this application, go to\n          <a href='{$linkApplicants}'>View Applicants</a>.\n          <br />\n          To manage your jobs, go to <a href='{$linkManage}'>Manage</a>.\n          <br /><br />\n          View Applicants: <a href='{$linkApplicants}'>{$linkApplicants}</a><br />\n          Manage Jobs: <a href='{$linkManage}'>{$linkManage}</a><br />\n          <br /><br />\n          -------------------<br />\n          Team SubLite\n          <br /><br />\n          Please let us know if you have any questions. We hope you find the\n          right candidate for your job.\n        ";
         sendgmail([$recruiterEmail], "*****@*****.**", "New Applicant for '{$jobTitle}' | SubLite", $message);
         //send an email to the student
         $companyId = $job['company'];
         $company = CompanyModel::getById($companyId);
         $companyName = $company['name'];
         $student = StudentModel::getByIdMinimal($studentId);
         $studentFirstName = $student['name'];
         $studentEmail = $student['email'];
         $linkApplication = "http://sublite.net/jobs/application/{$applicationId}";
         $linkJob = "http://sublite.net/job?id={$jobId}";
         $linkJobSearch = "http://sublite.net/jobs/search";
         $linkJobsByCompany = "http://sublite.net/jobs/search?byrecruiter={$recruiterId}";
         $message = "\n          Hi {$studentFirstName},\n          <br />\n          <br />{$companyName} has successfully received your <a href='{$linkApplication}'>application</a> for <b>{$jobTitle}</b>!<br />\n          <br />View your application: {$linkApplication}\n          <br />View the job you applied to {$linkJob}\n          <br />View more jobs by {$linkJobsByCompany}<br />\n          <br />You are now one step closer to finding your perfect summer experience! Take more steps by applying to more jobs: {$linkJobSearch}<br />\n          -------------------<br />\n          Good luck!\n          <br />\n          Team SubLite\n        ";
         sendgmail([$studentEmail], "*****@*****.**", "Confirmation for Job Application", $message);
         self::redirect("../application/{$applicationId}");
     }
     self::error("You must attach a resume to your profile in order to submit " . "an application.");
 }
 public static function openMapsView()
 {
     $studentModel = new StudentModel();
     (new OpenMapView())->show($studentModel->getStudentsPositions());
 }
예제 #29
0
 /**
  * Handle store student command.
  *
  * @param $studentInfo
  * @return int student id
  */
 public function storeStudent($studentInfo)
 {
     $studentModel = new StudentModel();
     return json_encode($studentModel->storeStudent($studentInfo['name']));
 }
예제 #30
0
 public function index()
 {
     StudentModel::studentAjaxLogout();
     redirect('student/profile/basic');
 }