/**
 * load a bulk template in databse
 * @param object $vmoodle
 * @param string $bulfile a bulk file of queries to process on the database
 * @param handle $cnx
 * @param array $vars an array of vars to inject in the bulk file before processing
 */
function vmoodle_load_db_template(&$vmoodle, $bulkfile, $cnx = null, $vars = null, $filter = null)
{
    global $CFG;
    $local_cnx = 0;
    if (is_null($cnx) || $vmoodle->vdbtype == 'postgres') {
        // Postgress MUST make a new connection to ensure db is bound to handle.
        $cnx = vmoodle_make_connection($vmoodle, true);
        $local_cnx = 1;
    }
    // Get dump file.
    if (file_exists($bulkfile)) {
        $sql = file($bulkfile);
        // converts into an array of text lines
        $dumpfile = implode("", $sql);
        if ($filter) {
            foreach ($filter as $from => $to) {
                $dumpfile = mb_ereg_replace(preg_quote($from), $to, $dumpfile);
            }
        }
        // Insert any external vars.
        if (!empty($vars)) {
            foreach ($vars as $key => $value) {
                $dumpfile = str_replace("<%%{$key}%%>", $value, $dumpfile);
            }
        }
        $sql = explode("\n", $dumpfile);
        // Cleanup unuseful things.
        if ($vmoodle->vdbtype == 'mysql') {
            $sql = preg_replace("/^--.*/", "", $sql);
            $sql = preg_replace("/^\\/\\*.*/", "", $sql);
        }
        $dumpfile = implode("\n", $sql);
    } else {
        echo "vmoodle_load_db_template : Bulk file not found";
        return false;
    }
    /// split into single queries
    $dumpfile = str_replace("\r\n", "\n", $dumpfile);
    // Translates to Unix LF.
    $queries = preg_split("/;\n/", $dumpfile);
    /// feed queries in database
    $i = 0;
    $j = 0;
    if (!empty($queries)) {
        foreach ($queries as $query) {
            $query = trim($query);
            // Get rid of trailing spaces and returns
            if ($query == '') {
                continue;
                // Avoid empty queries.
            }
            $query = mb_convert_encoding($query, 'iso-8859-1', 'auto');
            if (!($res = vmoodle_execute_query($vmoodle, $query, $cnx))) {
                echo "<hr/>load error on <br/>" . $cnx . "<hr/>";
                $j++;
            } else {
                $i++;
            }
        }
    }
    echo "loaded : {$i} queries succeeded, {$j} queries failed<br/>";
    if ($local_cnx) {
        vmoodle_close_connection($vmoodle, $cnx);
    }
    return false;
}
        $DB->delete_records('local_vmoodle', array('id' => $id));
        /// destroy database. work silently
        @vmoodle_drop_database($vmoodle);
        /// unlink datapath
        filesystem_clear_dir($vmoodle->vdatapath, FS_FULL_DELETE, '');
        /// unbind mnet hosts
        if ($vmoodle->mnet) {
            // unregister from me (this)
            $thismoodle = vmoodle_make_this();
            $this_cnx = vmoodle_make_connection($thismoodle, true);
            if ($this_cnx) {
                vmoodle_unregister_mnet($vmoodle, $thismoodle);
                vmoodle_close_connection($vmoodle, $this_cnx);
            }
            // unregister from all remaining peers (this)
            $mnetpeers = $DB->get_records('local_vmoodle', array('mnet' => 1));
            if (!empty($mnetpeers)) {
                foreach ($mnetpeers as $peervmoodle) {
                    $this_cnx = vmoodle_make_connection($peervmoodle, true);
                    if ($peer_cnx) {
                        vmoodle_unregister_mnet($vmoodle, $peervmoodle);
                        vmoodle_close_connection($vmoodle, $peer_cnx);
                    } else {
                    }
                }
            }
        }
    } else {
        error("Bad VMoodle Id");
    }
}