Hướng dẫn cập nhật JohnCMS 6.1.2 lên 6.2.0

1 bài đăng
22.03.2016 / 18:59
MrKen
Bài đăng: 2653
Trùm!
Vẫn là A N H

Như các bạn đã biết, JohnCMS đã cập nhật lên JohnCMS 6.2.0 từ lâu nhưng rất nhiều người vẫn còn sử dụng JohnCMS bản thấp hơn như 6.1.2. Hiện tại mình cũng đang dùng bản này và có ý định cập nhật lên bản 6.2.0 để fix lỗi cũng như thêm tính năng mới từ JohnCMS.

Tuy nhiên việc cập nhật sẽ gặp khó khăn với nhiều người do bản cập nhật yêu cầu thay thế file, trong khi các bạn đã chỉnh sửa các file đó để thêm các mod mới hay xóa các tính năng không cần thiết. Cũng vì vậy nhiều bạn ngại cập nhật lên phiên bản mới.

Sau đây mình xin hướng dẫn các bạn chỉnh sửa từng file để cập nhật lên phiên bản JohnCMS 6.2.0 từ phiên bản 6.1.2 mà không cần phải thay thế file. Lưu ý rằng số dòng dưới đây có thể khác đối với các file mà các bạn đã chỉnh sửa nhiều.

1. Mở file download/view.php, tìm dòng 73, đoạn

PHP
  1. $graf = [
  2. "gif",
  3. "jpg",
  4. "png"
  5. ];

sửa thành:

PHP
  1. $graf = array(
  2. "gif",
  3. "jpg",
  4. "png"
  5. );

2. Mở file forum/includes/say.php, tìm dòng 156 và 327, đoạn

PHP
  1. if (isset($_POST['addfiles'])) {
  2. header("Location: index.php?id=$fadd&act=addfile");
  3. } else {
  4. header("Location: index.php?id=$id&page=$page");
  5. }

thêm vào sau:

PHP
  1. exit;

3. Về module Gallery, mình thấy ít người dùng nên sẽ không đề cập ở đây, nếu ai cần có thể để lại bình luận ở đây, mình sẽ lọc ra các update ở module này

4. Mở file incfiles/classes/CleanUser.php, tìm dòng 131, đoạn:

PHP
  1. mysql_query("DELETE FROM `lib` WHERE `avtor` = '" . $res['name'] . "' AND `type` = 'komm'");

thay thành:

PHP
  1. mysql_query("DELETE FROM `cms_library_comments` WHERE `user_id` = '" . $clean_id . "'");

5 . Đây là một tính năng hoàn toàn mới ở JohnCMS 6.2.0. Tính năng này giúp highlight (hiểu đơn giản là thêm màu vào) các đoạn mã PHP, HTML, CSS, JS, rất phù hợp với các diễn đàn hoạt động nhiều về lĩnh vực code.

- Đầu tiên, các bạn download file đính kèm về, up lên host và giải nén vào thư mục incfiles/classes/

- Mở file incfiles/classes/bbcode.php, tìm dòng 168, đoạn

PHP
  1. $var = preg_replace('#\[color=(.+?)\](.+?)\[/color]#si', '$2', $var);
  2. $var = preg_replace('!\[bg=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)](.+?)\[/bg]!is', '$2', $var);
  3. $var = preg_replace('#\[spoiler=(.+?)\]#si', '$2', $var);

thêm vào sau:

PHP
  1. $var = preg_replace('#\[code=(.+?)\](.+?)\[\/code]#si', '$2', $var);

tìm ngay sau đó:

PHP
  1. private static function highlight_code

Xóa function này đi và thay vào đó:

PHP
  1. private static function highlight_code($var)
  2. {
  3. $var = preg_replace_callback('#\[php\](.+?)\[\/php\]#s', 'self::phpCodeCallback', $var);
  4. $var = preg_replace_callback('#\[code=(.+?)\](.+?)\[\/code]#is', 'self::codeCallback', $var);
  5.  
  6. return $var;
  7. }
  8.  
  9. private static $geshi;
  10.  
  11. private static function phpCodeCallback($code)
  12. {
  13. return self::codeCallback(array(1 => 'php', 2 => $code[1]));
  14. }
  15.  
  16. private static function codeCallback($code)
  17. {
  18. $parsers = array(
  19. 'php' => 'php',
  20. 'css' => 'css',
  21. 'html' => 'html5',
  22. 'js' => 'javascript',
  23. 'sql' => 'sql',
  24. 'xml' => 'xml',
  25. );
  26.  
  27. $parser = isset($code[1]) && isset($parsers[$code[1]]) ? $parsers[$code[1]] : 'php';
  28.  
  29. if (null === self::$geshi) {
  30. require_once 'geshi.php';
  31. self::$geshi = new \GeSHi;
  32. self::$geshi->set_link_styles(GESHI_LINK, 'text-decoration: none');
  33. self::$geshi->set_link_target('_blank');
  34. self::$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 2);
  35. self::$geshi->set_line_style('background: rgba(255, 255, 255, 0.5)', 'background: rgba(255, 255, 255, 0.35)', false);
  36. self::$geshi->set_code_style('padding-left: 6px; white-space: pre-wrap');
  37. }
  38.  
  39. self::$geshi->set_language($parser);
  40. $php = strtr($code[2], array('<br />' => ''));
  41. $php = html_entity_decode(trim($php), ENT_QUOTES, 'UTF-8');
  42. self::$geshi->set_source($php);
  43.  
  44. return '<div class="phpcode" style="overflow-x: auto">' . self::$geshi->parse_code() . '</div>';
  45. }

tìm đoạn:

PHP
  1. $out = '<style>

thêm vào trước đó:

PHP
  1. $code = array(
  2. 'php',
  3. 'css',
  4. 'js',
  5. 'html',
  6. 'sql',
  7. 'xml',
  8. );
  9.  
  10. $codebtn = '';
  11. foreach ($code as $val) {
  12. $codebtn .= '<a href="javascript:tag(\'[code=' . $val . ']\', \'[' . '/code]\'); show_hide(\'code\');">' . strtoupper($val) . '</a>';
  13. }

tìm đoạn:

PHP
  1. <a href="javascript:tag(\'[php]\', \'[' . '/php]\')"><img src="' . self::$system_set['homeurl'] . '/images/bb/php.gif" alt="cod" title="' . self::$lng['tag_code'] . '" border="0"/></a>

thay thành:

PHP
  1. <a href="javascript:show_hide(\'code\');"><img src="' . self::$system_set['homeurl'] . '/images/bb/php.gif" title="Code" border="0"/></a>

Cuối cùng, tìm đoạn:

PHP
  1. $out .= '<div id="color" class="bbpopup" style="display:none;">Шрифт: ' . $font_color . '</div>' .
  2. '<div id="bg" class="bbpopup" style="display:none">Фон: ' . $bg_color . '</div>';

thay thành:

PHP
  1. $out .= '<div id="code" class="codepopup" style="display:none;">' . $codebtn . '</div>' .
  2. '<div id="color" class="bbpopup" style="display:none;">' . $font_color . '</div>' .
  3. '<div id="bg" class="bbpopup" style="display:none">' . $bg_color . '</div>';

Vậy là xong. Demo thì các bạn xem các forum nào đang dùng JohnCMS 6.2.0 để xem nhé :)

6. Mở file library/includes/moder.php tìm dòng 37, đoạn:

PHP
  1. $image = isset($_FILES['image']['tmp_name']) ? $_FILES['image']['tmp_name'] : '';

thay thành:

PHP
  1. $image = isset($_FILES['image']['tmp_name']) ? $_FILES['image'] : '';

7. Mở file library/includes/search.php tìm dòng 84, đoạn:

PHP
  1. $name = $res['name'];

thay thành

PHP
  1. $name = functions::checkout($res['name']);

dòng 95 đoạn:

PHP
  1. <a href="index.php?id=' . $res['id'] . '">' . functions::checkout($name) . '</a></strong>

thay thành:

PHP
  1. <a href="index.php?id=' . $res['id'] . '">' . $name . '</a></strong>

8. Mở file panel/includes/usr_del.php, tìm dòng 39, đoạn:

PHP
  1. $comm_lib = mysql_result(mysql_query("SELECT COUNT(*) FROM `lib` WHERE `avtor` = '" . $user['name'] . "' AND `type` = 'komm'"), 0);

thay thành

PHP
  1. $comm_lib = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_library_comments` WHERE `user_id` = '" . $user['id'] . "'"), 0);

Vậy là bạn đã hoàn tất việc cập nhật từ JohnCMS 6.1.2 lên 6.2.0.

Khi có phiên bản mới, mình sẽ tiếp tục hướng dẫn các bạn các bước cập nhật. Hãy chú ý theo dõi diễn đàn nhé :)

Đã chỉnh sửa. MrKen (21.07.2016 / 19:35)