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