Công cụ thành viên

Công cụ trang web


programming:moduleupdate

Khác biệt

Đây là những khác biệt giữa hai phiên bản của trang.

Liên kết đến bản xem so sánh này

Phiên bản trước của cả hai bênPhiên bản trước
Phiên bản sau
Phiên bản trước
programming:moduleupdate [2012/08/27 19:50] – [Cấu hình gói nâng cấp và nâng cấp CSDL] hoaquynhtim99programming:moduleupdate [2013/05/15 14:59] (hiện tại) – sửa đổi bên ngoài 127.0.0.1
Dòng 2: Dòng 2:
 ====== 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ó:
-  * File update_data.php: File này là file khai báo các thông tin về gói nâng cấp, kiểu nâng cấp, nâng cấp module hoặc hệ thống, tác giả, website hỗ trợ, ... và quan trọng hơn hết là chứa doce nâng cấp CSDL.+  * File update_data.php: File này là file khai báo các thông tin về gói nâng cấp, kiểu nâng cấp, nâng cấp module hoặc hệ thống, tác giả, website hỗ trợ, ... và quan trọng hơn hết là chứa code nâng cấp CSDL.
   * File hướng dẫn khác: Có thể có hoặc không có, gồm 1 hoặc nhiều file html (nếu có nhiều ngôn ngữ), tên chúng được đặt theo ngôn ngữ ví dụ: update_docs_vi.html, update_docs_en.html. Nội dung của chúng chứ các đoạn hướng dẫn riêng, các ghi chú, ... tùy theo mục đích của người lập trình.   * File hướng dẫn khác: Có thể có hoặc không có, gồm 1 hoặc nhiều file html (nếu có nhiều ngôn ngữ), tên chúng được đặt theo ngôn ngữ ví dụ: update_docs_vi.html, update_docs_en.html. Nội dung của chúng chứ các đoạn hướng dẫn riêng, các ghi chú, ... tùy theo mục đích của người lập trình.
   * Thư mục update: Có thể có hoặc không, là thư mục chứa các file thay đổi của module, của hệ thống so với phiên bản trước. Chú ý: Trong thư mục này đặt các file và thư mục theo đúng cấu trúc của hệ thống, tức là thư mục đó được xem như thư mục gốc của NukeViet.   * Thư mục update: Có thể có hoặc không, là thư mục chứa các file thay đổi của module, của hệ thống so với phiên bản trước. Chú ý: Trong thư mục này đặt các file và thư mục theo đúng cấu trúc của hệ thống, tức là thư mục đó được xem như thư mục gốc của NukeViet.
Dòng 17: Dòng 17:
 Khi xây dựng gói nâng cấp cần tuân thủ đúng chuẩn này. Khi xây dựng gói nâng cấp cần tuân thủ đúng chuẩn này.
 ====== Cấu hình gói nâng cấp và nâng cấp CSDL ====== ====== Cấu hình gói nâng cấp và nâng cấp CSDL ======
 +===== Ví dụ =====
 Để thực hiên hai công việc này ta thao tác với file update_data.php. Cấu trúc của file update_data.php như sau: Để thực hiên hai công việc này ta thao tác với file update_data.php. Cấu trúc của file update_data.php như sau:
 <file php update_data.php> <file php update_data.php>
Dòng 50: Dòng 51:
 // Tiếng Việt // Tiếng Việt
 $nv_update_config['lang']['vi']['nv_up_author'] = 'Cập nhật nhạc sĩ cho bảng bài hát, video'; $nv_update_config['lang']['vi']['nv_up_author'] = 'Cập nhật nhạc sĩ cho bảng bài hát, video';
-$nv_update_config['lang']['vi']['nv_up_singer'] = 'Cập nhật ca sĩ cho bảng bài hát, video, album'; 
-$nv_update_config['lang']['vi']['nv_up_album'] = 'Cập nhật album cho bài hát'; 
-$nv_update_config['lang']['vi']['nv_up_fomart'] = 'Cập nhật định dạng'; 
-$nv_update_config['lang']['vi']['nv_up_statistics'] = 'Thêm trường để thống kê số lượng bài hát theo chủ đề bài hát, video'; 
-$nv_update_config['lang']['vi']['nv_up_stasong'] = 'Thống kê số bài hát cho các chủ đề bài hát'; 
-$nv_update_config['lang']['vi']['nv_up_stavideo'] = 'Thống kê số video cho các chủ đề video'; 
-$nv_update_config['lang']['vi']['nv_up_albumhit'] = 'Thêm trường HIT vào album'; 
-$nv_update_config['lang']['vi']['nv_up_maintype'] = 'Cập nhật cách hiển thị các album trên trang chủ'; 
-$nv_update_config['lang']['vi']['nv_up_datatype'] = 'Cập nhật lại định dạng dữ liệu'; 
  
 $nv_update_config['lang']['vi']['nv_up_version'] = 'Cập nhật phiên bản'; $nv_update_config['lang']['vi']['nv_up_version'] = 'Cập nhật phiên bản';
Dòng 64: Dòng 56:
 // English // English
 $nv_update_config['lang']['en']['nv_up_author'] = 'Update author for song, clip table'; $nv_update_config['lang']['en']['nv_up_author'] = 'Update author for song, clip table';
-$nv_update_config['lang']['en']['nv_up_singer'] = 'Update singer for song, clip, album table'; 
-$nv_update_config['lang']['en']['nv_up_album'] = 'Update album for song'; 
-$nv_update_config['lang']['en']['nv_up_fomart'] = 'Update format table'; 
-$nv_update_config['lang']['en']['nv_up_statistics'] = 'Add to the statistics the number of songs on the theme song, video'; 
-$nv_update_config['lang']['en']['nv_up_stasong'] = 'Statistics of the theme song for song'; 
-$nv_update_config['lang']['en']['nv_up_stavideo'] = 'Statistics of video for video topics'; 
-$nv_update_config['lang']['en']['nv_up_albumhit'] = 'Add to the album HIT'; 
-$nv_update_config['lang']['en']['nv_up_maintype'] = 'Main view type'; 
-$nv_update_config['lang']['en']['nv_up_datatype'] = 'Update data type'; 
  
 $nv_update_config['lang']['en']['nv_up_version'] = 'Updated version'; $nv_update_config['lang']['en']['nv_up_version'] = 'Updated version';
Dòng 81: Dòng 64:
 $nv_update_config['tasklist'] = array(); $nv_update_config['tasklist'] = array();
 $nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_author', 'f' => 'nv_up_author' ); $nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_author', 'f' => 'nv_up_author' );
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_singer', 'f' => 'nv_up_singer' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_album', 'f' => 'nv_up_album' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_fomart', 'f' => 'nv_up_fomart' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_statistics', 'f' => 'nv_up_statistics' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_stasong', 'f' => 'nv_up_stasong' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_stavideo', 'f' => 'nv_up_stavideo' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_albumhit', 'f' => 'nv_up_albumhit' ); 
-$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_maintype', 'f' => 'nv_up_maintype' ); 
- 
-$nv_update_config['tasklist'][] = array( 'r' => '3.5.01', 'rq' => 1, 'l' => 'nv_up_datatype', 'f' => 'nv_up_datatype' ); 
  
 $nv_update_config['tasklist'][] = array( 'r' => '3.5.01', 'rq' => 2, 'l' => 'nv_up_version', 'f' => 'nv_up_version' ); $nv_update_config['tasklist'][] = array( 'r' => '3.5.01', 'rq' => 2, 'l' => 'nv_up_version', 'f' => 'nv_up_version' );
Dòng 194: Dòng 167:
 } }
  
-function nv_up_singer()+function nv_up_version()
 { {
  global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update;  global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update;
  $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', );  $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', );
-  
- $array_singer = array(); 
-  
- // Lấy tất cả các ca sĩ 
- foreach( $array_lang_music_update as $lang => $array_mod ) 
- { 
- foreach( $array_mod['mod'] as $module_info ) 
- { 
- $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_singer"; 
- $sql = "SELECT * FROM `" . $table . "`"; 
- $check = $db->sql_query($sql); 
-  
- while( $row = $db->sql_fetchrow( $check ) ) 
- { 
- $array_singer[$lang][$module_info['module_data']][$row['ten']] = ( int ) $row['id']; 
- } 
- } 
- } 
- $db->sql_freeresult(); 
  
- // Cập nhật ca sĩ cho bảng bài hát, video, album+ // Cap nhat lai revision va version cua module
  foreach( $array_lang_music_update as $lang => $array_mod )  foreach( $array_lang_music_update as $lang => $array_mod )
  {  {
  foreach( $array_mod['mod'] as $module_info )  foreach( $array_mod['mod'] as $module_info )
  {  {
- $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . ""; + $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_setting"; 
- + $db->sql_query( "UPDATE `" . $table . "` SET `value`=331 WHERE `key`='revision'" );  
- $array_singer[$lang][$module_info['module_data']]['ns'] = 0; + $db->sql_query( "UPDATE `" . $table . "` SET `char`='3.5.01' WHERE `key`='version'" );
-  +
- foreach( $array_singer[$lang][$module_info['module_data']] as $alias => $id ) +
-+
- $db->sql_query( "UPDATE `" . $table . "` SET `casi`='" . $id . "' WHERE `casi`='" . $alias . "'" ); +
- $db->sql_query( "UPDATE `" . $table . "_video` SET `casi`='$id "' WHERE `casi`='" . $alias . "'" ); +
- $db->sql_query( "UPDATE `" . $table . "_album` SET `casi`='" . $id . "' WHERE `casi`='" . $alias . "'" ); +
- }+
  }  }
  }  }
- $db->sql_freeresult(); +  
 + $mod_version = "3.5.01 1333929600"; 
 + $db->sql_query( "UPDATE `" . $db_config['prefix'] . "_setup_modules` SET `mod_version`='" . $mod_version . "', `author`='PHAN TAN DUNG (phantandung92@gmail.com)' WHERE `module_file`='music'" ); 
 +  
 + nv_delete_all_cache(); 
 +
  return $return;  return $return;
 } }
  
-function nv_up_album() +?> 
-{ +</file> 
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update; +===== Cấu hình gói nâng cấp ===== 
- $return array( 'status' => 1, 'complete' => 1, 'next' =1'link' ='NO''lang' => 'NO''message' => '');+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> 
 +$nv_update_config['type'= 1; // Kieu nang cap 1: Update; 2: Upgrade 
 +$nv_update_config['packageID'= 'NVUDMUSIC3401'; // ID goi cap nhat 
 +$nv_update_config['formodule'"music"; // Cap nhat cho module naode trong neu la cap nhat NukeVietten thu muc module neu la cap nhat module
  
- $array_album = array(); +// Thong tin phien ban, tac gia, ho tro 
- // Lấy tất cả các album +$nv_update_config['release_date'1333929600; 
- foreach( $array_lang_music_update as $lang => $array_mod ) +$nv_update_config['author'= "Phan Tan Dung (phantandung92@gmail.com)"; 
- +$nv_update_config['support_website'"http://nukeviet.vn/phpbb/viewforum.php?f=118"
- foreach( $array_mod['mod'as $module_info +$nv_update_config['to_version'= "3.5.01"; 
- +$nv_update_config['allow_old_version'array( "3.0.01", "3.1.00", "3.2.00", "3.3.00", "3.3.01", "3.4.01" ); 
- $table = $db_config['prefix'. "_" . $lang . "_" . $module_info['module_data'] . "_album"; +$nv_update_config['update_auto_type'] = 1// 0:Nang cap bang tay, 1:Nang cap tu dong, 2:Nang cap nua tu dong
- $sql = "SELECT * FROM `" . $table . "`"+
- $check = $db->sql_query($sql); +
-  +
- while( $row = $db->sql_fetchrow( $check ) ) +
-+
- $array_album[$lang][$module_info['module_data']][$row['name']] = ( int ) $row['id']; +
-+
-+
-+
- $db->sql_freeresult();+
  
- // Cập nhật album cho bài hát +$nv_update_config['lang'] = array(); 
- foreach( $array_lang_music_update as $lang => $array_mod ) +$nv_update_config['lang']['vi'] = array(); 
-+$nv_update_config['lang']['en'array(); 
- foreach( $array_mod['mod'as $module_info +</code> 
- { +Trong đó 
- $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "";+<code php>$nv_update_config['type'] = 1;</code> 
 +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>$nv_update_config['packageID']</code> 
 +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, NVU3501, .... 
 +<code php>$nv_update_config['formodule'= "music";</code> 
 +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>$nv_update_config['release_date'] = 1333929600;</code> 
 +Là thời gian phát hành gói nâng cấp/cập nhật module, giá trị này là Unix timestamp lấy theo hàm [[http://php.net/manual/en/function.time.php|time()]] của php. 
 +<code php> 
 +$nv_update_config['author'"Phan Tan Dung (phantandung92@gmail.com)"; 
 +$nv_update_config['support_website'= "http://nukeviet.vn/phpbb/viewforum.php?f=118"
 +$nv_update_config['to_version'] = "3.5.01"; 
 +$nv_update_config['allow_old_version'] = array( "3.0.01""3.1.00", "3.2.00", "3.3.00", "3.3.01", "3.4.01" ); 
 +$nv_update_config['update_auto_type'= 1; // 0:Nang cap bang tay, 1:Nang cap tu dong, 2:Nang cap nua tu dong 
 +</code> 
 +Là đoạn khai báo lần lượt thông tin tác giả, website hỗ trợ, phiên bản nâng cấp đến (được đặt đúng  [[programming:module#quy_tắc_dặt_ten_phien_bản_module|quy cách đặt tên phiên bản module]]), các phiên bản hỗ trợ nâng cấp, kiểu nâng cấp. 
 +  * Đối với kiểu nâng cấp bằng tay, thay vì các file nâng cấp, các code thay đổi được đặt trong thư mục install/update thì chúng được đặt luôn ngang hàng với thư mục gốc. Kiểu nâng cấp này áp dụng chỉ áp dụng cho việc nâng cấp hệ thống NukeViet trong một số trường hợp cần thiết, việc nâng cấp module không nên và không cần dùng kiểu nâng cấp này. 
 +  * Đối với kiểu nâng cấp nửa tự động, hệ thống sẽ thực hiên nâng cấp CSDL và người quản trị phải thực hiện di chuyển bằng tay các file trong thư mục install/update ra ngoài thư mục gốc. 
 +  * Đối với nâng cấp tự động thì việc nâng cấp CSDL và việc di chuyển code là hoàn toàn tự động. 
 +===== Ngôn ngữ ===== 
 +Để khai báo thêm cho ngôn ngữ khi nâng cấp, ta tiến hành khai báo qua đoạn 
 +<code php>$nv_update_config['lang'] = array(); 
 +$nv_update_config['lang']['vi'] = array(); 
 +$nv_update_config['lang']['en'] = array();
  
- $array_album[$lang][$module_info['module_data']][''] = 0; +// Tiếng Việt 
- $array_album[$lang][$module_info['module_data']]['na'= 0; +$nv_update_config['lang']['vi']['nv_up_author'] = 'Cập nhật nhạc sĩ cho bảng bài hát, video';
-  +
- foreach( $array_album[$lang][$module_info['module_data']] as $alias => $id ) +
-+
- $db->sql_query( "UPDATE `" . $table . "` SET `album`='" . $id . "WHERE `album`='" . $alias . "'" ); +
-+
-+
-+
- $db->sql_freeresult(); +
-  +
- return $return; +
-}+
  
-function nv_up_fomart() +$nv_update_config['lang']['vi']['nv_up_version'= 'Cập nhật phiên bản';
-+
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update; +
- $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO''message' ='', );+
  
- // Cập nhật định dạng +// English 
- foreach( $array_lang_music_update as $lang => $array_mod ) +$nv_update_config['lang']['en']['nv_up_author''Update author for song, clip table';
-+
- foreach( $array_mod['mod'] as $module_info ) +
-+
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'. "` CHANGE `casi` `casi` MEDIUMINT(8) NOT NULL DEFAULT  '0'" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'. "_" . $lang . "_" . $module_info['module_data'. "` CHANGE `nhacsi` `nhacsi` MEDIUMINT(8) NOT NULL DEFAULT  '0'" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "` CHANGE `album` `album` MEDIUMINT(8) NOT NULL DEFAULT  '0'" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_album` CHANGE `casi` `casi` MEDIUMINT(8) NOT NULL DEFAULT  '0'" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_video` CHANGE `casi` `casi` MEDIUMINT(8) NOT NULL DEFAULT  '0'" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_video` CHANGE `nhacsi` `nhacsi` MEDIUMINT(8) NOT NULL DEFAULT  '0'" ); +
-  +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_album` DROP INDEX `name`" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_author` DROP INDEX `ten`" ); +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_singer` DROP INDEX `ten`" ); +
-+
-+
- $db->sql_freeresult();+
  
- return $return+$nv_update_config['lang']['en']['nv_up_version'] = 'Updated version'
-}+</code> 
 +Trong ví dụ trên thì gói nâng cấp hỗ trợ hai ngôn ngữ tiếng việt và tiếng anh. 
 +===== Nâng cấp CSDL ===== 
 +Việc nâng cấp CSDL được thư hiện thông qua danh sách các hàm, hệ thống sẽ lần lượt gọi các hàm đó theo cấu hình. 
 +Đầu tiên ta khai báo danh sách các hàm sẽ thự hiện: 
 +<code php>$nv_update_config['tasklist'] = array(); 
 +$nv_update_config['tasklist'][] = array( 'r' => '3.4.01', 'rq' => 2, 'l' => 'nv_up_author', 'f' => 'nv_up_author' ); 
 +$nv_update_config['tasklist'][] = array( 'r' => '3.5.01', 'rq' => 2, 'l' => 'nv_up_version', 'f' => 'nv_up_version' ); 
 +</code> 
 +Trong đó: 
 +  * Phần tử r mang giá trị là phiên bản thấp nhất của module mà gói nâng cấp sẽ bỏ qua không thực hiện. Có nghĩa rằng nếu module hiện tại có phiên bản bằng giá trị này hoặc lớn hơn thì hệ thống không thực hiện hàm đó. 
 +  * Phần tử rq là cấu hình bắt buộc thành công hoặc không bắt buộc. 
 +    * Bằng 0: Không bắt buộc hoàn thành. 
 +    * Bằng 1: Sẽ cảnh báo quản trị nếu thất bại. 
 +    * Bằng 2: Sẽ dừng việc nâng cấp và báo lỗi nếu thất bại. 
 +  * Phần tử l là langkey, là các khóa ngôn ngữ thể hiện tên công việc. 
 +  * Phần tử f là tên hàm sẽ thực hiện công việc đó.
  
-function nv_up_statistics()+Tiếp theo ta viết các hàm thực hiện công việc đó. Ví dụ 
 +<code php> 
 +$array_lang_music_update = array(); 
 +// Lay danh sach ngon ngu 
 +$result = $db->sql_query( "SELECT `lang` FROM `" . $db_config['prefix'] . "_setup_language` WHERE `setup`=1" ); 
 +while( list( $_tmp ) = $db->sql_fetchrow( $result ) )
 { {
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update+ $array_lang_music_update[$_tmp] = array( "lang" => $_tmp"mod" => array() ); 
- $return = array( 'status' => 1'complete' => 1, 'next' => 1, 'link' ='NO', 'lang' => 'NO', 'message' => '', ); +  
- + // Get all module of music 
- // Thêm trường để thống kê số lượng bài hát tho chủ đề bài hát, video + $result1 $db->sql_query( "SELECT `title``module_data` FROM `" . $db_config['prefix'] . "_" . $_tmp . "_modules` WHERE `module_file`='music'); 
- foreach( $array_lang_music_update as $lang => $array_mod )+ while( list( $_modt, $_modd ) $db->sql_fetchrow( $result1 ) )
  {  {
- foreach( $array_mod['mod'as $module_info ) + $array_lang_music_update[$_tmp]['mod'][] = array( "module_title=> $_modt, "module_data" => $_modd );
-+
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'"_$lang . "_" . $module_info['module_data'] . "_category` ADD `numsong` int(11) NOT NULL DEFAULT '0' AFTER `description`" ); +
-  +
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_video_category` ADD `numvideo` int(11) NOT NULL DEFAULT '0' AFTER `description`" ); +
- }+
  }  }
- $db->sql_freeresult(); 
- 
- return $return; 
 } }
  
-function nv_up_stasong()+function nv_up_author()
 { {
  global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update;  global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update;
  $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', );  $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', );
- +  
- // Thống kê số bài hát cho các chủ đề bài hát+ $array_author = array(); 
 +  
 + // Lấy tất cả các nhạc sĩ
  foreach( $array_lang_music_update as $lang => $array_mod )  foreach( $array_lang_music_update as $lang => $array_mod )
  {  {
  foreach( $array_mod['mod'] as $module_info )  foreach( $array_mod['mod'] as $module_info )
  {  {
- $sql "SELECT `id` FROM `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_category`";+ $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_author"; 
 + $sql = "SELECT * FROM `" . $table . "`";
  $check = $db->sql_query($sql);  $check = $db->sql_query($sql);
   
- while( list( $id ) = $db->sql_fetchrow( $check ) )+ while( $row = $db->sql_fetchrow( $check ) )
  {  {
- $db->sql_query( "UPDATE `" . $db_config['prefix'] . "_"$lang . "_"$module_info['module_data'. "_category` SET `numsong`=(SELECT COUNT(*) FROM `" . $db_config['prefix'. "_"$lang . "_" . $module_info['module_data'. "` WHERE `theloai`=" . $id . ") WHERE `id`=" . $id );+ $array_author[$lang][$module_info['module_data']][$row['ten']] = ( int ) $row['id'];
  }  }
  }  }
Dòng 352: Dòng 306:
  $db->sql_freeresult();  $db->sql_freeresult();
  
- return $return; + // Cập nhật nhạc sĩ cho bảng bài hát, video
-+
- +
-function nv_up_stavideo() +
-+
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update; +
- $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', ); +
- +
- // Thống kê số video cho các chủ đề video+
  foreach( $array_lang_music_update as $lang => $array_mod )  foreach( $array_lang_music_update as $lang => $array_mod )
  {  {
  foreach( $array_mod['mod'] as $module_info )  foreach( $array_mod['mod'] as $module_info )
  {  {
- $sql "SELECT `id` FROM `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_video_category`"+ $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "";
- $check = $db->sql_query($sql); +
-  +
- while( list( $id ) = $db->sql_fetchrow( $check ) ) +
-+
- $db->sql_query( "UPDATE `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_video_category` SET `numvideo`=(SELECT COUNT(*) FROM `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_video` WHERE `theloai`=" . $id . ") WHERE `id`=" . $id ); +
-+
-+
-+
- $db->sql_freeresult();+
  
- return $return; + $array_author[$lang][$module_info['module_data']]['na'= 0;
-+
- +
-function nv_up_albumhit() +
-+
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update; +
- $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', ); +
- +
- // Thêm trường HIT vào album +
- foreach( $array_lang_music_update as $lang => $array_mod ) +
-+
- foreach( $array_mod['mod'] as $module_info +
-+
- $db->sql_query( "ALTER TABLE `" . $db_config['prefix'. "_" . $lang . "_" . $module_info['module_data'. "_album` ADD `hit` varchar(50) NOT NULL DEFAULT '' AFTER `addtime`" );+
   
- $db->sql_query"UPDATE `" . $db_config['prefix'] . "_"$lang . "_"$module_info['module_data'. "_album` SET `hit`='0-" . NV_CURRENTTIME . "'" ); + foreach( $array_author[$lang][$module_info['module_data']as $alias => $id )
-+
-+
- $db->sql_freeresult(); +
-  +
- return $return; +
-+
- +
-function nv_up_maintype() +
-+
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update; +
- $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', ); +
- +
- foreach( $array_lang_music_update as $lang => $array_mod ) +
-+
- foreach( $array_mod['mod'] as $module_info ) +
-+
- if( ! $db->sql_query( "REPLACE INTO `" . $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_setting` VALUES ( 20, 'type_main', '0', '' )" ) )+
  {  {
- $return['status'0+ $db->sql_query( "UPDATE `" . $table . "` SET `nhacsi`='" . $id . "WHERE `nhacsi`='" . $alias . "'" )
- $return['complete'0; + $db->sql_query( "UPDATE `" . $table . "_video` SET `nhacsi`='" . $id . "WHERE `nhacsi`='"$alias . "'" );
- return $return;+
  }  }
  }  }
Dòng 420: Dòng 326:
  return $return;  return $return;
 } }
 +</code>
 +Chú ý: 
 +  * Chức năng nâng cấp của hệ thống sẽ sử dụng được tất cả các tài nguyên của NukeViet như các [[programming:function|hàm]], [[programming:class|class]], [[programming:variables|các biến dùng chung]], [[programming:other_constants|các hằng]]
 +  * Được sử dụng biến $nv_update_baseurl mang giá trị <code php>NV_BASE_SITEURL . 'install/update.php?step=2&substep=3&load=' . $func</code>. Biến này có tác dụng là đường dẫn giúp load lại nhiều lần một hàm nào đó mà hàm đó thực hiện nhiều việc, phải chạy lại nhiều lần (sẽ được hướng dẫn bên dưới).
 +  * Được sử dụng biến $old_module_version mang giá trị là phiên bản hiện tại của module đang được cập nhật.
  
-function nv_up_datatype() +==== Viết hàm nâng cấp ==== 
-{ +Việc viết các hàm nâng cấp là do mỗi nhà lập trình mà có các cách viếtnội dung và mục đíchtuy nhiên tất cả đều phải trả về một giá trị quy chuẩngiá trị trả về là một bảng 1 chiều như sau: 
- global $nv_update_baseurl$db$db_config$old_module_version, $array_lang_music_update; +<code php>$return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', );</code
- $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', ); +Trong đó 
- +  * status (0 hoặc 1, true hoặc false tương ứng thành công hoặc thất bạilà trạng thái trả về của lần chạy đó
- foreach( $array_lang_music_update as $lang =$array_mod ) +  * complete hoàn thành hoặc không hoàn thành (0 hoặc 1 true hoặc falsecomplete khác status ở chỗ complete đánh dấu cho cả hàm (công việccòn status chỉ đánh dấu cho lần chạy đó
- { +  * next nếu là 0 (hay falsethì hệ thống kết thúc hàm đó, nếu là 1 (hoặc truethì hệ thống sẽ tiếp tục chạy tiếp đường dẫn link
- foreach$array_mod['mod'] as $module_info ) +  * link đường dẫn sẽ chạy nếu next là 1 (hoặc true
-+  * lang là các ngôn ngữ xảy ra lỗi khi thực hiện ví dụ vi,en,frnếu không có để NO, nếu tất cả ngôn ngữ lỗi để ALL
- $TablePrefix = $db_config['prefix'"_" . $lang . "_" . $module_info['module_data']; +  * message bất kì thông tin gì trả về nếu không có hãy để trống.
- $db->sql_query"ALTER TABLE `" . $TablePrefix . "_album` CHANGE `numsong` `numsong` INT(11) NOT NULL DEFAULT '0'" )+
-  +
- $db->sql_query( "ALTER TABLE `" . $TablePrefix . "_author` CHANGE `ten` `ten` VARCHAR(255NOT NULL DEFAULT ''" ); +
- $db->sql_query( "ALTER TABLE `" $TablePrefix . "_author` CHANGE `tenthat` `tenthat` VARCHAR(255) NOT NULL DEFAULT ''" ); +
-  +
- $db->sql_query( "ALTER TABLE `" . $TablePrefix . "_ftp` CHANGE `host` `host` VARCHAR(255) NOT NULL DEFAULT ''" ); +
- $db->sql_query( "ALTER TABLE `" . $TablePrefix . "_ftp` CHANGE `user` `user` VARCHAR(255) NOT NULL DEFAULT ''" ); +
- $db->sql_query( "ALTER TABLE `" . $TablePrefix . "_ftp` CHANGE `pass` `pass` VARCHAR(255) NOT NULL DEFAULT ''" ); +
-  +
- $db->sql_query( "ALTER TABLE `" . $TablePrefix . "_playlist` CHANGE `view` `view` INT(11) UNSIGNED NOT NULL DEFAULT '0'" ); +
- $db->sql_query"ALTER TABLE `" . $TablePrefix . "_playlist` CHANGE `songdata` `songdata` MEDIUMTEXT NOT NULL" )+
-  +
- $db->sql_query"ALTER TABLE `" . $TablePrefix . "_singer` CHANGE `ten` `ten` VARCHAR(255NOT NULL DEFAULT ''" ); +
- $db->sql_query( "ALTER TABLE `" $TablePrefix . "_singer` CHANGE `tenthat` `tenthat` VARCHAR(255) NOT NULL DEFAULT ''" ); +
-  +
- $db->sql_query( "ALTER TABLE `" . $TablePrefix . "_video_category` CHANGE `title` `title` VARCHAR(255NOT NULL DEFAULT ''" ); +
- +
-+
- $db->sql_freeresult(); +
-  +
- return $return; +
-+
- +
-function nv_up_version() +
-+
- global $nv_update_baseurl$db$db_config$old_module_version, $array_lang_music_update; +
- $return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO''lang' => 'NO', 'message' => '', ); +
- +
- // Cap nhat lai revision va version cua module +
- foreach( $array_lang_music_update as $lang => $array_mod ) +
-+
- foreach( $array_mod['mod'] as $module_info ) +
-+
- $table = $db_config['prefix'"_" . $lang . "_" . $module_info['module_data'] . "_setting"; +
- $db->sql_query( "UPDATE `" $table . "` SET `value`=331 WHERE `key`='revision'" );  +
- $db->sql_query( "UPDATE `" . $table . "` SET `char`='3.5.01' WHERE `key`='version'" );  +
-+
-+
-  +
- $mod_version = "3.5.01 1333929600"; +
- $db->sql_query( "UPDATE `" . $db_config['prefix'] . "_setup_modules` SET `mod_version`='" . $mod_version . "', `author`='PHAN TAN DUNG (phantandung92@gmail.com)' WHERE `module_file`='music'" ); +
-  +
- nv_delete_all_cache(); +
-  +
- return $return; +
-+
- +
-?> +
-</file>+
 ====== Nâng cấp các file ====== ====== Nâng cấp các file ======
-====== Kết luận, ví dụ ====== +Để nâng cấp các file có 3 cách: 
- +  - Đặt các file thay đổi của module ngang hàng với thư mục gốc của website. 
- +  - Đặt các file thay đổi của module vào thư mục update của gói nâng cấp và cấu hình kiểu nâng cấp là tự động. 
 +  - Đặt các file thay đổi của module vào thư mục update của gói nâng cấp và cấu hình kiểu nâng cấp là nửa tự động. 
 +Tùy theo từng tình huống mà các nhà phát triển chọn cách đặt cho phù hợp 
 +====== Gói nâng cấp mẫu ======
  
 +Tham khảo gói nâng cấp module music lên phiên bản 3.4.01 của tác giả Phan Tấn Dũng (phantandung92@gmail.com) tại: http://code.google.com/p/nukeviet-music/downloads/detail?name=Update_Module_Music_3.3.01_To_3.4.01.zip
  
programming/moduleupdate.1346071804.txt.gz · Sửa đổi lần cuối: 2012/08/27 19:50 bởi hoaquynhtim99