read(); while ($entry){ // check if filename ends with . if (strrpos($entry, '.')) { $pos = strrpos($entry, '.'); if (substr($entry, $pos + 1) == $scope) { $name = substr($entry, 0, $pos); $ret[] = $name; } } $entry = $dir->read(); } } return $ret; } /** * Loads an profile of the given account type * * @param string $profile name of the profile (without . extension) * @param string $scope account type * @return array hash array (attribute => value) */ function loadAccountProfile($profile, $scope) { if (!eregi("^[0-9a-z_-]+$", $profile) || !eregi("^[a-z]+$", $scope)) return false; $settings = array(); $file = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/" . $profile . "." . $scope; if (is_file($file) == True) { $file = @fopen($file, "r"); if ($file) { while (!feof($file)) { $line = fgets($file, 1024); if (($line == "\n")||($line[0] == "#")) continue; // ignore comments // search keywords $parts = array(); $parts = split(": ", $line); if (sizeof($parts) != 2) continue; // ignore malformed settings else { $option = $parts[0]; $value = $parts[1]; // remove line ends $value = chop($value); $settings[$option] = explode("+::+", $value); } } fclose($file); } else { StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file); } } else { StatusMessage("ERROR", "", _("Unable to load profile!") . " " . $file); } return $settings; } /** * Saves an hash array (attribute => value) to an account profile * * file is created, if needed * * @param string $profile name of the account profile (without . extension) * @param array $attributes hash array (attribute => value) * @param string $scope account type * @return boolean true, if saving succeeded */ function saveAccountProfile($attributes, $profile, $scope) { if (!$_SESSION['loggedIn'] == true) return false; // check profile name if (!eregi("^[0-9a-z_-]+$", $profile) || !eregi("^[a-z]+$", $scope)) return false; if (!is_array($attributes)) { return false; } $path = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles/" . $profile . "." . $scope; $file = @fopen($path, "w"); if ($file) { // write attributes $keys = array_keys($attributes); for ($i = 0; $i < sizeof($keys); $i++) { if (isset($attributes[$keys[$i]])) { $line = $keys[$i] . ": " . implode("+::+", $attributes[$keys[$i]]) . "\n"; } else { $line = $keys[$i] . ": "; } fputs($file, $line); } // close file fclose($file); } else { return false; } return true; } /** * Deletes an account profile * * @param string $file name of profile (Without . extension) * @param string $scope account type * @return boolean true if profile was deleted */ function delAccountProfile($file, $scope) { if (!$_SESSION['loggedIn'] == true) return false; if (!eregi("^[0-9a-z\\-_]+$", $file) || !eregi("^[0-9a-z\\-_]+$", $scope)) return false; $prof = substr(__FILE__, 0, strlen(__FILE__) - 16) . "config/profiles/" . $file . "." . $scope; if (is_file($prof)) { return @unlink($prof); } else return false; } ?>