/** * Intermediario entre el Front-End y el servicio. * * @param Request $request * * @return [] */ public function login($request) { $result = []; $formData = $request->getParsedBody(); $email = null; $password = null; // Verificamos que efectivamente exista una entrada de email if (array_key_exists("email", $formData)) { $email = $formData["email"]; } // Verificamos que efectivamente exista una entrada de password if (array_key_exists("password", $formData)) { $password = $formData["password"]; } if (isset($email, $password)) { $loginResult = $this->userService->login($email, $password); if (array_key_exists("error", $loginResult)) { $result["error"] = true; } else { setcookie($this->nombreCookie, true, time() + 3600); } $result["message"] = $loginResult["message"]; } else { $result["error"] = true; $result["message"] = "Email and password can not be empty."; } return $result; }
/** * Save organizations relations action * * @param Request $request * @param Response $response * @param array $args * * @return Response */ public function createRelationsAction(Request $request, Response $response, $args) { // TODO: add validation for content type // TODO: add validation for data structure $relations = $request->getParsedBody(); $relations = $this->serializer->deserialize($relations); $relations = $this->service->saveRelations($relations); $relations = $this->serializer->serialize($relations, Context::AS_TREE); return $response->withJson($relations, 201); }
/** * Create a new user with the data provided in the request body and return a JWT to start the User's session * @todo Figure out way to make exceptions more DRY, the way its currently set up each method would have all of these * blocks. */ public function create(Request $request, Response $response, array $args) { $logger = $this->getLogger(); $data = $request->getParsedBody(); $logger->addInfo('Creating new user', $data); $user = UserModel::create($data)->toArray(); $jwt = ["email" => $user["email"], "id" => $user["uid"]]; $jwt = $this->encodeJWT($jwt); return $response->withJson($jwt); }
public function learningcenterPostEdit(Request $req, Response $res, $attr = []) { $container = $this->slim->getContainer(); $db = $container->medoo; $postBody = $req->getParsedBody(); $editParams = $this->adapterParams($postBody); if ($db->update("learningcenter", $editParams, ["id" => $attr["id"]]) !== false) { return $res->withHeader("Location", $req->getUri()->getBasePath() . "/learningcenter"); } return $container->view->render($res, "learningcenter/form.twig", ["form" => $postBody]); }
public function updateAction(Request $request, Response $response, array $args) { $data = $request->getParsedBody(); $task = $this->_transformer->transformToModel($data); if ($task === null) { return $this->_infoPresenter->render($response, Presenter::STATUS_UNPROCESSABLE_ENTITY, Presenter::DESCRIPTION_INVALID_STRUCTURE); } $newTask = $this->_taskService->update($args['taskId'], $task); if ($newTask !== null) { return $this->_dataPresenter->render($response, Presenter::STATUS_ACCEPTED, $newTask); } else { return $this->_infoPresenter->render($response, Presenter::STATUS_NOT_FOUND, Presenter::DESCRIPTION_NONEXISTING_KEY); } }
public function teamAdd(Request $request, Response $response, $args) { $data = $request->getParsedBody(); /** @var EntityManager $em */ $em = $this->container->entityManager; $team = new Team(); $team->setName($data['name']); $team->setLeague($em->find('Fanta\\Entity\\League', $data['league_id'])); $team->setUser($em->find('Fanta\\Entity\\User', $data['user_id'])); $team->setName($data['name']); $em->persist($team); $em->flush(); return $response->withRedirect($this->container->router->pathFor('league-detail', array('league_id' => $data['league_id']))); }
public function login(Request $request, $response, $args) { /** @var EntityManager $em */ $em = $this->container->entityManager; $data = $request->getParsedBody(); $user = $em->getRepository('Fanta\\Entity\\User')->findOneBy(array('name' => $data['user'])); if (!$user) { return $response->withStatus(403, 'User not found'); } if ($user->getPassword() != $this->container->auth->getEncryptedPassword($data['password'])) { return $response->withStatus(403, 'Incorrect password'); } $this->container->session->createSession($user); return $response->withRedirect($this->container->router->pathFor('front-teams')); }
public function accountPostEdit(Request $req, Response $res, $attr = []) { $container = $this->slim->getContainer(); $db = $container->medoo; $postBody = $req->getParsedBody(); $editParams = $this->adapterParams($postBody); // var_dump($editParams); exit(); if ($db->count("account", ["AND" => ["username" => @$postBody["username"], "id[!]" => $attr["id"]]]) > 0) { return $container->view->render($res, "account/form.twig", ["form" => $postBody, "error_message" => "ชื่อผู้ใช้งานซ้ำกับผู้ใช้งานอื่น"]); } if ($db->update("account", $editParams, ["id" => $attr["id"]]) !== false) { return $res->withHeader("Location", $req->getUri()->getBasePath() . "/account"); } return $container->view->render($res, "account/form.twig", ["form" => $postBody]); }
public function product_youtubePostAdd(Request $req, Response $res, $attr = []) { $container = $this->slim->getContainer(); $db = $container->medoo; $postBody = $req->getParsedBody(); // $insertParams = $this->adapterParams($postBody); $insertParams = []; $insertParams["product_id"] = $attr["product_id"]; $insertParams["type"] = "youtube"; $insertParams["youtube_id"] = $postBody["youtube_id"]; $insertParams["sort_order"] = $db->max("product_media", "sort_order", ["AND" => ["product_id" => $attr["product_id"]]]) + 1; if (!$db->insert("product_media", $insertParams)) { return $res->withStatus(500)->withHeader('Content-Type', 'application/json')->write(json_encode(["error" => true])); } return $res->withStatus(200)->withHeader('Content-Type', 'application/json')->write(json_encode(["success" => true])); }
public function register(Request $request, Response $response, array $args) { /** @var Users $users */ $users = $this->data(Users::class); $input = $request->getParsedBody(); $validator = $this->validator->rule('required', ['email', 'username', 'fullname', 'password', 'repassword', 'job_id', 'gender_id', 'province_id', 'area']); $validator->addRule('assertEmailNotExists', function ($field, $value, array $params) use($users) { return !$users->assertEmailExists($value); }, 'tersebut sudah terdaftar! Silahkan gunakan email lain'); $validator->addRule('assertUsernameNotExists', function ($field, $value, array $params) use($users) { $protected = ['admin', 'account', 'login', 'register', 'logout', 'activate', 'reactivate', 'regionals', 'forgot-password', 'reset-password']; return !in_array($value, $protected) && !$users->assertUsernameExists($value); }, 'tersebut sudah terdaftar! Silahkan gunakan username lain'); $validator->rules(['regex' => [['fullname', ':^[A-z\\s]+$:'], ['username', ':^[A-z\\d\\-\\_]+$:']], 'email' => 'email', 'assertEmailNotExists' => 'email', 'assertUsernameNotExists' => 'username', 'dateFormat' => [['birth_date', 'Y-m-d']], 'equals' => [['repassword', 'password']], 'notIn' => [['username', 'password']], 'lengthMax' => [['username', 32], ['fullname', 64], ['area', 64]], 'lengthMin' => [['username', 6], ['password', 6]]]); if ($validator->validate()) { $emailAddress = $input['email']; $activationKey = md5(uniqid(rand(), true)); $activationExpiredDate = date('Y-m-d H:i:s', time() + 172800); // 48 jam $registerSuccessMsg = 'Haayy <strong>' . $input['fullname'] . '</strong>,<br> Submission keanggotan sudah berhasil disimpan. Akan tetapi account anda tidak langsung aktif. Demi keamanan dan validitas data, maka sistem telah mengirimkan email ke email anda, untuk melakukan aktivasi account. Segera check email anda! Terimakasih ^_^'; try { $input['activation_key'] = $activationKey; $input['expired_date'] = $activationExpiredDate; $input['fullname'] = ucwords($input['fullname']); $input['password'] = $this->salt($input['password']); if ($userId = $users->create($input)) { $emailSettings = $this->settings->get('email'); $message = \Swift_Message::newInstance('PHP Indonesia - Aktivasi Membership')->setFrom([$emailSettings['sender_email'] => $emailSettings['sender_name']])->setTo([$emailAddress => $member['fullname']])->setBody(file_get_contents(APP_DIR . 'views' . _DS_ . 'email' . _DS_ . 'activation.txt')); $this->mailer->registerPlugin(new \Swift_Plugins_DecoratorPlugin([$emailAddress => ['{email_address}' => $emailAddress, '{fullname}' => $input['fullname'], '{registration_date}' => date('d-m-Y H:i:s'), '{activation_path}' => $this->router->pathFor('membership-activation', ['uid' => $userId, 'activation_key' => $activationKey]), '{activation_expired_date}' => $activationExpiredDate, '{base_url}' => $request->getUri()->getBaseUrl()]])); $this->mailer->send($message); // Update email sent status $this->data(UsersActivations::class)->update(['email_sent' => 'Y'], ['user_id' => $userId, 'activation_key' => $activationKey]); } } catch (\Swift_TransportException $e) { $registerSuccessMsg .= '<br><br><strong>Kemungkinan email akan sampai agak terlambat, karena email server kami sedang mengalami sedikit kendala teknis. Jika anda belum juga mendapatkan email, maka jangan ragu untuk laporkan kepada kami melalu email: report@phpindonesia.or.id</strong>'; } catch (\PDOException $e) { $this->addFormAlert('error', 'System failed<br>' . $e->getMessage()); return $response->withRedirect($this->router->pathFor('membership-register')); } $this->addFormAlert('success', $registerSuccessMsg); } else { $this->addFormAlert('warning', 'Some of mandatory fields is empty!', $validator->errors()); return $response->withRedirect($this->router->pathFor('membership-register')); } return $response->withRedirect($this->router->pathFor('membership-index')); }
/** * * @param Request $request * * @return [] */ public function createGame($request) { $result = []; /** *The content of `POST` *I get calling `getParsedBody`. */ $formData = $request->getParsedBody(); $title = null; $developer = null; $description = null; $console = null; $releaseDate = null; $rate = null; $url = null; // Verified that excites title if (array_key_exists("title", $formData)) { $title = $formData["title"]; } // Verified that excites developer if (array_key_exists("developer", $formData)) { $developer = $formData["developer"]; } // Verified that excites description if (array_key_exists("description", $formData)) { $description = $formData["description"]; } // Verified that excites console if (array_key_exists("console", $formData)) { $console = $formData["console"]; } // Verified that excites releaseDate if (array_key_exists("releaseDate", $formData)) { $releaseDate = $formData["releaseDate"]; } // Verified that excites rate if (array_key_exists("rate", $formData)) { $rate = $formData["rate"]; } // Verified that excites url if (array_key_exists("url", $formData)) { $url = $formData["url"]; } return $this->gameService->createGame($title, $developer, $description, $console, $releaseDate, $rate, $url); }
/** * @param \Slim\Http\Request $request * @param \Slim\Http\Response $response * @param callable $next * @return mixed */ public function sanitizeRequestBody(Request $request, Response $response, callable $next) { if ($inputs = $request->getParsedBody()) { $inputs = array_filter($inputs, function (&$value) { if (is_string($value)) { $value = filter_var(trim($value), FILTER_SANITIZE_STRING); } return $value ?: null; }); if (isset($inputs['_METHOD']) && $request->getMethod() == $inputs['_METHOD']) { unset($inputs['_METHOD']); } $request = $request->withParsedBody($inputs); } if ($request->getHeaderLine('Accept') == 'application/json') { $request = $request->withHeader('X-Requested-With', 'XMLHttpRequest'); } return $next($request, $response); }
public function login(Request $request, Response $response, array $arguments) { $body = $request->getParsedBody(); $user = User::where('email', $body['email'])->first(); if (!$user) { return $response->withJson(['message' => 'no_such_email'], 400); } if (!password_verify($body['password'], $user->password)) { return $response->withJson(['message' => 'incorrect_password'], 400); } $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $tokenValue = $generator->generateString(128, Generator::CHAR_ALNUM); $token = new UserToken(); $token->value = $tokenValue; $user->user_tokens()->save($token); $output = ['user' => $user, 'token' => $token->value]; return $response->withJson($output, 200); }
public function add(Request $request, Response $response, array $args) { $input = $request->getParsedBody(); $requiredFields = ['skill_parent_id', 'skill_self_assesment']; if (isset($input['skill_id'])) { $requiredFields[] = 'skill_id'; } $validator = $this->validator->rule('required', $requiredFields); if ($validator->validate()) { $users = $this->data(Users::class); $skills = $this->data(MemberSkills::class); $skills->create(['user_id' => $this->session->get('user_id'), 'skill_id' => $input['skill_id'] ?: $input['skill_parent_id'], 'skill_parent_id' => $input['skill_parent_id'], 'skill_self_assesment' => $input['skill_self_assesment']]); $this->addFormAlert('success', 'Item skill baru berhasil ditambahkan. Selamat!. Silahkan tambahkan lagi item skill anda.'); } else { $this->addFormAlert('warning', 'Some of mandatory fields is empty!', $validator->errors()); return $response->withRedirect($this->router->pathFor('membership-skills-add')); } return $response->withRedirect($this->router->pathFor('membership-account')); }
public function postLogin(Request $req, Response $res) { $reqBody = $req->getParsedBody(); $container = $this->slim->getContainer(); /** @var Aura\Session\Session */ $session = $container->session; $loginSegment = $session->getSegment("login"); if (@$reqBody["username"] != $container->config["login"]["username"]) { $loginSegment->clear(); return $container->view->render($res, "login.twig", ["error_message" => "Invalid Username"]); } if (@$reqBody["password"] != $container->config["login"]["password"]) { $loginSegment->clear(); return $container->view->render($res, "login.twig", ["error_message" => "Invalid Password"]); } $loginSegment->set("user", ["username" => "admin"]); $session->commit(); return $res->withHeader("Location", $req->getUri()->getBasePath() . "/product"); }
public function forgot(Request $request, Response $response, array $args) { /** @var Users $users */ $users = $this->data(Users::class); $input = $request->getParsedBody(); $validator = $this->validator->rule('required', 'email'); $validator->rule('email', 'email'); $validator->addRule('assertNotEmailExists', function ($field, $value, array $params) use($users) { return !$users->assertEmailExists($value); }, 'Email tersebut tidak terdaftar!'); $validator->rule('assertNotEmailExists', 'email'); $success_msg = 'Email konfirmasi lupa password sudah berhasil dikirim. Segera check email anda. Terimakasih ^_^'; $success_msg_alt = 'Email konfirmasi lupa password sudah berhasil dikirim. Segera check email anda.<br><br><strong>Kemungkinan email akan sampai agak terlambat, karena email server kami sedang mengalami sedikit kendala teknis. Jika belum juga mendapatkan email, maka jangan ragu untuk laporkan kepada kami melalu email: report@phpindonesia.or.id</strong><br><br>Terimakasih ^_^'; if ($validator->validate()) { $resetKey = md5(uniqid(rand(), true)); $emailAddress = $input['email']; $resetExpiredDate = date('Y-m-d H:i:s', time() + 7200); // 2 jam /** @var UsersResetPwd $usersResetPass */ $usersResetPass = $this->data(UsersResetPwd::class); $member = $users->get(['user_id', 'username'], ['email' => $emailAddress])->fetch(); $usersResetPass->create(['user_id' => $member['user_id'], 'reset_key' => $resetKey, 'expired_date' => $resetExpiredDate, 'email_sent' => 'N']); try { $emailSettings = $this->settings->get('email'); $message = \Swift_Message::newInstance('PHP Indonesia - Konfirmasi lupa password')->setFrom([$emailSettings['sender_email'] => $emailSettings['sender_name']])->setTo([$emailAddress => $member['username']])->setBody(file_get_contents(APP_DIR . 'views' . _DS_ . 'email' . _DS_ . 'forgot-password-confirmation.txt')); $this->mailer->registerPlugin(new \Swift_Plugins_DecoratorPlugin([$emailAddress => ['{email_address}' => $emailAddress, '{request_reset_date}' => date('d-m-Y H:i:s'), '{reset_path}' => $this->router->pathFor('membership-reset-password', ['uid' => $member['user_id'], 'reset_key' => $resetKey]), '{reset_expired_date}' => date('d-m-Y H:i:s', strtotime($resetExpiredDate)), '{base_url}' => $request->getUri()->getBaseUrl()]])); $this->mailer->send($message); // Update email sent status $usersResetPass->update(['email_sent' => 'Y'], ['user_id' => $member['user_id'], 'reset_key' => $resetKey]); $this->addFormAlert('success', $success_msg); } catch (\PDOException $e) { $this->addFormAlert('error', 'System error' . $e->getMessage()); } catch (\Swift_TransportException $e) { $this->addFormAlert('success', $success_msg_alt); } } else { $this->addFormAlert('warning', 'Some of mandatory fields is empty!', $validator->errors()); return $response->withRedirect($this->router->pathFor('membership-forgot-password')); } return $response->withRedirect($this->router->pathFor('membership-login')); }
public function postLogin(Request $req, Response $res) { $reqBody = $req->getParsedBody(); $container = $this->slim->getContainer(); /** @var Aura\Session\Session */ $session = $container->session; $loginSegment = $session->getSegment("login"); $db = $container->medoo; $acc = $db->get("account", "*", ["username" => @$reqBody["username"]]); if (!$acc) { $loginSegment->clear(); return $container->view->render($res, "login.twig", ["error_message" => "Not found " . @$reqBody["username"]]); } if (@$reqBody["password"] != $acc["password"]) { $loginSegment->clear(); return $container->view->render($res, "login.twig", ["error_message" => "Invalid Password"]); } $loginSegment->set("user", $acc); $session->commit(); return $res->withHeader("Location", $req->getUri()->getBasePath() . "/person"); }
public function adminImagePOST(\Slim\Http\Request $request, \Slim\Http\Response $response) { $req = $request->getParsedBody(); $uuid = $req['uuid']; $extension = $req['extension']; $width = $req['width']; $height = $req['height']; $service = new ImageService(); // fetches image to fit scale spec'd $image = $service->fetchImage($uuid, $width, $height); // save to tmp dir $image_path = '/home/repose/repose-core/tmp/' . $uuid; if (FALSE !== file_put_contents($image_path, $image)) { // open as Psr7/Stream $response = $response->withHeader('Content-type', 'image/' . $extension); $newStream = new LazyOpenStream($image_path, 'r'); $response = $response->withBody($newStream); return $response; } return false; }
public function updateContent(Request $request, Response $response, $arguments) { $data = $request->getParsedBody(); if (!$data) { return $response->withJson(['message' => 'Could not parse JSON', 'errorCode' => 'JSON_PARSE_ERROR'], 400); } $content = Content::find($arguments['contentId']); if (!$content) { return $response->withJson(['message' => 'Content not found', 'errorCode' => 'CONTENT_NOT_FOUND'], 404); } $contentType = $this->container->ContentService->getContentTypeDefinition($content->content_type); $fields = new \stdClass(); foreach ($contentType->fields as $currentField) { if (array_key_exists($currentField->slug, $data)) { $fields->{$currentField->slug} = $data[$currentField->slug]; } } $content->fields = $fields; $content->save(); // TODO: return modified object return $response->withJson($this->container->ContentService->convertFields($content, $contentType, $request), 201); }
/** * @param Request $request * @param Response $response * @param array $args * @return mixed */ public function verifyUser(Request $request, Response $response, array $args) { $post = $request->getParsedBody(); $ret = array(); if ($this->dbService->verifyUser($post['id'])) { $ret['success'] = true; $ret['message'] = "Verified."; } else { $ret['success'] = false; $ret['message'] = "Verification Unsuccessful."; } return $ret; }
private function submitEditAlbum(Request $request, Response $response) { $albumId = $request->getParsedBody()['id']; /* @var \App\models\Album $album */ $album = $this->model->load('Album'); if ($album->filter(['id' => $albumId])->rowCount() <= 0) { $this->flash->addError('admin_index', 'Invalid data posted.'); return $response->withStatus(302)->withHeader('Location ', $this->router->pathFor('admin_index')); } $parsePost = $request->getParsedBody(); $input = ['name' => $parsePost['name'], 'description' => $parsePost['description'], 'is_public' => $parsePost['is_public']]; $filter = ['user_id' => $this->user['id'], 'id' => $albumId]; $updateStatus = $album->filter($filter)->update($input); if ($updateStatus) { $this->flash->addSuccess('admin_index', 'Edited success.'); } else { $this->flash->addError('admin_index', 'Edited falil.'); } return $response->withStatus(302)->withHeader('Location ', $this->router->pathFor('admin_index')); }
public function postDebug(Request $request, Response $response, $args) { $res = ["body" => $request->getBody(), "pa" => $request->getParsedBody(), "params" => $request->getParams(), "name" => $request->getParam('name')]; return $this->echoJson($response, $res); }
/** * @param Request $request * @param Response $response * @param $args * * @return ResponseInterface */ public function update(Request $request, Response $response, $args) { try { $result = $this->gateway->update($request->getParsedBody(), $this->getIdArray($args)); return $response->withJson(["result" => $result]); } catch (\Exception $e) { return $response->withStatus(400); } }
public function personPostEdit(Request $req, Response $res, $attr = []) { $container = $this->slim->getContainer(); $db = $container->medoo; $cripplesService = new CrippleService($db); $disavantagedsService = new DisavantagedService($db); $scholarsService = new ScholarService($db); $postBody = $req->getParsedBody(); $editParams = $this->adapterParams($postBody); // var_dump($editParams); exit(); if ($db->update("person", $editParams["person"], ["id" => $attr["id"]]) !== false && $this->saveType($attr["id"], $editParams)) { return $res->withHeader("Location", $req->getUri()->getBasePath() . "/person"); } return $container->view->render($res, "person/form.twig", ["form" => $postBody, "cripples" => $cripplesService->gets(), "disavantageds" => $disavantagedsService->gets(), "scholars" => $scholarsService->gets()]); }
/** * @expectedException \RuntimeException */ public function testGetParsedBodyAsArray() { $uri = Uri::createFromString('https://example.com:443/foo/bar?abc=123'); $headers = new Headers(['Content-Type' => 'application/json;charset=utf8']); $cookies = []; $serverParams = []; $body = new RequestBody(); $body->write('{"foo": "bar"}'); $body->rewind(); $request = new Request('POST', $uri, $headers, $cookies, $serverParams, $body); $request->registerMediaTypeParser('application/json', function ($input) { return 10; // <-- Return invalid body value }); $request->getParsedBody(); // <-- Triggers exception }
public function testGetParsedBodyXmlWithTextXMLMediaType() { $method = 'GET'; $uri = new Uri('https', 'example.com', 443, '/foo/bar', 'abc=123', '', ''); $headers = new Headers(); $headers->set('Content-Type', 'text/xml'); $cookies = []; $serverParams = []; $body = new RequestBody(); $body->write('<person><name>Josh</name></person>'); $request = new Request($method, $uri, $headers, $cookies, $serverParams, $body); $this->assertEquals('Josh', $request->getParsedBody()->name); }
public function upload(Request $request) { // Slim's way of getting it all at once // $data = $request->getParsedBody(); $staging = core_config('staging.local'); // $disk_name = $_POST['disk_name']; // $volume_name = $_POST['volume_name']; // $collection_name = $_POST['collection_name']; $form_data = $request->getParsedBody(); $disk_name = $form_data['disk_name']; if (!$disk_name || $disk_name === DS) { $disk_name = 'default' . DS; } $volume_name = $form_data['volume_name']; $collection_name = $form_data['collection_name']; static::$logger->addInfo(__CLASS__ . '::' . __FUNCTION__ . ': looking for staging directory: ' . $volume_name . $collection_name); try { if (!static::$manager->has('staging://' . $disk_name . $volume_name . $collection_name)) { static::$manager->createDir('staging://' . $disk_name . $volume_name . $collection_name); static::$logger->addInfo(__CLASS__ . '::' . __FUNCTION__ . ': created staging directory: ' . $staging . DS . $disk_name . $volume_name . $collection_name); $this->report[] = ['collection' => 'created']; } else { static::$logger->addInfo(__CLASS__ . '::' . __FUNCTION__ . ': found staging directory: ' . $staging . DS . $disk_name . $volume_name . $collection_name); $this->report[] = ['collection' => 'found']; } } catch (\Exception $e) { $this->errors[] = ['collection' => $e->getMessage()]; static::$logger->addDebug(__CLASS__ . '::' . __FUNCTION__ . ': Exception ' . $e->getMessage()); return false; } // static::$logger->addDebug( __CLASS__.'::'.__FUNCTION__.': '.json_encode($_FILES,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); try { $count = 0; foreach ($_FILES['file']['name'] as $filename) { // static::$logger->addInfo(__CLASS__ . '::' . __FUNCTION__ . ': handling upload file: '.json_encode($filename,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES) ); if ($_FILES['file']['error'][$count] === UPLOAD_ERR_OK) { $tmpFile = $_FILES['file']['tmp_name'][$count]; $count++; // always increment, even for empty file spaces if ($tmpFile !== '') { // but save no empty files please $tempTarget = $staging . DS . $disk_name . $volume_name . $collection_name . basename($filename); move_uploaded_file($tmpFile, $tempTarget); static::$logger->addInfo(__CLASS__ . '::' . __FUNCTION__ . ': uploaded: ' . $tempTarget); $this->report[] = ['file' . $count => 'uploaded']; } // reset $tempTarget = ''; $tmpFile = ''; } else { static::$logger->addAlert(__CLASS__ . '::' . __FUNCTION__ . ': throwing a hissy fit: upload error code:' . $_FILES['file']['error'][$count]); throw new UploadException($_FILES['file']['error'][$count]); } } } catch (UploadException $e) { $this->errors[] = ['file' . $count => $e->getMessage()]; static::$logger->addDebug(__CLASS__ . '::' . __FUNCTION__ . ': Exception ' . $e->getMessage()); return false; } return true; }
public function edit(Request $request, Response $response, array $args) { /** @var Users $users */ $users = $this->data(Users::class); $user = $users->get(['email', 'username'], $this->session->get('user_id'))->fetch(); $identityTypes = ['ktp' => 'KTP', 'sim' => 'SIM', 'ktm' => 'Kartu Mahasiswa']; $validator = $this->validator->rule('required', ['email', 'username', 'fullname', 'province_id', 'city_id', 'area', 'job_id']); $validator->addRule('assertEmailNotExists', function ($field, $value, array $params) use($users, $user) { return $user['email'] == $value || !$users->assertEmailExists($value); }, 'tersebut sudah terdaftar!'); $validator->addRule('assertUsernameNotExists', function ($field, $value, array $params) use($users, $user) { return $user['username'] == $value || !$users->assertUsernameExists($value); }, 'tersebut sudah terdaftar!'); $validator->rules(['regex' => [['fullname', ':^[A-z\\s]+$:'], ['username', ':^[A-z\\d\\-\\.\\_]+$:'], ['contact_phone', ':^[-\\+\\d]+$:'], ['identity_number', ':^[-\\+\\d]+$:']], 'email' => 'email', 'assertEmailNotExists' => 'email', 'assertUsernameNotExists' => 'username', 'dateFormat' => [['birth_date', 'Y-m-d']], 'equals' => [['repassword', 'password']], 'in' => [['identity_type', array_keys($identityTypes)]], 'lengthMax' => [['fullname', 32], ['username', 64], ['contact_phone', 16], ['area', 64], ['identity_number', 32], ['birth_place', 32]], 'lengthMin' => [['username', 6], ['password', 6]]]); if ($validator->validate()) { $input = $request->getParsedBody(); /** @var MemberProfile $profile */ $profile = $this->data(MemberProfile::class); /** @var MemberSocmeds $socmeds */ $socmeds = $this->data(MemberSocmeds::class); $memberProfile = ['fullname' => $input['fullname'], 'contact_phone' => $input['contact_phone'], 'birth_place' => strtoupper($input['birth_place']), 'birth_date' => $input['birth_date'], 'identity_number' => $input['identity_number'], 'identity_type' => $input['identity_type'], 'religion_id' => $input['religion_id'], 'province_id' => $input['province_id'], 'city_id' => $input['city_id'], 'area' => $input['area'], 'job_id' => $input['job_id']]; $this->db->beginTransaction(); try { $userId = $this->session->get('user_id'); if ($photo = $request->getUploadedFiles()['photo']) { $memberProfile = $this->upload($photo, $memberProfile); } // Update profile data record $profile->update($memberProfile, ['user_id' => $userId]); $users->update(['email' => $input['email'], 'province_id' => $input['province_id'], 'city_id' => $input['city_id'], 'area' => $input['area']], ['user_id' => $userId]); // Handle social medias if ($input['socmeds']) { $terms = ['user_id' => $userId, 'deleted' => 'N']; foreach ($input['socmeds'] as $item) { $terms = ['user_id' => $userId, 'deleted' => 'N', 'socmed_type' => $item['socmed_type']]; $socmedRow = $socmeds->get(['account_name', 'account_url'], $terms)->fetch(); if ($socmedRow['account_name'] != $item['account_name']) { $socmedRow['account_name'] = $item['account_name']; } if ($socmedRow['account_url'] != $item['account_url']) { $socmedRow['account_url'] = $item['account_url']; } $socmeds->update($socmedRow, $terms); } } if (isset($input['socmeds_delete'])) { foreach ($input['socmeds_delete'] as $item) { $socmeds->delete(['user_id' => $userId, 'socmed_type' => $item]); } } $this->db->commit(); $this->addFormAlert('success', 'Profile information successfuly updated! Congratulation!'); } catch (\PDOException $e) { $this->db->rollback(); $this->addFormAlert('error', 'System failed<br>' . $e->getMessage()); } catch (\Exception $e) { $this->db->rollback(); $this->addFormAlert('error', 'System failed<br>' . $e->getMessage()); } } else { $this->addFormAlert('warning', 'Some of mandatory fields is empty!', $validator->errors()); return $response->withRedirect($this->router->pathFor('membership-account-edit', $args)); } return $response->withRedirect($this->router->pathFor('membership-account')); }
public function edit(Request $request, Response $response, array $args) { $input = $request->getParsedBody(); /** @var MemberPortfolios $portfolio */ $portfolio = $this->data(MemberPortfolios::class); $validator = $this->validator->rule('required', ['company_name', 'industry_id', 'start_date_y', 'work_status', 'job_title', 'job_desc']); if ($input['work_status'] == 'R') { $validator->rule('required', 'end_date_y'); } if ($validator->validate()) { if ($input['work_status'] == 'A') { unset($input['end_date_y'], $input['end_date_m'], $input['end_date_d']); } try { $update = $portfolio->update($input, (int) $args['id']); $message = 'Item portfolio berhasil diperbaharui. Selamat!'; } catch (\PDOException $e) { $update = false; $message = 'System error!<br>' . $e->getMessage(); } $this->addFormAlert($update !== false ? 'success' : 'error', $message); } else { $this->addFormAlert('warning', 'Some of mandatory fields is empty!', $validator->errors()); return $response->withRedirect($this->router->pathFor('membership-portfolios-edit', $args)); } return $response->withRedirect($this->router->pathFor('membership-account')); }
/** * This provide a method-overwrite for GET and POST request * * @param \Slim\Http\Request $req * @return \Slim\Http\Request */ protected function filterRequestMethod(Request $req) { $method = strtoupper($req->getMethod()); $params = []; if ($method == 'GET') { $params = $req->getQueryParams(); } elseif ($method == 'POST') { $params = $req->getParsedBody(); } if (isset($params['_method'])) { $req = $req->withMethod($params['_method']); } return $req; }