since Codoforum V2.2
The user can be accessed using the class User
$user = User::get();
If you do not pass any id, it returns the current user . But you can get a object of any other user by passing their userid.
$someUser = User::get(2);
//Above method returns an object of the user with userid 2.
You can also get the user object using following methods
$user = User::getByMail($mail);
//returns user object if any of the below exists in user table
$user = User::getByMailOrUsername($mail, $username);
$user = User::getByIdOrUsername($userid, $username);
Now, you have access to the following properties:
$user->id; //get userid
$user->username; //get username
$user->name; //get name
$user->mail; //get user's email address
$user->rid; //get user's role id
$user->created; //created time [in seconds]
$user->last_access; //last login time
$user->user_status; //boolean indicating whether the user is confirmed
$user->no_posts; //Number of posts made by the user
$user->profile_views; //Number of profile views
Note: If the user is not logged in and if you have not passed an id while calling
User:get()
, you will get a default user object for guest .
After , you get the $user object, you can use the following methods:
if($user->loggedIn()) {
//the user is logged in
}
Sometimes, you may have to check if the user has permissions to perform an action .
You can check that by using the $user->can() method
$user = User::get();
if($user->can('delete all topics')) {
//Let him delete the topic
}
You can also check multiple permissions at once by passing an array of permissions using the following methods:
$user->canAny(array $permissions)
Returns true if any of the permissions are satisfied
$user->canAll(array $permissions)
Returns true only if all of the permissions are satisfied
Example.
if($user->canAll(array('delete my post', 'create topic'))) {
//let him delete his own post
//let him create a new topic
}
You can look at the table codo_role_permissions for a list of all permissions
If you want to log the user out of codoforum
User::logout();
Post count is the number of posts made by user in the forum .
$user->incPostCount();
$user->decPostCount();
Increments profile views of the user by 1
$user->incProfileViews();
If you want the user information i.e username, mail, etc as a array , you can use the following method
$info = $user->getInfo();
echo 'Hi ' . $info['username'] . ', you have made ' . $info['no_posts'] . ' posts';
To update user information in the database you can use the method:
$user->set(array $values);
$values is an associative array in the form
$values = array('username' => 'Jackson');
Example.
$user->set(array(
"name" => "Jason X",
"last_access" => time()
));
//Above method will update the user's name and set his last login time
Check if a password matches the user's account password .
if($user->checkPassword('1234')) {
//your password is correct
}
Updates the password of the user . This method hashes the password passed and then uses the set()
to update the password in the database
$user->updatePassword('MyNewPassword');
Sets a remember me cookie , so that codoforum logs the user in automatically when he visits the website next time .
$user->rememberMe();
The User class provides the following static methods :
To programatically login the user, you can use .
User::login($userid);
User::loginByMail($email);
Example
Login the user , with userid 2
User::login(2);
Login the user, with e-mail address user@domain.com
if(User::loginByMail('user@domain.com')) {
$user = User::get();
echo 'Hello ' . $user->username;
}
Returns true on success else false
Note: When this function is called, it also sets the user's last login time
Some helper methods
Get the role name by role id
$rid = $user->rid;
$role = User::getRoleName($rid);
echo '<a href=' . User::getLoginUrl() . '>' . _t("Login") . '</a>';
Note: _t() is used for translation
echo '<a href=' . User::getLogoutUrl() . '>' . _t("Logout") . '</a>';
echo '<a href=' . User::getRegisterUrl() . '>' . _t("Register") . '</a>';
echo '<a href=' . User::getProfileUrl() . '>' . _t("My profile") . '</a>';
Checks if the given username exists in the users table
User::usernameExists($username);
Checks if the given mail exists in the users table
User::mailExists($mail);