if ($tournament['status'] == tournament::STATUS_PENDING){ if (cmsUser::isLogged()){ if (!$is_user_in_tournament || cmsUser::isAdmin()){ 'class' => 'user_add', 'title' => LANG_TOURNAMENT_JOIN, 'href' => $this->href_to('join', $tournament['id']) )); } } }
Как запретить пользователю вступать еще раз ?
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('cms_таблицы', 'user_id', cmsUser::get('id'));
На странице вступления в команду, перед добавлением в БД, делайте запрос
Тут мы пытаемся получить список пользователей, которые вступили в группу, если запрос что то вернет, значить этот пользователь уже в команде, тогда можете вернуть false с текстом, что вы уже в команде
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('cms_таблицы', 'user_id', cmsUser::get('id'));
То есть это вставляем сюда ?
<?php class actionTournamentJoin extends cmsAction { public function run($tournament_id){ if (!$tournament_id) { cmsCore::error404(); } $tournament = $this->model->getTournament($tournament_id); if (!$tournament || $tournament['status'] != tournament::STATUS_PENDING) { cmsCore::error404(); } $user = cmsUser::getInstance(); $is_user_in_tournament = $user->is_admin ? false : $is_max; if ($is_user_in_tournament){ cmsCore::error404(); } $errors = false; $form = $this->getForm('join'); $is_submitted = $this->request->has('submit'); $team = $form->parse($this->request, $is_submitted); $user = cmsUser::getInstance(); if ($is_submitted){ $errors = $form->validate($this, $team); if (!$errors){ $team['tournament_id'] = $tournament_id; $team['user_id'] = $user->id; $this->model->addTeam($team); $tournament = $this->model->getTournament($tournament_id); if ($tournament['users_count'] >= $tournament['min_users']){ $this->model->setTournamentStatus($tournament_id, tournament::STATUS_MODERATION); } if ($errors){ cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } $template = cmsTemplate::getInstance(); 'form' => $form, 'errors' => $errors, 'team' => $team, 'tournament' => $tournament )); } }
В шаблон нечего не надо прописать, сделайте проверку, если пользователь уже вступил
if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Да.
В шаблон нечего не надо прописать, сделайте проверку, если пользователь уже вступил
if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Нет не получается опять вступает вот щас код весь скину (
<?php class actionTournamentJoin extends cmsAction { public function run($tournament_id){ if (!$tournament_id) { cmsCore::error404(); } $tournament = $this->model->getTournament($tournament_id); if (!$tournament || $tournament['status'] != tournament::STATUS_PENDING) { cmsCore::error404(); } $user = cmsUser::getInstance(); $is_user_in_tournament = $user->is_admin ? false : $is_max; $is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); - ВОТ ВАШ КОД************************************************************************************* if ($is_user_in_tournament){ cmsCore::error404(); } $errors = false; $form = $this->getForm('join'); $is_submitted = $this->request->has('submit'); $team = $form->parse($this->request, $is_submitted); $user = cmsUser::getInstance(); if ($is_submitted){ $errors = $form->validate($this, $team); if (!$errors){ $team['tournament_id'] = $tournament_id; $team['user_id'] = $user->id; $this->model->addTeam($team); $tournament = $this->model->getTournament($tournament_id); if ($tournament['users_count'] >= $tournament['min_users']){ $this->model->setTournamentStatus($tournament_id, tournament::STATUS_MODERATION); } } if ($errors){ cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } $template = cmsTemplate::getInstance(); 'form' => $form, 'errors' => $errors, 'team' => $team, 'tournament' => $tournament )); } }
<?php $this->setPageTitle($tournament['tournament_name']); $this->addBreadcrumb(LANG_TOURNAMENT_CONTROLLER, $this->href_to('')); $this->addBreadcrumb(LANG_TOURNAMENT_TEAMS, $this->href_to('teams')); $this->addBreadcrumb($tournament['tournament_name']); if ($tournament['status'] == tournament::STATUS_PENDING){ if (!$is_user_in_tournament || cmsUser::isAdmin()){ 'class' => 'user_add', 'title' => LANG_TOURNAMENT_JOIN, 'href' => $this->href_to('join', $tournament['id']) )); } } $is_buttons = cmsUser::isAllowed('tournament', 'edit', 'all') || ( cmsUser::isAllowed('tournament', 'edit', 'own') && $tournament['user_id']==cmsUser::getInstance()->id ); if ($is_buttons){ 'class' => 'edit', 'title' => LANG_TOURNAMENT_TEAM_EDIT, 'href' => $this->href_to('edit', $tournament['id']) )); 'class' => 'delete', 'title' => LANG_TOURNAMENT_TEAM_DELETE, 'href' => $this->href_to('delete', $tournament['id']) )); } 0 => LANG_PHOTOBATTLE_STATUS_PENDING, 1 => LANG_PHOTOBATTLE_STATUS_MODERATION, 2 => LANG_PHOTOBATTLE_STATUS_OPENED, 3 => LANG_PHOTOBATTLE_STATUS_CLOSED, ); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); ВОТ ВАШ КОД****************************************** $this->redirectBack(); } ?> <h1><?php html($tournament['tournament_name']); ?></h1> <div class="photobattle-status"> <strong><?php echo LANG_PHOTOBATTLE_STATUS; ?>:</strong> <?php echo $statuses_text[ $tournament['status'] ]; ?> </div> <div class="sport__table"> <table class="table"> <tbody> <tr> <th class="_group_thead" colspan="4"> <div class="sport__table__head"><?php echo LANG_TOURNAMENT_PLAYERS; ?></div> </th> </tr> <tr> <th colspan="4"></th> <th class="_center"><strong><?php echo LANG_TOURNAMENT_PLAYERS_LIST; ?></strong></th> <th class="_center"><strong><?php echo LANG_TOURNAMENT_PLAYERS_DELETE; ?></strong></th> </tr> <?php $i = 1; foreach($tournament['teams'] as $team) { ?> <tr> <td class="_num"><?php echo $i;?></td> <td class="_color _color_0"></td> <td class="_pic"></td> <td class="_big"> <a class="user" href="<?php echo href_to('users', $team['user_id']); ?>"><?php echo $team['user_nickname']; ?></a> </td> <td class="_right"><?php html($team['team_name']); ?></span></td> <td class="_right"> <?php $is_buttons = cmsUser::isAllowed('tournament', 'edit', 'all') || ( cmsUser::isAllowed('tournament', 'edit', 'own') && $team['user_id']==cmsUser::getInstance()->id ); if ($is_buttons){ ?> <a class="item" title="<?php echo LANG_PHOTOBATTLE_PHOTO_DELETE; ?>" href="<?php echo $this
Вот как должно быть:
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Мой код вы добавили к двум файлам а надо к одному join.php
Вот как должно быть:
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Все равно вступает (( 3 команды создал ко всем вступает ((
Мой код вы добавили к двум файлам а надо к одному join.php
Вот как должно быть:
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Вот линк на сайт 3x3azerbaijan.com/tournament/teams
Мой код вы добавили к двум файлам а надо к одному join.php
Вот как должно быть:
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Ух-ты какая штука. А можно узнать, этот код не даст вступить в другие группы или в ту же самую, делая кнопку не активной?
Мой код вы добавили к двум файлам а надо к одному join.php
Вот как должно быть:
$is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }
Ух-ты какая штука. А можно узнать, этот код не даст вступить в другие группы или в ту же самую, делая кнопку не активной?
Вот у меня не дает вступать эту же самую, но я хочу что бы он не давал вступать и в другие группы, только если он выйдет то тогда может вступить, то есть он должен вступать не имеет значения куда только 1 раз
Не дает вступить в команду, ID которую получаем по URLили в ту же самую, делая кнопку не активной?
Если автор поймет код выше, то может использовать и на странице, где есть кнопка Вступить в команду и по условию, вывести или скрыть кнопку.
Не дает вступить в команду, ID которую получаем по URLили в ту же самую, делая кнопку не активной?
Если автор поймет код выше, то может использовать и на странице, где есть кнопка Вступить в команду и по условию, вывести или скрыть кнопку.
Я вот делаю как вы сказали но не получается ни как, если не сложно подскажите (((
Вот join.php как вы сказали сделал
<?php class actionTournamentJoin extends cmsAction { public function run($tournament_id){ if (!$tournament_id) { cmsCore::error404(); } $tournament = $this->model->getTournament($tournament_id); if (!$tournament || $tournament['status'] != tournament::STATUS_PENDING) { cmsCore::error404(); } $user = cmsUser::getInstance(); $is_user_in_tournament = $user->is_admin ? false : $is_max; if ($is_user_in_tournament){ cmsCore::error404(); } $errors = false; $form = $this->getForm('join'); $is_submitted = $this->request->has('submit'); $team = $form->parse($this->request, $is_submitted); $user = cmsUser::getInstance(); $is_add = $this->model->filterEqual('tournament_id', $tournament_id)->getItemByField('team', 'user_id', cmsUser::get('id')); if($is_add){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); } *******************Вот Код который я вставил if ($is_submitted){ $errors = $form->validate($this, $team); if (!$errors){ $team['tournament_id'] = $tournament_id; $team['user_id'] = $user->id; $this->model->addTeam($team); $tournament = $this->model->getTournament($tournament_id); if ($tournament['users_count'] >= $tournament['min_users']){ $this->model->setTournamentStatus($tournament_id, tournament::STATUS_MODERATION); } } if ($errors){ cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } $template = cmsTemplate::getInstance(); 'form' => $form, 'errors' => $errors, 'team' => $team, 'tournament' => $tournament )); } }
<?php $this->setPageTitle($tournament['tournament_name']); $this->addBreadcrumb(LANG_TOURNAMENT_CONTROLLER, $this->href_to('')); $this->addBreadcrumb(LANG_TOURNAMENT_TEAMS, $this->href_to('teams')); $this->addBreadcrumb($tournament['tournament_name']); if ($tournament['status'] == tournament::STATUS_PENDING){ if (!$is_user_in_tournament || cmsUser::isAdmin()){ 'class' => 'user_add', 'title' => LANG_TOURNAMENT_JOIN, 'href' => $this->href_to('join', $tournament['id']) )); } } $is_buttons = cmsUser::isAllowed('tournament', 'edit', 'all') || ( cmsUser::isAllowed('tournament', 'edit', 'own') && $tournament['user_id']==cmsUser::getInstance()->id ); if ($is_buttons){ 'class' => 'edit', 'title' => LANG_TOURNAMENT_TEAM_EDIT, 'href' => $this->href_to('edit', $tournament['id']) )); 'class' => 'delete', 'title' => LANG_TOURNAMENT_TEAM_DELETE, 'href' => $this->href_to('delete', $tournament['id']) )); } ?> <h1><?php html($tournament['tournament_name']); ?></h1> <div class="photobattle-status"> <strong><?php echo LANG_PHOTOBATTLE_STATUS; ?>:</strong> <?php echo $statuses_text[ $tournament['status'] ]; ?> </div>
Таблица в БД, которые хранить ID пользователей, которые вступили, точно называется team? поле называется user_id?
Вроде правильно всё, а что именно не работает? пользователь может 2 раза вступить в команду?
Таблица в БД, которые хранить ID пользователей, которые вступили, точно называется team? поле называется user_id?
Пользователь не может 2 раза вступать в команду А это изначально было, пользователь может вступать в разные команды, то есть в команду А он вступил и в команду Б тоже он может вступить, а мне надо если в команду А он вступил то в Б не должен
id tournament_id user_id team_name
1 6 1 3x3 Azerbaijan
2 7 1 Streetball
3 8 2 tournament_teams
7 9 2 3x3 Azerbaijan
tournament_id — это id команд
if(cmsUser::get('tournament_id')){ cmsUser::addSessionMessage('Вы уже в команде', 'error'); $this->redirectBack(); }