phpBB3.2.X备忘: UCP/MCP/ACP实现机制

在这里讨论PHPBB3.2.X相关的使用、安装等话题
版面规则
再次重申: 请不要用站内信件问问题, 有问题直接发到相应版面上, 今后任何此类信件恕不回复.
发表回复
头像
IOsetting
论坛管理员
论坛管理员
帖子: 3635
注册: 2006-10-17 1:48

phpBB3.2.X备忘: UCP/MCP/ACP实现机制

帖子 IOsetting » 2018-11-30 1:32

很多年没用了, 这些已经忘得差不多了, 看到了就记录一下, 以后需要修改时可以找到

phpBB3的UCP, MCP和ACP都是使用数据库来组织界面结构. 对应的数据表是 modules

代码: 全选

  `module_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 
  `module_enabled` tinyint(1) unsigned NOT NULL DEFAULT '1',
  `module_display` tinyint(1) unsigned NOT NULL DEFAULT '1',
  `module_basename` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '', // 这里能和 includes/acp/info/*.php 对应
  `module_class` varchar(10) COLLATE utf8_bin NOT NULL DEFAULT '',  // 这里区分UCP, MCP, ACP
  `parent_id` mediumint(8) unsigned NOT NULL DEFAULT '0', // 对应父节点的module_id
  `left_id` mediumint(8) unsigned NOT NULL DEFAULT '0', // 用于排序
  `right_id` mediumint(8) unsigned NOT NULL DEFAULT '0', // 与left_id一道, 可以快速确定当前节点的所有子节点
  `module_langname` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '', // 多国化条目
  `module_mode` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '', // 具体的功能类型
  `module_auth` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '', // 使用与或等逻辑关系表示的权限组合
parent_id, left_id, right_id 是phpBB一个特色的, 适用于DB存储的树形数据结构, 在forums表也能看到这种设计.
在后台的 系统 -> 模块管理 下可以对结构进行管理.

通过 module_class 确定是UCP, MCP还是ACP, 通过 module_basename 确定对应的php, 而 module_mode 则代表了具体的某一功能. 在adm/index.php中是这样对模块进行初始化的.

代码: 全选

$module_id		= $request->variable('i', '');
$mode			= $request->variable('mode', '');
...
// Instantiate new module
$module = new p_master();

// Instantiate module system and generate list of available modules
$module->list_modules('acp');

// Select the active module
$module->set_active($module_id, $mode);

发表回复