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)); }
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; }
public static function getProfile(MongoId $studentId) { $profileData = StudentModel::getProfile($studentId); if ($profileData === null) { $profileData = []; } return new StudentProfile($studentId, $profileData); }
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; }
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)); }); }
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'] . '../'); }
<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; }
/** * @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"); }
/** * 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; }
/** * 学生成绩列表 * * @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); }
public function oldStulist() { $student = new StudentModel(); $student_res = $student->findAll(); $this->assign("student_res", $student_res); $this->display(); }
/** * @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; }
/** * 考试成绩查询 */ 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); }
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; } } }
/** * 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); }
/** * 编辑信息 * * @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); }
/** * @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, '密码修改成功.'); }
/** * 面试成绩下载 */ 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); }
/** * 邮件通知 */ 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('操作失败,请重试.'); } }
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()); }
/** * Handle store student command. * * @param $studentInfo * @return int student id */ public function storeStudent($studentInfo) { $studentModel = new StudentModel(); return json_encode($studentModel->storeStudent($studentInfo['name'])); }
public function index() { StudentModel::studentAjaxLogout(); redirect('student/profile/basic'); }