Пример #1
0
 public function call()
 {
     $app = $this->app;
     $env = $app->environment();
     //login
     if ($app->request()->getPath() === $app->urlFor('webim_login')) {
         $this->next->call();
         return;
     }
     //user, not visitor
     if (isset($_SESSION['uid'])) {
         $this->next->call();
         return;
     }
     //check cookie
     $vid = $app->getCookie('webim.vid');
     //webim.vid.$siteid
     $path = $app->request()->getPath();
     if (!$vid && ($path === $app->urlFor('load') || $path === $app->urlFor('chatbox'))) {
         $visitor = ORM::forTable('visitors')->create();
         $visitor->siteid = $app->request()->params('siteid');
         $visitor->day = date('Y-m-d');
         $visitor->month = date('m');
         $visitor->created_at = date('Y-m-d H:i:s');
         $visitor->save();
         $vid = $visitor->id;
         $app->setCookie('webim.vid', $vid, '2 days');
     }
     if (!$vid) {
         $app->halt('400', 'bad request');
         exit;
     }
     $endpoint = array('id' => 'vid:' . $vid, 'nick' => 'v' . $vid, 'show' => 'available', 'status' => '', 'url' => '#', 'pic_url' => Gravatar::d($vid), 'role' => 'visitor');
     $env['endpoint'] = $endpoint;
     $this->next->call();
 }