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.
- 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
- Sửa lỗi Breadcrumb: Giản đồ data-vocabulary.org không còn hoạt động NukeViet
- 1142 SELECT command denied to user nukeviet lỗi trắng trang
- Hướng dẫn fix lỗi không có og:image module download
- Hướng dẫn fix lỗi Function name must be a string nukeviet
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ỉnhtmp.nukeviet4.my
thành domain của bạn$_SERVER['HTTPS'] = 'off';
chỉnhoff
thànhon
nếu site bạn chạy https$_GET['language'] = 'vi';
chỉnhvi
thànhen
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