Example #1
0
 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;
 }
Example #2
0
 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;
 }
Example #3
0
 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;
 }
Example #4
0
 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;
 }
Example #5
0
 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;
 }
Example #6
0
 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);
     }
 }
Example #7
0
 /**
  * Закрывает доступ к разделу.
  */
 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);
 }
Example #8
0
 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;
 }
Example #9
0
 /**
  * Отображение списка слушателей, изучающих дисциплину.
  *
  * @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');
 }
Example #10
0
 /**
  * Отображение куратору успеваемости слушателя по дисциплине.
  *
  * @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');
 }
Example #11
0
 /**
  * Открывает доступ к разделу дисциплины, следующему за указанным, если он существует.
  * Иначе открывает доступ к первому разделу следующей дисциплины, если она существует.
  *
  * @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;
 }
Example #12
0
 /**
  * Сохранение порядка разделов(секций)
  */
 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);
 }
Example #13
0
 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);
     }
 }
Example #14
0
 /**
  * Подача заявки на программу/дисциплину.
  */
 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);
 }
Example #15
0
 /**
  * Открыта ли дисциплина для студента
  *
  * @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;
 }