159 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
/*
 | 
						|
$Id$
 | 
						|
 | 
						|
  This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
 | 
						|
  Copyright (C) 2003 - 2006  Roland Gruber
 | 
						|
 | 
						|
  This program is free software; you can redistribute it and/or modify
 | 
						|
  it under the terms of the GNU General Public License as published by
 | 
						|
  the Free Software Foundation; either version 2 of the License, or
 | 
						|
  (at your option) any later version.
 | 
						|
 | 
						|
  This program is distributed in the hope that it will be useful,
 | 
						|
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
  GNU General Public License for more details.
 | 
						|
 | 
						|
  You should have received a copy of the GNU General Public License
 | 
						|
  along with this program; if not, write to the Free Software
 | 
						|
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
/**
 | 
						|
* This file provides functions to load and save account profiles.
 | 
						|
*
 | 
						|
* @package profiles
 | 
						|
* @author Roland Gruber
 | 
						|
*/
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
* Returns an array of string with all available profiles for the given account type
 | 
						|
*
 | 
						|
* @param string $scope account type
 | 
						|
* @return array profile names
 | 
						|
*/
 | 
						|
function getAccountProfiles($scope) {
 | 
						|
	$dir = @dir(substr(__FILE__, 0, strlen(__FILE__) - 17) . "/config/profiles");
 | 
						|
	$ret = array();
 | 
						|
	$pos = 0;
 | 
						|
	if ($dir) {
 | 
						|
		$entry = $dir->read();
 | 
						|
		while ($entry){
 | 
						|
			// check if filename ends with .<scope>
 | 
						|
			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 .<scope> 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 .<scope> 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] . ": \n";
 | 
						|
			}
 | 
						|
			fputs($file, $line);
 | 
						|
		}
 | 
						|
		// close file
 | 
						|
		fclose($file);
 | 
						|
	}
 | 
						|
	else {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	return true;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
* Deletes an account profile
 | 
						|
*
 | 
						|
* @param string $file name of profile (Without .<scope> 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("^[a-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;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
?>
 |