Hướng dẫn lấy lại tên tác giả bài viết khi cập nhật lên NukeViet 4.5.00

Khi cập nhật NukeViet 4.4 lên 4.5 trong quản trị module tin tức và module ảo của nó sẽ bị mất dữ liệu tại cột “Tác giả” nếu bài đăng đó không điền thông tin “Tác giả bài viết”. Ở phiên bản 4.4 cột này sẽ hiển thị tên người đăng bài. Tool này giúp cập nhật người đăng bài thành tác giả bài viết.

Tạo file vinades/update_author.php với nội dung như sau

<?php

/**
 * NukeViet Content Management System
 * @version 4.x
 * @author VINADES.,JSC <contact@vinades.vn>
 * @copyright (C) 2009-2021 VINADES.,JSC. All rights reserved
 * @license GNU/GPL version 2 or any later version
 * @see https://github.com/nukeviet The NukeViet CMS GitHub project
 */

$_SERVER['HTTP_HOST'] = 'tmp.nukeviet4.my';
$_SERVER['HTTPS'] = 'off';

// Sửa cái này nếu chạy ngôn ngữ khác tiếng Việt
$_GET['language'] = 'vi';

// Chỗ này khỏi sửa
$_SERVER['SERVER_NAME'] = 'localhost';
$_SERVER['SERVER_PROTOCOL'] = 'http';
$_SERVER['REQUEST_URI'] = '';
$_SERVER['SERVER_PORT'] = '80';
$_SERVER['PHP_SELF'] = '';
$_SERVER['HTTP_CLIENT_IP'] = '127.0.0.1';

define('NV_SYSTEM', true);
// Nếu file này đặt vào thư mục gốc ngang hàng index.php thì bỏ cái đoạn /..
define('NV_ROOTDIR', str_replace(DIRECTORY_SEPARATOR, '/', realpath(pathinfo(__file__, PATHINFO_DIRNAME) . '/..')));

require NV_ROOTDIR . '/includes/mainfile.php';
require NV_ROOTDIR . '/includes/core/user_functions.php';
$sql = 'SELECT lang FROM ' . $db_config['prefix'] . '_setup_language WHERE setup=1 ORDER BY weight ASC';
$array_sitelangs = $db->query($sql)->fetchAll(PDO::FETCH_COLUMN);

foreach ($array_sitelangs as $lang) {
    echo "Cập nhật ngôn ngữ " . $lang . "n";

    // Lấy tất cả các module và module ảo của nó
    $mquery = $db->query('SELECT title, module_data FROM ' . $db_config['prefix'] . '_' . $lang . "_modules WHERE module_file = 'news'");
    while (list ($mod, $mod_data) = $mquery->fetch(3)) {
        echo "Cập nhật module " . $mod . "n";

        // Quét từng bài viết xử lý
        $sql = "SELECT id, admin_id FROM " . $db_config['prefix'] . '_' . $lang . '_' . $mod_data . "_rows";
        $result = $db->query($sql);

        while ($row = $result->fetch()) {
            if (!empty($row['admin_id'])) {
                $sql = 'SELECT userid, username, first_name, last_name FROM ' . NV_USERS_GLOBALTABLE . ' WHERE userid=' . $row['admin_id'];
                $admin = $db->query($sql)->fetch();

                if (!empty($admin)) {
                    $admin['full_name'] = nv_show_name_user($admin['first_name'], $admin['last_name'], $admin['username']);
                    $admin['alias'] = strtolower(change_alias($admin['full_name']));

                    // Kiểm tra xem author có chưa
                    $sql = "SELECT id FROM " . $db_config['prefix'] . '_' . $lang . '_' . $mod_data . "_author
                    WHERE uid=" . $admin['userid'];
                    $admin['id'] = $db->query($sql)->fetchColumn();

                    // Thêm mới
                    if (empty($admin['id'])) {
                        try {
                            $sql = "INSERT INTO " . $db_config['prefix'] . '_' . $lang . '_' . $mod_data . "_author (
                                uid, alias, pseudonym, description, add_time, edit_time, active, numnews
                            ) VALUES (
                                " . $admin['userid'] . ", " . $db->quote($admin['alias']) . ", " . $db->quote($admin['full_name']) . ",
                                '', " . NV_CURRENTTIME . ", 0, 1, 0
                            )";
                            $db->query($sql);
                            $admin['id'] = $db->lastInsertId();
                        } catch (Exception $e) {
                            echo print_r($e, true);
                            die("nLỗi thêm adminn");
                        }

                        if (empty($admin['id'])) {
                            die("Lỗi thêm tác giản");
                        }

                        echo "Thêm mới tác giả " . $admin['full_name'] . "n";
                    }

                    // Thêm vào tác giả
                    $sql = "INSERT IGNORE INTO " . $db_config['prefix'] . '_' . $lang . '_' . $mod_data . "_authorlist (
                        id, aid, alias, pseudonym
                    ) VALUES (
                        " . $row['id'] . ", " . $admin['id'] . ",
                        " . $db->quote($admin['alias']) . ", " . $db->quote($admin['full_name']) . "
                    )";
                    if ($db->exec($sql)) {
                        echo "Gán bài viết #" . $row['id'] . " cho tác giả " . $admin['full_name'] . "n";

                        // Cập nhật số bài viết
                        $sql = "UPDATE " . $db_config['prefix'] . '_' . $lang . '_' . $mod_data . "_author
                        SET numnews=numnews+1 WHERE id=" . $admin['id'];
                        $db->exec($sql);
                    }
                }
            }
        }
    }
}

echo "nKết thúcn";

Xem Thêm : Hiển thị báo lỗi khi website bị lỗi 500 internal server error nukeviet

Sau đó từ SSH tại thư mục vinades chạy php update_author.php

Lưu ý: Chỉnh sửa các giá trị sau

  • $_SERVER['HTTP_HOST'] = 'tmp.nukeviet4.my'; chỉnh tmp.nukeviet4.my thành domain của bạn
  • $_SERVER['HTTPS'] = 'off'; chỉnh off thành on nếu site bạn chạy https
  • $_GET['language'] = 'vi'; chỉnh vi thành en nếu site bạn chạy tiếng Anh

Nguồn: https://vncode.info
Danh mục: Hướng dẫn fix lỗi Nukeviet

Related Posts

Incorrect temprorary directory specified fix lỗi trên Nukeviet

NukeViet eGovernment là phiên bản NukeViet dành cho các cơ quan nhà nước và chính quyền địa phương, được xây dựng dựa trên nền tảng phần mềm…

Hướng dẫn fix lỗi không có og:image module download

Hôm này mình xin chia sẻ cách fix lỗi không hiển thị og:image. Khi share link của một detail lên facebook mà không có ảnh xem trước khiến…

Hướng dẫn fix lỗi 404 nukeviet

Lỗi 404 nukeviet là do trong quá trình cài đặt hoặc chuyển đổi nhà cung cấp tên miền bạn sẽ thường găp lỗi 404: Trang website mà…

Hướng dẫn fix lỗi Function name must be a string nukeviet

Xem Thêm : Lỗi Column not found: 1054 Unknown column ‘description’ nukevietLỗi Function name must be a string là do “Hàm phải là một chuỗi” ở biến $array_map(‘intval’, $catids). Lỗi…

Lỗi Column not found: 1054 Unknown column ‘description’ nukeviet

Lỗi Column not found: 1054 Unknown column ‘description’ nukeviet xảy ra khi chúng ta nâng cấp phiên bản nukeviet từ 4.4 trở đi thì một số module ở phiên bản…

Hướng dẫn thay đường dẫn đăng nhập vào admin trong nukeviet

Làm thế nào để thay đổi đường dẫn truy cập vào trang quản trị của website mã nguồn mở nukeviet, hãy theo dõi bài viết dưới đây,…