Other Avoid Plugin Upgrade Errors - Tránh nâng cấp lỗi plugin (0 phương pháp truy vấn)

PVS

Super Moderator
Thành viên BQT
Tham gia
28/02/2015
Bài viết
16,832
Được Like
12,694
Avoid Plugin Upgrade Errors - Tránh nâng cấp lỗi plugin (0 phương pháp truy vấn)

Nếu bạn đang thiết kế một plugin cho board đang bận rộn, và những plugin được cập nhật, đôi khi bạn có thể chạy vào những gì một số người gọi là "cài đặt sai sót", nhưng đó không phải là lỗi thực sự, đó là những lỗi do các file plugin không hiện phù hợp với các phiên bản cài đặt của các plugin. (Có thể không phù hợp giữa các chức năng/bảng/tùy chọn ACP .. mà tất cả sẽ được sắp xếp ra sau khi tập tin xml đã được sử dụng và nâng cấp đã đi để hoàn thành).

Vì vậy, nếu bạn chờ đợi một thời gian dài, hoặc không chạy xml, hoặc bạn có rất nhiều khách trước khi nâng cấp xong và board không được tắt (thường quản trị viên không có vẻ để làm cho việc nâng cấp), sau đó các lỗi có thể được nhìn thấy trong các lỗi máy chủ ACP

Bây giờ tôi trở lại cho người dùng một "upgrade message" nếu không phù hợp, và làm điều này với 0 truy vấn trên đầu.
Mã:
<?php
class YourPlugin_Model_Version extends XenForo_Model
{
    /*
    *    To prevent errors from being raised when admins replace the plugin files, but do not upgrade the xml (yet)
    *    There is a need for a 0 query method to check the current installed version of the add-on (compared to the expected version from plugin files)
    */

    protected static $_yourPuginVersion = 1202026; // the current version_id for your plugin, update before release

    public function isCorrectPluginVersion()
    {
        $addOns = XenForo_Application::get('addOns');  
        $filePluginVersionId = self::$_yourPuginVersion; // the files version Id
        $installedPluginVersionId = $addOns['yourPluginName'];  // currently installed version id
        if($installedPluginVersionId >= $filePluginVersionId)
        {
            return true;  // 0 query
        }
        return false;
    }
}

Sau đó bạn có thể sử dụng một cái gì đó như thế này trong controller public của bạn:
Mã:
    public function _preDispatch($action)
    {
        parent::_preDispatch($action);
        $this->_assertCorrectPluginVersion();
    }

    protected function _assertCorrectPluginVersion()
    {
        if(!$this->_getVersionModel()->isCorrectPluginVersion())
        {
            throw $this->getErrorOrNoPermissionResponseException('Plugin is currently being upgraded');
        }
    }

   protected function _getVersionModel(){return $this->getModelFromCache('YourPlugin_Model_Version');}

Chúc các bạn thành công.


Nguồn: xenforo.com​
 

Hướng dẫn sử dụng

XenForo 1 XenForo 2
Translate by PVS

Dịch vụ XenForo của VNXF

Mobile/Zalo: 0906081284

Telegram: anhanhxf

Chỉ nhận web nội dung lành mạnh

Nhà Tài Trợ

Mút Xốp Không Gian
Mút Sofa Không Gian
Top Bottom