Dealing with User Management

Jeremy

Well-known member
I am writing an add on that deals with user information. I want to lean on XenForo_DataWriter_User's _verifyUsername() function, but since it is protected, I cannot call XenForo_DataWriter_Users::_verifyUsername(); within my _verifyUsername() function, but I really don't want to rewrite / distribute the code 'as my own.' Should I extend this class, even though this is basically the only function I require from the XenForo_DataWriter_User class, so, best option here? My post, pre, and save functions are all separate, because it deals with my own table (well, ok, save will call XenForo_DataWriter_User to update the username eventually).
 

Jeremy

Well-known member
OK, I see that I can maybe use _publish() and _getPermissionModel() as my add on uses permissions and it'd be nice to maybe publish the results?
 

Deceptor

Active member
Does your method only need to be used by your modification? If so I'd extend the class and create a new method like "_myVerifyUsername()" which calls the parent and then your validation:

PHP:
protected function _myVerifyUsername($username)
{
	if (!parent::_verifyUsername($username))
	{
		return false;
	}

	// your checks here

	return true;
}
 

Jeremy

Well-known member
Does your method only need to be used by your modification? If so I'd extend the class and create a new method like "_myVerifyUsername()" which calls the parent and then your validation:

PHP:
protected function _myVerifyUsername($username)
{
	if (parent::_verifyUsername($username))
	{
		// do checks here
	}

	return true;
}
Basically, I just want to mimic that functionality. So, basically _myVerifyUsername = _verifyUsername. Hence the choice to extend that class. I think that might be the best choice, but not sure with this whole MVC thing.
 

Deceptor

Active member
I updated my previous post, I had some dumb code (didn't return false if the parent came back false). Extending then calling the parent seems like the best approach in my opinion :)

If you don't want to add anything to the method, you should still be able to call _verifyUsername() from your extended class as normal, no?
 

Jeremy

Well-known member
I should be able to, but I defined a _usernameRequestVerifyUsername($username) because I am using the array('$this', 'functionName') setup for verification, so... I just used that and...
PHP:
	/**
	* Verifies the username against administrator defined criteria.
	*
	* @return boolean
	*/
	protected function _usernameRequestVerifyUsername($username)
	{
		return parent::_verifyUsername($username);
	}
 

Jeremy

Well-known member
Yeah, I got those. :) I just am not sure how to use parent:: within this code:
PHP:
				'requested_name'
					=> array('type' => self::TYPE_STRING, 'required' => true, 'maxLength' => XenForo_Application::get('options')->usernameLengthMax, 'verification' => array('$this', '_usernameRequestVerifyUsername'), 'requiredError' => 'please_enter_valid_name'),
And I am not feeling like looking it up, so I made my own function in the $this class, to call the parent::.
 

Jeremy

Well-known member
Nope, I need my username verification, there's one or two more verifications I want to include... Solves that problem. :p Now, I just gotta figure out error messages. Does $this->errors[] work?
 

Deceptor

Active member
It's stored in the array _errors under the DataWriter class, you can access the array via: $class->getErrors() :)
 
Top