programming: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 trước của cả hai bênPhiên bản trướcPhiên bản sau | Phiên bản trướcPhiên bản cuốiPhiên bản sau của cả hai bên | ||
programming:moduleupdate [2012/08/27 20:09] – [Cấu hình gói nâng cấp] hoaquynhtim99 | programming:moduleupdate [2013/05/15 14:59] – [Cấu trúc của một gói nâng cấp module] vuthao | ||
---|---|---|---|
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 update_data.php: |
* 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, | * 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, | ||
* 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 213: | Dòng 213: | ||
</ | </ | ||
Trong đó | Trong đó | ||
+ | <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. | ||
+ | <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, | ||
+ | <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 đó). | ||
<code php> | <code php> | ||
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:// | 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:// | ||
Dòng 222: | Dòng 228: | ||
$nv_update_config[' | $nv_update_config[' | ||
</ | </ | ||
- | 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 | + | 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 |
- | ====== Nâng cấp các file ====== | + | * Đố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/ |
- | ====== Gói nâng cấp mẫu ====== | + | * Đố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/ |
+ | * Đố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[' | ||
+ | $nv_update_config[' | ||
+ | // Tiếng Việt | ||
+ | $nv_update_config[' | ||
+ | $nv_update_config[' | ||
+ | // English | ||
+ | $nv_update_config[' | ||
+ | |||
+ | $nv_update_config[' | ||
+ | </ | ||
+ | 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[' | ||
+ | $nv_update_config[' | ||
+ | </ | ||
+ | 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 đó. | ||
+ | |||
+ | 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-> | ||
+ | while( list( $_tmp ) = $db-> | ||
+ | { | ||
+ | $array_lang_music_update[$_tmp] = array( " | ||
+ | |||
+ | // Get all module of music | ||
+ | $result1 = $db-> | ||
+ | while( list( $_modt, $_modd ) = $db-> | ||
+ | { | ||
+ | $array_lang_music_update[$_tmp][' | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function nv_up_author() | ||
+ | { | ||
+ | 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 | ||
+ | foreach( $array_lang_music_update as $lang => $array_mod ) | ||
+ | { | ||
+ | foreach( $array_mod[' | ||
+ | { | ||
+ | $table = $db_config[' | ||
+ | |||
+ | $array_author[$lang][$module_info[' | ||
+ | |||
+ | foreach( $array_author[$lang][$module_info[' | ||
+ | { | ||
+ | $db-> | ||
+ | $db-> | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | $db-> | ||
+ | |||
+ | return $return; | ||
+ | } | ||
+ | </ | ||
+ | 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: | ||
+ | * Được sử dụng biến $nv_update_baseurl mang giá trị <code php> | ||
+ | * Đượ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> | ||
+ | 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 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:// | ||
programming/moduleupdate.txt · Sửa đổi lần cuối: 2013/05/15 14:59 bởi 127.0.0.1