public static function match($in_input, $in_that, $in_topic) { if ($in_that === null) { $in_that = ''; } if ($in_topic === null) { $in_topic = ''; } $context = new JxBotEngine(); $context->tags = JxBotEngine::compute_tags($in_input); //var_dump($context->tags); $search_terms = JxBotNL::normalise($in_input); $search_terms[] = ':'; $terms = JxBotNL::normalise($in_that); if (count($terms) == 0) { $search_terms[] = '*'; } else { $search_terms = array_merge($search_terms, $terms); } $search_terms[] = ':'; $terms = JxBotNL::normalise($in_topic); if (count($terms) == 0) { $search_terms[] = '*'; } else { $search_terms = array_merge($search_terms, $terms); } /*print 'Search: <pre>'; var_dump($search_terms); print '</pre>';*/ $context->input_terms = $search_terms; $context->term_index = 0; $context->term_limit = count($search_terms); $context->wild_values = array(); $context->wild_that_values = array(); $context->wild_topic_values = array(); $context->unwind_stage = 2; $context->search_depth = 0; //var_dump($search_terms); //print '<br>'; $matched_pattern = $context->walk(0, 0); if ($matched_pattern === false) { return false; } //print 'Matched pattern: '.$matched_pattern.' ('.$context->search_depth.')<br>'; $stmt = JxBotDB::$db->prepare('SELECT category,term_count FROM pattern WHERE id=?'); $stmt->execute(array($matched_pattern)); $category = $stmt->fetchAll(PDO::FETCH_NUM); $context->matched_category_id = $category[0][0]; $context->term_count = $category[0][1]; return $context; }