public static function resume_conversation($in_convo_id) { /* generate a conversation ID if required */ if ($in_convo_id === null || $in_convo_id === '') { $in_convo_id = hash('sha256', time()); } /* check if the conversation is registered */ $stmt = JxBotDB::$db->prepare('SELECT id, name, accessed >= DATE_SUB(NOW(), INTERVAL 15 MINUTE) FROM session WHERE convo_id=?'); $stmt->execute(array($in_convo_id)); $session_id = $stmt->fetchAll(PDO::FETCH_NUM); /* change the conversation ID if required */ if ($in_convo_id != 'admin' && count($session_id) == 1 && $session_id[0][2] == 0) { $in_convo_id = hash('sha256', time()); $session_id = array(); } /* register the conversation */ if (count($session_id) == 0) { if ($in_convo_id == 'admin') { $name = 'Administrator'; } else { $name = ''; } $stmt = JxBotDB::$db->prepare('INSERT INTO session (convo_id, name) VALUES (?, ?)'); $stmt->execute(array($in_convo_id, $name)); $session_id = JxBotDB::$db->lastInsertId(); } else { $name = $session_id[0][1]; $session_id = $session_id[0][0]; $stmt = JxBotDB::$db->prepare('UPDATE session SET accessed=CURRENT_TIMESTAMP WHERE id=?'); $stmt->execute(array($session_id)); } /* store conversation IDs for this request */ JxBotConverse::$convo_id = $in_convo_id; JxBotConverse::$session_id = $session_id; JxBotConverse::$predicates['name'] = $name; return $in_convo_id; }