<?php
include_once(__DIR__."/../../core.php");

$id_utente = filter('idutente');
$operation = filter("op");


$username=filter('username');


$query = "SELECT idutente FROM zz_utenti WHERE username='" . $username . "'";
$rs = $dbo->fetchArray($query);
$id_utente = $rs[0]['idutente'];


if (isset($operation)) {
	if ($modules_info[$module_name]["permessi"] == 'rw') {
		// Aggiornamento permessi
		if ($operation == 'update_permission') {
			$permessi = filter('permesso');
			$idmodulo = filter('idmodulo');

			// Verifico che ci sia il permesso per questo gruppo
			$rs = $dbo->fetchArray("SELECT * FROM zz_permessi WHERE idgruppo='" . $id_record . "' AND idmodule='" . $idmodulo . "'");
			if (sizeof($rs) == 0) $query = "INSERT INTO zz_permessi(idgruppo, idmodule, permessi) VALUES(\"" . $id_record . "\", \"" . $idmodulo . "\", \"" . $permessi . "\")";
			else $query = "UPDATE zz_permessi SET permessi=\"" . $permessi . "\" WHERE id='" . $rs[0]['id'] . "'";

			$dbo->query($query);
			ob_end_clean();
			echo "ok";
			exit();
		}

		// Abilita utente
		else if ($operation == 'enable') {
			if ($dbo->query("UPDATE zz_utenti SET enabled=1 WHERE idutente='" . $id_utente . "'")) array_push($_SESSION['infos'], "Utente abilitato!");
		}

		// Disabilita utente
		else if ($operation == 'disable') {
			if ($dbo->query("UPDATE zz_utenti SET enabled=0 WHERE idutente='" . $id_utente . "'")) array_push($_SESSION['infos'], "Utente disabilitato!");
		}

		// Cambio password e nome utente
		else if ($operation == 'change_pwd' && isset($id_utente)) {
		

		//	$id_utente = filter('idutente');
			$min_length = filter('min_length');
			$min_length_username = filter('min_length_username');

			$password = filter('password1');

			$username = filter('username');

			// Verifico che la password sia di almeno x caratteri
			if (strlen($password) >= $min_length) {
				if ($dbo->query("UPDATE zz_utenti SET password=MD5('" . $password . "') WHERE idutente='" . $id_utente . "'")) array_push($_SESSION['infos'], "Password aggiornata!");
			
				$query_mobile="UPDATE zz_utenti SET chiave_mobile=MD5(CONCAT('".$username."', MD5('".$password."'))) WHERE idutente='".$id_utente."'";
				$dbo->query($query_mobile);
			}
			else {
				array_push($_SESSION['errors'], "La password deve essere lunga almeno " . $min_length . " caratteri!");
			}

			// Se ho modificato l'username, verifico che questo non sia già stato usato
			$query = "SELECT username FROM zz_utenti WHERE idutente='" . $id_utente . "'";
			$rs = $dbo->fetchArray($query);

			if ($rs[0]['username'] != $username) {

				$query = "SELECT idutente FROM zz_utenti WHERE username=\"" . $username . "\"";
				$n = $dbo->fetchNum($query);

				if ($n == 0) {

					if ($dbo->query("UPDATE zz_utenti SET username=('" . $username . "') WHERE idutente='" . $id_utente . "'")) array_push($_SESSION['infos'], "Username aggiornato!");
				}
				else {

					array_push($_SESSION['errors'], "Utente già esistente!");
				}
			}
		}

		// Aggiunta nuovo utente
		else if ($operation == 'adduser' && isset($_POST['username'])) {
			$username = filter('username');

			$min_length = filter('min_length');
			$min_length_username = filter('min_length_username');

			$password = filter('password1');

			$idanag = explode('-', filter('idanag'));
			if (sizeof($idanag) == 2) {
				$idtipoanagrafica = $idanag[0];
				$idanagrafica = $idanag[1];
			}

			// Verifico che questo username non sia già stato usato
			$query = "SELECT username FROM zz_utenti WHERE username=\"" . $username . "\"";
			$n = $dbo->fetchNum($query);

			if ($n == 0) {

				// Verifico che la password sia di almeno x caratteri
				if (strlen($password) >= $min_length) {

					if ($dbo->query("INSERT INTO zz_utenti( idgruppo, username, password, idanagrafica, idtipoanagrafica, enabled, email) VALUES( \"" . $id_record . "\", \"" . $username . "\", MD5(\"" . $password . "\"), '" . $idanagrafica . "', '" . $idtipoanagrafica . "', 1, '' )")) array_push($_SESSION['infos'], "Utente aggiunto!");
				}
				else {
					array_push($_SESSION['errors'], "La password deve essere lunga almeno " . $min_length . " caratteri!");
				}
			}
			else {
				array_push($_SESSION['errors'], "Utente già esistente!");
			}
		}

		// Aggiunta nuovo gruppo
		else if ($operation == 'add' && isset($_POST['nome'])) {
			$nome = filter('nome');

			// Verifico che questo username non sia già stato usato
			if ($dbo->fetchNum("SELECT nome FROM zz_gruppi WHERE nome=\"" . $nome . "\"") == 0) {
				$dbo->query("INSERT INTO zz_gruppi( nome, editable ) VALUES( \"" . $nome . "\", 1 )");
				array_push($_SESSION['infos'], "Gruppo aggiunto!");
				$id_record = $dbo->last_inserted_id();
			}
			else {
				array_push($_SESSION['errors'], "Gruppo già esistente!");
			}
		}

		// Elimina utente
		else if ($operation == 'delete') {
			$id_utente = filter('idutente');
			if ($dbo->query("DELETE FROM zz_utenti WHERE idutente='" . $id_utente . "'")) array_push($_SESSION['infos'], "Utente eliminato!");
		}

		// Elimina gruppo
		else if ($operation == 'deletegroup') {
			// Verifico se questo gruppo si può eliminare
			$query = "SELECT editable FROM zz_gruppi WHERE id='" . $id_record . "'";
			$rs = $dbo->fetchArray($query);

			if ($rs[0]['editable'] == 1) {
				if ($dbo->query("DELETE FROM zz_gruppi WHERE id='" . $id_record . "'")) {
					$dbo->query("DELETE FROM zz_utenti WHERE idgruppo='" . $id_record . "'");
					$dbo->query("DELETE FROM zz_permessi WHERE idgruppo='" . $id_record . "'");
					array_push($_SESSION['infos'], "Gruppo eliminato!");
				}
			}
			else {
				array_push($_SESSION['errors'], "Questo gruppo non si può eliminare!");
			}

			redirect($rootdir . '/controller.php?id_module=' . $modules_info["Utenti e permessi"]["id"]);
		}
	}
}
?>