Better structure for parts controller
This commit is contained in:
parent
7f019dd740
commit
20c5c9d147
@ -10,6 +10,33 @@ defined('_JEXEC') or die;
|
||||
abstract class UserException extends Exception {}
|
||||
class InvalidUserDataException extends UserException {}
|
||||
|
||||
class ClubsHelperControllerUser
|
||||
{
|
||||
|
||||
public function parse($fcnName, $user, $post)
|
||||
{
|
||||
switch($fcnName)
|
||||
{
|
||||
case 'name':
|
||||
return $this->editName($user, $post);
|
||||
|
||||
default:
|
||||
throw new Exception();
|
||||
}
|
||||
}
|
||||
|
||||
public function editName($user, $post)
|
||||
{
|
||||
$name = $post->getString('name');
|
||||
if(strlen($name) < 5)
|
||||
throw new InvalidUserDataException("Der Name muss mindestens 5 Zeichen lang sein.");
|
||||
|
||||
$user->setName($name);
|
||||
$user->save();
|
||||
return 'index.php?option=com_clubs&view=mypage&layout=parts&type=name';
|
||||
}
|
||||
}
|
||||
|
||||
class ClubsControllerParts extends BaseController
|
||||
{
|
||||
|
||||
@ -29,7 +56,6 @@ class ClubsControllerParts extends BaseController
|
||||
{
|
||||
echo new JsonResponse($e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,22 +64,22 @@ class ClubsControllerParts extends BaseController
|
||||
*/
|
||||
private function callMethod($user, $post)
|
||||
{
|
||||
switch($post->getCmd('partname'))
|
||||
$partname = $post->getCmd('partname');
|
||||
|
||||
if(! preg_match('/.*\..*/', $partname))
|
||||
throw new Exception();
|
||||
|
||||
list($objname, $fcnName) = explode('.', $partname, 2);
|
||||
|
||||
switch($objname)
|
||||
{
|
||||
case 'user.name':
|
||||
return $this->editUserName($user, $post);
|
||||
case 'user':
|
||||
$obj = new ClubsHelperControllerUser();
|
||||
return $obj->parse($fcnName, $user, $post);
|
||||
|
||||
default:
|
||||
throw new Exception();
|
||||
}
|
||||
}
|
||||
|
||||
private function editUserName($user, $post)
|
||||
{
|
||||
$name = $post->getString('name');
|
||||
if(strlen($name) < 5)
|
||||
throw new InvalidUserDataException("Der Name muss mindestens 5 Zeichen lang sein.");
|
||||
|
||||
$user->setName($name);
|
||||
$user->save();
|
||||
return 'index.php?option=com_clubs&view=mypage&layout=parts&type=name';
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user