diff --git a/src/site/controllers/parts.json.php b/src/site/controllers/parts.json.php index 56307eb..93135ea 100644 --- a/src/site/controllers/parts.json.php +++ b/src/site/controllers/parts.json.php @@ -10,7 +10,42 @@ defined('_JEXEC') or die; abstract class UserException extends Exception {} class InvalidUserDataException extends UserException {} -class ClubsHelperControllerUser +abstract class AbstractClubsHelperController +{ + + private $fcnNames; + + public function __construct() + { + $this->fcnNames = array(); + $this->registerAll(); + } + + abstract protected function registerAll(); + + protected function registerFcn($fcnName, $methodName) + { + $this->fcnNames[$fcnName] = $methodName; + } + + public function handle($fcnName, $data, $post) + { + if(empty($this->fcnNames[$fcnName])) + throw new Exception(); + + $method = $this->fcnNames[$fcnName]; + $this->$method($data, $post); + } + + protected function checkLen($value, $len, $msg) + { + if(strlen($value) < 5) + throw new InvalidUserDataException($msg); + } + +} + +class ClubsHelperControllerUser extends AbstractClubsHelperController { /** * @param string $fcnName @@ -52,13 +87,19 @@ class ClubsHelperControllerUser return "index.php?option=com_clubs&view=part&type=user.$fcnName"; } - private function checkLen($value, $len, $msg) + + protected function registerAll() { - if(strlen($value) < 5) - throw new InvalidUserDataException($msg); + $this->registerFcn('name', 'editName'); + $this->registerFcn('username', 'editUsername'); + $this->registerFcn('address', 'editAddress'); + $this->registerFcn('city', 'editCity'); + $this->registerFcn('mail', 'editMail'); + $this->registerFcn('phone', 'editPhone'); + $this->registerFcn('mobile', 'editMobile'); } - private function editName($user, $post) + protected function editName($user, $post) { $name = trim($post->getString('value')); $this->checkLen($name, 5, "Der Name muss mindestens 5 Zeichen lang sein."); @@ -67,11 +108,12 @@ class ClubsHelperControllerUser $user->save(); } - private function editUsername($user, $post) + protected function editUsername($user, $post) { $username = $post->getString('value'); $validator = new ClubsHelperValidator(); $res = $validator->validateUsername($user, $username); + $this->checkLen($username, 5, 'Der Benutzername muss mindestens 5 Zeichen lang sein.'); switch($res) { @@ -91,7 +133,7 @@ class ClubsHelperControllerUser } } - private function editAddress($user, $post) + protected function editAddress($user, $post) { $address = trim($post->getString('value')); $this->checkLen($address, 10, 'Die Adresse muss mindestens 10 Zeichen lang sein.'); @@ -105,7 +147,7 @@ class ClubsHelperControllerUser $user->save(); } - private function editCity($user, $post) + protected function editCity($user, $post) { $city = trim($post->getString('value')); $this->checkLen($city, 4, 'Die Stadt muss aus mindestens 4 Zeichen bestehen.'); @@ -114,7 +156,7 @@ class ClubsHelperControllerUser $user->save(); } - private function editMail($user, $post) + protected function editMail($user, $post) { $mail = trim($post->getString('value')); $this->checkLen($mail, 8, "Die Mail-Adresse muss aus mindestens 8 Zeichen bestehen."); @@ -125,7 +167,7 @@ class ClubsHelperControllerUser $user->save(); } - private function editPhone($user, $post) + protected function editPhone($user, $post) { $phone = trim($post->getString('value')); @@ -149,7 +191,7 @@ class ClubsHelperControllerUser $user->save(); } - private function editMobile($user, $post) + protected function editMobile($user, $post) { $mobile = trim($post->getString('value')); @@ -172,6 +214,7 @@ class ClubsHelperControllerUser $user->setMobile($mobilePlain); $user->save(); } + } class ClubsControllerParts extends BaseController @@ -212,11 +255,13 @@ class ClubsControllerParts extends BaseController { case 'user': $obj = new ClubsHelperControllerUser(); - return $obj->parse($fcnName, $user, $post); + $obj->handle($fcnName, $user, $post); + break; default: throw new Exception(); } + return "index.php?option=com_clubs&view=part&type=$partname"; } }