예제 #1
0
function convert_books($mysql_db, $sqlite_db, $min)
{
    $sqlite_db->query("begin transaction;");
    $sqlite_db->query("DELETE FROM books");
    $sqltest = "\n    SELECT \n      libbook.bid, FileSize, Title, Deleted, FileType, md5, DATE_FORMAT(libbook.Time,'%y%m%d') as Time, Lang, Year,\n      CASE WHEN aid IS NULL THEN 0 ELSE aid END AS aid,\n      CONCAT(libbook.bid, '.', libbook.FileType) AS FileName\n    FROM libbook \n      LEFT JOIN libavtor ON libbook.bid = libavtor.bid AND libavtor.role = 'a' AND libavtor.aid<>0\n    WHERE libbook.bid>{$min}\n  ";
    $query = $mysql_db->query($sqltest);
    while ($row = $query->fetch_array()) {
        echo "Book: " . $row['Time'] . " - " . $row['bid'] . " - " . $row['FileType'] . " - " . $row['aid'] . " - " . $row['Title'] . "\n";
        $id = $row['bid'];
        $genres = "";
        $subsql = "SELECT code FROM libgenre LEFT JOIN libgenrelist ON libgenre.gid = libgenrelist.gid WHERE bid={$id}";
        $subquery = $mysql_db->query($subsql);
        while ($subrow = $subquery->fetch_array()) {
            $genres = $genres . GenreCode($subrow['code']);
        }
        $deleted = NULL;
        if ($row['Deleted'] == 1) {
            $deleted = 1;
        }
        $file_type = trim($row['FileType']);
        $file_type = trim($file_type, ".");
        $file_type = strtolower($file_type);
        $file_type = strtolowerEx($file_type);
        $lang = $row['Lang'];
        $lang = strtolower($lang);
        $lang = strtolowerEx($lang);
        $rate = book_rate($mysql_db, $id);
        $sql = "INSERT INTO books (id, id_author, title, deleted, file_name, file_size, file_type, genres, created, lang, year, rate, md5sum) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
        $insert = $sqlite_db->prepare($sql);
        if ($insert === false) {
            $err = $sqlite_db->errorInfo();
            die($err[2]);
        }
        $err = $insert->execute(array($id, $row['aid'], trim($row['Title']), $deleted, $row['FileName'], $row['FileSize'], $file_type, $genres, $row['Time'], $lang, $row['Year'], $rate, $row['md5']));
        if ($err === false) {
            $err = $sqlite_db->errorInfo();
            die($err[2]);
        }
        $insert->closeCursor();
    }
    $sqlite_db->query("commit;");
}
예제 #2
0
function convert_genr($sqlite_db, $min)
{
    $sqlite_db->query("begin transaction;");
    $sqlite_db->query("DELETE FROM genres");
    $prior = 0;
    $fields = "";
    $genres = "";
    $handle = fopen("db/booktags", "r");
    while (true) {
        if (feof($handle)) {
            $book = 0;
        } else {
            $buffer = Trim(fgets($handle, 4096), "\n\r");
            if (empty($buffer[0])) {
                continue;
            }
            $fields = explode(chr(9), $buffer);
            $book = $fields[0];
            $code = Trim($fields[1]);
            $code = Trim($code, "\n\r");
            $char = GenreCode($code);
        }
        if ($prior && $book != $prior) {
            echo "Genr: " . $prior . " - " . $genres . "\n";
            $sql = "UPDATE books SET genres=? WHERE id=?";
            $insert = $sqlite_db->prepare($sql);
            $insert->execute(array($genres, $prior));
            $genres = "";
        }
        if (feof($handle)) {
            break;
        }
        if (!empty($char[0])) {
            echo "Genr: " . $book . " - " . $char . " - " . $code . "\n";
            $sql = "INSERT INTO genres(id_book, id_genre) VALUES(?,?)";
            $insert = $sqlite_db->prepare($sql);
            $insert->execute(array($book, $char));
            $genres = $genres . $char;
        }
        $prior = $book;
    }
    fclose($handle);
    $sqlite_db->query("commit;");
}