Manage users navigation history is a common scenario developing frontend applications and BEdita comes with an integrated system to handle it.

To activate history tracking just edit config/frontend.ini.php in your frontend application and uncomment:

$config["history"] = array(
   "sessionEntry" => 5,
   "showDuplicates" => false,
   "trackNotLogged" => false
);

where:

  • sessionEntry is the number of history items you want to have in session
  • showDuplicates says if duplicate history items have to show in session
  • trackNotLogged says if history of unsigned users has to be active

Automatically BEdita will trace users activity in history table and fill History array in session.

In $BEAuthUser variable (views variable for user session info) you will have for example:

['History'] => Array(
   [0] => Array(
      ['area_id'] => 1
      ['object_id'] => 3
      ['title'] => //This is the title of content
      ['url'] => //url-to-that-content
      ['user_id'] => 1
      ['id'] => 1
   ),
   [1] => Array(...)
   ...
);

Ajax and Flash calls are not inserted in history and you can always control what you want to end up in history through out the AppController::historyItem property. Setting it to null you avoids to register history in some cases.

For example if you don't want access to a content with unique name "mycontent" to be tracked, then you can add to PagesController:

protected function mycontentBeforeFilter() {
   $this->historyItem = null;
}

If you need you can also manage users history in BEdita backend: just uncomment from bedita-app/config/bedita.cfg.php $config["history"] array.