static function registerCustomRole($info) { self::$_roles[$info['name']] = $info; $roles = self::$_roles; ksort($roles); self::$_roles = $roles; self::getBaseinstallRoles(true); self::getInstallableRoles(true); self::getValidRoles('****', true); if (isset($info['configvar'])) { if (!isset($info['configvar'][0])) { $info['configvar'] = array($info['configvar']); } foreach ($info['configvar'] as $configvar) { $default = $configvar['default']; if (false !== strpos($default, '<?php')) { $tmp = Config::current()->temp_dir . DIRECTORY_SEPARATOR . '.configdefault.php'; if (!file_exists(dirname($tmp))) { mkdir(dirname($tmp), 0755, true); } file_put_contents($tmp, $default); $getDefault = function() use ($tmp) { include $tmp; return $default; }; $default = $getDefault(); } Config::addConfigValue($configvar['name'], $default, $configvar['configtype']); } } }
static function registerCustomRole($info) { if (!isset(self::$_roles)) { self::registerRoles(); } self::$_roles[$info['name']] = $info; $roles = self::$_roles; ksort($roles); self::$_roles = $roles; self::getBaseinstallRoles(true); self::getInstallableRoles(true); self::getValidRoles('****', true); if (isset($info['configvar'])) { if (!isset($info['configvar'][0])) { $info['configvar'] = array($info['configvar']); } foreach ($info['configvar'] as $configvar) { if ($configvar['configtype'] == 'system' && in_array($configvar['name'], Config::current()->customsystemvars) || $configvar['configtype'] == 'user' && in_array($configvar['name'], Config::current()->customuservars) || $configvar['configtype'] == 'channel' && in_array($configvar['name'], Config::current()->customchannelvars)) { continue; } $default = $configvar['default']; if (false !== strpos($default, '<?php')) { $tmp = Config::current()->temp_dir . DIRECTORY_SEPARATOR . '.configdefault.php'; if (!file_exists(dirname($tmp))) { mkdir(dirname($tmp), 0755, true); } if (file_put_contents($tmp, $default) === false) { throw new Role\Exception("Cannot create custom role configuration file {$tmp}"); } $getDefault = function () use($tmp) { include $tmp; return $default; }; $default = $getDefault(); } Config::addConfigValue($configvar['name'], $default, $configvar['configtype']); } } }