programming4:moduleupdate
Khác biệt
Đây là những khác biệt giữa hai phiên bản của trang.
Phiên bản sau | Phiên bản trướcPhiên bản sauPhiên bản sau của cả hai bên | ||
programming4:moduleupdate [2016/06/16 15:35] – được tạo ra hoaquynhtim99 | programming4:moduleupdate [2016/06/17 16:48] – hoaquynhtim99 | ||
---|---|---|---|
Dòng 1: | Dòng 1: | ||
- | Kể từ phiên bản NukeViet 3.4.01, chức năng nâng cấp dành cho hệ thống và cho module hoàn toàn tự động được đưa vào sử dụng. Để làm việc với chức năng mới này các nhà phát triển module cần chú ý. | + | Kể từ phiên bản NukeViet 3.4.01, chức năng nâng cấp dành cho hệ thống và cho module hoàn toàn tự động được đưa vào sử dụng. Để làm việc với chức năng mới này các nhà phát triển module cần chú ý các vấn đề sau: |
====== Cấu trúc của một gói nâng cấp module ====== | ====== Cấu trúc của một gói nâng cấp module ====== | ||
Gói nâng cấp module và gói nâng cấp nhân NukeViet là hoàn toàn tương tự nhau, được đặt trong thư mục install, gồm có: | Gói nâng cấp module và gói nâng cấp nhân NukeViet là hoàn toàn tương tự nhau, được đặt trong thư mục install, gồm có: | ||
Dòng 12: | Dòng 12: | ||
* install/ | * install/ | ||
* install/ | * install/ | ||
- | * install/ | ||
* install/ | * install/ | ||
Dòng 23: | Dòng 22: | ||
/** | /** | ||
- | * @Project | + | * @Project |
- | * @Author | + | * @Author |
- | * @Copyright (C) 2011 Freeware | + | * @Copyright (C) 2014 PHAN TAN DUNG. All rights reserved |
- | * @Createdate | + | * @License GNU/GPL version 2 or any later version |
+ | * @Createdate | ||
*/ | */ | ||
- | if( ! defined( ' | + | if (!defined(' |
- | + | | |
$nv_update_config = array(); | $nv_update_config = array(); | ||
- | $nv_update_config[' | + | // Kieu nang cap 1: Update; 2: Upgrade |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | |
+ | // ID goi cap nhat | ||
+ | $nv_update_config[' | ||
+ | |||
+ | // Cap nhat cho module nao, de trong neu la cap nhat NukeViet, ten thu muc module neu la cap nhat module | ||
+ | $nv_update_config[' | ||
// Thong tin phien ban, tac gia, ho tro | // Thong tin phien ban, tac gia, ho tro | ||
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | '4.0.01', |
+ | '4.0.22', | ||
+ | '4.0.23', | ||
+ | '4.0.24', | ||
+ | '4.0.27', | ||
+ | '4.0.28' | ||
+ | ); | ||
+ | |||
+ | // 0:Nang cap bang tay, 1:Nang cap tu dong, 2:Nang cap nua tu dong | ||
+ | $nv_update_config[' | ||
$nv_update_config[' | $nv_update_config[' | ||
$nv_update_config[' | $nv_update_config[' | ||
- | $nv_update_config[' | ||
// Tiếng Việt | // Tiếng Việt | ||
- | $nv_update_config[' | + | $nv_update_config[' |
- | + | $nv_update_config[' | |
- | $nv_update_config[' | + | |
- | + | ||
- | // English | + | |
- | $nv_update_config[' | + | |
- | + | ||
- | $nv_update_config[' | + | |
- | + | ||
- | // Require level: 0: Khong bat buoc hoan thanh; 1: Canh bao khi that bai; 2: Bat buoc hoan thanh neu khong se dung nang cap. | + | |
- | // r: Revision neu la nang cap site, phien ban neu la nang cap module | + | |
$nv_update_config[' | $nv_update_config[' | ||
- | $nv_update_config[' | + | $nv_update_config[' |
- | + | | |
- | $nv_update_config[' | + | |
+ | | ||
+ | | ||
+ | ); | ||
+ | $nv_update_config[' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ); | ||
// Danh sach cac function | // Danh sach cac function | ||
Dòng 71: | Dòng 85: | ||
Chuan hoa tra ve: | Chuan hoa tra ve: | ||
array( | array( | ||
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
); | ); | ||
- | |||
status: Trang thai tien trinh dang chay | status: Trang thai tien trinh dang chay | ||
- 0: That bai | - 0: That bai | ||
- 1: Thanh cong | - 1: Thanh cong | ||
- | |||
complete: Trang thai hoan thanh tat ca tien trinh | complete: Trang thai hoan thanh tat ca tien trinh | ||
- 0: Chua hoan thanh tien trinh nay | - 0: Chua hoan thanh tien trinh nay | ||
- 1: Da hoan thanh tien trinh nay | - 1: Da hoan thanh tien trinh nay | ||
- | |||
next: | next: | ||
- 0: Tiep tuc ham nay voi " | - 0: Tiep tuc ham nay voi " | ||
- 1: Chuyen sang ham tiep theo | - 1: Chuyen sang ham tiep theo | ||
- | |||
link: | link: | ||
- NO | - NO | ||
- Url to next loading | - Url to next loading | ||
- | |||
lang: | lang: | ||
- ALL: Tat ca ngon ngu | - ALL: Tat ca ngon ngu | ||
- NO: Khong co ngon ngu loi | - NO: Khong co ngon ngu loi | ||
- LangKey: Ngon ngu bi loi vi,en,fr ... | - LangKey: Ngon ngu bi loi vi,en,fr ... | ||
- | |||
message: | message: | ||
- Any message | - Any message | ||
- | |||
Duoc ho tro boi bien $nv_update_baseurl de load lai nhieu lan mot function | Duoc ho tro boi bien $nv_update_baseurl de load lai nhieu lan mot function | ||
Kieu cap nhat module duoc ho tro boi bien $old_module_version | Kieu cap nhat module duoc ho tro boi bien $old_module_version | ||
*/ | */ | ||
- | $array_lang_music_update | + | $array_modlang_update |
// Lay danh sach ngon ngu | // Lay danh sach ngon ngu | ||
- | $result = $db->sql_query( " | + | $result = $db->query(" |
- | while( list( $_tmp ) = $db->sql_fetchrow( $result | + | while (list($_tmp) = $result->fetch(PDO:: |
- | { | + | $array_modlang_update[$_tmp] = array(" |
- | $array_lang_music_update[$_tmp] = array( " | + | |
- | + | // Get all module | |
- | // Get all module | + | $result1 = $db->query(" |
- | $result1 = $db->sql_query( " | + | while (list($_modt, |
- | while( list( $_modt, $_modd ) = $db->sql_fetchrow( $result1 | + | $array_modlang_update[$_tmp][' |
- | { | + | } |
- | $array_lang_music_update[$_tmp][' | + | |
- | } | + | |
} | } | ||
- | function | + | /** |
+ | * nv_up_p1() | ||
+ | * | ||
+ | * @return | ||
+ | * | ||
+ | */ | ||
+ | function | ||
{ | { | ||
- | global $nv_update_baseurl, | + | |
- | $return = array( ' | + | |
- | + | ||
- | $array_author = array(); | + | |
- | + | ||
- | // Lấy tất cả các nhạc sĩ | + | |
- | foreach( $array_lang_music_update as $lang => $array_mod ) | + | |
- | { | + | |
- | foreach( $array_mod[' | + | |
- | { | + | |
- | $table = $db_config[' | + | |
- | $sql = " | + | |
- | $check = $db-> | + | |
- | + | ||
- | while( $row = $db-> | + | |
- | { | + | |
- | $array_author[$lang][$module_info[' | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | $db-> | + | |
- | // Cập nhật nhạc sĩ cho bảng bài hát, video | + | $return = array( |
- | foreach( $array_lang_music_update as $lang => $array_mod ) | + | ' |
- | { | + | ' |
- | foreach( $array_mod['mod'] as $module_info ) | + | 'next' |
- | { | + | ' |
- | $table | + | |
+ | ' | ||
+ | ); | ||
- | $array_author[$lang][$module_info['module_data']]['na' | + | foreach ($array_modlang_update as $lang => $array_mod) { |
- | + | foreach ($array_mod['mod' | |
- | foreach( $array_author[$lang][$module_info[' | + | $table_prefix = $db_config['prefix' |
- | { | + | |
- | $db->sql_query( "UPDATE `" . $table . "` SET `nhacsi`=' | + | // Cập nhật default chasert của các bảng |
- | $db->sql_query( "UPDATE `" . $table . "_video` SET `nhacsi`='" | + | try { |
- | } | + | |
- | } | + | } catch (PDOException $e) { |
- | } | + | |
- | $db->sql_freeresult(); | + | } |
- | + | try { | |
- | return $return; | + | |
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | |||
+ | // Sửa lại các bảng | ||
+ | try { | ||
+ | $db-> | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | $db->query("ALTER TABLE " . $table_prefix | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | |||
+ | // Cập nhật chasert từng cột của các bảng | ||
+ | $array_table | ||
+ | |||
+ | foreach ($array_table as $table) { | ||
+ | $sql = "SHOW FULL COLUMNS FROM " . $table_prefix | ||
+ | $result = $db-> | ||
+ | |||
+ | while($row = $result-> | ||
+ | if($row[' | ||
+ | try { | ||
+ | $db-> | ||
+ | " | ||
+ | | ||
+ | } catch (PDOException $e) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return $return; | ||
} | } | ||
- | function | + | /** |
+ | * nv_up_finish() | ||
+ | * | ||
+ | * @return | ||
+ | * | ||
+ | */ | ||
+ | function | ||
{ | { | ||
- | global $nv_update_baseurl, | + | |
- | $return = array( ' | + | |
- | // Cap nhat lai revision va version cua module | + | |
- | foreach( | + | 'status' |
- | { | + | 'complete' |
- | foreach( $array_mod['mod'] as $module_info ) | + | |
- | { | + | 'link' => 'NO', |
- | $table = $db_config['prefix'] . " | + | 'lang' => 'NO', |
- | $db->sql_query( " | + | |
- | $db-> | + | ); |
- | } | + | |
- | } | + | |
- | + | ||
- | $mod_version = " | + | |
- | $db-> | + | |
- | + | ||
- | nv_delete_all_cache(); | + | |
- | + | ||
- | return $return; | + | |
- | } | + | |
- | ?> | + | try { |
+ | $num = $db->query(" | ||
+ | $version = " | ||
+ | |||
+ | if (!$num) { | ||
+ | $db-> | ||
+ | id, type, title, is_sys, is_virtual, basename, table_prefix, | ||
+ | ) VALUES ( | ||
+ | 79, ' | ||
+ | ' | ||
+ | )"); | ||
+ | } else { | ||
+ | $db-> | ||
+ | id=79, | ||
+ | version='" | ||
+ | author=' | ||
+ | WHERE basename='" | ||
+ | } | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | |||
+ | $nv_Cache-> | ||
+ | return $return; | ||
+ | } | ||
</ | </ | ||
===== Cấu hình gói nâng cấp ===== | ===== Cấu hình gói nâng cấp ===== | ||
Trong ví dụ trên thì việc cấu hình gói nâng cấp được khai báo trong đoạn | Trong ví dụ trên thì việc cấu hình gói nâng cấp được khai báo trong đoạn | ||
<code php> | <code php> | ||
- | $nv_update_config[' | + | // Kieu nang cap 1: Update; 2: Upgrade |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | |
+ | // ID goi cap nhat | ||
+ | $nv_update_config[' | ||
+ | |||
+ | // Cap nhat cho module nao, de trong neu la cap nhat NukeViet, ten thu muc module neu la cap nhat module | ||
+ | $nv_update_config[' | ||
// Thong tin phien ban, tac gia, ho tro | // Thong tin phien ban, tac gia, ho tro | ||
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | '4.0.01', |
+ | '4.0.22', | ||
+ | '4.0.23', | ||
+ | '4.0.24', | ||
+ | '4.0.27', | ||
+ | '4.0.28' | ||
+ | ); | ||
- | $nv_update_config[' | + | // 0:Nang cap bang tay, 1:Nang cap tu dong, 2:Nang cap nua tu dong |
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | |
</ | </ | ||
Trong đó | Trong đó | ||
- | <code php> | + | <code php> |
Là kiểu nâng cấp, 1 là Update 2 là Upgrade, việc khai báo thông số này không có mục đích gì ngoài việc thay đổi ngôn ngữ thông báo. | Là kiểu nâng cấp, 1 là Update 2 là Upgrade, việc khai báo thông số này không có mục đích gì ngoài việc thay đổi ngôn ngữ thông báo. | ||
<code php> | <code php> | ||
Là ID gói nâng cấp, được viết hoa tất cả, được đặt theo chuẩn NVU[A-Z][0-9]{4} ví dụ NVUMUSIC3400, | Là ID gói nâng cấp, được viết hoa tất cả, được đặt theo chuẩn NVU[A-Z][0-9]{4} ví dụ NVUMUSIC3400, | ||
- | <code php> | + | <code php> |
Giá trị bằng tên module (không ảo) sẽ nâng cấp (hay tên thư mục chứa module đó). | Giá trị bằng tên module (không ảo) sẽ nâng cấp (hay tên thư mục chứa module đó). | ||
<code php> | <code php> | ||
Dòng 253: | Dòng 327: | ||
Đầu tiên ta khai báo danh sách các hàm sẽ thự hiện: | Đầu tiên ta khai báo danh sách các hàm sẽ thự hiện: | ||
<code php> | <code php> | ||
- | $nv_update_config[' | + | $nv_update_config[' |
- | $nv_update_config[' | + | |
+ | | ||
+ | | ||
+ | | ||
+ | ); | ||
+ | $nv_update_config[' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ); | ||
</ | </ | ||
Trong đó: | Trong đó: | ||
Dòng 267: | Dòng 351: | ||
Tiếp theo ta viết các hàm thực hiện công việc đó. Ví dụ | Tiếp theo ta viết các hàm thực hiện công việc đó. Ví dụ | ||
<code php> | <code php> | ||
- | $array_lang_music_update | + | $array_modlang_update |
// Lay danh sach ngon ngu | // Lay danh sach ngon ngu | ||
- | $result = $db->sql_query( " | + | $result = $db->query(" |
- | while( list( $_tmp ) = $db->sql_fetchrow( $result | + | while (list($_tmp) = $result->fetch(PDO:: |
- | { | + | $array_modlang_update[$_tmp] = array(" |
- | $array_lang_music_update[$_tmp] = array( " | + | |
- | + | // Get all module | |
- | // Get all module | + | $result1 = $db->query(" |
- | $result1 = $db->sql_query( " | + | while (list($_modt, |
- | while( list( $_modt, $_modd ) = $db->sql_fetchrow( $result1 | + | $array_modlang_update[$_tmp][' |
- | { | + | } |
- | $array_lang_music_update[$_tmp][' | + | |
- | } | + | |
} | } | ||
- | function | + | /** |
+ | * nv_up_p1() | ||
+ | * | ||
+ | * @return | ||
+ | * | ||
+ | */ | ||
+ | function | ||
{ | { | ||
- | global $nv_update_baseurl, | + | |
- | $return = array( ' | + | |
- | + | | |
- | $array_author = array(); | + | |
- | + | | |
- | // Lấy tất cả các nhạc sĩ | + | |
- | foreach( $array_lang_music_update as $lang => $array_mod ) | + | |
- | { | + | |
- | foreach( $array_mod[' | + | |
- | { | + | ); |
- | $table = $db_config[' | + | |
- | $sql = " | + | |
- | $check = $db-> | + | |
- | + | ||
- | while( $row = $db-> | + | |
- | { | + | |
- | $array_author[$lang][$module_info[' | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | $db-> | + | |
- | // Cập nhật | + | foreach ($array_modlang_update as $lang => $array_mod) { |
- | foreach( $array_lang_music_update | + | foreach ($array_mod[' |
- | { | + | $table_prefix = $db_config[' |
- | foreach( $array_mod['mod' | + | |
- | { | + | |
- | $table | + | try { |
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | |||
+ | // Sửa lại các bảng | ||
+ | try { | ||
+ | $db-> | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | try { | ||
+ | $db-> | ||
+ | $db-> | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | |||
+ | // Cập nhật chasert từng | ||
+ | $array_table = array(' | ||
+ | | ||
+ | foreach ($array_table | ||
+ | $sql = "SHOW FULL COLUMNS FROM " . $table_prefix . $table; | ||
+ | $result = $db->query($sql); | ||
+ | |||
+ | while($row = $result-> | ||
+ | if($row['collation' | ||
+ | | ||
+ | | ||
+ | " | ||
+ | | ||
+ | } catch (PDOException $e) { | ||
+ | trigger_error($e-> | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
- | $array_author[$lang][$module_info[' | + | |
- | + | ||
- | foreach( $array_author[$lang][$module_info[' | + | |
- | { | + | |
- | $db-> | + | |
- | $db-> | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | $db-> | + | |
- | + | ||
- | return $return; | + | |
} | } | ||
</ | </ | ||
Dòng 350: | Dòng 472: | ||
====== Gói nâng cấp mẫu ====== | ====== Gói nâng cấp mẫu ====== | ||
- | Tham khảo gói nâng cấp module | + | Tham khảo gói nâng cấp module |
programming4/moduleupdate.txt · Sửa đổi lần cuối: 2017/11/07 10:56 bởi hoaquynhtim99