aa8eb305创建于 2025年3月23日历史提交
<?php


namespace Module\Vendor\Admin\Widget;

use ModStart\Admin\Auth\AdminPermission;
use ModStart\Admin\Layout\AdminPage;
use ModStart\Layout\Row;
use ModStart\Widget\Box;
use Module\Vendor\Provider\ContentVerify\ContentVerifyBiz;

class AdminWidgetDashboard
{
    private static $icon = [];
    private static $foot = [];

    /**
     * @param Row $row
     * @deprecated delete after 2023-09-01
     */
    public static function registerTodo($closure)
    {
    }

    /**
     * @param Row $row
     * @deprecated delete after 2023-09-01
     */
    public static function callTodo(Row $row)
    {
    }

    public static function registerIcon($closure)
    {
        self::$icon[] = $closure;
    }

    public static function callIcon(Row $row)
    {
        foreach (self::$icon as $item) {
            call_user_func_array($item, [$row]);
        }
    }

    public static function registerFoot($closure)
    {
        self::$foot[] = $closure;
    }

    public static function call(AdminPage $page)
    {
        $verifyHtml = [];
        foreach (ContentVerifyBiz::listAll() as $provider) {
            if (!$provider->verifyRule() || AdminPermission::permit($provider->verifyRule())) {
                $cnt = $provider->verifyCount();
                if ($cnt > 0) {
                    $url = $provider->verifyUrl();
                    $title = $provider->title();
                    $verifyHtml[] = "<a class='tw-mr-2 tw-mb-2 tw-inline-block tw-bg-yellow-100 tw-text-yellow-600 tw-py-1 tw-px-2 tw-rounded-2xl'
                                     href='$url' data-tab-open data-tab-title='$title'>$title <span class='ub-text-danger tw-font-bold'>$cnt</span> 条</a>";
                }
            }
        }
        if (!empty($verifyHtml)) {
            $page->row(Box::make(join("", $verifyHtml), '<i class="iconfont icon-details"></i> 待处理'));
        }

        foreach (self::$foot as $item) {
            if ($item instanceof \Closure) {
                call_user_func_array($item, [$page]);
            }
        }
    }
}