示例#1
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);
     }
 }
示例#2
0
 public function testCanDeleteUsername()
 {
     Model_User::create($this->username, $this->password);
     $user = Model_User::findByUsername($this->username);
     $user->delete();
     $userNotFound = Model_User::findByUsername($this->username);
     $this->assertFalse($userNotFound);
 }
示例#3
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');
 }
示例#4
0
 /**
  * @BeforeSuite
  */
 public static function prepare(SuiteEvent $event)
 {
     // Clear the user table.
     $query = DB::delete('users')->execute();
     // Setup the test user for login.
     $user = new Model_User();
     $user->username = '******';
     $user->password = '******';
     $user->email = '*****@*****.**';
     $user->timezone_id = 1;
     $user->create();
     $user->add('roles', Model_Role::LOGIN);
 }
 public static function fromJSON($json)
 {
     $user_data = json_decode($json, true);
     Database::setup();
     $user = R::dispense(Model_User::$table_name);
     if (isset($user_data)) {
         if (isset($user_data['username'])) {
             $username = $user_data['username'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['name'])) {
             $name = $user_data['name'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['email'])) {
             $email = $user_data['email'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['date'])) {
             $date = $user_data['date'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['password'])) {
             $password = $user_data['password'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['status'])) {
             $status = $user_data['status'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['persona'])) {
             $persona = $user_data['persona'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
         if (isset($user_data['progress'])) {
             $progress = $user_data['progress'];
         } else {
             throw new InvalidCreationJSONObjectException();
         }
     } else {
         throw new InvalidCreationJSONObjectException();
     }
     return Model_User::create($username, $name, $email, $date, $password, $status, $persona, $progress);
 }
示例#6
0
 public function action_send()
 {
     $links = Resources::getInstance()->links;
     $args = func_get_args();
     $request = $this->getRequest();
     $action = $links->get('messages.send');
     $form = new Form_Message_Send($action);
     if (count($args)) {
         //$form->setValue('recipients', $args[0]['to_id']);
         $form->setValue('recipient', $args[0][0]);
     }
     $this->set('form', $form);
     $method = $form->method();
     $user = Model_User::create();
     $udata = $user->getAuth();
     //print_r($udata);
     $this->set('filterExists', $udata['role'] == Model_User::ROLE_ADMIN);
     $messages = new Model_Messages();
     $recipients = $messages->getRecipientsList();
     $this->set('recipients', $recipients);
     $requestData = $request->{$method};
     //print_r($requestData);
     if (empty($requestData) || !$form->validate($request)) {
         $this->render('messages/send');
     }
     /**
      * @todo Form_Abstract automatically processes values for all defined
      * fields to protect them from XSS.
      */
     $recipients = explode(',', $requestData['recipient']);
     $messageIds = array();
     foreach ($recipients as $rec) {
         $messageIds[] = $messages->sendMessage($rec, htmlspecialchars($requestData['subject']), htmlspecialchars($requestData['message']));
     }
     if (isset($_FILES['attachment'])) {
         $messages->addAttachments($messageIds, $_FILES['attachment']);
     }
     /*
     $messageId = $messages->sendMessage($requestData['recipient'], htmlspecialchars($requestData['subject']), htmlspecialchars($requestData['message']));
     
     if (isset($_FILES['attachment'])) {
         $messages->addAttachments($messageId, $_FILES['attachment']);
     }
     */
     $this->flash('Сообщение отправлено', $links->get('messages.inbox'), 3);
 }
示例#7
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');
 }
示例#8
0
 public function action_edit_account($params)
 {
     $links = Resources::getInstance()->links;
     $opts = array('user_id' => $params['user_id']);
     $action = $links->get('users.edit', $opts);
     $form = Form_Profile_Edit::create($action);
     $users = Model_User::create();
     $this->set('form', $form);
     $this->set('rolesCaptions', $this->_roles_captions);
     $request = $this->getRequest();
     $method = $form->method();
     $requestData = $request->{$method};
     if (empty($requestData)) {
         if (($userInfo = $users->getUserInfo($params['user_id'])) === FALSE) {
             $this->flash('Пользователь не существует', $links->get('users.list') . 'all/fio/asc/', 5);
         }
         $form->setValue('surname', $userInfo['surname']);
         $form->setValue('name', $userInfo['name']);
         $form->setValue('patronymic', $userInfo['patronymic']);
         $form->setValue('role', $userInfo['role']);
     } else {
         if ($form->validate($request)) {
             $userInfo = array('name' => $requestData['name'], 'surname' => $requestData['surname'], 'patronymic' => $requestData['patronymic'], 'role' => $requestData['role'], 'user_id' => $params['user_id']);
             $users->setUserInfo($userInfo);
             $this->flash('Данные пользователя успешно изменены', $links->get('users.list') . 'all/fio/asc/', 3);
         }
     }
     $this->render('users/edit_account');
 }
示例#9
0
 /**
  * Отображение доступных для слушателя программ и дисциплин.
  * Все доступные дисциплины сохраняются в сесиию
  */
 public function action_available()
 {
     /* Получаем данные слушателя */
     $user = Model_User::create();
     $udata = (object) $user->getAuth();
     $session = Resources_Abstract::getInstance()->session;
     unset($session->availDisciplines);
     $student = Model_Education_Students::create();
     $avail_programs = $student->getAvailDisciplinesForPrograms($udata->user_id);
     $avail_disciplines = $student->getAvailDisciplinesSeparate($udata->user_id);
     //echo 'Test message in file: '.__FILE__.', on line: '.__LINE__; print_r($avail_programs);
     //echo 'Test message in file: '.__FILE__.', on line: '.__LINE__; print_r($avail_disciplines);
     //var_dump ($session->availDisciplines); die();
     $this->set('programs', $avail_programs);
     $this->set('disciplines', $avail_disciplines);
     $this->render();
 }
示例#10
0
 /**
  * Отображение доступных учебных материалов.
  */
 public function action_show(array $params = array())
 {
     $a = Model_Test::create();
     $a->test();
     $links = Resources::getInstance()->links;
     if (!isset($params['discipline_id']) || is_int($params['discipline_id'])) {
         $this->flash('Не указан идентификатор дисциплины', $links->get('student.programs'));
     }
     $discipline_id = intval($params['discipline_id']);
     $user = Model_User::create();
     $udata = (object) $user->getAuth();
     $session = Resources_Abstract::getInstance()->session;
     // если данных о доступных дисциплинах нет - вычислить
     if (!isset($session->availDisciplines)) {
         $student = Model_Education_Students::create();
         $avail_programs = $student->getAvailDisciplinesForPrograms($udata->user_id);
         $avail_disciplines = $student->getAvailDisciplinesSeparate($udata->user_id);
     }
     $discipline_open = in_array($discipline_id, $session->availDisciplines);
     if ($discipline_open) {
         // дисциплина доступна
         $disc = Model_Discipline::create();
         $discipline_data = $disc->get($discipline_id);
         $section = Model_Section::create();
         $sections = $section->getAllByDiscipline($discipline_id);
         $modelApps = Model_Application::create();
         $statuses = $modelApps->getAppsStatus($discipline_id, $udata->user_id);
         //== Model_Application::STATUS_FINISHED;
         $statusFinished = array_key_exists(Model_Application::STATUS_FINISHED, $statuses);
         $material = Model_Educational_Materials::create();
         $materials = $material->getAllByDiscipline($discipline_id, $statusFinished);
         $control_work = Model_ControlWork::create();
         $tests = $control_work->getTestsByDiscipline($discipline_id);
         $this->set('discipline', $discipline_data);
         $this->set('sections', $sections);
         $this->set('materials', $materials);
         $this->set('tests', $tests);
         $this->set('user_id', $udata->user_id);
         //print_r($materials);
         $this->render();
     } else {
         $this->flash('Данная дисциплина на данный Вам недоступна. Возможно Вы не полностью оплатили заявку по данной дисциплине или программе, содержащей данную дисциплину, либо вообще не подавали заявку на ее изучение.', $links->get('student.programs'), 5);
     }
 }
示例#11
0
 /**
  * Проверка прав на доступ к контроллеру/действию.
  * 
  * @param  array $handler Обработчик запроса.
  * @return boolean
  */
 protected function _checkPermissions(array $handler)
 {
     $path = $handler['controller'] . '/' . $handler['action'];
     /* Если путь не общедоступный */
     if (isset($this->_private_paths[$path])) {
         $user = Model_User::create();
         /* Проверяем, авторизован ли пользователь */
         if (false === ($udata = $user->getAuth())) {
             return false;
         }
         $udata = (object) $udata;
         $perms =& $this->_permissions[$udata->role];
         /* Проверяем, установлено ли разрешение на доступ */
         if (!isset($perms[$path])) {
             return false;
         }
     }
     return true;
 }
示例#12
0
文件: Test.php 项目: vyrus/remote-edu
 protected function _saveExamResults($test_id, $num_errors, $num_questions, $time, $passed)
 {
     $sql = '
             INSERT INTO ' . $this->_tables['examinations'] . '
             (user_id, test_id, time, num_errors, num_questions, passed,
             created)
             VALUES
             (:uid, :tid, :time, :num_errors, :num_questions, :passed, NOW())
         ';
     $user = Model_User::create();
     $udata = (object) $user->getAuth();
     $values = array('uid' => $udata->user_id, 'tid' => $test_id, 'time' => $time, 'num_errors' => $num_errors, 'num_questions' => $num_questions, 'passed' => $passed ? 'true' : 'false');
     $stmt = $this->prepare($sql);
     $stmt->execute($values);
     return $this->lastInsertId();
 }
示例#13
0
 /**
  * Возвращает список потенциальных получателей сообщений для текущего пользователя
  *
  * @return |array
  */
 public function getRecipientsList()
 {
     if ($this->userRole == Model_User::ROLE_STUDENT || $this->userRole == Model_User::ROLE_TEACHER) {
         $admin = array();
         $sql = 'SELECT `user_id` FROM `' . $this->_tables['users'] . '` WHERE `role`=\'admin\' LIMIT 1';
         $stmt = $this->prepare($sql);
         $stmt->execute();
         $adminId = $stmt->fetchColumn();
         $admin[$adminId] = array('recipient_name' => 'Администратор', 'recipient_description' => array('Администратор'));
     }
     $user = Model_User::create();
     switch ($this->userRole) {
         case Model_User::ROLE_STUDENT:
             $teachers = $user->getResponsibleTeacherInfoForStudent();
             $retval = $admin + $teachers;
             break;
         case Model_User::ROLE_TEACHER:
             $students = $user->getStudentsInfoForResponsibleTeacher();
             $retval = $admin + $students;
             break;
         case Model_User::ROLE_ADMIN:
             $teachers = $user->getAllTeachersResponsibleInfo();
             array_walk($teachers, function (&$value, $key) {
                 $value['role'] = Model_User::ROLE_TEACHER;
             });
             $students = $user->getStudentsList();
             array_walk($students, function (&$value, $key) {
                 $value['role'] = Model_User::ROLE_STUDENT;
                 $value['recipient_name'] = $value['surname'] . ' ' . $value['name'] . ' ' . $value['patronymic'];
                 //$value['recipient_name'] =  $recipient['surname'] . ' ' . mb_substr($recipient['name'], 0, 1, 'utf-8') . '. ' . mb_substr($recipient['pat    ronymic'], 0, 1, 'utf-8') . '.';
                 unset($value['name'], $value['surname'], $value['patronymic']);
             });
             $retval = $teachers + $students;
             //print_r($retval); die();
     }
     return $retval;
 }
示例#14
0
<?php

require_once './global.php';
Model_User::create("jfonseca", "Joao Fonseca", "*****@*****.**", "05/06/1992", "qwertz", 0, "thief", 0);
Model_User::create("jmorais", "Joao Morrais", "*****@*****.**", "05/06/1992", "qwertz", 0, "cook", 0);
示例#15
0
 public function action_change_app_status($params)
 {
     $links = Resources::getInstance()->links;
     $user = Model_User::create();
     $udata = $user->getAuth();
     $new_status = $params['new_status'];
     $app_id = $params['app_id'];
     $app = Model_Application::create();
     $app->setAppStatus($new_status, $app_id);
     /*
     if ('signed' == $new_status) {
         $programs = Model_Education_Programs::create();
         $model_checkpoint = Model_Checkpoint::create();
         $app_info = $app->getAppInfo($app_id);
         if ('discipline' == $app_info[0]['type']) {
             $first_section = $programs->getFirstSectionOfDiscipline($app_info[0]['object_id']);
             //echo '<pre>';var_dump($app_info );echo '</pre>'; die();
             $model_checkpoint->setCheckpointPass($app_info[0]['user_id'], $first_section['section_id']);
         }
         if ('program' == $app_info[0]['type']) {
             $first_discipline = $programs->getFirstDisciplineOfProgram($app_info[0]['object_id']);
             $first_section = $programs->getFirstSectionOfDiscipline($first_discipline[0]['discipline_id']);
             $model_checkpoint->setCheckpointPass($app_info[0]['user_id'], $first_section['section_id']);
         }
     }
     */
     /**
      * @TODO
      * Надо сделать проверку правильности изменения статуса на "окончена" через контрольную точку
      *
      */
     $map = Model_Application::getStatusMap();
     $this->flash('Заявка ' . $map[$new_status], $links->get('admin.applications'), 5);
     $this->render();
 }
示例#16
0
 public function action_ajax_get_exam_questions()
 {
     $request = $this->getRequest();
     $test_id = (int) $request->post['test_id'];
     $section_id = (int) $request->post['section_id'];
     $actual_code = $request->post['sec_code'];
     $user = Model_User::create();
     $udata = (object) $user->getAuth();
     $auth = Resources::getInstance()->auth;
     $expected_code = $auth->getTestSecurityCode($udata->user_id, $test_id, $section_id);
     if ($actual_code != $expected_code) {
         $response = array('result' => false, 'error' => 'Доступ к тесту закрыт');
         echo json_encode($response);
         return;
     }
     $test = Model_Test::create();
     $data = $test->get($test_id);
     try {
         $questions = $test->start($test_id, $section_id, $data['num_questions']);
     } catch (Model_Test_Exception $e) {
         $response = array('result' => false, 'error' => $e->getMessage());
         echo json_encode($response);
         return;
     }
     $questions = (object) $questions;
     $response = array('result' => true, 'questions' => $questions);
     echo json_encode($response);
 }
示例#17
0
 /**
  * Получение списка доступных материалов по идентификатору дисциплины.
  *
  * @param  int $discipline_id Идентификатор дисциплины.
  * @return array
  */
 public function getAllByDiscipline($discipline_id, $finished = false)
 {
     if (!$finished) {
         $sql = '
                 SELECT DISTINCT m.section, s.number, m.id, m.description, ms.state, m.type
                 FROM ' . $this->_tables['sections'] . ' s 
                 LEFT JOIN ' . $this->_tables['opened_sections_students'] . ' cs
                     ON s.section_id = cs.section_id
                 LEFT JOIN ' . $this->_tables['materials'] . ' m
                     ON s.section_id = m.section
                 LEFT JOIN ' . $this->_tables['materials_states'] . ' ms
                     ON m.id = ms.material_id AND ms.student_id = :student_id
                 WHERE
                     s.discipline_id = :discipline_id AND
                     cs.student_id = :student_id
                 ORDER BY m.number ASC
             ';
     } else {
         $sql = '
                 SELECT DISTINCT m.section, s.number, m.id, m.description, ms.state, m.type
                 FROM ' . $this->_tables['sections'] . ' s 
                 LEFT JOIN ' . $this->_tables['materials'] . ' m
                     ON s.section_id = m.section
                 LEFT JOIN ' . $this->_tables['materials_states'] . ' ms
                     ON m.id = ms.material_id AND ms.student_id = :student_id
                 WHERE
                     s.discipline_id = :discipline_id
                 ORDER BY m.number ASC
             ';
     }
     //echo $sql; die();
     $udata = Model_User::create()->getAuth();
     if ($udata) {
         $params = array(':discipline_id' => $discipline_id, ':student_id' => $udata['user_id']);
         $stmt = $this->prepare($sql);
         //var_dump($stmt);
         $stmt->execute($params);
         $materials = $stmt->fetchAll(Db_Pdo::FETCH_GROUP | Db_Pdo::FETCH_ASSOC);
         return $materials;
     } else {
         return false;
     }
 }