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('扩展卸载成功'); }