diff --git a/lam/lib/selfService.inc b/lam/lib/selfService.inc index 120b376f..0f2028ef 100644 --- a/lam/lib/selfService.inc +++ b/lam/lib/selfService.inc @@ -24,6 +24,7 @@ $Id$ /** * Interface between modules and self service pages. +* This file also includes the self service profile class and helper functions. * * @package selfService * @author Roland Gruber @@ -31,6 +32,8 @@ $Id$ /** modules */ include_once("modules.inc"); +/** account types */ +include_once("types.inc"); /** @@ -50,4 +53,128 @@ function getSelfServiceSearchAttributes($scope) { return $return; } + +/** +* Returns a list of all available self service profiles (without .conf) +* +* @return array profile names (array( => array(, , ...))) +*/ +function getSelfServiceProfiles() { + $types = getTypes(); + $dir = dir(substr(__FILE__, 0, strlen(__FILE__) - 20) . "/config/selfService"); + $ret = array(); + while ($entry = $dir->read()){ + $ext = substr($entry, strrpos($entry, '.') + 1); + $name = substr($entry, 0, strrpos($entry, '.')); + // check if extension is right, add to profile list + if (in_array($ext, $types)) { + $ret[$ext][] = $name; + } + } + ksort($ret); + return $ret; +} + + +/** +* Loads all settings of a self service profile. +* +* @param string $name profile name +* @param string $scope account type +* @return selfServiceProfile true if file was readable +*/ +function loadSelfServiceProfile($name, $scope) { + if (!eregi("^[0-9a-z _-]+$", $name)) return false; + if (!eregi("^[0-9a-z _-]+$", $scope)) return false; + $profile = new selfServiceProfile(); + $settings = new selfServiceProfile(); + $file = substr(__FILE__, 0, strlen(__FILE__) - 20) . "/config/selfService/" . $name . "." . $scope; + if (is_file($file) === True) { + $file = @fopen($file, "r"); + if ($file) { + $data = fread($file, 10000); + $profile = unserialize($data); + fclose($file); + } + else { + StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file); + } + } + else { + StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file); + } + return $profile; +} + + +/** +* Saves a self service profile. +* +* File is created, if needed +* +* @param string $name name of the account profile +* @param string $scope account type +* @param selfServiceProfile $profile self service profile +* @return boolean true, if saving succeeded +*/ +function saveSelfServiceProfile($name, $scope, $profile) { + // check profile name + if (!eregi("^[0-9a-z _-]+$", $scope)) return false; + if (!eregi("^[0-9a-z _-]+$", $name)) return false; + if (!get_class($profile) === 'selfServiceProfile') { + return false; + } + $path = substr(__FILE__, 0, strlen(__FILE__) - 20) . "/config/selfService/" . $name . "." . $scope; + $file = @fopen($path, "w"); + if ($file) { + // write settings to file + fputs($file, serialize($profile)); + // close file + fclose($file); + } + else { + return false; + } + return true; +} + + +/** + * Includes all settings of a self service profile. + * + * @package selfService + */ +class selfServiceProfile { + + /** server address */ + var $serverURL; + + /** LDAP suffix */ + var $LDAPSuffix; + + /** LDAP search attribute */ + var $searchAttribute; + + /** describing text for user login */ + var $loginCaption; + + /** describing text for search attribute */ + var $loginAttributeText; + + /** + * Constructor + * + * @return selfServiceProfile + */ + function selfServiceProfile() { + // set default values + $this->serverURL = "localhost"; + $this->LDAPSuffix = ""; + $this->searchAttribute = "uid"; + $this->loginCaption = "Welcome to LAM self service. Please enter your user name and password."; + $this->loginAttributeText = "User name"; + } + +} + ?> \ No newline at end of file