public function respond() { global $_SGLOBAL, $wx; $level = array(); if (!empty($wx->weixin['account']['modules'])) { foreach ($wx->weixin['account']['modules'] as $row) { if (!empty($row['displayorder'])) { $level[$row['displayorder']] = $row; } } } if (!empty($level)) { $response = ''; foreach ($level as $k => $v) { if (!empty($response)) { $wx->response['module'] = $wx->weixin['module']; return $response; break; } if (empty($level[$k])) { continue; } $wx->weixin['module'] = $level[$k]['name']; $processor = WX_Utility::create_module_processor($wx->weixin['module']); $processor->message = $wx->message; $processor->module = $wx->weixin['account']['modules'][$wx->weixin['module']]; $response = $processor->respond(); } } if (!$response) { $wx->weixin['module'] = 'basic'; $processor = WX_Utility::create_module_processor($wx->weixin['module']); $processor->message = $wx->message; $processor->module = $wx->weixin['account']['modules'][$wx->weixin['module']]; $response = $processor->respond(); } return $response; }
public static function create_module_processor($name) { $classname = "{$name}_Module_Processor"; if (!class_exists($classname)) { $file = WX_Utility::root_path() . "/{$name}/processor.php"; if (!is_file($file)) { trigger_error('ModuleProcessor Definition File Not Found ' . $file, E_USER_ERROR); return null; } require $file; } if (!class_exists($classname)) { trigger_error('ModuleProcessor Definition Class Not Found', E_USER_ERROR); return null; } $o = new $classname(); if ($o instanceof WX_Module_Processor) { return $o; } else { trigger_error('ModuleProcessor Class Definition Error', E_USER_ERROR); return null; } }