<?php


interface IMembershipUser
{
	public function getEmail();
	public function setEmail($value);
	public function getCreationDate();
	public function setCreationDate($value);
	public function getIsApproved();
	public function setIsApproved($value);
	public function getIsLockedOut();
	public function setIsLockedOut($value);
	public function getIsOnline();
	public function setIsOnline($value);
	public function getLastLoginDate();
	public function setLastLoginDate($value);
	public function getLastActivityDate();
	public function setLastActivityDate($value);
	public function getLastLockoutDate();
	public function setLastLockoutDate($value);
	public function getLastPasswordChangedDate();
	public function setLastPasswordChangedDate($value);
	public function getPasswordQuestion();
	public function setPasswordQuestion($value);
	public function getComment();
	public function setComment($value);

	public function update();
	public function fetchPassword($passwordAnswer=null);
	public function changePassword($username,$oldPassword,$newPassword);
	public function changePasswordQuestionAndAnswer($username,$password,$newQuestion,$newAnswer);
	public function resetPassword($passwordAnswer=null);
}

interface IUserManager
{
}



class TMembershipUser extends TUser implements IMembershipUser
{
}

interface IRoleProvider
{
	public function addUsersToRoles($users,$roles);
	public function removeUsersFromRoles($users,$roles);
	public function createRole($role);
	public function deleteRole($role,$throwOnPopulatedRole);
	public function getAllRoles();
	public function getRolesForUser($user);
	public function getUsersInRole($role);
	public function isUserInRole($user,$role);
	public function roleExists($role);
}

interface IMembershipProvider
{
	public function getApplicationName();
	public function setApplicationName($value);

	public function createUser($username,$password,$email,$question,$answer,$isApproved); // return $key or error status
	public function deleteUser($username,$deleteAllRelatedData);
	public function updateUser($user);

	public function changePassword($username,$oldPassword,$newPassword);
	public function changePasswordQuestionAndAnswer($username,$password,$newQuestion,$newAnswer);

	public function encryptPassword($password);
	public function decryptPassword($encodedPassword);
	public function encodePassword($password,$format,$salt);
	public function decodePassword($password,$format);
	public function generateSalt();

	public function findUsersByEmail($email,$pageIndex,$pageSize);
	public function findUsersByName($email,$pageIndex,$pageSize);

	public function getAllUsers($pageIndex,$pageSize);
	public function getUser($username,$userkey,$userIsOnline);
	public function getNumberOfUsersOnline(); //???
	public function getUsernameByEmail($email);
	public function getPassword($username,$answer);
	public function resetPassword($username,$answer);
	public function unlockUser($username);

	public function validateUser($username,$password);

	public function onValidatingPassword($param);

	public function getEnablePasswordReset();
	public function setEnablePasswordReset($value);
	public function getEnablePasswordRetrieval();
	public function setEnablePasswordRetrieval($value);
	public function getMaxInvalidPasswordAttempts();
	public function setMaxInvalidPasswordAttempts($value);
	public function getUsernameFormat();
	public function setUsernameFormat($value);
	public function getPasswordFormat();
	public function setPasswordFormat($value);
	public function getRequiresQuestionAndAnswer();
	public function setRequiresQuestionAndAnswer($value);
	public function getRequiresUniqueEmail();
	public function setRequiresUniqueEmail($value);
}


?>