MyWackoSite: NsuTs/Вам запрещён доступDocumentation/devguide/virtualtours ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

Виртуальные туры

Требования

  1. В настройках тура у администратора должна быть галочка для отметки, что тур виртуальный.
  2. У виртуального тура в настройках есть его длительность, по окончании сдавать решения нельзя.
  3. Для конкретного участника виртуальный тур начинается после нажатия кнопки «Начать виртуальный тур».
  4. Нельзя начинать один и тот же виртуальный тур для одного участника до завершения предыдущей сессии виртуального тура.
  5. Рейтинг виртуального тура должен моделировать настоящие соревноваания, то есть попытки участников, решаваших тур ранее, должны отображаться не все сразу, а по мере прохождения времени тура у решающего участника.
  6. Различные сессии вирутального тура у одного участника в рейтинге нужно различать, например, добавляя временную метку начала тура (дата+время).

Вопрос для обсуждения

Для официальных туров нужно сохранять историю: рейтинг, очередь и пр.
Сейчас такие олимпиады и туры просто остаются открытыми для просмотра зарегистрованных участников, а для дорешивания заводятся новые туры в тренировках. Но для имитации соревнований в дорешивании такого тура в режиме виртуального нужно отображать и посылки официального рейтинга.
То есть нужно либо уметь переносить рейтинг в новый тур, либо открывать для дорешивания официальные туры с заведением новой вкладки «Виртуальный рейтинг».

Вопросы


1. Должны ли разные участники одного виртуального тура видеть друг друга в рейтинге?
2. В частности, должен ли участник видеть свои решения из других сессий этого виртуального тура?
3. Может ли участник самостоятельно начинать новые сессии виртуального тура или ему нужна определённая привилегия или администратор должен каждый раз добавлять участника в тур?

Предложения / Варианты реализации

A. Если 1 – да, то по-моему таблица virtualtours должна иметь поля id, tourid (связь с tour.id), duration (длительность тура). Создать таблицу virtualusers с полями id, userid (связь с users.userid), virtualtourid (связь с virtualtours.id), start_time (время начала участия в туре).

Решение

После обсуждения пришли ко мнению, что ответы на вопросы: (1. – да, 2. – да, 3. – может сам).
Вариант реализации будет похож на предложение А.

Необходимые изменения


В таблицы submits И timeshift добавить поле virtualuser типа int(11) может быть NULL, значения по умолчанию NULL.
Таблица virtualtour должна иметь следующие поля:



имя тип NULL? default
id int(11) Нет
tour int(11) Нет
duration int(5) Да NULL
Создать следущую таблицу virtualusers:



id int(11) Нет
user int(11) Нет
virtualtour int(11) Нет
start_time datetime Нет

Для создания SQL таблиц можно выполнить следущий код:

ALTER TABLE `submits` ADD `virtualuser` INT( 11 ) NULL DEFAULT NULL AFTER `user` ;
ALTER TABLE `timeshift` ADD `virtualuser` INT( 11 ) NULL DEFAULT NULL AFTER `user` ;

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE IF NOT EXISTS `virtualuser` (
`id` int(11) NOT NULL auto_increment,
`user` int(11) NOT NULL,
`virtualtour` int(11) NOT NULL,
`start_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `user` (`user`),
KEY `virtualtour` (`virtualtour`)
) ENGINE=Innodb DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

DROP TABLE IF EXISTS `virtualtour`;
CREATE TABLE IF NOT EXISTS `virtualtour` (
`id` int(11) NOT NULL auto_increment,
`tour` int(11) NOT NULL,
`duration` int(5) default NULL COMMENT 'in minutes',
PRIMARY KEY (`id`),
KEY `tour` (`tour`)
) ENGINE=Innodb DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]