openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 8dd082a65643add93c0944302fb3ea542ee1e057
parent 409dcf4ed718185169e55c7b697cf2d18b895298
Author: dankert <openrat@jandankert.de>
Date:   Wed,  9 Mar 2022 00:52:23 +0100

New: Only save a property if it is send by the client. This is useful using a API, so not sent properties will not be deleted.

Diffstat:
Mmodules/cms/action/RequestParams.class.php | 40++++++++++++++++++++++++++++++++++++++++
Mmodules/cms/action/user/UserPropAction.class.php | 58++++++++++++++++++++++++++++++++++++++++++++--------------
2 files changed, 84 insertions(+), 14 deletions(-)

diff --git a/modules/cms/action/RequestParams.class.php b/modules/cms/action/RequestParams.class.php @@ -214,6 +214,46 @@ class RequestParams /** + * @param $varName + * @param $callback + */ + public function handleText( $varName,$callback ) { + + if ( $this->hasKey($varName ) ) + call_user_func( $callback, $this->getText($varName) ); + } + + /** + * @param $varName + * @param $callback + */ + public function handleNumber( $varName,$callback ) { + + if ( $this->hasKey($varName ) ) + call_user_func( $callback, $this->getNumber($varName) ); + } + + /** + * @param $varName + * @param $callback + */ + public function handleBool( $varName,$callback ) { + + if ( $this->hasKey($varName ) ) + call_user_func( $callback, in_array( $this->getText($varName),['1','true','on']) ); + } + + /** + * @param $varName + * @param $callback + */ + public function handleBoolDefaultFalse( $varName,$callback ) { + + call_user_func( $callback, in_array( $this->getText($varName),['1','true','on']) ); + } + + + /** * Gets the value of the request parameter. * * @param $nameOfRequestParameter diff --git a/modules/cms/action/user/UserPropAction.class.php b/modules/cms/action/user/UserPropAction.class.php @@ -42,26 +42,56 @@ class UserPropAction extends UserAction implements Method { } + + /** + * Save the user properties. + */ public function post() { - if ( ! $this->request->getText('name') ) - throw new \util\exception\ValidationException( 'name'); + $this->request->handleText('name', function($name) { + $this->user->name = $name; + } ); + + $this->request->handleText('fullname', function($fullname) { + $this->user->fullname = $fullname; + }); + + $this->request->handleBoolDefaultFalse('is_admin', function($isAdmin) { + $this->user->isAdmin = $isAdmin; + }); + + $this->request->handleText( 'tel',function($tel) { + $this->user->tel = $tel; + }); + + $this->request->handleText( 'desc',function($desc) { + $this->user->desc = $desc; + }); + + $this->request->handleText( 'language',function($language) { + $this->user->language = $language; + }); + + $this->request->handleText( 'timezone',function($timezone) { + $this->user->timezone = $timezone; + }); + + $this->request->handleText( 'hotp',function($hotp) { + $this->user->hotp = $hotp; + }); - // Benutzer speichern - $this->user->name = $this->request->getText('name' ); - $this->user->fullname = $this->request->getText('fullname'); - $this->user->isAdmin = $this->request->has('is_admin'); - $this->user->tel = $this->request->getText('tel' ); - $this->user->desc = $this->request->getText('desc' ); - $this->user->language = $this->request->getText('language'); - $this->user->timezone = $this->request->getText('timezone'); - $this->user->hotp = $this->request->has('hotp' ); - $this->user->totp = $this->request->has('totp' ); + $this->request->handleText( 'totp',function($value) { + $this->user->totp = $value; + }); if ( Configuration::get(['security','user','show_admin_mail']) ) - $this->user->mail = $this->request->getText('mail' ); + $this->request->handleText( 'mail',function($value) { + $this->user->mail = $value; + }); - $this->user->style = $this->request->getText('style' ); + $this->request->handleText( 'style',function($value) { + $this->user->style = $value; + }); $this->user->persist(); $this->addNoticeFor($this->user,Messages::SAVED);