예제 #1
0
 /**
  * get's callend then online user is created
  *
  * @param array $params            
  *
  */
 public function onlineUserCreated($params)
 {
     if ($this->settings['enabled'] == true && $this->settings['online_visitors_tracking'] == true) {
         $onlineOptions = erLhcoreClassModelChatConfig::fetch('xmppservice_options')->data;
         if (isset($onlineOptions['track_online']) && $onlineOptions['track_online'] == true) {
             // Append automated hosting subdomain if required
             $subdomainUser = '';
             if ($this->settings['subdomain'] != '') {
                 $subdomainUser = '******' . $this->settings['subdomain'];
             }
             // Create DB record for XMPP user
             $xmppAccount = new erLhcoreClassModelXMPPAccount();
             $xmppAccount->lactivity = $xmppAccount->ctime = time();
             $xmppAccount->username = '******' . $params['ou']->id . $subdomainUser . '@' . $this->settings['xmpp_host'];
             $xmppAccount->password = substr(md5(microtime() . rand(0, 100) . $params['ou']->vid), 0, 20);
             $xmppAccount->user_id = $params['ou']->id;
             $xmppAccount->type = erLhcoreClassModelXMPPAccount::USER_TYPE_VISITOR;
             $xmppAccount->saveThis();
             if ($this->settings['handler'] == 'rpc' && is_object($params['tpl']) && $this->settings['online_visitors_tracking'] == true) {
                 $params['tpl']->set('xmppAccount', $xmppAccount);
             }
             // Forward this information to NodeJS server
             erLhcoreClassExtensionXmppserviceHandler::newOnlineVisitor(array('xmpp_account' => $xmppAccount, 'xmpp_host' => $this->settings['xmpp_host'], 'ou' => $params['ou'], 'host_login' => $this->settings['host_login'], 'node_api_server' => $this->settings['node_api_server'], 'handler' => $this->settings['handler'], 'rpc_server' => $this->settings['rpc_server'], 'rpc_username' => $this->settings['rpc_username'], 'rpc_password' => $this->settings['rpc_password'], 'rpc_account_host' => $this->settings['rpc_account_host']));
             erLhcoreClassChatEventDispatcher::getInstance()->dispatch('xmppservice.online_account_created', array('xmppaccount' => $xmppAccount, 'ou' => $params['ou']));
         }
     }
 }