diff --git a/lam/docs/modules-specification.htm b/lam/docs/modules-specification.htm index d0e8bec6..3ae271e4 100644 --- a/lam/docs/modules-specification.htm +++ b/lam/docs/modules-specification.htm @@ -95,7 +95,7 @@ quota module is no base module as it needs posixAccount.
function get_ldap_filter($scope)
+ style="font-weight: bold;">function get_ldap_filter()
@@ -104,9 +104,7 @@ quota module is no base module as it needs posixAccount.
Returns an array('or' => '...', 'and' => '...') that is used to build the LDAP filter. Usually used to filter object classes.
-$scope is the account type -("user", "group", "host" at this time).
-
+
All "or" filter parts of the base modules are combined with OR and then combined with the "and" parts.
The resulting LDAP filter will look like this: @@ -114,7 +112,7 @@ The resulting LDAP filter will look like this:
Example: return "('or' => -'objectClass=posixAccount', 'and' => '(!(uid=*$))')"
+'(objectClass=posixAccount)', 'and' => '(!(uid=*$))')"

This function is only used for base modules. Standard modules do not need to @@ -128,15 +126,13 @@ implement it.
function -get_dependencies($scope)
+get_dependencies()

This function returns a list of modules it depends on.
-The $scope parameter defines -the account type ("user", "group", "host" at this time).

The return value is an array with two sub arrays, "depends" and

   Example: array('or' => -'objectClass=posixAccount', 'and' => '(!(uid=*$))') +'objectClass=posixAccount', 'and' => '(!(uid=*$))')
+
+
+

6.4 get_dependencies()
+

+    "dependencies" => array
+
+   Example: array("depends" +=> array("posixAccount", array("qmail", "sendmail")), "conflicts" +=> array("exim"))
+
diff --git a/lam/lib/baseModule.inc b/lam/lib/baseModule.inc index ad74a2ee..2ea84091 100644 --- a/lam/lib/baseModule.inc +++ b/lam/lib/baseModule.inc @@ -118,6 +118,16 @@ class baseModule { else return get_class($this); } + /** + * This function returns a list with all depending and conflicting modules. + * + * @return array list of dependencies and conflicts + */ + function get_dependencies() { + if (isset($this->meta['dependencies'])) return $this->meta['dependencies']; + else return array('depends' => array(), 'conflicts' => array()); + } + // TODO implement missing interface } diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc index 3ec73731..8207e441 100644 --- a/lam/lib/modules.inc +++ b/lam/lib/modules.inc @@ -106,8 +106,8 @@ function getModulesDependencies($scope) { $mods = getAvailableModules($scope); $deps = array(); for ($i = 0; $i < sizeof($mods); $i++) { - $deps = call_user_func(array($mods[$i], "get_dependencies"), $scope); - if ($deps != -1) $return[$mods[$i]] = $deps; + $module = new $mods[$i]($scope); + $return[$mods[$i]] = $module->get_dependencies(); } return $return; } diff --git a/lam/lib/modules/account.inc b/lam/lib/modules/account.inc index 2e6bf754..59615212 100644 --- a/lam/lib/modules/account.inc +++ b/lam/lib/modules/account.inc @@ -50,6 +50,8 @@ class account extends baseModule { $return["account_types"] = array("host"); // alias name $return["alias"] = _('Account'); + // module dependencies + $return['dependencies'] = array('depends' => array(), 'conflicts' => array('inetOrgPerson')); return $return; } @@ -79,13 +81,6 @@ class account extends baseModule { var $orig; - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='host') return array('depends' => array(), 'conflicts' => array('inetOrgPerson', 'posixGroup', 'sambaDomain') ); - return -1; - } - /* This function returns true if all required attributes from other * modules are set. This is required to prevent undefined states */ diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc index e5a602b5..03a83cea 100644 --- a/lam/lib/modules/inetOrgPerson.inc +++ b/lam/lib/modules/inetOrgPerson.inc @@ -49,6 +49,8 @@ class inetOrgPerson extends baseModule { $return["account_types"] = array("user"); // alias name $return["alias"] = _('Personal'); + // module dependencies + $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array('account')); return $return; } @@ -82,13 +84,6 @@ class inetOrgPerson extends baseModule { var $orig; - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='user') return array('depends' => array('posixAccount'), 'conflicts' => array('account', 'posixGroup', 'sambaDomain') ); - return -1; - } - /* This function returns true if all required attributes from other * modules are set. This is required to prevent undefined states */ diff --git a/lam/lib/modules/main.inc b/lam/lib/modules/main.inc index 361b7bbd..16fab00e 100644 --- a/lam/lib/modules/main.inc +++ b/lam/lib/modules/main.inc @@ -79,12 +79,6 @@ class main extends baseModule { var $base; - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - return array('depends' => array(), 'conflicts' => array() ); - } - function module_ready() { return true; } diff --git a/lam/lib/modules/posixAccount.inc b/lam/lib/modules/posixAccount.inc index 9b80e177..24f4b4b7 100644 --- a/lam/lib/modules/posixAccount.inc +++ b/lam/lib/modules/posixAccount.inc @@ -69,6 +69,12 @@ class posixAccount extends baseModule { $return["is_base"] = true; // LDAP filter $return["ldap_filter"] = array('or' => "(objectClass=posixAccount)", 'and' => "(!(uid=*$))"); + // module dependencies + $return['dependencies'] = array('depends' => array('inetOrgPerson'), 'conflicts' => array()); + } + elseif ($this->get_scope() == "host") { + // module dependencies + $return['dependencies'] = array('depends' => array('account'), 'conflicts' => array()); } // alias name $return["alias"] = _("Unix"); @@ -152,14 +158,6 @@ class posixAccount extends baseModule { } } - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='host') return array('depends' => array('account'), 'conflicts' => array() ); - if ($scope=='user') return array('depends' => array('inetOrgPerson'), 'conflicts' => array() ); - return -1; - } - function module_ready() { return true; } diff --git a/lam/lib/modules/posixGroup.inc b/lam/lib/modules/posixGroup.inc index f1ed1e6c..be24b147 100644 --- a/lam/lib/modules/posixGroup.inc +++ b/lam/lib/modules/posixGroup.inc @@ -71,6 +71,8 @@ class posixGroup extends baseModule { } // alias name $return["alias"] = _('Unix'); + // module dependencies + $return['dependencies'] = array('depends' => array(), 'conflicts' => array('inetOrgPerson', 'account', 'sambaDomain')); return $return; } @@ -141,13 +143,6 @@ class posixGroup extends baseModule { } } - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='group') return array('depends' => array(), 'conflicts' => array('inetOrgPerson', 'account', 'sambaDomain') ); - return -1; - } - function module_ready() { return true; } diff --git a/lam/lib/modules/quota.inc b/lam/lib/modules/quota.inc index b4a0711d..fda16545 100644 --- a/lam/lib/modules/quota.inc +++ b/lam/lib/modules/quota.inc @@ -34,6 +34,14 @@ class quota extends baseModule { $return["account_types"] = array("user", "group"); // alias name $return["alias"] = _('Quota'); + if ($this->get_scope() == 'group') { + // module dependencies + $return['dependencies'] = array('depends' => array('posixGroup'), 'conflicts' => array()); + } + if ($this->get_scope() == 'user') { + // module dependencies + $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); + } return $return; } @@ -83,14 +91,6 @@ class quota extends baseModule { var $quota; - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='group') return array('depends' => array('posixGroup'), 'conflicts' => array() ); - if ($scope=='user') return array('depends' => array('posixAccount'), 'conflicts' => array() ); - return -1; - } - function module_ready() { if (!isset($_SESSION[$_SESSION[$this->base]->config]->scriptPath)) return $false; if ($_SESSION[$this->base]->type=='user' && $_SESSION[$this->base]->module['posixAccount']->attributes['uid'][0]=='') return false; diff --git a/lam/lib/modules/sambaAccount.inc b/lam/lib/modules/sambaAccount.inc index d78e9d40..bffb9dce 100644 --- a/lam/lib/modules/sambaAccount.inc +++ b/lam/lib/modules/sambaAccount.inc @@ -71,6 +71,8 @@ class sambaAccount extends baseModule { } // alias name $return["alias"] = _('Samba 2'); + // module dependencies + $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); return $return; } @@ -143,14 +145,6 @@ class sambaAccount extends baseModule { } } - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='host') return array('depends' => array('account'), 'conflicts' => array() ); - if ($scope=='user') return array('depends' => array('inetOrgPerson'), 'conflicts' => array() ); - return -1; - } - function module_ready() { if ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]=='') return false; if ($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]=='') return false; diff --git a/lam/lib/modules/sambaGroupMapping.inc b/lam/lib/modules/sambaGroupMapping.inc index e24909ed..7353ac87 100644 --- a/lam/lib/modules/sambaGroupMapping.inc +++ b/lam/lib/modules/sambaGroupMapping.inc @@ -65,6 +65,8 @@ class sambaGroupMapping extends baseModule { $return["account_types"] = array("group"); // alias name $return["alias"] = _('Samba 3'); + // module dependencies + $return['dependencies'] = array('depends' => array('posixGroup'), 'conflicts' => array()); return $return; } @@ -109,13 +111,6 @@ class sambaGroupMapping extends baseModule { var $rids; - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='group') return array('depends' => array('posixGroup'), 'conflicts' => array() ); - return -1; - } - function module_ready() { if ($_SESSION[$this->base]->module['posixGroup']->attributes['gidNumber'][0]=='') return false; return true; diff --git a/lam/lib/modules/sambaSamAccount.inc b/lam/lib/modules/sambaSamAccount.inc index b23d32f7..ff4892de 100644 --- a/lam/lib/modules/sambaSamAccount.inc +++ b/lam/lib/modules/sambaSamAccount.inc @@ -71,6 +71,8 @@ class sambaSamAccount extends baseModule { } // alias name $return["alias"] = _('Samba 3'); + // module dependencies + $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); return $return; } @@ -144,14 +146,6 @@ class sambaSamAccount extends baseModule { } } - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='host') return array('depends' => array('posixAccount'), 'conflicts' => array() ); - if ($scope=='user') return array('depends' => array('posixAccount'), 'conflicts' => array() ); - return -1; - } - function module_ready() { if ($_SESSION[$this->base]->module['posixAccount']->attributes['gidNumber'][0]=='') return false; if ($_SESSION[$this->base]->module['posixAccount']->attributes['uidNumber'][0]=='') return false; diff --git a/lam/lib/modules/shadowAccount.inc b/lam/lib/modules/shadowAccount.inc index 4f0c9fcd..83c1a200 100644 --- a/lam/lib/modules/shadowAccount.inc +++ b/lam/lib/modules/shadowAccount.inc @@ -65,6 +65,8 @@ class shadowAccount extends baseModule { $return["account_types"] = array("user"); // alias name $return["alias"] = _('Shadow'); + // module dependencies + $return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array()); return $return; } @@ -103,13 +105,6 @@ class shadowAccount extends baseModule { var $orig; - /* This function returns a list with all required modules - */ - function get_dependencies($scope) { - if ($scope=='user') return array('depends' => array('inetOrgPerson'), 'conflicts' => array() ); - return -1; - } - function module_ready() { return true; }