Exemplo n.º 1
0
 /**
  * Добавление нового платежа
  */
 public function action_add(array $params = array())
 {
     $links = Resources::getInstance()->links;
     $request = $this->getRequest();
     if (empty($params)) {
         $this->flash('Не указан идентификатор заявки', $links->get('admin.applications', array('sort_field' => 'fio', 'sort_direction' => 'asc')));
     }
     $app_id = intval(array_shift($params));
     $opts = array('app_id' => $app_id);
     $action = $links->get('payments.add', $opts);
     $form = Form_Payment_Add::create($action);
     $this->set('form', $form);
     $method = $form->method();
     if (empty($request->{$method})) {
         $this->render();
     }
     if (!$form->validate($request)) {
         $this->render();
     }
     $payment = Model_Payment::create();
     $amount = $form->amount->value;
     if (!$payment->add($amount, $app_id)) {
         $msg = 'Не удалось добавить платёж';
     } else {
         $msg = 'Платёж успешно добавлен';
     }
     $this->flash($msg, $links->get('admin.applications', array('sort_field' => 'fio', 'sort_direction' => 'asc')));
 }
Exemplo n.º 2
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);
     }
 }
Exemplo n.º 3
0
 public function __construct()
 {
     parent::__construct();
     //$this->storage = new Storage ('../private/materials');
     $this->storage = Resources::getInstance()->materials_storage;
     $this->attachObserver(Model_ControlWork::create());
     $this->_checkRightsObject = Model_CheckRigths::create();
 }
Exemplo n.º 4
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);
 }
Exemplo n.º 5
0
 /**
  * Сборка и вывод шаблона. Если шаблон не указан, автоматически
  * выбирается соответствующий контроллеру/действию. Значения переменных,
  * переданных в этот метод имеют приоритет над значениями, установленными
  * в методе set().
  *
  * @see self::set()
  *
  * @param  string $template Название шаблона.
  * @param  array  $vars     Переменные для шаблона.
  * @param  string $layout   Название макета.
  * @return void
  */
 public function render($template = null, array $vars = array(), $layout = 'default')
 {
     /* Если шаблон не указан, то... */
     if (null === $template) {
         /* определяем его автоматически на основе данных от роутера */
         $handler = $this->getRequest()->_router['handler'];
         $template = sprintf('%s/%s', $handler['controller'], $handler['action']);
     }
     /* Объединяем переменные для шаблона с заданными через set() */
     $view_vars = array_merge($this->_view_vars, $vars);
     /* Настраиваем объект работы с шаблонами и выводим страницу */
     $view = Resources::getInstance()->view;
     $links = Resources::getInstance()->links;
     $view->setLayout($layout)->setTemplate($template)->set('_request', $this->_request)->set('_links', $links)->setVars($view_vars)->render();
 }
Exemplo n.º 6
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);
     }
 }
Exemplo n.º 7
0
<?php

/* $Id$ */
require_once '../private/init.php';
/* Инициализируем объект запроса */
$request = Http_Request::create();
/* Инициализируем диспетчер */
$dispatcher = Resources::getInstance()->dispatcher;
/* Обрабатываем запрос */
$dispatcher->dispatch($request);
Exemplo n.º 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');
 }
Exemplo n.º 9
0
 public function action_attachment($params)
 {
     $messages = new Model_Messages();
     if (!$messages->getAttachment($params['attachment_id'])) {
         $links = Resources::getInstance()->links;
         $this->flash('Запрошено несуществующее вложение или у Вас недостаточно прав для загрузки вложения', $links->get('messages.inbox'), 3);
     }
 }
Exemplo n.º 10
0
 /**
  * Удаление заявки из базы данных.
  *
  * @todo Удалять ли платежи из базы при удалении заявки?
  * Зачем нукжно вообще удалять заявки??? Какому бизнес-процессу это соответствует?
  */
 public function action_delete($params)
 {
     $links = Resources::getInstance()->links;
     //$return_url = $links->get('admin.applications',array ('sort_field' => 'fio', 'sort_direction' => 'asc'));
     //$return_url = $links->get('admin.applications',array ('sort_field' => $params['sort_field'], 'sort_direction' => $params['sort_direction']));
     $return_url = $links->get('admin.applications');
     if (empty($params)) {
         $this->flash('Не указан номер заявки', $return_url);
     }
     $app_id = intval(array_shift($params));
     $app = Model_Application::create();
     if (!$app->delete($app_id)) {
         $msg = 'Не удалось удалить заявку с номером ' . $app_id;
     } else {
         $msg = 'Заявка успешно удалена';
     }
     $this->flash($msg, $return_url);
 }
Exemplo n.º 11
0
 public function __construct()
 {
     parent::__construct();
     //$this->storage = new Storage ('../private/contracts');
     $this->storage = Resources::getInstance()->contracts_storage;
 }
Exemplo n.º 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);
 }
Exemplo n.º 13
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);
 }
Exemplo n.º 14
0
 /**
  * Установка нового пароля для пользователя.
  *
  * @param int    $user_id Идентификатор пользователя.
  * @param string $passwd  Пароль.
  * @return boolean
  */
 public function setPasswd($user_id, $passwd)
 {
     $sql = '
             UPDATE ' . $this->_tables['users'] . '
             SET passwd = :passwd
             WHERE user_id = :uid
             LIMIT 1
         ';
     $stmt = $this->prepare($sql);
     /* Вычисляем хэш пароля */
     $auth = Resources::getInstance()->auth;
     $passwd = $auth->getPasswdHash($passwd);
     $values = array(':uid' => $user_id, ':passwd' => $passwd);
     return $stmt->execute($values);
 }
Exemplo n.º 15
0
 /**
  * Отправка сообщения для восстановления пароля.
  *
  * @param  int    $id    Идентификатор пользователя.
  * @param  string $email Email пользователя.
  * @param  string $code  Код активации.
  * @return
  */
 public function sendPasswdRestore($id, $email, $code)
 {
     /* Создаём ссылку для активации */
     $links = Resources::getInstance()->links;
     $link = $links->getSiteUrl() . $links->get('users.reset-passwd', array('user_id' => $id, 'code' => $code));
     /* Получаем заголовок и текст письма */
     $subject = $this->_getSubject(self::TYPE_RESTORE_PASSWD);
     $params = array($link);
     $message = $this->_getMessage(self::TYPE_RESTORE_PASSWD, $params);
     return $this->_send($email, $subject, $message);
 }
Exemplo n.º 16
0
 public function getAttachment($attachmentId)
 {
     $sql = 'SELECT `message`,`original_filename`,`filename`,`mime_type`
             FROM ' . $this->_tables['message_attachment'] . '
             WHERE `id`=:attachment_id';
     $params = array(':attachment_id' => $attachmentId);
     $stmt = $this->prepare($sql);
     $stmt->execute($params);
     $attachment = $stmt->fetch(Db_Pdo::FETCH_ASSOC);
     if ($attachment === FALSE) {
         return FALSE;
     }
     $sql = 'SELECT `to`
             FROM ' . $this->_tables['message'] . '
             WHERE `message_id`=:message_id';
     $params = array(':message_id' => $attachment['message']);
     $stmt = $this->prepare($sql);
     $stmt->execute($params);
     $message = $stmt->fetchColumn();
     $udata = (object) Model_User::create()->getAuth();
     if ($udata->user_id != $message) {
         return FALSE;
     }
     $storage = Resources::getInstance()->attachments_storage;
     header('Content-Disposition: attachment; filename="' . $attachment['original_filename']) . '"';
     header('Content-Type: ' . $attachment['mime_type']);
     echo $storage->getFileContent($attachment['filename']);
     return TRUE;
 }
Exemplo n.º 17
0
 /**
  * Инициализация хранилища данных.
  *
  * @return Auth
  */
 public function init()
 {
     /* Инициализируем сессию */
     $this->_session = Resources::getInstance()->session;
     return $this;
 }
Exemplo n.º 18
0
 /**
  * Метод-конструктор класса.
  *
  * @return void.
  */
 public function __construct()
 {
     /* Получаем объект для работы с БД */
     $this->_db = Resources::getInstance()->db;
 }
Exemplo n.º 19
0
 /**
  * Определяет с помощью роутера обработчик и пытается вызвать его.
  * 
  * @param  $request Http_Request Объект запроса.
  * @return boolean
  */
 public function dispatch(Http_Request $request)
 {
     /* Получаем объект роутера */
     $router = Resources::getInstance()->router;
     $links = Resources::getInstance()->links;
     $base_path = $links->getBasePath();
     /* Если не получается определить обработчик, то генерируем ошибку */
     if (false === ($handler = $router->dispatch($request, $base_path))) {
         $msg = 'Контроллер/действие не определены';
         $this->_raise_error(404, $msg, $request);
         return false;
     }
     /* Проверям права на доступ */
     if (false === $this->_checkPermissions($handler)) {
         $msg = 'Доступ запрещён';
         $this->_raise_error(403, $msg, $request);
     }
     /* Пытаемся вызывать обработчик и обрабатываем возможные ошибки */
     if (self::ERROR_SUCCESS === ($r = $this->_call($handler, $request))) {
         return true;
     } elseif (self::ERROR_CONTROLLER_NOT_FOUND === $r->error_code) {
         $msg = sprintf('Не найден класс контроллера "%s"', $r->class);
         $this->_raise_error(404, $msg, $request);
         return false;
     } elseif (self::ERROR_ACTION_NOT_FOUND === $r->error_code) {
         $msg = 'Не найден метод "%s" в контроллере "%s"';
         $msg = sprintf($msg, $r->method, $r->class);
         $this->_raise_error(404, $msg, $request);
         return false;
     }
 }