/** * Update account information * * @param Request $request The current request * @return Response */ public function updateAccount(Request $request) { $registrations = $request->request->get('registrations', []); if (false === is_array($registrations)) { $this->app->abort(400, '"registrations" parameter must be an array of base ids.'); } $user = $this->getAuthenticatedUser(); if (0 !== count($registrations)) { foreach ($registrations as $baseId) { $this->getRegistrationManipulator()->createRegistration($user, \collection::get_from_base_id($this->app, $baseId)); } $this->app->addFlash('success', $this->app->trans('Your registration requests have been taken into account.')); } $accountFields = ['form_gender', 'form_firstname', 'form_lastname', 'form_address', 'form_zip', 'form_phone', 'form_fax', 'form_function', 'form_company', 'form_activity', 'form_geonameid', 'form_addressFTP', 'form_loginFTP', 'form_pwdFTP', 'form_destFTP', 'form_prefixFTPfolder', 'form_retryFTP']; $service = $this->app['accounts.service']; if (0 === count(array_diff($accountFields, array_keys($request->request->all())))) { $command = new UpdateAccountCommand(); $command->setGender((int) $request->request->get("form_gender"))->setFirstName($request->request->get("form_firstname"))->setLastName($request->request->get("form_lastname"))->setAddress($request->request->get("form_address"))->setZipCode($request->request->get("form_zip"))->setPhone($request->request->get("form_phone"))->setFax($request->request->get("form_fax"))->setJob($request->request->get("form_activity"))->setCompany($request->request->get("form_company"))->setPosition($request->request->get("form_function"))->setNotifications((bool) $request->request->get("mail_notifications")); $service->updateAccount($command); $this->getUserManipulator()->setGeonameId($user, $request->request->get("form_geonameid")); $ftpCredential = $user->getFtpCredential(); if (null === $ftpCredential) { $ftpCredential = new FtpCredential(); $ftpCredential->setUser($user); } $command = new UpdateFtpCredentialsCommand(); $command->setEnabled($request->request->get("form_activeFTP")); $command->setAddress($request->request->get("form_addressFTP")); $command->setLogin($request->request->get("form_loginFTP")); $command->setPassword($request->request->get("form_pwdFTP")); $command->setPassiveMode($request->request->get("form_passifFTP")); $command->setFolder($request->request->get("form_destFTP")); $command->setFolderPrefix($request->request->get("form_prefixFTPfolder")); $command->setRetries($request->request->get("form_retryFTP")); $service->updateFtpSettings($command); $this->app->addFlash('success', $this->app->trans('login::notification: Changements enregistres')); } $requestedNotifications = (array) $request->request->get('notifications', []); $manipulator = $this->getUserManipulator(); foreach ($this->getEventManager()->list_notifications_available($user) as $notifications) { foreach ($notifications as $notification) { $manipulator->setNotificationSetting($user, $notification['id'], isset($requestedNotifications[$notification['id']])); } } return $this->app->redirectPath('account'); }
public function updateCurrentUserAction(Request $request) { $service = $this->getAccountService(); $data = json_decode($request->getContent(false), true); $command = new UpdateAccountCommand(); $command->setEmail(isset($data['email']) ? $data['email'] : null)->setGender(isset($data['gender']) ? $data['gender'] : null)->setFirstName(isset($data['firstname']) ? $data['firstname'] : null)->setLastName(isset($data['lastname']) ? $data['lastname'] : null)->setZipCode(isset($data['zip_code']) ? $data['zip_code'] : null)->setCity(isset($data['city']) ? $data['city'] : null)->setPhone(isset($data['tel']) ? $data['tel'] : null)->setCompany(isset($data['company']) ? $data['company'] : null)->setJob(isset($data['job']) ? $data['job'] : null)->setNotifications(isset($data['notifications']) ? $data['notifications'] : null); try { $service->updateAccount($command); $ret = ['success' => true]; } catch (AccountException $exception) { $ret = ['success' => false, 'message' => _($exception->getMessage())]; } return Result::create($request, $ret)->createResponse(); }