Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аникин.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
763.91 Кб
Скачать

Список использованных источников (литературы)

  1. Wikipedia [Электронный ресурс]: Объектно ориентированное программирование - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование.

  2. Wikipedia [Электронный ресурс]: Прототипное программирование - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/Прототипное_программирование.

  3. Wikipedia [Электронный ресурс]: Язык программирования PHP - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/PHP.

  4. Wikipedia [Электронный ресурс]: Язык программирования JavaScript - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/JavaScript.

  5. Wikipedia [Электронный ресурс]: Система управления базами данных PostgreSQL - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/PostgreSQL.

  6. Wikipedia [Электронный ресурс]: Система управления базами данных MySQL - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/MySQL.

  7. Wikipedia [Электронный ресурс]: Язык программирования Си-шарп - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/C#.

  8. Wikipedia [Электронный ресурс]: Визуальное моделирования Microsoft Visio - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/Microsoft_Visio.

  9. Wikipedia [Электронный ресурс]: Методология SADT - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/SADT.

  10. Wikipedia [Электронный ресурс]: Стандарт функционального моделирования IDEF0 - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/IDEF0.

  11. Wikipedia [Электронный ресурс]: Архитектура приложения Model View Controller - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/MVC.

  12. Zend Framework справочник [Электронный ресурс]: Класс Zend_Application - Режим доступа: www. URL: http://framework.zend.com/manual/ru/zend.application.html.

  13. Zend Framework справочник [Электронный ресурс]: Маршрутизация и Zend_Router - Режим доступа: www. URL: http://framework.zend.com/manual/en/zend.controller.router.html.

  14. Викрам В. Zend Framework. Разработка веб-приложений на

PHP (Zend Framework: A Beginner's Guide), 2011.

  1. Мэтт З. PHP. Объекты, шаблоны и методики программирования (PHP: Objects, Patterns, and Practice), 2011

Приложение а

Приложение б

Приложение в

<?php

class ManageController extends Zend_Controller_Action

{

public function init()

{

if ($this->_request->isXmlHttpRequest()) {

$this->_helper->layout->disableLayout();

$this->_helper->viewRenderer->setNoRender(TRUE);

}

}

public function indexAction()

{

$this->_helper->redirector('constructor', 'manage');

}

public function deleteAction()

{

$request = $this->_request->getParams();

if ($this->_request->isXmlHttpRequest()) {

$error = false;

try

{

$test = new Models_DbTable_Tests();

$answers = new Models_DbTable_Answers();

$quests = new Models_DbTable_Questions();

$test->deleteData(array('uid = ?' => $request['id']));

$answers->deleteData(array('tid = ?' => $request['id']));

$quests->deleteData(array('pid = ?' => $request['id']));

} catch (Exception $e)

{

print Zend_Json::encode(array('alert-error', $e->getMessage()));

$error = true;

}

if (!$error) print Zend_Json::encode(array('alert-success', 'Тест удален'));

}

}

public function editAction()

{

$request = $this->_request->getParams();

$answers = new Models_DbTable_Answers();

$test = new Models_DbTable_Tests();

$quests = new Models_DbTable_Questions();

if (!empty($request['id'])) {

$this->view->edit = true;

$tests = $test->fetchRow($test->select()->where('id = ?', $request['id']));

$this->view->id = $request['id'];

$this->view->name = $tests->name;

$this->view->uid = $tests->uid;

$this->view->time = (int)$tests->time;

$this->view->description = $tests->description;

$questions = $quests->fetchAll($quests->select()->where('pid = ?', $tests->uid));

$this->view->questions = $questions;

$answers_view = $answers->fetchAll($answers->select()->where('tid = ?', $tests->uid));

$this->view->answers = $answers_view;

if ($this->_request->isXmlHttpRequest()) {

$data = new Models_Constructor();

$data = $data->unArray($request['storage']);

$error = false;

try {

for ($i = 0; $i < sizeof($data[0]); $i++)

{

$test_uid = $data[0][$i]['uid'];

$test->updateData($data[0][$i], 'uid = ?', $test_uid);

}

for ($i = 0; $i < sizeof($data[1]); $i++)

{

$quests->updateData($data[1][$i], array('pid = ?' => $data[1][$i]['pid'], 'qid = ?' => $data[1][$i]['qid']));

}

$answers->deleteData(array('tid = ?' => $test_uid));

for ($i = 0; $i < sizeof($data[2]); $i++)

{

$answers->insertData($data[2][$i]);

}

} catch (Exception $e) {

print Zend_Json::encode(array('alert-error', $e->getMessage()));

$error = true;

}

if (!$error) print Zend_Json::encode(array('alert-success', 'Сохранено'));

}

} else {

if ($this->getRequest()->isPost()) {

$q = $test->fetchAll($test->select()->where('name LIKE ?', '%' . $request['query'] . '%'));

$this->view->query = $request['query'];

} else {

$q = $test->fetchAll();

$this->view->query = '';

}

$this->view->questions = $q;

}

}

public function rollAction()

{

$tests = new Models_DbTable_Tests();

$request = $this->_request->getParams();

if ($this->getRequest()->isPost()) {

$q = $tests->fetchAll($tests->select()->where('name LIKE ?', '%' . $request['query'] . '%'));

$this->view->query = $request['query'];

} else {

$q = $tests->fetchAll();

$this->view->query = '';

}

$this->view->questions = $q;

}

public function importAction()

{

$request = $this->getRequest();

$form = new Forms_import();

$this->view->form = $form;

$answers = new Models_DbTable_Answers();

$test = new Models_DbTable_Tests();

$quests = new Models_DbTable_Questions();

if ($request->isPost()) {

if ($form->isValid($request->getPost())) {

$file = $form->data->getFileInfo();

$ext = split("[/\\.]", $file['data']['name']);

$newName = 'newname.' . $ext[count($ext) - 1];

$form->data->addFilter('Rename', realpath(dirname('.')) .

DIRECTORY_SEPARATOR .

'upload' .

DIRECTORY_SEPARATOR .

$newName);

$text = new Models_Import();

$form->data->receive();

$data = explode(';', $text->docx2text('upload/' . $newName));

$i = 0;

foreach ($data as $index => $value) {

if ($index == 0) {

$array[0]['settings']['uid'] = substr(md5($value), 0, 5);

$array[0]['settings']['name'] = $value;

$array[0]['settings']['time'] = 60;

$array[0]['settings']['description'] = $value;

continue;

}

if ($value{0} == '=') {

$array[0]['questions'][$i]['question'] = substr($value, 1);

$array[0]['questions'][$i]['type'] = 'radio';

$array[0]['questions'][$i]['level'] = 1;

$i++;

$a = 0;

continue;

}

if ($index == sizeof($data) - 1) {

continue;

}

$array[0]['questions'][$i - 1]['answers'][$a]['value1'] = 'false';

$array[0]['questions'][$i - 1]['answers'][$a]['value2'] = $value;

$a++;

}

$con = new Models_Constructor();

$con = $con->unArray($array);

$error = false;

try {

for ($i = 0; $i < sizeof($con[0]); $i++)

{

$test->insertData($con[0][$i]);

}

for ($i = 0; $i < sizeof($con[1]); $i++)

{

$quests->insertData($con[1][$i]);

}

for ($i = 0; $i < sizeof($con[2]); $i++)

{

$answers->insertData($con[2][$i]);

}

} catch (Exception $e) {

print '<script>alert(' . $e->getMessage() . ')</script>';

$error = true;

}

if (!$error) {

print '<script>alert("Упешно импортированно")</script>';

}

unlink('upload/' . $newName);

}

}

}

public function reportAction()

{

$test = new Models_DbTable_Tests();

$answers = new Models_DbTable_Answers();

$quests = new Models_DbTable_Questions();

$request = $this->_request->getParams();

if ($this->getRequest()->isPost()) {

$q = $test->fetchAll($test->select()->where('name LIKE ?', '%' . $request['query'] . '%'));

$this->view->query = $request['query'];

} else {

$q = $test->fetchAll();

$this->view->query = '';

}

$this->view->questions = $q;

$w = new Models_Word("temp.docx", '/../template/');

$num = 1;

foreach ($test->fetchAll() as $t) {

if ($t->id == $request['id']) {

$w->assign($t->name);

$w->assign($t->description);

$pid = $t->uid;

}

}

foreach ($quests->fetchAll() as $q) {

if ($q->pid == $pid) {

$w->assign(($num++) . '). ' . $q->question);

foreach ($answers->fetchAll() as $a) {

if (($a->tid == $pid) and ($a->qid == $q->qid)) {

$w->assign(' - ' . $a->value2);

}

}

}

}

$w->create();

$this->view->layout()->disableLayout();

$this->_helper->viewRenderer->setNoRender(true);

$file = ("temp.docx");

header("Content-Type: application/octet-stream");

header("Accept-Ranges: bytes");

header("Content-Length: " . filesize($file));

header("Content-Disposition: attachment; filename=Тестирование" . $select . ".docx");

readfile("temp.docx");

}

}

public function constructorAction()

{

if ($this->_request->isXmlHttpRequest()) {

$answers = new Models_DbTable_Answers();

$test = new Models_DbTable_Tests();

$quests = new Models_DbTable_Questions();

$request = $this->_request->getParams();

$data = new Models_Constructor();

try {

$data = $data->unArray($request['storage']);

} catch (Exception $e) {

print Zend_Json::encode(array('alert-error', $e->getMessage()));

$error = true;

}

$error = false;

try {

if(is_array($data))

{

for ($i = 0; $i < sizeof($data[0]); $i++)

{

$test->insertData($data[0][$i]);

}

for ($i = 0; $i < sizeof($data[1]); $i++)

{

$quests->insertData($data[1][$i]);

}

for ($i = 0; $i < sizeof($data[2]); $i++)

{

$answers->insertData($data[2][$i]);

}

}

} catch (Exception $e) {

print Zend_Json::encode(array('alert-error', $e->getMessage()));

$error = true;

}

if (!$error && is_array($data)) print Zend_Json::encode(array('alert-success', 'Сохранено'));

}

$form = new Forms_Constructor();

$this->view->form = $form;

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]