Addons::addonsHook PHP Метод

addonsHook() публичный статический Метод

单个调用钩子
public static addonsHook ( string $addonsName, string $name, array $param = [], boolean $admin = false )
$addonsName string 插件名称
$name string 钩子名称
$param array 相关参数
$admin boolean 是否是管理员
    public static function addonsHook($addonsName, $name, $param = array(), $admin = false)
    {
        if (!$addonsName) {
            return;
        }
        $addonsName = basename($addonsName);
        $dirName = ADDON_PATH . '/plugin';
        $urlDir = SITE_URL . '/addons/plugin';
        $path = $dirName . '/' . $addonsName;
        $addonUrl = $urlDir . '/' . $addonsName;
        $adminHooks = array();
        if (isset(self::$addonsObj[$addonsName])) {
            $obj = self::$addonsObj[$addonsName];
        } else {
            $filename = $path . '/' . $addonsName . 'Addons.class.php';
            tsload($filename);
            $className = $addonsName . 'Addons';
            if (!class_exists($className)) {
                die('不存在该类');
            }
            $obj = new $className();
            $obj->setPath($path);
            $obj->setUrl($addonUrl);
            self::$addonsObj[$addonsName] = $addonsName;
        }
        $simple = $obj instanceof SimpleAddons;
        $adminHooks = $obj->adminMenu();
        if (!$admin && isset($adminHooks[$name])) {
            throw new ThinkException('非法操作,该操作只允许管理员操作');
        }
        if ($simple) {
            $obj->{$name}($param);
        } else {
            $list = self::$validHooks[$name];
            foreach ($list[$addonsName] as $hooks) {
                if (isset(self::$hooksObj[$hooks])) {
                    self::$hooksObj[$hooks]->{$name}($param);
                } else {
                    $filename = $dirName . '/' . $addonsName . '/hooks/' . $hooks . '.class.php';
                    tsload($filename);
                    $tempObj = new $hooks();
                    self::$hooksObj[$hooks] = $tempObj;
                    $tempObj->setPath($path);
                    $tempObj->setPath($obj->getUrl(), true);
                    $tempObj->{$name}($param);
                }
            }
            // foreach
        }
    }

Usage Example

Пример #1
0
 public function checkNewTarget()
 {
     $url = "https://www.sidatz.com/";
     require 'addons/library/phpQuery/QueryList.class.php';
     $reg = array("content" => array("ul.news:eq(0)", "text"));
     $hj = new QueryList($url, $reg);
     $arr_content = $hj->jsonArr;
     //dump($arr_content);
     if (stripos($arr_content[0]["content"], "暂无新标") > 0) {
         $this->ajaxReturn(null, "无新标", 0);
     }
     $arr['content'] = $arr_content[0]['content'];
     //echo $hj->getJSON();
     //$arr['content']=iconv("gb2312","utf-8",$arr_content[0]['content']);
     //dump($arr_content);
     //exit(urldecode(json_encode(array('status'=>1,'info'=>'教务通知详情','data'=>$arr))));
     $push_user_alias = "*";
     $_POST['n_title'] = "有新标了,来看看吧0.0";
     $_POST['n_content'] = "四达投资有新标了,快去用抢标助手抢标吧!";
     $_POST['n_extras'] = "";
     $_POST['push_user_alias'] = $push_user_alias;
     //推送所有人
     $_POST['getPushResult'] = 0;
     Addons::addonsHook("JPush", "doAddPush", array(), true);
     $this->ajaxReturn($arr, "新标情况", 1);
 }
All Usage Examples Of Addons::addonsHook