public function post($f3) { switch ($f3->get('PARAMS.action')) { case 'registration': $registrationDB = $this->getDB('registrations'); $registration = $registrationDB->findone(array('raidid=? AND characterid=?', $f3->get('POST.raidid'), $f3->get('POST.characterid'))); if ($this->raidRegistrationForm->isValid($f3->get('POST')) && $registration) { $registration->participation = $f3->get('POST.participation'); $registration->comment = $f3->get('POST.comment'); $registration->role = $f3->get('POST.role'); $registration->save(); // Remove remaining Characters from the Registration-List //$characterDB = $this->getDB('characters'); //$remainingCharacters = $characterDB->find(array('userid=? AND id!=?', // $f3->get('SESSION.user.id'), // $f3->get('POST.characterid'))); //foreach ($remainingCharacters as $character) { // $registrationDB->erase(array('raidid=? AND characterid=?', // $f3->get('POST.raidid'), // $character->id)); //} $f3->reroute('/raid/show/' . $f3->get('POST.raidid')); } elseif (!$registration) { $f3->set('SESSION.errormsg', 'Raideinladung nicht gefunden!'); $f3->reroute('/raid/registration/' . $f3->get('PARAMS.raidid')); } else { $f3->set('SESSION.failedFields', array_keys($this->raidRegistrationForm->getFailedFields())); $f3->set('SESSION.errormsg', implode("<br>", $this->raidRegistrationForm->getFailedFields())); $f3->reroute('/raid/registration/' . $f3->get('PARAMS.raidid')); } break; case 'create': if ($this->raidCreateForm->isValid($f3->get('POST'))) { $raid = $this->getDB('raids'); $datetime = date("Y-m-d H:i:s", strtotime($f3->get('POST.date') . ' ' . $f3->get('POST.time'))); $raid->copyFrom('POST'); $raid->datetime = $datetime; $raid->creationdate = date("Y-m-d H:i:s"); $raid->save(); // Find Characters suitable for this Raid and add them $raidinfo = $f3->get('game.raids.' . $raid->raidtypeid); $charactersDB = $this->getDB('characters'); $characters = $charactersDB->find(array('armorclass>=?', $raidinfo['armorclass'])); $useridlist = array(); $registration = $this->getDB('registrations'); foreach ($characters as $character) { $registration->raidid = $raid->id; $registration->characterid = $character->id; $registration->save(); $registration->reset(); $useridlist[] = $character->userid; } // Send Mail to user $f3->set('raid', $raid); $raidinfo = $f3->get('game.raids.' . $f3->get('raid')->raidtypeid); $raidname = $raidinfo['name'] . " " . $raidinfo['players'] . " (" . $raidinfo['difficulty'] . ")"; $usersDB = $this->getDB('users'); $receiverlist = array(); foreach (array_unique($useridlist) as $userid) { $user = $usersDB->findone(array('id=?', $userid)); $receiverlist[] = $user->email; } $this->mail->setSubject('Raideinladung ' . $raidname)->sendMessage('raidnotification', $receiverlist); $f3->reroute('/raid/list'); } else { $f3->set('SESSION.failedFields', array_keys($this->raidCreateForm->getFailedFields())); $f3->set('SESSION.errormsg', implode("<br>", $this->raidCreateForm->getFailedFields())); $f3->reroute('/raid/create'); } break; case 'edit': if ($this->raidEditForm->isValid($f3->get('POST'))) { $raidDB = $this->getDB('raids'); $raid = $raidDB->findone(array('id=?', $f3->get('POST.id'))); $datetime = date("Y-m-d H:i:s", strtotime($f3->get('POST.date') . ' ' . $f3->get('POST.time'))); $raid->datetime = $datetime; $raid->save(); $f3->reroute('/raid/list'); } else { $f3->set('SESSION.failedFields', array_keys($this->raidEditForm->getFailedFields())); $f3->set('SESSION.errormsg', implode("<br>", $this->raidEditForm->getFailedFields())); $f3->reroute('/raid/list'); } break; case 'delete': $raidsDB = $this->getDB('raids'); $raidsDB->erase(array('id=?', $f3->get('PARAMS.raidid'))); $registrationsDB = $this->getDB('registrations'); $registrationsDB->erase(array('id=?', $f3->get('PARAMS.raidid'))); $f3->reroute('/raid/list'); break; case 'invite': if ($this->raidInviteForm->isValid($f3->get('POST'))) { $usersDB = $this->getDB('users'); $user = $usersDB->findone(array('id=?', $f3->get('POST.userid'))); $raidsDB = $this->getDB('raids'); $raid = $raidsDB->findone(array('id=?', $f3->get('PARAMS.raidid'))); $f3->set('raid', $raid); $raidinfo = $f3->get('game.raids.' . $f3->get('raid')->raidtypeid); $raidname = $raidinfo['name'] . " " . $raidinfo['players'] . " (" . $raidinfo['difficulty'] . ")"; // Send Mail $this->mail->setSubject('Raideinladung ' . $raidname)->sendMessage('raidnotification', array($user->email)); $f3->reroute('/raid/list'); } else { $f3->set('SESSION.failedFields', array_keys($this->raidInviteForm->getFailedFields())); $f3->set('SESSION.errormsg', implode("<br>", $this->raidInviteForm->getFailedFields())); $f3->reroute('/raid/invite/' . $f3->get('PARAMS.raidid')); } break; } }
public function post($f3) { if ($f3->get('PARAMS.userid') && !$this->editOrViewAllowed($f3->get('PARAMS.userid'))) { $f3->set('SESSION.errormsg', 'Nicht erlaubt!'); $f3->reroute('/user/edit/' . $f3->get('SESSION.user.id')); } switch ($f3->get('PARAMS.action')) { case 'create': $newUser = $this->getDB('users'); $crypt = \Bcrypt::instance(); if ($this->userRegistrationForm->isValid($f3->get('POST'))) { $userDB = $this->getDB('users'); if ($userDB->findone(array('email=?', $f3->get('POST.email')))) { $f3->set('SESSION.errormsg', 'EMail ungültig oder bereits registriert!'); $f3->reroute('/user/create'); } if ($f3->get('POST.password') !== $f3->get('POST.password2')) { $f3->set('SESSION.failedFields', array('password', 'password2')); $f3->set('SESSION.errormsg', 'Passwörter stimmen nicht überein'); $f3->reroute('/user/create'); } $newUser->copyfrom('POST'); $newUser->password = $crypt->hash($f3->get('POST.password', $f3->get('crypt.SALT'))); $newUser->mailvalidation = $this->generateMailValidationKey(); $newUser->save(); // Send Mail $f3->set('newuser', $newUser); $this->mail->setSubject("RaidPlaner Registration")->sendMessage("registration", array($newUser->email)); $f3->set('SESSION.successmsg', 'Benutzer erstellt! Prüfe deine EMails um die EMail-Adresse zu bestätigen.'); //$f3->reroute('/auth'); } else { $f3->set('SESSION.failedFields', array_keys($this->userRegistrationForm->getFailedFields())); $f3->set('SESSION.errormsg', implode("<br>", $this->userRegistrationForm->getFailedFields())); $f3->reroute('/user/create'); } break; case 'edit': $userDB = $this->getDB('users'); $user = $userDB->findone(array('id=', $f3->get('PARAMS.userid'))); $crypt = \Bcrypt::instance(); if ($this->userEditForm->isValid($f3->get('POST'))) { if ($f3->get('POST.password') !== $f3->get('POST.password2')) { $f3->set('SESSION.failedFields', array('password', 'password2')); $f3->set('SESSION.errormsg', 'Passwörter stimmen nicht überein'); $f3->reroute('/user/edit/' . $f3->get('PARAMS.userid')); } $user->password = $crypt->hash($f3->get('POST.password', $f3->get('crypt.SALT'))); $user->save(); $f3->set('SESSION.successmsg', 'Daten geändert!'); $f3->reroute('/user/edit/' . $f3->get('PARAMS.userid')); } else { $f3->set('SESSION.failedFields', array_keys($this->userEditForm->getFailedFields())); $f3->set('SESSION.errormsg', implode("<br>", $this->userEditForm->getFailedFields())); $f3->reroute('/user/edit/' . $f3->get('PARAMS.userid')); } break; case 'delete': $charactersDB = $this->getDB('characters'); $charactersDB->erase(array('userid=?', $f3->get('PARAMS.userid'))); $usersDB = $this->getDB('users'); $usersDB->erase(array('id=?', $f3->get('PARAMS.userid'))); $f3->reroute('/user/list'); break; } }