<?php
/**
 * user-model
 *
 * Enthält die Basisfunktionen von user.
 *
 * Klasse user_model
 *
 * @package baseContent
 * @subpackage user
 */
class app_user_model extends fl_model {
	/**
	 * Prüfung, ob bereits ein Benutzer mit diesem Namen existiert
	 *
	 * @param string $name
	 * @return bool
	 */
	function doesnt_exist($name) {
		$result = $this->datamodel->retrieve('user', 'COUNT(*) AS anzahl', "name = '".$name."'");
		$doesnt_exist = ( $result['anzahl'] == 0 )? TRUE: FALSE;
		return $doesnt_exist;
	}

	/**
	 * Ein zuf&auml;lliges Passwort generieren
	 *
	 * Ausgehend von der Systemzeit wird ein 6 Zeichen langer String erzeugt,
	 * der als vor&uuml;bergehendes Passwort verwendet werden kann.
	 *
	 * @return string zuf&auml;lliges Passwort
	 */
	function generate_PW() {
		$pass = substr(md5(uniqid(microtime())), 0, 6);
		return $pass;
	}

	/**
	 * Neues Benutzerprofil anlegen
	 *
	 * @param array $data
	 * @return bool
	 */
	function create_user($data) {
		$db_data = array(
			'name'=>$data['name'],
			'email'=>$data['mail'],
			'password'=>md5($data['password1'])
		);

		$create_user = ( $this->datamodel->create('user', $db_data) )? TRUE: FALSE;

		return $create_user;
	}

	/**
	 * Benutzerdaten speichern
	 *
	 * Die Benutzerdaten werden gespeichert. Wenn ein Password angegeben wurde,
	 * wird es MD5-Codiert.
	 *
	 * @param array $data
	 * @param int $user
	 * @return bool
	 */
	function update_user($data, $user) {
		$db_data = $data;
		if ( isset($data['password1']) ) $db_data['password'] = md5($data['password1']);
		unset($db_data['password1'], $db_data['password2']);

		$update_user = ( $this->datamodel->update('user', $db_data, $user) )? TRUE: FALSE;
		return $update_user;
	}

	/**
	 * Benutzerdaten per mail verschicken
	 *
	 * @param string $name Benutzername
	 * @param string $password
	 * @return mixed
	 */
	function notify_user($name, $password='') {
		$result = $this->datamodel->retrieve('user', 'email', "name = '".$name."'", '', '1');
		$mailadresse = $result['email'];

		unset($result);
		$result = $this->datamodel->retrieve('basecontent_options', 'value', 'optionname="SEITENTITEL"', '', '1');
		$seitentitel = $result['value'];

		$data['name'] = $name;
		$data['password'] = ( $password == '' )? 'Das Passwort wurde nicht verändert.': $password;

		$this->functions->needs('mail');
		$m = new e_mail();

		$to = $mailadresse;
		$from = 'basecontent@'.$_SERVER['HTTP_HOST'];
		$topic = '['.$seitentitel.'] Benutzeraccount freigeschaltet';
		$template = file_get_contents( $this->modulepath . 'user/views/notify.tpl');

		$text = $m->parse_template($template, $data);

		$m->set_config($to, $from, $topic);
		$m->set_text($text);
		$m->compose_message();

		$notify_user = $m->send_mail();
		if (!$notify_user) $notify_user = $m->get_error();

		return $notify_user;
	}
}
?>
