public function actionRegistration()
 {
     // When we override the registrationUrl, this one should not be accessible
     // anymore
     if (Yum::module('registration')->registrationUrl != array('//registration/registration/registration')) {
         throw new CHttpException(403);
     }
     Yii::import('user.profile.models.*');
     $form = new YumRegistrationForm();
     $profile = new YumProfile();
     $this->performAjaxValidation('YumRegistrationForm', $form);
     if (isset($_POST['YumRegistrationForm'])) {
         $form->attributes = $_POST['YumRegistrationForm'];
         $profile->attributes = $_POST['YumProfile'];
         if (Yum::module('registration')->registration_by_email) {
             $form->username = $profile->email;
         }
         $form->validate();
         $profile->validate();
         if (!$form->hasErrors() && !$profile->hasErrors()) {
             $user = new YumUser();
             $user->register($form->username, $form->password, $profile);
             $user->profile = $profile;
             $this->sendRegistrationEmail($user);
             Yum::setFlash('Thank you for your registration. Please check your email.');
             $this->redirect(Yum::module()->loginUrl);
         }
     }
     $this->render(Yum::module('registration')->registrationView, array('form' => $form, 'profile' => $profile));
 }
	public function actionCreate($mode)
	{
		switch($mode)
		{
			case 'user':
				$model = new YumUser;
				$profile = new YumProfile;
				break;
			default:
		}
		$username = $_POST['username'] or $this->_sendResponse(
				501, 'Username missing');
		$password = $_POST['password'] or $this->_sendResponse(
				501, 'Password missing');

		foreach($_POST as $key => $value)
			if($profile->hasAttribute($key))
				$profile->$key = $value;

		if($profile->validate() && $model->register($username, $password, $profile))
			$this->_sendResponse(200, 
					CJSON::encode(array($model, $profile)));	
		else {
			$msg = "<h1>Error</h1>";
			$msg .= sprintf("Couldn't create %s", $mode);
			$msg .= "<ul>";
			foreach($model->errors as $attribute => $attr_errors) {
				$msg .= "<li>Attribute: $attribute</li>";
				$msg .= "<ul>";
				foreach($attr_errors as $attr_error)
					$msg .= "<li>$attr_error</li>";
				$msg .= "</ul>";
			}

			foreach($profile->errors as $attribute => $attr_errors) {
				$msg .= "<li>Attribute: $attribute</li>";
				$msg .= "<ul>";
				foreach($attr_errors as $attr_error)
					$msg .= "<li>$attr_error</li>";
				$msg .= "</ul>";
			}
			$msg .= "</ul>";
			$this->_sendResponse(500, $msg );

		}
	}
	public function actionRegistration() {
		// When we overrie the registrationUrl, this one is not valid anymore!
		if(Yum::module('registration')->registrationUrl != array(
					'//registration/registration/registration'))
			throw new CHttpException(403);

		Yii::import('application.modules.profile.models.*');
		$form = new YumRegistrationForm;
		$profile = new YumProfile;

		$this->performAjaxValidation('YumRegistrationForm', $form);

		if (isset($_POST['YumRegistrationForm'])) { 
			$form->attributes = $_POST['YumRegistrationForm'];
			$profile->attributes = $_POST['YumProfile'];

			$form->validate();
			$profile->validate();

			if(!$form->hasErrors() && !$profile->hasErrors()) {
				$user = new YumUser;
				
				$user->register($form->username, $form->password, $profile->email);
				$profile->user_id = $user->id;
				$profile->save();

				$this->sendRegistrationEmail($user);
				Yum::setFlash('Thank you for your registration. Please check your email.');
				$this->redirect(Yum::module()->loginUrl);
			}
		} 

		$this->render(Yum::module()->registrationView, array(
					'form' => $form,
					'profile' => $profile,
					)
				);  
	}
	/**
	 * Creates a new User.
	 */
	public function actionCreate() {
		$model = new YumUser;
		if(Yum::hasModule('profile'))
			$profile = new YumProfile;
		$passwordform = new YumUserChangePassword;

		// When opening a empty user creation mask, we most probably want to
		// insert an _active_ user
		if(!isset($model->status))
			$model->status = 1;

		if(isset($_POST['YumUser'])) {
			$model->attributes=$_POST['YumUser'];

			if(Yum::hasModule('role'))
				$model->roles = Relation::retrieveValues($_POST);

			if(Yum::hasModule('profile') && isset($_POST['YumProfile']) )
				$profile->attributes = $_POST['YumProfile'];

			if(isset($_POST['YumUserChangePassword'])) {
				if($_POST['YumUserChangePassword']['password'] == '') {
					$password = YumUser::generatePassword();
					$model->setPassword($password);
					Yum::setFlash(Yum::t('The generated Password is {password}', array(
									'{password}' => $password)));
				} else {
					$passwordform->attributes = $_POST['YumUserChangePassword'];

					if($passwordform->validate())
						$model->setPassword($_POST['YumUserChangePassword']['password']);
				}
			}

			$model->activationKey = YumUser::encrypt(microtime() . $model->password);

			if($model->username == '' && isset($profile))
				$model->username = $profile->email;

			$model->validate();

			if(isset($profile))
				$profile->validate();

			if(!$model->hasErrors()
					&& !$passwordform->hasErrors()) {
				$model->save();
				if(isset($profile)) {
					$profile->user_id = $model->id;
					$profile->save(array('user_id'), false);
				}
			        Yii::import('application.modules.registration.controllers.YumRegistrationController');
				YumRegistrationController::sendRegistrationEmail($model);
				$this->redirect(array('view', 'id'=>$model->id));
			}
		}

		$this->render('create',array(
					'model' => $model,
					'passwordform' => $passwordform,
					'profile' => isset($profile) ? $profile : null,
					));
	}
 /**
  * Creates a new User.
  */
 public function actionCreate()
 {
     $user = new YumUser();
     if (Yum::hasModule('profile')) {
         $profile = new YumProfile();
     }
     $passwordform = new YumUserChangePassword();
     // When opening a empty user creation mask, we most probably want to
     // insert an _active_ user
     if (!$user->status) {
         $user->status = 1;
     }
     if (isset($_POST['YumUser'])) {
         $user->attributes = $_POST['YumUser'];
         if (isset($_POST['YumUserChangePassword'])) {
             if ($_POST['YumUserChangePassword']['password'] == '') {
                 Yii::import('user.components.EPasswordGenerator');
                 $generatorOptions = Yum::module()->passwordGeneratorOptions;
                 $password = EPasswordGenerator::generate($generatorOptions['length'], $generatorOptions['capitals'], $generatorOptions['numerals'], $generatorOptions['symbols']);
                 $user->setPassword($password);
                 Yum::setFlash(Yum::t('The generated Password is {password}', array('{password}' => $password)));
             } else {
                 $passwordform->attributes = $_POST['YumUserChangePassword'];
                 if ($passwordform->validate()) {
                     $user->setPassword($_POST['YumUserChangePassword']['password']);
                 }
             }
         }
         $user->validate();
         if (Yum::hasModule('profile') && isset($_POST['YumProfile'])) {
             $profile->attributes = $_POST['YumProfile'];
         }
         if (!$user->hasErrors()) {
             $user->activationKey = CPasswordHelper::hashPassword(microtime() . $user->password, Yum::module()->passwordHashCost);
             if ($user->username == '' && isset($profile)) {
                 $user->username = $profile->email;
             }
             if (isset($profile)) {
                 $profile->validate();
             }
             if (!$user->hasErrors() && !$passwordform->hasErrors()) {
                 $user->save();
                 if (isset($_POST['YumUser']['roles'])) {
                     $user->syncRoles($_POST['YumUser']['roles']);
                 } else {
                     $user->syncRoles();
                 }
                 if (isset($profile)) {
                     $profile->user_id = $user->id;
                     $profile->save(array('user_id'), false);
                 }
                 $this->redirect(array('view', 'id' => $user->id));
             }
         }
     }
     $this->render('create', array('user' => $user, 'passwordform' => $passwordform, 'profile' => isset($profile) ? $profile : null));
 }