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
Phiên bản sauPhiên bản sau của cả hai bên
programming:moduleupdate [2012/08/27 20:41] – [Nâng cấp CSDL] hoaquynhtim99programming:moduleupdate [2012/08/27 21:18] – [Nâng cấp CSDL] hoaquynhtim99
Dòng 265: Dòng 265:
   * Phần tử f là tên hàm sẽ thực hiện công việc đó.   * Phần tử f là tên hàm sẽ thực hiện công việc đó.
  
 +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 ) )
 +{
 + $array_lang_music_update[$_tmp] = array( "lang" => $_tmp, "mod" => array() );
 +
 + // Get all module of music
 + $result1 = $db->sql_query( "SELECT `title`, `module_data` FROM `" . $db_config['prefix'] . "_" . $_tmp . "_modules` WHERE `module_file`='music'" );
 + while( list( $_modt, $_modd ) = $db->sql_fetchrow( $result1 ) )
 + {
 + $array_lang_music_update[$_tmp]['mod'][] = array( "module_title" => $_modt, "module_data" => $_modd );
 + }
 +}
  
 +function nv_up_author()
 +{
 + 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' => '', );
 +
 + $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['mod'] as $module_info )
 + {
 + $table = $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "_author";
 + $sql = "SELECT * FROM `" . $table . "`";
 + $check = $db->sql_query($sql);
 +
 + while( $row = $db->sql_fetchrow( $check ) )
 + {
 + $array_author[$lang][$module_info['module_data']][$row['ten']] = ( int ) $row['id'];
 + }
 + }
 + }
 + $db->sql_freeresult();
 +
 + // Cập nhật nhạc sĩ cho bảng bài hát, video
 + 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'] . "";
 +
 + $array_author[$lang][$module_info['module_data']]['na'] = 0;
 +
 + foreach( $array_author[$lang][$module_info['module_data']] as $alias => $id )
 + {
 + $db->sql_query( "UPDATE `" . $table . "` SET `nhacsi`='" . $id . "' WHERE `nhacsi`='" . $alias . "'" );
 + $db->sql_query( "UPDATE `" . $table . "_video` SET `nhacsi`='" . $id . "' WHERE `nhacsi`='" . $alias . "'" );
 + }
 + }
 + }
 + $db->sql_freeresult();
 +
 + 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.
 +
 +==== 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ết, nội dung và mục đích, tuy nhiên tất cả đều phải trả về một giá trị quy chuẩn, giá trị trả về là một bảng 1 chiều như sau:
 +<code php>$return = array( 'status' => 1, 'complete' => 1, 'next' => 1, 'link' => 'NO', 'lang' => 'NO', 'message' => '', );</code>
 +Trong đó
 +  * status (0 hoặc 1, true hoặc false tương ứng thành công hoặc thất bại) là trạng thái trả về của lần chạy đó.
 +  * complete hoàn thành hoặc không hoàn thành (0 hoặc 1 true hoặc false) complete khác status ở chỗ complete đánh dấu cho cả hàm (công việc) còn status chỉ đánh dấu cho lần chạy đó.
 +  * next nếu là 0 (hay false) thì hệ thống kết thúc hàm đó, nếu là 1 (hoặc true) thì hệ thống sẽ tiếp tục chạy tiếp đường dẫn link.
 +  * 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,fr, nếu không có để NO, nếu tất cả ngôn ngữ lỗi để ALL.
 +  * message bất kì thông tin gì trả về nếu không có hãy để trống.
 ====== Nâng cấp các file ====== ====== Nâng cấp các file ======
 ====== Gói nâng cấp mẫu ====== ====== Gói nâng cấp mẫu ======
programming/moduleupdate.txt · Sửa đổi lần cuối: 2013/05/15 14:59 bởi 127.0.0.1