<?php
/* $Id: class.user_phpcms.php,v 1.2.2.9 2006/06/18 18:07:32 ignatius0815 Exp $ */
/*
   +----------------------------------------------------------------------+
   | phpCMS Content Management System - Version 1.2
   +----------------------------------------------------------------------+
   | phpCMS is Copyright (c) 2001-2006 by the phpCMS Team
   +----------------------------------------------------------------------+
   | 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.
   +----------------------------------------------------------------------+
   | Contributors:
   |    Michael Brauchl (mcyra)
   +----------------------------------------------------------------------+
*/
if (!defined('PHPCMS_RUNNING')) die('Hacking attempt...');


//#######################################################################
// user klasse
//#######################################################################
// autor    Michael Brauchl
// datum    18.04.2001
// version  0.0.1
// lizenz   GPL
//#######################################################################
//
// diese klasse bietet eine interface zu den user-objekten von phpCMS.
//
// void new user
// =============
// legt ein neues user-objekt an. es ist nach der ausführung von
// "new user" noch kein user angelegt.
//
// STRING USERID    = eindeutige ID für jeden user
// MIXED GROUPS     = array aller verfügbaren gruppen
// MIXED STORE      = array zur ablage zusätzlicher objekte
// OBJECT data_container = data_container-klasse wrapper zur db
//
// VOID user(void)
// ===============
// legt einen neuen data_container an.
//
// VOID get_user_data(ID)
// ======================
// liest die daten des users mit der userid "ID"
// aus dem data_container. die daten werden dann im
// objekt USER abgelegt.
//
// STRING ID = userid länge: 128
//
// VOID save_user_data(ID)
// =======================
// speichert die daten aus dem objekt USER im
// data_container unter der userid "ID".
//
// STRING ID = userid länge: 128
//
// VOID delete_user(ID)
// ====================
// löscht den user mit der userid"ID" aus dem
// data_container.
//
// STRING ID = userid länge: 128
//
// MIXED search_user(FIELD, VALUE)
// ===============================
// durchsucht den gesamten data_container nach allen
// usern, bei denen das feld "FIELD" mit dem
// wert "VALUE" übereinstimmt.
// liefert ein array mit den userids aller
// gefundenen user zurück.
//
// VOID make_new_user(VOID)
// ========================
// legt eine einmalige, neue userid an.
// die userid wird im user-objekt abgelegt.
//
//#######################################################################

// include data_container-klasse
// derzeit noch hardcodiert - wird in phpCMS integriert.
//include ('D:/Programme/OpenSA/Apache/htdocs/parser/include/class.lib_data_file_phpcms.php');
// include error - library
// derzeit noch hardcodiert - wird in phpCMS integriert.
//include ('D:/Programme/OpenSA/Apache/htdocs/parser/include/class.lib_error_phpcms.php');
// set debug-mode

if(!defined("_USER_")) {
	define("_USER_", TRUE);
}
$GLOBALS['error_debug'] = false;

class user {
	var $USERID;
	var $VORNAME;
	var $NACHNAME;
	var $NICKNAME;
	var $EMAIL;
	var $PASSWORD;
	var $GROUPS;
	var $STORE;
	var $data_container;
	var $sortkey;

	function user($userdir) {
		debug_lines('user');
		$this->data_container = new data_container($userdir);
		$this->sortkey = "NICKNAME";
	}

	function get_user_data($ID) {
		debug_lines('get_user_data');
		$ID;
		if(!isset($ID)) {
			print_error('no user-id in call!', __FILE__, __LINE__);
		}
		$this->USERID   = $ID;
		$this->VORNAME  = $this->data_container->read_data($ID, 'VORNAME');
		$this->NACHNAME = $this->data_container->read_data($ID, 'NACHNAME');
		$this->NICKNAME = $this->data_container->read_data($ID, 'NICKNAME');
		$this->EMAIL    = $this->data_container->read_data($ID, 'EMAIL');
		$this->PASSWORD = $this->data_container->read_data($ID, 'PASSWORD');
		$this->GROUPS   = $this->data_container->read_data($ID, 'GROUPS');
		$this->STORE    = $this->data_container->read_data($ID, 'STORE');
	}

	function save_user_data($ID) {
		debug_lines('save_user_data');

		if(!isset($ID)) {
			print_error('no user-id in functioncall!', __FILE__, __LINE__);
		}
		//Take the Last Modification
		$this->STORE['LAST_MOD'] = time();
		$this->data_container->write_data($ID, 'VORNAME', $this->VORNAME);
		$this->data_container->write_data($ID, 'NACHNAME', $this->NACHNAME);
		$this->data_container->write_data($ID, 'NICKNAME', $this->NICKNAME);
		$this->data_container->write_data($ID, 'EMAIL', $this->EMAIL);
		$this->data_container->write_data($ID, 'PASSWORD', $this->PASSWORD);
		$this->data_container->write_data($ID, 'GROUPS', $this->GROUPS);
		$this->data_container->write_data($ID, 'STORE', $this->STORE);
	}

	function delete_user($ID) {
		debug_lines('delete_user');

		if(!isset($ID)) {
			print_error ('no user-id in functioncall!', __FILE__, __LINE__);
		}
		$this->data_container->delete_data($ID, 'VORNAME');
		$this->data_container->delete_data($ID, 'NACHNAME');
		$this->data_container->delete_data($ID, 'NICKNAME');
		$this->data_container->delete_data($ID, 'EMAIL');
		$this->data_container->delete_data($ID, 'PASSWORD');
		$this->data_container->delete_data($ID, 'GROUPS');
		$this->data_container->delete_data($ID, 'STORE');
	}

	function search_user($FIELD, $VALUE) {
		debug_lines('search_user');

		$return_array = Array();

		if(!isset($FIELD)) {
			print_error('no field in functioncall!', __FILE__, __LINE__);
		}

		if(!isset($VALUE)) {
			print_error('no value in functioncall!', __FILE__, __LINE__);
		}

		$return_array = $this->data_container->search_data($FIELD, $VALUE);

		if($return_array) {
			usort($return_array, Array($this, "user_sort_internal"));
		}
		return $return_array;
	}

	function make_new_user() {
		debug_lines('make_new_user');

		$this->USERID = md5(uniqid(rand()));

		//Take the Last Modification
		$this->STORE['CREATE_TIME'] = time();
	}

	function put_store($key, $val) {
		$this->STORE[$key] = $val;
	}

	function get_store($key) {
		if(isset($this->STORE[$key])) {
			return $this->STORE[$key];
		} else {
			return "";
		}
	}

	function get_var($key) {
		if(isset($this->$key)) {
			return $this->$key;
		} else {
			return '';
		}
	}

	function set_sortkey($key) {
		if(strlen($key) > 0) {
			$this->sortkey = $key;
		}
	}

	function user_sort_internal($a, $b) {
		$this->get_user_data($a);
		$mya=strtolower($this->get_var($this->sortkey));
		$this->get_user_data($b);
		$myb = strtolower($this->get_var($this->sortkey));
		return strcmp($mya, $myb);
	}
}

?>