Example #1
0
 /**
  * Действие для отображения
  */
 public function action_index($season_id)
 {
     // Извлекаем из БД таблицу для главной
     $data['table'] = \Model_Table::find('first', array('related' => 'season', 'where' => array(array('season_id', '=', $season_id))));
     if ($data['table']) {
         $data['table']->results = json_decode($data['table']->results_json);
         // Сортируем по очкам
         usort($data['table']->results, array('Main\\Controller_Table', 'cmp'));
         // Извлекаем команды сезона для получения их картинок
         $season_teams = \Model_Team::find('all', array('related' => 'seasons', 'where' => array(array('seasons.id', '=', $season_id))));
         foreach ($data['table']->results as $key => $result_item) {
             foreach ($season_teams as $team) {
                 if ($result_item->id == $team->id) {
                     $data['table']->results[$key]->logo_uri = $team->logo_uri;
                     break;
                 }
             }
         }
     }
     $this->template->content = \View::forge('table/index', $data, FALSE);
 }
Example #2
0
 /**
  * Действие дял редактирования сезона (соревнования)
  * 
  * @param int $id
  */
 public function action_edit($id = null)
 {
     is_null($id) and \Response::redirect_back('admin/competitions/seasons');
     if (!($season = \Model_Season::find($id, array('related' => array('teams'))))) {
         \Session::set_flash('error', 'Could not find Season #' . $id);
         \Response::redirect_back('admin/competitions/seasons');
     }
     $val = \Model_Season::validate('edit');
     if ($val->run()) {
         $season->value = \Input::post('value');
         unset($season->teams);
         if (\Input::post('teams')) {
             foreach (\Input::post('teams') as $item) {
                 $season->teams[] = \Model_Team::find($item);
             }
         }
         if ($season->has_table == 1 and \Input::post('has_table') == 0) {
             $table = \Model_Table::find('first', array('where' => array(array('season_id', '=', $season->id))));
             if ($table) {
                 $table->delete();
             }
             $season->has_table = 0;
         }
         // Если нужно также создать таблицу
         if ($season->has_table == 0 and \Input::post('has_table') == 1) {
             $season->has_table = 1;
             // Массив таблицы результатов
             $arr = array();
             $i = 1;
             foreach ($season->teams as $item) {
                 $arr[] = array('id' => $item->id, 'place' => $i, 'name' => $item->value, 'games' => 0, 'wins' => 0, 'draws' => 0, 'loss' => 0, 'goals_in' => 0, 'goals_out' => 0, 'goals_out' => 0, 'points' => 0);
                 $i++;
             }
             $season->table = \Model_Table::forge(array('results_json' => json_encode($arr), 'show_on_main' => 0));
         }
         if ($season->save()) {
             \Session::set_flash('success', 'Сезон (соревнование) обновлен(о).');
             \Response::redirect_back('admin/competitions/seasons');
         } else {
             \Session::set_flash('error', 'Could not update Season #' . $id);
         }
     } else {
         if (\Input::method() == 'POST') {
             $season->value = $val->validated('value');
             $season->has_table = $val->validated('has_table');
             \Session::set_flash('error', $val->error());
         }
         $this->template->set_global('season', $season, false);
         // Все команды
         $this->template->set_global('teams', \Model_Team::get_teams_for_select(), false);
         // Массив id команд сезона
         $season_teams = array();
         foreach ($season->teams as $item) {
             $season_teams[] = $item->id;
         }
         $this->template->set_global('season_teams', $season_teams, false);
     }
     $this->template->content = \View::forge('competitions/seasons/edit');
 }
Example #3
0
 /**
  * Действие уменьшение позиции команды в таблице
  */
 public function action_decrease_team_position($table_id = null, $team_id = null)
 {
     (is_null($table_id) or is_null($team_id)) and \Response::redirect_back('admin/competitions/tables');
     // Проверяем существует ли такая таблица
     if (!($table = \Model_Table::find($table_id))) {
         \Session::set_flash('error', 'Таблица не найдена.');
         \Response::redirect_back('admin/competitions/tables');
     }
     // Проверяем существует ли такая команда в ней
     $results = json_decode($table->results_json);
     foreach ($results as $key => $item) {
         // если такая команда найдена, то запоминаем место команды,
         // место которой увеличиваем и той, место которой нужно уменьшить
         if ($item->id == $team_id) {
             $key_dec = $key;
             foreach ($results as $k => $i) {
                 if ($results[$k]->place == $results[$key_dec]->place - 1) {
                     $key_inc = $k;
                     break;
                 }
             }
             break;
         }
     }
     if (!isset($key_dec)) {
         \Session::set_flash('error', 'Запись в таблице не найдена.');
         \Response::redirect_back('admin/competitions/tables/edit/' . $table_id);
     }
     // Меняем местами команды и сохраняемся
     if (isset($key_inc) and isset($key_dec)) {
         $results[$key_inc]->place += 1;
         $results[$key_dec]->place -= 1;
         $table->results_json = json_encode($results);
         $table->save();
     }
     \Session::set_flash('success', 'Действие успешно совершено.');
     \Response::redirect_back('admin/competitions/tables/edit/' . $table_id);
 }
Example #4
0
 /**
  * Действие для отображение виджета турнирной таблицы
  */
 public function action_table()
 {
     // Извлекаем из БД таблицу для главной
     $table = \Model_Table::find('first', array('where' => array(array('show_on_main', '=', 1))));
     $data['results'] = array();
     if ($table) {
         // Сортируем по очкам
         $data['results'] = json_decode($table->results_json);
         usort($data['results'], array('Main\\Controller_Widgets', 'cmp'));
         $data['season_id'] = $table->season_id;
     }
     return \View::forge('widgets/table', $data, FALSE)->render();
 }