Esempio n. 1
0
 public static function run($params)
 {
     C('FRAME_ACTIVE', 'addons');
     $params['Addon'] = parse_name($params['Addon'], 1);
     $params['Entry'] = parse_name($params['Entry'], 1);
     $params['Controller'] = parse_name($params['Controller'], 1);
     $params['Action'] = parse_name($params['Action'], 1);
     $a = new Addon($params['Addon']);
     define('ADDON_NAME', $params['Addon']);
     define('ADDON_CURRENT_PATH', MB_ROOT . "addons/{$params['Addon']}/");
     C('ADDON_INSTANCE', $a);
     C('TMPL_PARSE_STRING.__ADDON_PUBLIC__}', __SITE__ . "addons/{$params['Addon']}/static/");
     Addon::autoload();
     $class = "Addon\\{$params['Addon']}\\{$params['Entry']}\\Controller\\{$params['Controller']}Controller";
     if (class_exists($class)) {
         $instance = new $class($params, $a);
         $method = $params['Action'] . C('ACTION_SUFFIX');
         if (method_exists($instance, $method)) {
             call_user_func(array($instance, $method));
         } else {
             return error(-2, "访问的操作 {$params['Addon']}\\{$params['Entry']}\\{$params['Controller']}Controller\\{$params['Action']} 不存在.");
         }
     } else {
         return error(-1, "访问的控制器 {$params['Addon']}\\{$params['Entry']}\\{$params['Controller']}Controller 不存在.");
     }
 }
 private function route($message)
 {
     // session 启动会话支持
     $sessionid = md5($message['from'] . $message['to']);
     session_id($sessionid);
     session_start();
     Addon::autoload();
     $p = new Processor();
     if ($message['type'] == Platform::MSG_TEXT) {
         $packet = $p->procText($message);
     } else {
         $packet = $p->procOther($message);
     }
     //Log::write(var_export($packet, true), Log::INFO);
     $resp = $this->platform->response($packet);
     exit($resp);
 }
 public function uninstallAction()
 {
     $a = I('get.addon');
     if (empty($a)) {
         $this->error('访问错误');
     }
     $addon = new Addon($a);
     Addon::autoload();
     $class = "Addon\\{$a}\\Api\\Application";
     if (class_exists($class)) {
         $instance = new $class();
         if (!empty($instance)) {
             $instance->addon = $addon;
             if (method_exists($instance, 'install')) {
                 $instance->uninstall();
             }
         }
     }
     $condition = '`name`=:name';
     $pars = array();
     $pars[':name'] = $a;
     $m = new Model();
     $m->table('__EX_ADDONS__')->where($condition)->bind($pars)->delete();
     $m->table('__EX_ADDON_ENTRIES__')->where('`addon`=:name')->bind($pars)->delete();
     $m->table('__RP_PROCESSORS__')->where('`from`=:name')->bind($pars)->delete();
     $m->table('__RP_REPLIES__')->where('`from`=:name')->bind($pars)->delete();
     $this->success('扩展卸载成功');
 }