Managing Current User

since Codoforum V2.2

The user can be accessed using the class User

Get the user object

$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:

Find if the user is logged in

if($user->loggedIn()) {

  //the user is logged in

Check permission

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


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

Log out the user

If you want to log the user out of codoforum


Increment post count

Post count is the number of posts made by user in the forum .


Decrement post count


Increment profile views

Increments profile views of the user by 1


Get user information

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';

Update user

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');


   "name" => "Jason X",
   "last_access" => time()
//Above method will update the user's name and set his last login time

Check password

Check if a password matches the user's account password .

 if($user->checkPassword('1234')) {

    //your password is correct

Update password

Updates the password of the user . This method hashes the password passed and then uses the set() to update the password in the database


remember Me

Sets a remember me cookie , so that codoforum logs the user in automatically when he visits the website next time .


The User class provides the following static methods :

Log the user in

To programatically login the user, you can use .



Login the user , with userid 2


Login the user, with e-mail address

if(User::loginByMail('')) {

    $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 role name

Get the role name by role id

$rid = $user->rid;
$role = User::getRoleName($rid);

Get login url

echo '<a href=' . User::getLoginUrl() . '>' . _t("Login") . '</a>';

Note: _t() is used for translation

Get logout url

echo '<a href=' . User::getLogoutUrl() . '>' . _t("Logout") . '</a>';

Get register url

echo '<a href=' . User::getRegisterUrl() . '>' . _t("Register") . '</a>';

Get profile url

echo '<a href=' . User::getProfileUrl() . '>' . _t("My profile") . '</a>';

Check username exists

Checks if the given username exists in the users table


Check mail exists

Checks if the given mail exists in the users table

© CODOFORUM 2023. All Rights Reserved.