Example #1
0
    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']);
            }
        }
    }
Example #2
0
 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']);
         }
     }
 }