query( "select {chatgroup}.groupid as groupid, vclocalname " . "from {chatgroup} order by vclocalname", NULL, array('return_rows' => Database::RETURN_ALL_ROWS) ); $groupName = array(); foreach ($groups as $group) { $groupName[$group['groupid']] = $group['vclocalname']; } $page['groupName'] = $groupName; $escapedQuery = $escapedQuery?$escapedQuery:''; $values = array( ':query' => "%{$escapedQuery}%" ); $searchConditions = array(); if ($searchType == 'message' || $searchType == 'all') { $searchConditions[] = "({chatmessage}.tmessage LIKE :query" . ($searchInSystemMessages?'':" AND ({chatmessage}.ikind = :kind_user OR {chatmessage}.ikind = :kind_agent)") . ")"; $values[':kind_user'] = Thread::KIND_USER; $values[':kind_agent'] = Thread::KIND_AGENT; } if ($searchType == 'operator' || $searchType == 'all') { $searchConditions[] = "({chatthread}.agentName LIKE :query)"; } if ($searchType == 'visitor' || $searchType == 'all') { $searchConditions[] = "({chatthread}.userName LIKE :query)"; $searchConditions[] = "({chatthread}.remote LIKE :query)"; } // Load threads select_with_pagintation("DISTINCT {chatthread}.*", "{chatthread}, {chatmessage}", array( "{chatmessage}.threadid = {chatthread}.threadid", "(" . implode(' or ', $searchConditions) . ")" ), "order by {chatthread}.dtmcreated DESC", "DISTINCT {chatthread}.dtmcreated", $values); // Build Thread object foreach ($page['pagination.items'] as $key => $item) { $page['pagination.items'][$key] = Thread::createFromDbInfo($item); } $page['formq'] = topage($query); } else { setup_empty_pagination(); } $page['formtype'] = $searchType; $page['forminsystemmessages'] = $searchInSystemMessages; prepare_menu($operator); start_html_output(); require('../view/thread_search.php'); ?>