Công cụ thành viên

Công cụ trang web


programming4: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
programming4:moduleupdate [2016/06/16 15:42] – [Cấu hình gói nâng cấp] hoaquynhtim99programming4:moduleupdate [2017/11/07 10:56] (hiện tại) – [Gói nâng cấp mẫu] 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 257: Dòng 257:
 } }
 </file> </file>
 +
 +**Kể từ NukeViet 4.2.01 về sau đoạn:**
 +
 +<code php>
 +// Lay danh sach ngon ngu
 +$result = $db->query("SELECT lang FROM " . $db_config['prefix'] . "_setup_language WHERE setup=1");
 +while (list($_tmp) = $result->fetch(PDO::FETCH_NUM)) {
 +</code>
 +
 +Chỉ cần thay bằng 
 +
 +<code php>
 +foreach ($global_config['allow_sitelangs'] as $_tmp) {
 +</code>
 +
 +> Chú ý: Nếu trong function cần kiểm tra gọi $global_config
 ===== 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
Dòng 285: Dòng 301:
 // 0:Nang cap bang tay, 1:Nang cap tu dong, 2:Nang cap nua tu dong // 0:Nang cap bang tay, 1:Nang cap tu dong, 2:Nang cap nua tu dong
 $nv_update_config['update_auto_type'] = 1; $nv_update_config['update_auto_type'] = 1;
- 
-$nv_update_config['lang'] = array(); 
-$nv_update_config['lang']['vi'] = array(); 
- 
-// Tiếng Việt 
-$nv_update_config['lang']['vi']['nv_up_p1'] = 'Thay đổi cấu trúc bảng dữ liệu'; 
-$nv_update_config['lang']['vi']['nv_up_finish'] = 'Đánh dấu phiên bản mới'; 
- 
-$nv_update_config['tasklist'] = array(); 
-$nv_update_config['tasklist'][] = array( 
-    'r' => '4.0.28', 
-    'rq' => 1, 
-    'l' => 'nv_up_p1', 
-    'f' => 'nv_up_p1' 
-); 
-$nv_update_config['tasklist'][] = array( 
-    'r' => '4.0.29', 
-    'rq' => 1, 
-    'l' => 'nv_up_finish', 
-    'f' => 'nv_up_finish' 
-); 
 </code> </code>
 Trong đó Trong đó
Dòng 312: Dòng 307:
 <code php>$nv_update_config['packageID']</code> <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, .... 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>+<code php>$nv_update_config['formodule'] = 'video-clip';</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 đó). 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> <code php>$nv_update_config['release_date'] = 1333929600;</code>
Dòng 348: Dòng 343:
 Đầ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>$nv_update_config['tasklist'] = array(); <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( 
-$nv_update_config['tasklist'][] = array( 'r' => '3.5.01', 'rq' => 2, 'l' => 'nv_up_version', 'f' => 'nv_up_version' );+    'r' => '4.0.28', 
 +    'rq' => 1, 
 +    'l' => 'nv_up_p1', 
 +    'f' => 'nv_up_p1' 
 +); 
 +$nv_update_config['tasklist'][] = array( 
 +    'r' => '4.0.29', 
 +    'rq' => 1, 
 +    'l' => 'nv_up_finish', 
 +    'f' => 'nv_up_finish' 
 +);
 </code> </code>
 Trong đó: Trong đó:
Dòng 362: Dòng 367:
 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();+$array_modlang_update = array(); 
 // Lay danh sach ngon ngu // Lay danh sach ngon ngu
-$result = $db->sql_query( "SELECT `langFROM `" . $db_config['prefix'] . "_setup_languageWHERE `setup`=1" ); +$result = $db->query("SELECT lang FROM " . $db_config['prefix'] . "_setup_language WHERE setup=1"); 
-while( list( $_tmp ) = $db->sql_fetchrow$result ) ) +while (list($_tmp) = $result->fetch(PDO::FETCH_NUM)) { 
-+    $array_modlang_update[$_tmp] = array("lang" => $_tmp, "mod" => array()); 
- $array_lang_music_update[$_tmp] = array( "lang" => $_tmp, "mod" => array() ); + 
-  +    // Get all module 
- // Get all module of music +    $result1 = $db->query("SELECT title, module_data FROM " . $db_config['prefix'] . "_" . $_tmp . "_modules WHERE module_file=" . $db->quote($nv_update_config['formodule'])); 
- $result1 = $db->sql_query( "SELECT `title``module_dataFROM `" . $db_config['prefix'] . "_" . $_tmp . "_modulesWHERE `module_file`='music'); +    while (list($_modt, $_modd) = $result1->fetch(PDO::FETCH_NUM)) { 
- while( list( $_modt, $_modd ) = $db->sql_fetchrow$result1 ) ) +        $array_modlang_update[$_tmp]['mod'][] = array("module_title" => $_modt, "module_data" => $_modd); 
- +    }
- $array_lang_music_update[$_tmp]['mod'][] = array( "module_title" => $_modt, "module_data" => $_modd ); +
- }+
 } }
  
-function nv_up_author()+/** 
 + * nv_up_p1() 
 + * 
 + * @return 
 + * 
 + */ 
 +function nv_up_p1()
 { {
- global $nv_update_baseurl, $db, $db_config, $old_module_version, $array_lang_music_update; +    global $nv_update_baseurl, $db, $db_config, $nv_Cache, $array_modlang_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átvideo +    $return = array( 
- foreach( $array_lang_music_update as $lang => $array_mod ) +        'status' => 1
- { +        'complete' => 1, 
- foreach( $array_mod['mod'] as $module_info ) +        'next=> 1, 
- +        'link' ='NO', 
- $table $db_config['prefix'] . "_" . $lang . "_" . $module_info['module_data'] . "";+        'lang' => 'NO', 
 +        'message' => '' 
 +    );
  
- $array_author[$lang][$module_info['module_data']]['na'= 0; +    foreach ($array_modlang_update as $lang => $array_mod) { 
-  +        foreach ($array_mod['mod'as $module_info) { 
- foreach( $array_author[$lang][$module_info['module_data']] as $alias => $id +            $table_prefix = $db_config['prefix'. "_"$lang . "_"$module_info['module_data']
- +             
- $db->sql_query( "UPDATE `" . $table . "SET `nhacsi`='" . $id . "' WHERE `nhacsi`='" . $alias . "'" ); +            // Cập nhật default chasert của các bảng 
- $db->sql_query( "UPDATE `" . $table . "_video` SET `nhacsi`='" . $id . "' WHERE `nhacsi`='" . $alias . "'" ); +            try { 
- +                $db->query("ALTER TABLE " . $table_prefix . "_clip DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); 
-+            } catch (PDOException $e) 
- +                trigger_error($e->getMessage()); 
- $db->sql_freeresult(); +            } 
-  +            try { 
- return $return;+                $db->query("ALTER TABLE " . $table_prefix . "_hit DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); 
 +            } catch (PDOException $e) { 
 +                trigger_error($e->getMessage()); 
 +            } 
 +            try { 
 +                $db->query("ALTER TABLE " . $table_prefix . "_topic DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); 
 +            } catch (PDOException $e) { 
 +                trigger_error($e->getMessage()); 
 +            } 
 +            try { 
 +                $db->query("ALTER TABLE " . $table_prefix . "_comm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); 
 +            } catch (PDOException $e) { 
 +                trigger_error($e->getMessage()); 
 +            } 
 +             
 +            // Sửa lại các bảng 
 +            try { 
 +                $db->query("ALTER TABLE " . $table_prefix . "_clip CHANGE title title VARCHAR(250) NOT NULL DEFAULT ''"); 
 +                $db->query("ALTER TABLE " . $table_prefix . "_clip CHANGE alias alias VARCHAR(250) NOT NULL DEFAULT ''"); 
 +            } catch (PDOException $e) { 
 +                trigger_error($e->getMessage()); 
 +            } 
 +            try { 
 +                $db->query("ALTER TABLE " . $table_prefix . "_topic CHANGE title title VARCHAR(250) NOT NULL DEFAULT ''"); 
 +                $db->query("ALTER TABLE " . $table_prefix . "_topic CHANGE alias alias VARCHAR(250) NOT NULL DEFAULT ''"); 
 +            } catch (PDOException $e) { 
 +                trigger_error($e->getMessage()); 
 +            } 
 +             
 +            // Cập nhật chasert từng cột của các bảng 
 +            $array_table array('_clip', '_hit', '_topic', '_comm'); 
 +             
 +            foreach ($array_table as $table) { 
 +                $sql = "SHOW FULL COLUMNS FROM " . $table_prefix $table; 
 +                $result = $db->query($sql); 
 +                 
 +                while($row = $result->fetch()) { 
 +                    if($row['collation'] == 'utf8_general_ci') { 
 +                        try { 
 +                            $db->query("ALTER TABLE " . $table_prefix . $table . " CHANGE  
 +                 " . $row['field'] . " " . $row['field'] . " " . $row['type'] . " CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci " .  
 +                 ($row['null'] == 'NO' ? "NOT NULL" : ""(strpos($row['type'], 'varchar') === false ? '' : " DEFAULT '" . $row['default'. "'")); 
 +                        catch (PDOException $e) { 
 +                            trigger_error($e->getMessage()); 
 +                        } 
 +                    } 
 +                } 
 +            } 
 +        } 
 +    } 
 + 
 +    return $return;
 } }
 </code> </code>
Dòng 445: Dòng 488:
 ====== 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 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+Tham khảo gói nâng cấp module video-clip lên phiên bản 4.0.09 của tác giả Phan Tấn Dũng (phantandung92@gmail.com) tại: https://github.com/hoaquynhtim99/video-clip-update/releases/download/4.0.29/update_video-clip_to4.0.29.zip 
 + 
 +====== Một số ghi chú ====== 
 + 
 +Kể từ phiên bản 4.2.01, thay vì viết 
 + 
 +<code php> 
 +// Duyệt tất cả các ngôn ngữ 
 +$language_query = $db->query('SELECT lang FROM ' $db_config['prefix'] . '_setup_language WHERE setup = 1'); 
 +while (list ($lang) = $language_query->fetch(3)) { 
 +</code> 
 + 
 +Ta chỉ cần dùng 
 + 
 +<code php> 
 +foreach ($global_config['allow_sitelangs'] as $lang) { 
 +</code>
  
 +> Chú ý: Nếu trong function cần kiểm tra gọi $global_config
programming4/moduleupdate.1466066530.txt.gz · Sửa đổi lần cuối: 2016/06/16 15:42 bởi hoaquynhtim99