/** * Добавление нового платежа */ 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'))); }
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 __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(); }
/** * Закрывает доступ к разделу. */ 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); }
/** * Сборка и вывод шаблона. Если шаблон не указан, автоматически * выбирается соответствующий контроллеру/действию. Значения переменных, * переданных в этот метод имеют приоритет над значениями, установленными * в методе 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(); }
/** * Отображение доступных учебных материалов. */ 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); } }
<?php /* $Id$ */ require_once '../private/init.php'; /* Инициализируем объект запроса */ $request = Http_Request::create(); /* Инициализируем диспетчер */ $dispatcher = Resources::getInstance()->dispatcher; /* Обрабатываем запрос */ $dispatcher->dispatch($request);
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'); }
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); } }
/** * Удаление заявки из базы данных. * * @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); }
public function __construct() { parent::__construct(); //$this->storage = new Storage ('../private/contracts'); $this->storage = Resources::getInstance()->contracts_storage; }
/** * Сохранение порядка разделов(секций) */ 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_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); }
/** * Установка нового пароля для пользователя. * * @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); }
/** * Отправка сообщения для восстановления пароля. * * @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); }
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; }
/** * Инициализация хранилища данных. * * @return Auth */ public function init() { /* Инициализируем сессию */ $this->_session = Resources::getInstance()->session; return $this; }
/** * Метод-конструктор класса. * * @return void. */ public function __construct() { /* Получаем объект для работы с БД */ $this->_db = Resources::getInstance()->db; }
/** * Определяет с помощью роутера обработчик и пытается вызвать его. * * @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; } }