Beispiel #1
0
 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;
 }