From d77d8abeb3d0d453d180adc4c01a10d28dadb99f Mon Sep 17 00:00:00 2001 From: Alexander Yakovlev Date: Fri, 5 Aug 2011 14:39:38 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=D0=BD=D0=B8=D1=82=D1=8C=D1=81=D1=8F=20=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=D1=81=D1=8F=20(=D1=85=D0=BE=D1=82?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B5=D1=89=D1=91=20=D0=B3=D0=BB=D1=8E=D1=87=D0=B8=D1=82).?= =?UTF-8?q?=20=D0=95=D1=81=D1=82=D1=8C=20=D0=BD=D0=B5=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B7=D0=B0=D0=B3=D0=BB=D1=83=D1=88?= =?UTF-8?q?=D0=B5=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/bootstrap.php | 2 +- application/classes/controller/copyright.php | 8 ++++ application/classes/controller/games.php | 17 ++++++++ application/classes/controller/navigation.php | 2 +- application/classes/controller/register.php | 20 +++++---- application/classes/model/game.php | 14 +++++++ application/classes/model/rating.php | 12 ++++++ application/classes/model/user.php | 42 +++++++++++++++++++ application/views/copyright.php | 23 ++++++++++ application/views/games/add.php | 13 ++++++ application/views/navigation/user.php | 1 + application/views/registration/opened.php | 2 +- 12 files changed, 146 insertions(+), 10 deletions(-) create mode 100644 application/classes/controller/copyright.php create mode 100644 application/classes/controller/games.php create mode 100644 application/classes/model/game.php create mode 100644 application/classes/model/rating.php create mode 100644 application/classes/model/user.php create mode 100644 application/views/copyright.php create mode 100644 application/views/games/add.php diff --git a/application/bootstrap.php b/application/bootstrap.php index cff5b3a..2c6404e 100644 --- a/application/bootstrap.php +++ b/application/bootstrap.php @@ -115,6 +115,6 @@ Kohana::modules(array( */ Route::set('default', '((/(/)))') ->defaults(array( - 'controller' => 'login', + 'controller' => 'copyright', 'action' => 'view', )); diff --git a/application/classes/controller/copyright.php b/application/classes/controller/copyright.php new file mode 100644 index 0000000..99b275a --- /dev/null +++ b/application/classes/controller/copyright.php @@ -0,0 +1,8 @@ +template->year = date("Y",strtotime("-70 years", mktime(0, 0, 0, 1, 1, date("Y")))); + } +} diff --git a/application/classes/controller/games.php b/application/classes/controller/games.php new file mode 100644 index 0000000..f426629 --- /dev/null +++ b/application/classes/controller/games.php @@ -0,0 +1,17 @@ +template = 'games/add'; + if ($_POST){ + $user = ORM::factory('user'); + if (Auth::instance()->login('author')){ + $game = ORM::factory('game'); + $game->values($this->request->post()); + $game->create(); + } + else $this->template->error = "Недостаточно прав для добавления игры. Обратитесь за помощью к администратору сервиса."; + } + } +} diff --git a/application/classes/controller/navigation.php b/application/classes/controller/navigation.php index 68a3cfc..c4e11e3 100644 --- a/application/classes/controller/navigation.php +++ b/application/classes/controller/navigation.php @@ -5,7 +5,7 @@ class Controller_Navigation extends Controller_Template { public function action_actions() { $this->template = new View('navigation/actions'); $login_or_logout = HTML::anchor('login', 'Вход'); - if (Kohana::config('common.vote_opens') > new DateTime('now')) $login_or_logout .= "
  • ".HTML::anchor('register', 'Регистрация'); + if (Kohana::config('common.vote_opens') > date("Y-m-d")) $login_or_logout .= "
  • ".HTML::anchor('register', 'Регистрация'); $this->template->login_or_logout = $login_or_logout; if (Auth::instance()->logged_in()){ $this->template->login_or_logout = HTML::anchor('logout', 'Выход'); diff --git a/application/classes/controller/register.php b/application/classes/controller/register.php index 60ef7a7..bca8df6 100644 --- a/application/classes/controller/register.php +++ b/application/classes/controller/register.php @@ -4,18 +4,24 @@ class Controller_Register extends Controller_Template { public $template = 'registration/opened'; public function action_view() { if(Auth::instance()->logged_in()) return $this->request->redirect(''); - if (Kohana::config('common.vote_opens') <= new DateTime('now')) $this->$template = 'registration/closed'; + if (Kohana::config('common.vote_opens') <= date("Y-m-d")) $this->template = 'registration/closed'; if ($_POST){ - if (Kohana::config('common.vote_opens') <= new DateTime('now')){ + if (Kohana::config('common.vote_opens') <= date("Y-m-d")){ $this->template->error = "Регистрация закрыта."; return; } - $user = ORM::factory('user'); - $status = Auth::instance()->login($_POST['login'], $_POST['password']); - if ($status){ - return $this->request->redirect(''); + $data = arr::extract($_POST, array('username', 'password', 'email', 'password_confirm')); + $user = ORM::factory('user')->values($data); + if ($user->check()){ + $user->create(); + $login_role = new Model_Role(array('name' =>'login')); + $author_role = new Model_Role(array('name' =>'author')); + $user->add('roles',$login_role); + $user->add('roles',$author_role); + Auth::instance()->login($data['login'], $data['password']); + $this->request->redirect(''); } - else $this->template->error = "Ошибка регистрации."; + else $this->template->error = $post->errors('register');//"Ошибка валидации."; } } } diff --git a/application/classes/model/game.php b/application/classes/model/game.php new file mode 100644 index 0000000..ace6e2c --- /dev/null +++ b/application/classes/model/game.php @@ -0,0 +1,14 @@ + array('data_type' => 'int', 'is_nullable' => FALSE), + 'name' => array('data_type' => 'string', 'is_nullable' => FALSE), + 'description' => array('data_type' => 'mediumtext', 'is_nullable' => FALSE), + 'file' => array('data_type' => 'file', 'is_nullable' => FALSE), + 'group' => array('data_type' => 'int', 'is_nullable' => TRUE), + ); + protected $has_many = array( + 'author' => array('model'=>'user') + ); +} diff --git a/application/classes/model/rating.php b/application/classes/model/rating.php new file mode 100644 index 0000000..0f3810c --- /dev/null +++ b/application/classes/model/rating.php @@ -0,0 +1,12 @@ + array('data_type' => 'int', 'is_nullable' => FALSE), + 'value' => array('data_type' => 'int', 'is_nullable' => FALSE), + ); + protected $has_many = array( + 'author' => array('model'=>'user'), + 'game' => array('model'=>'game'), + ); +} diff --git a/application/classes/model/user.php b/application/classes/model/user.php new file mode 100644 index 0000000..c134ca6 --- /dev/null +++ b/application/classes/model/user.php @@ -0,0 +1,42 @@ + array( + 'not_empty' => NULL, + 'min_length' => array(4), + 'max_length' => array(32), + 'regex' => array('/^[-\pL\pN_.]++$/uD') + ), + 'password' => array( + 'not_empty' => NULL, + 'min_length' => array(5), + 'max_length' => array(42) + ), + 'email' => array( + 'not_empty' => NULL, + 'min_length' => array(5), + 'max_length' => array(127), + 'validate::email' => NULL + ) + ); + + protected $_callbacks = array( + 'username' => array('username_available'), + 'email' => array('email_available') + ); + + public function validate_create(&$array){ + $array = Validate::factory($array) + ->filter(TRUE, 'trim') + ->rules('username', $this->_rules['username']) + ->rules('password', $this->_rules['password']) + ->rules('email', $this->_rules['email']); + + foreach ($this->_callbacks as $field => $callbacks){ + foreach ($callbacks as $callback){ + $array->callback($field, array($this, $callback)); + } + } + return $array; + } +} diff --git a/application/views/copyright.php b/application/views/copyright.php new file mode 100644 index 0000000..59ab553 --- /dev/null +++ b/application/views/copyright.php @@ -0,0 +1,23 @@ +post('title',"Краткая справка по вопросам авторского права")->post('styles','main.css')->execute() ?> + +

    Краткая справка по вопросам авторского права

    + +

    Авторские права истекают через 70 лет после смерти автора. В общественном достоянии находятся произведения, автор которых умер до 1 января года или произведения, опубликованные анонимно до 1 января года.

    + +

    Кроме того, если автор умер до 1 января 1943 года или произведение опубликовано анонимно до 1 января 1943 года, то произведение находится в общественном достоянии, при условии, что:.

    + +
    1. автор не работал во время ВОВ и не участвовал в ней
    2. +
    3. автор не был реабилитирован после репрессирования
    4. +
    5. произведения были опубликованы при жизни
    6. +
    + +

    Просим вас проверить свои игры перед отправкой. К объектам авторского права относятся не только литературные произведения, а также картинки и музыка.

    + +

    Общественное достояние — это классика. Авторы давно умерли, и если их творение живёт — это хорошо. Иначе авторское право всё ещё действительно и находится у соответствующих правообладателей. +Которые и должны решать, можно ли использовать эти работы в ваших играх.

    + +

    В качестве альтернативы можно посмотреть в сторону работ, лицензированных по Creative Commons.

    + +

    Присуждать призы за нелегальное использование чужих работ — это нечестно. Давайте уважать других авторов!

    + +execute() ?> diff --git a/application/views/games/add.php b/application/views/games/add.php new file mode 100644 index 0000000..097a161 --- /dev/null +++ b/application/views/games/add.php @@ -0,0 +1,13 @@ +post('title',"Добавить игру")->post('styles','main.css')->execute() ?> + +
    +
    +

    Добавление игры

    + + 'multipart/form-data')) ?> +

    +

    +

    +

    + +execute() ?> diff --git a/application/views/navigation/user.php b/application/views/navigation/user.php index e69de29..fb42e24 100644 --- a/application/views/navigation/user.php +++ b/application/views/navigation/user.php @@ -0,0 +1 @@ +
  • diff --git a/application/views/registration/opened.php b/application/views/registration/opened.php index 8a4105f..55dc545 100644 --- a/application/views/registration/opened.php +++ b/application/views/registration/opened.php @@ -4,7 +4,7 @@

    Введите логин, пароль и e-mail.

    -

    +