public static function processProActiveInvitation(erLhcoreClassModelChatOnlineUser &$item, $params = array()) { $referrer = self::getHost($item->referrer); $session = erLhcoreClassAbstract::getSession(); $appendTag = ''; $q = $session->createFindQuery('erLhAbstractModelProactiveChatInvitation'); if (isset($params['tag']) && $params['tag'] != '') { $appendTag = 'AND (' . $q->expr->eq('tag', $q->bindValue($params['tag'])) . ' OR tag = \'\')'; } else { $appendTag = 'AND (tag = \'\')'; } $q->where($q->expr->lte('time_on_site', $q->bindValue($item->time_on_site)) . ' AND ' . $q->expr->lte('pageviews', $q->bindValue($item->pages_count)) . ' AND (' . $q->expr->eq('siteaccess', $q->bindValue(erLhcoreClassSystem::instance()->SiteAccess)) . ' OR siteaccess = \'\') AND (' . $q->expr->eq('identifier', $q->bindValue($item->identifier)) . ' OR identifier = \'\') ' . $appendTag . ' AND (' . $q->expr->eq('dep_id', $q->bindValue($item->dep_id)) . ' OR dep_id = 0) AND (' . $q->expr->like($session->database->quote(trim($referrer)), 'concat(referrer,\'%\')') . ' OR referrer = \'\')')->orderBy('position ASC')->limit(1); $messagesToUser = $session->find($q); if (!empty($messagesToUser)) { $message = array_shift($messagesToUser); // Use default message if first time visit or returning message is empty if ($item->total_visits == 1 || $message->message_returning == '') { $item->operator_message = $message->message; } else { if ($item->chat !== false && $item->chat->nick != '') { $nick = $item->chat->nick; } elseif ($message->message_returning_nick != '') { $nick = $message->message_returning_nick; } else { $nick = ''; } $item->operator_message = str_replace('{nick}', $nick, $message->message_returning); } $item->operator_user_proactive = $message->operator_name; $item->invitation_id = $message->id; $item->invitation_seen_count = 0; $item->requires_email = $message->requires_email; $item->requires_username = $message->requires_username; $item->requires_phone = $message->requires_phone; $item->invitation_count++; $item->store_chat = true; $item->invitation_assigned = true; $item->last_visit = time(); if ($message->show_random_operator == 1) { $item->operator_user_id = erLhcoreClassChat::getRandomOnlineUserID(array('operators' => explode(',', trim($message->operator_ids)))); } $message->executed_times += 1; $message->updateThis(); erLhcoreClassChatEventDispatcher::getInstance()->dispatch('onlineuser.proactive_triggered', array('message' => &$message, 'ou' => &$item)); } }
public static function processProActiveInvitation(erLhcoreClassModelChatOnlineUser &$item) { $referrer = self::getHost($item->referrer); $session = erLhcoreClassAbstract::getSession(); $q = $session->createFindQuery('erLhAbstractModelProactiveChatInvitation'); $q->where($q->expr->lte('time_on_site', $q->bindValue($item->time_on_site)) . ' AND ' . $q->expr->lte('pageviews', $q->bindValue($item->pages_count)) . ' AND (' . $q->expr->eq('siteaccess', $q->bindValue(erLhcoreClassSystem::instance()->SiteAccess)) . ' OR siteaccess = \'\') AND (' . $q->expr->eq('identifier', $q->bindValue($item->identifier)) . ' OR identifier = \'\') AND (' . $q->expr->eq('dep_id', $q->bindValue($item->dep_id)) . ' OR dep_id = 0) AND (' . $q->expr->like($session->database->quote(trim($referrer)), 'concat(referrer,\'%\')') . ' OR referrer = \'\')')->orderBy('position ASC')->limit(1); $messagesToUser = $session->find($q); if (!empty($messagesToUser)) { $message = array_shift($messagesToUser); $item->operator_message = $message->message; $item->operator_user_proactive = $message->operator_name; $item->invitation_id = $message->id; $item->invitation_seen_count = 0; $item->requires_email = $message->requires_email; $item->requires_username = $message->requires_username; $item->requires_phone = $message->requires_phone; $item->invitation_count++; $item->store_chat = true; $item->invitation_assigned = true; $item->last_visit = time(); if ($message->show_random_operator == 1) { $item->operator_user_id = erLhcoreClassChat::getRandomOnlineUserID(array('operators' => explode(',', trim($message->operator_ids)))); } $message->executed_times += 1; $message->updateThis(); } }