Check Member's/ User's Online or Offline Status

Check Member's/ User's Online or Offline Status

September 21, 2012 | 2 min read

The following piece of code will calculate the last visited time of a Member/User and calulate the time difference with the current time.

Introduction

The following piece of code will calculate the last visited time of a Member/User and calculate the time difference with the current time. And if the Member/User's last visited time is greater than 10 minutes then that will be considered OFFLINE status, otherwise ONLINE.

Background

I was just searching for a time difference code in Bakery but couldn't find any simple code. I developed and used the following code to calculate the time a User/Member is online or offline.

Using the code

There are only three steps to follow. This code is only for CakePHP 1.5. "I am assuming that you have a table named MEMBER (you can customize it according to your requirements)".
    1. Make a field last_visit (DATETIME) in MEMBER table.
    2. For app controller:
// " Component Class "class AppController extends Controller {            /*    *    * beforeRender() function will run on every visit of the website    */    function beforeRender()    {                    ### UPDATE LAST VISIT ###        $online_offline_status = 0;        if ($this->Session->check('userId')==true){        // Checking for the SESSION - Proceed only if MEMBER/USER is logged in.            $this->loadModel('Member'); // Loading MEMBER Model                        // UPDATE MEMBER VISIT TIME            $last_visit = date('Y-m-d H:i:s', time());            $this->Member->updateAll(array('Member.last_visit' => '"'.$last_visit.'"'),                             array('Member.id' => $this->Session->read('userId')));            // GET TIME DIFFERENCE            $member_last_visit = $this->Member->find('first', array('conditions' =>                array('Member.id' => $this->Session->read('userId'))));            $current_time = strtotime(date("Y-m-d H:i:s")); // CURRENT TIME            $last_visit = strtotime($member_last_visit['Member']['last_visit']); // LAST VISITED TIME                        $time_period = floor(round(abs($current_time - $last_visit)/60,2)); //CALCULATING MINUTES                        //IF YOU WANT TO CALCULATE DAYS THEN USER THIS            //$time_period = floor(round(abs($current_time - $last_visit)/60,2)/1440);                        echo $time_period;            if ($time_period <= 10){                $online_offline_status = 1; // Means User is ONLINE            } else {                $online_offline_status = 0; // Means User is OFFLINE            }        }            $this->set('online_offline_status', $online_offline_status);            }//end beforeRender()            }
    1. Simply use the following code in your .ctp file according to your demand.
// " View Template "if ($online_offline_status == 0){  echo '(Member/User is Offline)'; } else if ($online_offline_status == 1) {  echo '(Member/User is Online)';}