summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 98aa4b9)
raw | patch | inline | side by side (parent: 98aa4b9)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 1 Jul 2010 08:11:42 +0000 (08:11 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 1 Jul 2010 08:11:42 +0000 (08:11 +0000) |
-ACL tags in the gosa.conf menu definition may have line breaks or spaces, this will no longer lead to errors now.
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@18900 594d385d-05f5-0310-b6e9-bd551577e9d8
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@18900 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-core/include/class_pluglist.inc | patch | blob | history |
index ca829d7e1b106949861ef03a513b00389c6b88b9..18cf1a1ee9f4715a41e40ebf6502c2a39bb64dde 100644 (file)
* Checks existence and ACL for the given plugin.
* Returns true in case of success else false.
*/
- function registerPlugin($plug)
+ function registerPlugin(&$plug)
{
- global $class_mapping;
+ global $class_mapping;
- // Clean ACL string, we do not want any spaces or lines breaks here.
- $plug['ACL'] = trim($plug['ACL']);
+ // Clean ACL string, we do not want any spaces or lines breaks here.
+ $plug['ACL'] = trim($plug['ACL']);
- // Check class
- if (!isset($plug['CLASS'])){
- msg_dialog::display(
- _("Configuration error"),
- _("The configuration format has changed: please run the setup again!"),
- FATAL_ERROR_DIALOG);
- exit();
- }
- if (!plugin_available($plug['CLASS'])){
- return(FALSE);
- }
- if (!$this->check_access($plug['ACL'])){
- return(FALSE);
- }
- $this->dirlist[$this->index] = dirname($class_mapping[$plug['CLASS']]);
- $this->pluginList[$this->index] = $plug['CLASS'];
- $this->index++;
- return(TRUE);
+ // Clean ACL string, we do not want any spaces or lines breaks here.
+ $acl = trim($plug['ACL']);
+ if(preg_match("/,/",$acl)){
+ $acls = explode(",",$acl);
+ }else{
+ $acls = array($acl);
+ }
+ foreach($acls as $key => $aclEntry){
+ $aclEntry = trim($aclEntry);
+ $tmp = preg_replace("/[^a-z0-9\/:]/i","",$aclEntry);
+
+ // Check if cleaned 'acl' tag doesn't match the configured one from the gosa.conf.
+ // Display a notification to tell the user that there is something wrong.
+ if($tmp != $aclEntry){
+ trigger_error("Please check acl='{$aclEntry}' tag for plugin '{$plug['CLASS']}' in your gosa.conf, it contains invalid characters!" );
+ }
+ $acls[$key] = $tmp;
+ }
+ $plug['ACL'] = implode(',',$acls);
+
+
+ // Check class
+ if (!isset($plug['CLASS'])){
+ msg_dialog::display(
+ _("Configuration error"),
+ _("The configuration format has changed: please run the setup again!"),
+ FATAL_ERROR_DIALOG);
+ exit();
+ }
+ if (!plugin_available($plug['CLASS'])){
+ return(FALSE);
+ }
+ if (!$this->check_access($plug['ACL'])){
+ return(FALSE);
+ }
+ $this->dirlist[$this->index] = dirname($class_mapping[$plug['CLASS']]);
+ $this->pluginList[$this->index] = $plug['CLASS'];
+ $this->index++;
+ return(TRUE);
}
if(isset($this->config->data['MENU'])){
foreach($this->config->data['MENU'] as $section => $plugins){
foreach($plugins as $id => $plug){
- if(!$this->registerPlugin($plug)){
+ if(!$this->registerPlugin($this->config->data['MENU'][$section][$id])){
unset($this->config->data['MENU'][$section][$id]);
}
}
// if this fails for some reason, then remove the plugins from the menu.
if(isset($this->config->data['SHORTCUTMENU'])){
foreach($this->config->data['SHORTCUTMENU'] as $id => $plugin){
- if(!$this->registerPlugin($plugin)){
+ if(!$this->registerPlugin($this->config->data['SHORTCUTMENU'][$id])){
unset($this->config->data['SHORTCUTMENU'][$id]);
}
}
// if this fails for some reason, then remove the plugin from the menu.
if(isset($this->config->data['PATHMENU'])){
foreach($this->config->data['PATHMENU'] as $id => $plugin){
- if(!$this->registerPlugin($plugin)){
+ if(!$this->registerPlugin($this->config->data['PATHMENU'][$id])){
unset($this->config->data['PATHMENU'][$id]);
}
}