/** * Converts user rights mask into it's object representation * * @param array $raw_config Raw config * @param array $options Associative array of options * @return \ConfigContainer Config object */ public function objectify(array $raw_config = array(), array $options = array()) { if (!isset($options['access_table'])) { throw new Exception('Access table not provided. Cannot find user rights config!'); } $config = new ConfigContainer(); $access_table = $options['access_table']; $mask = $raw_config[0]; $len = strlen($mask); $bin = ''; $result = array(); for ($cnt = $len; $cnt > 0; $cnt--) { $bin = sprintf('%04b', hexdec($mask[$cnt - 1])) . $bin; } $len = strlen($bin); for ($cnt = $len - 1; $cnt >= 0; $cnt--) { if ($bin[$cnt] == '1') { $result[] = $len - $cnt - 1; } } $variables = array(); foreach ($result as $level) { if ($level === 0) { $variables[] = new ConfigVariable('superuser', true); } if (isset($access_table[$level]['privilege'])) { $variables[] = new ConfigVariable($access_table[$level]['privilege'], true); } } $section = new ConfigSection('privileges'); $section->addVariables($variables); $config->addSection($section); return $config; }
/** * Converts user rights array into it's object representation * * @param array $raw_config Raw config * @param array $options Associative array of options * @return \ConfigContainer Config object */ public function objectify(array $raw_config = array(), array $options = array()) { $config = new ConfigContainer(); $rights = $raw_config[0]; $access = AccessRights::getInstance(); $variables = array(); foreach ($rights as $right) { if ($right === 'full_access') { $variables[] = new ConfigVariable('superuser', true); } if ($access->checkPrivilege($right)) { $variables[] = new ConfigVariable($right, true); } } $section = new ConfigSection('privileges'); $section->addVariables($variables); $config->addSection($section); return $config; }
/** * Converts raw ui config into it's object representation * * @param array $raw_config Raw config * @param array $options Associative array of options * @return \ConfigContainer Config object */ public function objectify(array $raw_config = array(), array $options = array()) { $config = new ConfigContainer(); $sections = array(); foreach ($raw_config as $section_variable) { $section_name = $section_variable['section']; $variable_name = $section_variable['var']; $variable_value = $section_variable['value']; $variable_comment = $section_variable['description']; $variable = new ConfigVariable($variable_name, $variable_value, $variable_comment); if (isset($sections[$section_name])) { $sections[$section_name][] = $variable; } else { $sections[$section_name] = array($variable); } } foreach ($sections as $section_name => $section_variables) { $section = new ConfigSection($section_name); $section->addVariables($section_variables); $config->addSection($section); } return $config; }