private function validateTitle(Model_Education_Programs $educationPrograms) { if ($educationPrograms->disciplineExists($this->speciality->value, $this->title->value)) { $this->invalidate(); $this->setValidationError('title', 'В рамках данного направления уже существует дисциплина с таким названием уже существует'); return false; } return true; }
protected function validateTitle(Model_Education_Programs $educationPrograms, Http_Request $request) { if ($educationPrograms->programExists($this->title->value, $request->program_type)) { $this->invalidate(); $this->setValidationError('title', $request->program_type == 'direction' ? 'Направление с таким названием уже существует' : 'Курсы с таким названием уже существуют'); return FALSE; } return TRUE; }
private function validateTitle(Model_Education_Programs $educationPrograms) { if ($educationPrograms->sectionExists($this->discipline->value, $this->title->value)) { $this->invalidate(); $this->setValidationError('title', 'В рамках данной дисциплины существует раздел с таким названием'); return false; } return true; }
private function validateTitle(Model_Education_Programs $educationPrograms, Http_Request $request) { if ($educationPrograms->sectionExists($request->section, $this->title->value, Model_Education_Programs::CHECK_BY_OWN_ID)) { $educationPrograms->getSection($request->section, $title, $number); if ($title != $this->title->value) { $this->invalidate(); $error = 'Раздел с таким названием уже существует'; $this->setValidationError('title', $error); return FALSE; } } return TRUE; }
protected function validateTitle(Model_Education_Programs $educationPrograms, Http_Request $request) { if ($educationPrograms->disciplineExists($request->discipline, $this->title->value, Model_Education_Programs::CHECK_BY_OWN_ID)) { $educationPrograms->getDiscipline($request->discipline, $title, $labourIntensive, $coef); if ($title != $this->title->value) { $this->invalidate(); $error = 'Дисциплина с таким названием уже существует'; $this->setValidationError('title', $error); return FALSE; } } return TRUE; }
public function action_responsible_teacher() { $programs = Model_Education_Programs::create(); $request = $this->getRequest(); $method = 'post'; if (empty($request->{$method})) { $users = Model_User::create(); $this->set('teachers', $users->getTeachersList()); $this->set('disciplines', $programs->getDisciplinesResponsibleTeachersList()); $this->set('courses', $programs->getCoursesResponsibleTeachersList()); $this->render('assignment/responsible_teacher'); } else { /** * @todo Переделать для использования Form_Abstract. */ $requestData = $request->{$method}; if (isset($requestData['courses'])) { foreach ($requestData['courses'] as $courseId => $teacherId) { $programs->setCoursesResponsibleTeacher($courseId, $teacherId); } } if (isset($requestData['disciplines'])) { foreach ($requestData['disciplines'] as $disciplineId => $teacherId) { $programs->setDisciplineResponsibleTeacher($disciplineId, $teacherId); } } $links = Resources::getInstance()->links; $this->flash('Ответсвенные преподаватели успешно назначены', $links->get('admin.responsible-teachers'), 3); } }
/** * Закрывает доступ к разделу. */ public function action_remove_pass($params) { $model_checkpoint = Model_Checkpoint::create(); $model_education_programs = Model_Education_Programs::create(); $model_checkpoint->removeCheckpointPass($params['student_id'], $params['section_id']); $discipline_id = $model_education_programs->getDisciplineNumberBySection($params['section_id']); $links = Resources::getInstance()->links; $link = $links->get('teacher.discipline', array('discipline_id' => $discipline_id['discipline_id'])); $this->flash('Доступ к разделу закрыт', $link); }
protected function validateSection(Http_Request $request) { $educationPrograms = Model_Education_Programs::create(); if (!$educationPrograms->sectionIDExists($this->section->value)) { $this->invalidate(); $this->setValidationError('section', 'Раздел не существует'); return FALSE; } return TRUE; }
/** * Отображение списка слушателей, изучающих дисциплину. * * @params['discipline_id'] Идентификатор дисциплины. */ public function action_discipline($params) { $modelEducationPrograms = Model_Education_Programs::create(); $modelOpenSect = Model_OpenSection::create(); $modelCredit = Model_Credit::create(); $modelControlWork = Model_ControlWork::create(); $modelUser = Model_User::create(); $data = array(); $userList = $modelEducationPrograms->getStudentsByDiscipline($params['discipline_id']); $openSections = $modelOpenSect->getOpenSectionsByDiscipline($params['discipline_id']); $creditSections = $modelCredit->getCreditsByDiscipline($params['discipline_id']); //print_r($creditSections); die(); $modelEducationPrograms->getDiscipline($params['discipline_id'], $title, $labourIntensive, $coef); $sections = $modelEducationPrograms->getSectionsByDiscipline($params['discipline_id']); // вот чисто философский вопрос: а этот код действительно должн быть здесь? //print_r($userList); die(); foreach ($userList as &$rec) { $userInfo = $modelUser->getUserInfo($rec['user_id']); $name = $userInfo['surname'] . ' ' . $userInfo['name'] . ' ' . $userInfo['patronymic']; $data[$rec['user_id']] = array('name' => $name, 'open_sections' => array(), 'credit_sections' => array('ids' => array(), 'dates' => array())); for ($i = 0; $i < count($openSections); $i++) { if ($openSections[$i]['student_id'] == $rec['user_id']) { array_push($data[$rec['user_id']]['open_sections'], $openSections[$i]['section_id']); unset($openSections[$i][$rec['user_id']]); } } $lastCreditedSection = -1; for ($i = 0; $i < count($creditSections); $i++) { if ($creditSections[$i]['student_id'] == $rec['user_id']) { $lastCreditedSection = $creditSections[$i]['section_id']; array_push($data[$rec['user_id']]['credit_sections']['ids'], $creditSections[$i]['section_id']); array_push($data[$rec['user_id']]['credit_sections']['dates'], $creditSections[$i]['created_date']); unset($creditSections[$i][$rec['user_id']]); } } if (!$modelCredit->isDisciplineCredited($params['discipline_id'], $rec['user_id'])) { if ($lastCreditedSection == -1) { $firstSectAr = $modelEducationPrograms->getFirstSectionIdOfDiscipline($params['discipline_id']); $data[$rec['user_id']]['first_uncredited_section'] = $firstSectAr; } else { $data[$rec['user_id']]['first_uncredited_section'] = $modelEducationPrograms->getNextSectionOfDiscipline($params['discipline_id'], $lastCreditedSection); } $data[$rec['user_id']]['cur_control_works'] = $modelControlWork->getStudentMarksBySection($rec['user_id'], $data[$rec['user_id']]['first_uncredited_section']); } } //print_r($data); die(); $this->set('discipline_id', $params['discipline_id']); $this->set('discipline_title', $title); $this->set('data', $data); $this->set('sections', $sections); $this->set('TYPE_NAMES', $modelControlWork->getControlNamesMap()); $this->set('MARK_NAMES', $modelControlWork->getMarkNamesMap()); $this->render('teacher_courses/discipline'); }
/** * Отображение куратору успеваемости слушателя по дисциплине. * * @params['student_id'] Идентификатор студента. * @params['discipline_id'] Идентификатор дисциплины. */ public function action_discipline($params) { $model_credit = Model_Credit::create(); $model_control_work = Model_ControlWork::create(); $model_education_programs = Model_Education_Programs::create(); $model_user = Model_User::create(); $model_education_programs->getDiscipline($params['discipline_id'], $title, $labourIntensive, $coef); $this->set('test_results', $model_control_work->getStudentTestResultsByDiscipline($params['student_id'], $params['discipline_id'])); $this->set('credits', $model_credit->getStudentCreditsByDiscipline($params['student_id'], $params['discipline_id'])); $this->set('control_works', $model_control_work->getStudentMarksByDiscipline($params['student_id'], $params['discipline_id'])); $this->set('control_names_map', $model_control_work->getControlNamesMap()); $this->set('mark_names_map', $model_control_work->getMarkNamesMap()); $this->set('discipline_title', $title); $this->set('sections', $model_education_programs->getSectionsByDiscipline($params['discipline_id'])); $this->set('user_id', $params['student_id']); $this->set('user_info', $model_user->getUserInfo($params['student_id'])); $this->render('teacher_students/discipline'); }
/** * Открывает доступ к разделу дисциплины, следующему за указанным, если он существует. * Иначе открывает доступ к первому разделу следующей дисциплины, если она существует. * * @param int student_id Идентификатор слушателя * @param int section_id Идентификатор раздела. * @return void */ public function setNextSectionPass($student_id, $section_id) { $sql = 'SELECT s.discipline_id, s.number FROM ' . $this->_tables['sections'] . ' s WHERE s.section_id = ?'; $stmt = $this->prepare($sql); $stmt->execute(array($section_id)); $section = $stmt->fetch(Db_Pdo::FETCH_ASSOC); $sql = 'SELECT s.section_id FROM ' . $this->_tables['sections'] . ' s WHERE s.discipline_id = :discipline_id AND s.number = :number'; $sql_params = array(':discipline_id' => $section['discipline_id'], ':number' => $section['number'] + 1); $stmt = $this->prepare($sql); $stmt->execute($sql_params); $next_section = $stmt->fetch(Db_Pdo::FETCH_ASSOC); if (!$next_section) { $sql = 'SELECT d.program_id, d.serial_number FROM ' . $this->_tables['disciplines'] . ' d WHERE d.discipline_id = ?'; $stmt = $this->prepare($sql); $stmt->execute(array($section['discipline_id'])); $discipline = $stmt->fetch(Db_Pdo::FETCH_ASSOC); $sql = 'SELECT d.discipline_id FROM ' . $this->_tables['disciplines'] . ' d WHERE d.program_id = :program_id AND d.serial_number = :serial_number'; $sql_params = array(':program_id' => $discipline['program_id'], ':serial_number' => $discipline['serial_number'] + 1); $stmt = $this->prepare($sql); $stmt->execute($sql_params); $next_discipline = $stmt->fetch(Db_Pdo::FETCH_ASSOC); $model_education_programs = Model_Education_Programs::create(); $next_section = $model_education_programs->getFirstSectionIdOfDiscipline($next_discipline['discipline_id']); } if ($next_section) { return $this->setCheckpointPass($student_id, $next_section); } return false; }
/** * Сохранение порядка разделов(секций) */ public function action_save_section_order() { $educationPrograms = Model_Education_Programs::create(); $data = explode(',', $_POST['sectionOrderInfo']); for ($i = 0; $i < count($data); $i++) { $educationPrograms->editSectionNumber($data[$i], $i + 1); } $links = Resources::getInstance()->links; $this->flash('Порядок разделов успешно изменён', $links->get('admin.programs'), 3); }
public function action_upload() { $result = false; $educationPrograms = Model_Education_Programs::create(); $this->set('directions', $educationPrograms->getDirections()); $this->set('courses', $educationPrograms->getCourses()); $this->set('disciplines', $educationPrograms->getDirectionsDisciplines()); $this->set('sections', $educationPrograms->getDisciplinesSections()); $this->set('invalidMaterialsForms', array()); $links = Resources::getInstance()->links; $action = $links->get('materials.teacher.upload'); $form = Form_Materials_Upload::create($action); $request = $this->getRequest(); $method = $form->method(); $requestData = $request->{$method}; if (!array_key_exists('back', $requestData)) { $requestData['back'] = 'teacher.materials'; } $this->set('back', $requestData['back']); if (count($requestData) == 1) { $this->render('educational_materials/upload'); } //print_r($requestData); die(); $invalidMaterialsForms = array(); if (count($requestData['material'])) { $educationalMaterials = Model_Educational_Materials::create(); foreach ($requestData['material'] as $i => $material) { $request->set('get', array('description' => $material['description'], 'section' => $material['section'], 'filename' => $request->files['fileReference' . $i]['name'], 'type' => $material['type'])); $materialForm = Form_Materials_Upload::create(''); $materialForm->setMethod(Form_Abstract::METHOD_GET); if (!$materialForm->validate($request)) { $invalidMaterialsForms[] = $materialForm; } else { $result = $educationalMaterials->addMaterial($material['description'], $material['section'], $material['type'], $request->files['fileReference' . $i]); } } } if (!empty($invalidMaterialsForms)) { $this->set('invalidMaterialsForms', $invalidMaterialsForms); $this->render('educational_materials/upload'); } $links = Resources::getInstance()->links; if ($result) { $this->flash('Все материалы успешно загружены', $links->get($requestData['back']), 3); } else { $this->flash('Во время загрузке материалов произошли ошибки. Возможно Вы пытаетесь загрузить матераил в дисциплину, за которую не назначены ответственным', $links->get($requestData['back']), 3); } }
/** * Подача заявки на программу/дисциплину. */ public function action_apply($params) { $user = Model_User::create(); $udata = (object) $user->getAuth(); $links = Resources::getInstance()->links; /* Получаем параметры программы */ $object_id = $params['program_id']; $type = $params['program_type']; /* Если подаётся заявка на дисциплину, */ if (Model_Application::TYPE_DISCIPLINE === $type) { /* то получаем идентификатор программы по дисциплине */ $disc = Model_Discipline::create(); $info = $disc->get($object_id); $program_id = $info['program_id']; } else { /* Если же заявка на программу, то берём её идентификатор */ $program_id = $object_id; } /* Получаем данные программы */ $program = Model_Education_Programs::create(); $info = (object) $program->getProgramInfo($program_id); /* Если программы платная и не заполнен расширенный профиль, то */ if (Model_Education_Programs::PAID_TYPE_PAID === $info->paid_type && !$user->isExtendedProfileSet($udata->user_id)) { // просим пользователя его заполнить $msg = 'Заполните, пожалуйста, подробную анкету слушателя'; $this->flash($msg, $links->get('student.extended-profile')); } $app = Model_Application::create(); if ($app->apply($udata->user_id, $object_id, $type)) { // заявка корректна $return_url = $links->get('student.applications'); $msg = 'Вы успешно подали заявку на учебный курс.<p> Через 10 сек. Вас автоматически перенаправят на страницу просмотра поданых Вами <a href="' . $return_url . '" title=Мои заявки> заявок</a>. <p> Также, Вы можете, не дожидаясь перенаправления, перейти на страницу <a href="' . $links->get('student.apply') . '" title=Авторизация>Мой новый курс</a> и подать зявку на ещё один учебный курс!'; } else { // заявка дубликат $return_url = $links->get('student.apply'); $msg = 'Заявка на эту дисциплину была подана вами ранее. Через 10 сек. Вас автоматически перенаправят на страницу просмотра поданых Вами <a href="' . $return_url . '" title=Мои заявки> заявок</a>. <p> Также, Вы можете, не дожидаясь перенаправления, перейти на страницу <a href="' . $links->get('student.apply') . '" title=Авторизация>Мой новый курс</a> и подать зявку на ещё один учебный курс!'; } $this->flash($msg, $return_url, 10); }
/** * Открыта ли дисциплина для студента * * @param int $disciplineId * @param int $studentId * @param array $statuses Статусы заявок студента * @return bool */ public function isDisciplineOpenForStudent($disciplineId, $studentId, $statuses = false) { $result = false; $modelApps = Model_Application::create(); if (!$statuses) { $statuses = $modelApps->getAppsStatus($disciplineId, $studentId); } if (array_key_exists(Model_Application::STATUS_PREPAID, $statuses) || array_key_exists(Model_Application::STATUS_FINISHED, $statuses)) { $result = true; } elseif ($k = array_search(Model_Application::STATUS_SIGNED, $statuses) !== false) { foreach ($statuses[$k] as $appId) { $appInfo = $modelApps->getAppInfo($appId); $modelEducationPrograms = Model_Education_Programs::create(); if ($appInfo['type'] == 'discipline') { $programId = $modelEducationPrograms->getProgramIdByDiscipline($appInfo['object_id']); } elseif ($appInfo['type'] == 'program') { $programId = $appInfo['object_id']; } $programInfo = $modelEducationPrograms->getProgramInfo($programId); if ($programInfo['paid_type'] == Model_Education_Programs::PAID_TYPE_FREE) { $result = true; break; } else { $modelPayment = Model_Payment::create(); $total_payment = $modelPayment->getTotal($appId); $cost_total = $program_data['cost']; $ar = $this->_getAllowed(array($disciplineId), $payment_total, $cost_total); if (!empty($ar)) { $result = true; break; } } } } return $result; }