public function install() { $u = new Utility(); $u->dbRunQuery(trim($this->installSql)); $this->addon->pasteBenchEntry('接入第三方微信平台', 'connect/weixin', '可以用于对接已有的第三方微信公众号平台'); return true; }
public function remove($id) { $platform = $this->getOne($id); if (empty($platform)) { return error(-1, '访问错误'); } $this->table('__BR_BRIDGES__')->where("`id`='{$id}'")->delete(); return $this->addon->unRegister($id); }
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 不存在."); } }
public function _empty() { $pieces = explode('/', __INFO__, 6); if (count($pieces) >= 5 && $pieces[0] == 'bench' && $pieces[1] == 'extend') { $params = array(); list($params['Entry'], $action, $params['Addon'], $params['Controller'], $params['Action'], $params['Stuff']) = $pieces; unset($_GET[$params['Controller']]); $ret = Addon::run($params); if (is_error($ret)) { $this->error($ret['message']); } return; } $name = parse_name(ACTION_NAME, 1); $a = new Addon($name); $entries = $a->getEntries(Addon::ENTRY_BENCH); $this->assign('entity', $a->getCurrentAddon()); $this->assign('entries', $entries); C('FRAME_ACTIVE', 'extend'); C('FRAME_CURRENT', U('bench/extend/' . ACTION_NAME)); $this->display('Extend/addon'); }
public function _empty() { $pieces = explode('/', __INFO__, 5); if (count($pieces) >= 4 && $pieces[0] == 'extend') { $params = array(); $params['Entry'] = 'App'; list($action, $params['Addon'], $params['Controller'], $params['Action'], $params['Stuff']) = $pieces; unset($_GET[$params['Controller']]); $ret = Addon::run($params); if (is_error($ret)) { $this->error($ret['message']); } return; } }
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 addonsAction() { $addons = array(); $path = MB_ROOT . 'addons/'; if (is_dir($path)) { if ($handle = opendir($path)) { while (false !== ($addonpath = readdir($handle))) { if ($addonpath != '.' && $addonpath != '..') { $define = Addon::getAddon($addonpath, true); if (!is_error($define)) { $addons[] = $define; } } } } } if (IS_POST) { $a = I('post.addon'); $addons = coll_key($addons, 'name'); $addon = $addons[$a]; if (!empty($addon)) { $zip = new \ZipArchive(); $tmpFile = ADDON_CURRENT_PATH . 'Data/package.zip'; @unlink($tmpFile); $zip->open($tmpFile, \ZipArchive::CREATE); $root = MB_ROOT . "addons/{$a}"; $files = File::tree($root); foreach ($files as $file) { $local = substr($file, strlen($root)); if (substr($local, -4) == '.php') { if (I('post.trim') != '') { $content = $this->trimComments($file, I('post.license')); } $zip->addFromString("{$a}{$local}", $content); } else { $zip->addFile($file, "{$a}{$local}"); } } $zip->close(); $version = MB_VERSION; $filename = "{$a}-v{$addon['version']} (for MB-{$version})"; header('content-type: application/zip'); header('content-disposition: attachment; filename="' . $filename . '.zip"'); readfile($tmpFile); @unlink($tmpFile); } } $this->assign('addons', $addons); $this->display('addons'); }
public function U($url = '', $vars = '') { $entry = strtolower(MODULE_NAME); return $this->addon->U($entry, $url, $vars); }
public function run(&$params) { Site::loadSettings(); if (MODULE_NAME == 'Bench') { $theme = I('cookie.template_theme'); $themes = array('cerulean', 'cyborg', 'simplex', 'darkly', 'lumen', 'slate', 'spacelab', 'united'); if (!empty($theme) && in_array($theme, $themes)) { C('TMPL_PARSE_STRING.{__TEMPLATE_THEME__}', '-' . $theme); } $frames = $this->getBenchFrames(); $name = C('FRAME_ACTIVE'); $names = array(); $names[] = 'summary'; $names[] = 'cms'; $names[] = 'uc'; $names[] = 'extend'; $names[] = 'addons'; $names[] = 'analyze'; $name = in_array($name, $names) ? $name : 'summary'; } if (MODULE_NAME == 'Control') { $frames = $this->getControlFrames(); $name = C('FRAME_ACTIVE'); $names = array(); $names[] = 'common'; $names[] = 'webapp'; $names[] = 'member'; $names[] = 'access'; $names[] = 'extend'; $names[] = 'addons'; $names[] = 'store'; $name = in_array($name, $names) ? $name : 'common'; } $allAddons = array(); if ($name == 'extend') { $types = Addon::types(); foreach ($types as $type) { $addons = Addon::getAddons($type['name']); $allAddons = array_merge($allAddons, coll_key($addons, 'name')); $items = array(); if (!empty($addons)) { foreach ($addons as $a) { $addon = new Addon($a); $entryType = strtolower(MODULE_NAME); $entries = $addon->getEntries($entryType); if (!empty($entries)) { $addonName = parse_name($a['name']); $items[] = array('icon' => 'plus', 'title' => $a['title'], 'url' => U("/{$entryType}/extend/{$addonName}")); } } } if (!empty($items)) { $frames['extend'][] = array('title' => $type['title'], 'items' => $items); } } } if ($name == 'addons') { if (defined('ADDON_NAME')) { $a = C('ADDON_INSTANCE'); $addon = $a->getCurrentAddon(); $entries = $a->getEntries(strtolower(MODULE_NAME)); $items = array(); foreach ($entries as $entry) { $items[] = array('icon' => 'plus', 'url' => $entry['url'], 'title' => $entry['title']); } $frames['addons'][] = array('title' => $addon['title'], 'items' => $items); } } C('FRAME_ACTIVE', $name); $set = $frames[$name]; $url = C('FRAME_CURRENT'); if (empty($url)) { $url = $_SERVER['REQUEST_URI']; C('FRAME_CURRENT', $url); } foreach ($set as &$row) { foreach ($row['items'] as &$item) { if ($item['url'] == $url) { $item['current'] = true; if (!C('FRAME_TITLE')) { C('FRAME_TITLE', $item['title']); } } if (!empty($item['items'])) { foreach ($item['items'] as &$sub) { if ($sub['url'] == $url) { $sub['current'] = true; if (!C('FRAME_TITLE')) { C('FRAME_TITLE', $sub['title']); } } } } } } C('FRAME_SETS', $set); }
public function install() { $this->addon->pasteControlEntry('发布微构系统', 'publish/exec', '将当前运行代码发行为特定版本'); $this->addon->pasteControlEntry('发布扩展', 'publish/addons', '打包指定的模块'); return true; }
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('扩展卸载成功'); }