CCCPaste

MigrateBlogToWordPress Script

connect_error || $newDb->connect_error) {
    die('Verbindungsfehler: ' . $oldDb->connect_error . ' | ' . $newDb->connect_error);
}

// SQL-Abfrage für den Datenbanktransfer
$query = "SELECT * FROM tipps";
$result = $oldDb->query($query);

// Überprüfen, ob die Abfrage erfolgreich war
if (!$result) {
    die('Abfragefehler: ' . $oldDb->error);
}

$i_blog = 0;
$i_comments = 0;

// Blog-Beiträge migrieren
while ($row = $result->fetch_assoc()) {
	$i_blog++;
    // Inhalte ersetzen und formatieren
    $postTitle = mysqli_real_escape_string($newDb, $row['titel']);
    $postContent = mysqli_real_escape_string($newDb, $row['inhalt']);
    $postDate = date('Y-m-d H:i:s', $row['datum']);
    $postModified = date('Y-m-d H:i:s', $row['lastedit']);
    $postAuthor = 1;

    // Weitere Inhalte generieren
    $postName = strtolower(str_replace(
        ['--', 'ß', 'ä', 'ü', 'ö', 'Ä', 'Ü', 'Ö'],
        ['-','ss','ae','ue','oe','ae','ue','oe'],
        preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(
            ' ',
            '-',
            str_replace('&', 'und', str_replace(
                '&',
                'and',
                str_replace(
                    ' / ',
                    '-',
                    str_replace(
                        '.',
                        '-',
                        str_replace(
                            ' – ',
                            '-',
                            str_replace(
                                ' - ',
                                '-',
                                str_replace(
                                    '+',
                                    'plus',
                                    $postTitle
                                )
                            )
                        )
                    )
                )
            )
        ))
    )));

    $guid = 'https://'.strtolower($domain).'/?p=' . $row['id'];

    // SQL-Abfrage für den Datenbankeinfügung in die neue Tabelle wp_posts
    $insertQuery = "INSERT INTO wp_posts (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count)
                    VALUES (NULL, $postAuthor, '$postDate', '$postDate', '$postContent', '$postTitle', '', 'publish', 'open', 'open', '', '$postName', '', '', '$postModified', '$postModified', '', 0, '$guid', 0, 'post', '', 0)";

    // Überprüfen, ob die Abfrage erfolgreich war
    if (!$newDb->query($insertQuery)) {
        die('Fehler beim Einfügen: ' . $newDb->error);
    }

    // Kategorie-ID aus der alten Tabelle "tipps"
    $alteKategorieId = $row['kategorie_id'];

    // Neue Kategorie-ID in "wp_terms" um 1 erhöhen
    $neueKategorieId = $alteKategorieId + 1;

    // SQL-Abfrage für den Datenbankeinfügung in die neue Tabelle wp_term_relationships
    $insertTermRelationshipsQuery = "INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
                                    VALUES (LAST_INSERT_ID(), $neueKategorieId, 0)";

    // Überprüfen, ob die Abfrage erfolgreich war
    if (!$newDb->query($insertTermRelationshipsQuery)) {
        die('Fehler beim Einfügen in wp_term_relationships: ' . $newDb->error);
    }

    // SQL-Abfrage für die Aktualisierung der count-Spalte in wp_term_taxonomy
    $updateTermTaxonomyQuery = "UPDATE wp_term_taxonomy SET count = count + 1 WHERE term_id = $neueKategorieId";

    // Überprüfen, ob die Abfrage erfolgreich war
    if (!$newDb->query($updateTermTaxonomyQuery)) {
        die('Fehler beim Aktualisieren von wp_term_taxonomy: ' . $newDb->error);
    }
}

// Kommentare migrieren
// SQL-Abfrage für die Kommentare in comments
$commentsQuery = "SELECT * FROM comments ORDER BY datum ASC";
$commentsResult = $oldDb->query($commentsQuery);

// SQL-Abfrage für die Antworten in comments_answers
$answersQuery = "SELECT * FROM comments_answers ORDER BY datum ASC";
$answersResult = $oldDb->query($answersQuery);

// Antworten in ein Array umwandeln
$answersArray = array();
while ($answerRow = $answersResult->fetch_assoc()) {
    $answersArray[] = $answerRow;
}

// Schleife für Kommentare
while ($commentRow = $commentsResult->fetch_assoc()) {
	$i_comments++;
    // Inhalte formatieren
    $commentPostID = $commentRow['tipp_id'];
    $commentAuthor = mysqli_real_escape_string($newDb, $commentRow['name']);
    $commentDate = date('Y-m-d H:i:s', $commentRow['datum']);
    $commentContent = mysqli_real_escape_string($newDb, $commentRow['kommentar']);
    $commentEmail = $commentRow['email'];

    // SQL-Abfrage für den Datenbankeinfügung in die neue Tabelle wp_comments
    $insertCommentQuery = "INSERT INTO wp_comments (comment_post_ID, comment_author, comment_date, comment_date_gmt, comment_content, comment_author_email, comment_approved, comment_type, comment_parent, user_id)
                           VALUES ($commentPostID, '$commentAuthor', '$commentDate', '$commentDate', '$commentContent', '$commentEmail', 1, 'comment', 0, $user_id)";

    // Überprüfen, ob die Abfrage erfolgreich war
    if (!$newDb->query($insertCommentQuery)) {
        die('Fehler beim Einfügen von Kommentaren: ' . $newDb->error);
    }

    // Schleife für Antworten
    foreach ($answersArray as $answerRow) {
        // Wenn die Antwort zur aktuellen Kommentar-ID gehört
        if ($answerRow['comment_id'] == $commentRow['id']) {
            // Inhalte formatieren
            $answerPostID = $answerRow['tipp_id'];
            $answerAuthor = mysqli_real_escape_string($newDb, $answerRow['name']);
            $answerDate = date('Y-m-d H:i:s', $answerRow['datum']);
            $answerContent = mysqli_real_escape_string($newDb, $answerRow['antwort']);
            $answerEmail = $answerRow['email'];

            // SQL-Abfrage für den Datenbankeinfügung in die neue Tabelle wp_comments für Antworten
            $insertAnswerQuery = "INSERT INTO wp_comments (comment_post_ID, comment_author, comment_date, comment_date_gmt, comment_content, comment_author_email, comment_approved, comment_type, comment_parent, user_id)
                                 VALUES ($answerPostID, '$answerAuthor', '$answerDate', '$answerDate', '$answerContent', '$answerEmail', 1, 'comment', LAST_INSERT_ID(), $user_id)";

            // Überprüfen, ob die Abfrage erfolgreich war
            if (!$newDb->query($insertAnswerQuery)) {
                die('Fehler beim Einfügen von Antworten: ' . $newDb->error);
            }
        }
    }
}

// Verbindungen schließen
$oldDb->close();
$newDb->close();

echo 'Migration abgeschlossen! '.$i_blog.' Blog-Beiträge und '.$i_comments.' Kommentare wurden migriert.';
?>