-
Notifications
You must be signed in to change notification settings - Fork 11
Hướng dẫn nâng cấp module NukeViet 3 lên NukeViet 4
Bản chất của công cụ này không hỗ trợ nâng cấp tự động 100%, mà bạn cần phải can thiệp sửa những đoạn code có thể sửa tự động được, ở những nơi mà công cụ không thể xử lý tự động theo các gợi ý sau khi hoàn tất việc nâng cấp. Việc nâng cấp module này đòi hỏi bạn phải biết lập trình module với NukeViet để có thể sửa lỗi.
-
Cần kiểm tra lại tất cả các chỗ dùng SQL có câu lệnh: INSERT, UPDATE, DELETE: nếu câu lệnh nào cần xác định số kết quả trả về thì nên thay bằng thương thức PDO::exec
-
Kiểm tra lại tất cả các chỗ có //$xxx->closeCursor(); và thay thế đúng bằng $result->closeCursor(); tùy theo các đoạn code viết bên trên.
-
Kiểm tra lại tất cả các chỗ có $db->sql_affectedrows(); Nếu trên đó có câu lệnh $db->query( $sql ); thì hãy xóa dòng $db->query( $sql ); và sửa $db->sql_affectedrows() thành $db->exec( $sql );
-
Không sử dụng SQL REPLACE, bởi Oracle không hỗ trợ REPLACE
-
Sử dụng PDOStatement::rowCount để đếm số kết quả trả về.
-
Nên thay thế UNIX_TIMESTAMP() bằng biến NV_CURRENTTIME trong PHP.
-
Để module chạy được trên các loại CSDL khác cần bỏ dầu nháy ` trong các đoạn truy vấn CSDL.
-
Chức năng phân quyền đã thay đổi, cụ thể không còn hàm nv_set_allow mà thay vào đó là hàm nv_user_in_groups, cần xóa các trường who_view nếu có.
-
Chú ý đường dẫn trong admin. Ở phiên bản mới đã được thêm vào biến lang.
-
Tìm và thay thế các đoạn javascript sử dụng nv_ajax thay bằng ajax của jquery.
-
Những chỗ nào dùng $nv_Cache trong function, thì càn global biến $nv_Cache
Chỗ gọi hàm $nv_Cache->db() bắt buộc phải truyền vào 3 tham số:(câu lệnh sql, key, tên module) trong đó key có thể để trống, tên module dùng $module_name
-
NukeViet 4 đã thay đổi code chế gọi class, sử dụng Composer để Autoload các class nên cần tìn và xóa tất cả các dòng có includes/core/
-
Kiểm tra lại tất cả các đoạn phân trang, và sửa lại cho phù hợp do phân trang hiện tại đã thay đổi.
Sau đó thay thế các đoan sau
new download( thành: new NukeViet\Files\Download(
new image( thành: new NukeViet\Files\Image(
new upload( thành: new NukeViet\Files\Upload(
new UrlGetContents( thành: new NukeViet\Client\UrlGetContents(
new Diagnostic( thành: new NukeViet\Client\Diagnostic(
new Gfonts( thành: new NukeViet\Client\Gfonts(
new NV_Http( thành: new NukeViet\Http\Http(
new NVftp( thành: new NukeViet\Ftp\Ftp(
new PHPMailer; thành: new PHPMailer\PHPMailer\PHPMailer();
new PHPMailer(); thành: new PHPMailer\PHPMailer\PHPMailer();
new Array2XML( thành: new NukeViet\Xml\Array2XML(
- Cần kiểm tra thay thế tất cả các đoạn chuyển hướng đến trang đăng nhập sau đó chuyển hướng về trang trước theo dạng
$link_redirect = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=users&" . NV_OP_VARIABLE . "=login&nv_redirect=" . nv_base64_encode($client_info['selfurl']);
Header("Location: " . $link_redirect);
exit();
Theo đó phải thay hàm nv_base64_encode
thành hàm nv_redirect_encrypt
Sau khi cài đặt module:
- Copy module nukeviet 3.4 đã giải nén vào thư mục tmp/module-convert (Cần tạo thư mục nếu chưa tồn tại). Nếu trên linux, bạn cần phân quyền ghi cho tất cả các tập tin trong thư mục này, bởi quá trình xử lý sẽ can thiệp đến nội dung tập tin.
Ví dụ: Tôi nâng cấp module music, thì khi đó phải tồn tại file: tmp/module-convert/modules/music/version.php
- Truy cập vào địa chỉ http:/domain/c34to40/. Hệ thống sẽ tiếp tục quá trình tự động nâng cấp trong một khoảng thời gian ngắn, sau khi hoàn thành, màn hình sẽ hiển thị kết quả thay đổi.
Các công việc sau khi nâng cấp:
- Cài mới module, kiểm tra lại toàn bộ chức năng.
- Nếu phát hiện lỗi, xem lại 10 ghi chú bên trên và tiến hành kiểm tra, sửa đổi thủ công.
- Kiểm tra cho đến khi không còn lỗi.