Skip to content
Snippets Groups Projects
WiSPUsers.php 5.43 KiB
Newer Older
<?php

include_once("include/db.php");


# Return list of wisp users
function getWiSPUsers($params) {
	global $db;

	# Filters and sorts are the same here
	$filtersorts = array(
		'Username' => 'users.Username',
		'Disabled' => 'users.Disabled',
		'ID' => 'wisp_userdata.UserID',
		'Firstname' => 'wisp_userdata.Firstname',
		'Lastname' => 'wisp_userdata.Lastname',
		'Email' => 'wisp_userdata.Email',
		'Phone' => 'wisp_userdata.Phone'
	);

	$res = DBSelectSearch("
		SELECT 
			users.Username, 
			users.Disabled, 
			wisp_userdata.UserID, 
			wisp_userdata.FirstName, 
			wisp_userdata.LastName, 
			wisp_userdata.Email, 
			wisp_userdata.Phone  
		FROM 
			users, wisp_userdata
		WHERE
			wisp_userdata.UserID = users.ID
		",$params[1],$filtersorts,$filtersorts
	);

	$sth = $res[0]; $numResults = $res[1];
	# If STH is blank, return the error back to whoever requested the data
	if (!isset($sth)) {
		return $res;
	}

	$resultArray = array();

	# loop through rows
	while ($row = $sth->fetchObject()) {
		$item = array();

		$item['ID'] = $row->userid;
		$item['Username'] = $row->username;
		$item['Disabled'] = $row->disabled;
		$item['Firstname'] = $row->firstname;
		$item['Lastname'] = $row->lastname;
		$item['Email'] = $row->email;
		$item['Phone'] = $row->phone;

		# push this row onto array
		array_push($resultArray,$item);
	}

	return array($resultArray,$numResults);
}

# Return specific wisp user row
function getWiSPUser($params) {
	global $db;

	$res = DBSelect("
				SELECT 
					wisp_userdata.UserID, 
					wisp_userdata.FirstName, 
					wisp_userdata.LastName, 
					wisp_userdata.Phone, 
					wisp_userdata.Email, 
					users.Username
				FROM 
					wisp_userdata, users
				WHERE 
					wisp_userdata.UserID = ?
				AND
					users.ID = wisp_userdata.UserID
					",array($params[0])
	);

	if (!is_object($res)) {
		return $res;
	}

	$resultArray = array();

	$row = $res->fetchObject();

	$resultArray['ID'] = $row->userid;
	$resultArray['Username'] = $row->username;
	$resultArray['Firstname'] = $row->firstname;
	$resultArray['Lastname'] = $row->lastname;
	$resultArray['Phone'] = $row->phone;
	$resultArray['Email'] = $row->email;
	
	$res = DBSelect("
				SELECT
					user_attributes.Name,
					user_attributes.Value
				FROM
					user_attributes
				WHERE
					user_attributes.UserID = ?
					",array($params[0])
	);
	if (!is_object($res)) {
		return $res;
	}

	while ($row = $res->fetchObject()) {
		switch ($row->name) {
			case "User-Password":
				$resultArray['Password'] = $row->value;
				break;
			case "MACAddress":
				$resultArray['MACAddress'] = $row->value;
				break;
			case "SMRadius-Capping-Traffic-Limit":
				$resultArray['Datalimit'] = $row->value;
				break;
			case "SMRadius-Capping-Uptime-Limit":
				$resultArray['Uptimelimit'] = $row->value;
				break;
			case "Framed-IP-Address":
				$resultArray['IPAddress'] = $row->value;
				break;
		}
	}

	foreach ( array('Password','MACAddress','Datalimit','Uptimelimit','IPAddress') as $key) {
		if (!isset($resultArray[$key])) {
			$resultArray[$key] = '';
		}
	}
 
	return $resultArray;
}

# Remove wisp user
function removeWiSPUser($params) {
	global $db;

	DBBegin();
	$res = DBDo("DELETE FROM wisp_userdata WHERE UserID = ?",array($params[0]));

	if ($res !== FALSE) {
		$res = DBDo("DELETE FROM users WHERE ID = ?",array($params[0]));
	} else {
		DBRollback();
		return $res;
	}

	if ($res !== FALSE) {
		DBCommit();
		return $res;
	} else {
		DBRollback();
	}

	return NULL;
}

# Add wisp user
function createWiSPUser($params) {
	global $db;

	DBBegin();
	$res = DBDo("INSERT INTO users (Username) VALUES (?)",array($params[0]['Username']));

	# Continue with others if successful
	if ($res !== FALSE) {
		$userID = DBLastInsertID();
		DBDo("
			INSERT INTO 
					user_attributes (UserID,Name,Operator,Value) 
			VALUES 
					(?,?,?,?)",
			array($userID,
				'User-Password',
				'==',
				$params[0]['Password'])
		);
	# Link users ID to make user a wisp user
	if ($res !== FALSE) {
		DBDo("INSERT INTO wisp_userdata (UserID) VALUES (?)",array($userID));
	}

	# Personal information is optional when adding
	if ($res !== FALSE && isset($params[0]['Firstname'])) {
		$res = DBDo("UPDATE wisp_userdata SET FirstName = ? WHERE UserID = ?",array($params[0]['Firstname'],$userID));
	}
	if ($res !== FALSE && isset($params[0]['Lastname'])) {
		$res = DBDo("UPDATE wisp_userdata SET LastName = ? WHERE UserID = ?",array($params[0]['Lastname'],$userID));
	}
	if ($res !== FALSE && isset($params[0]['Phone'])) {
		$res = DBDo("UPDATE wisp_userdata SET Phone = ? WHERE UserID = ?",array($params[0]['Phone'],$userID));
	}
	if ($res !== FALSE && isset($params[0]['Email'])) {
		$res = DBDo("UPDATE wisp_userdata SET Email = ? WHERE UserID = ?",array($params[0]['Email'],$userID));
	}

	# Grab each attribute and add it's details to the database
	if ($res !== FALSE) {
		foreach ($params[0]['Attributes'] as $attr) {
			$res = DBDo("
						INSERT INTO 
								user_attributes (UserID,Name,Operator,Value) 
						VALUES
								(?,?,?,?)",
						array(
							$userID,
							$attr['Name'],
							$attr['Operator'],
							$attr['Value'])
			);
		}
	}

	# Commit changes if all was successful, else break
	if ($res !== FALSE) {
		DBCommit();
		return $res;
	} else {
		DBRollback();
	}

	return NULL;
}

# Edit admin group
function updateWiSPUser($params) {
	global $db;

	$res = DBDo("UPDATE users SET Username = ? WHERE ID = ?",array($params[0]['Username'],$params[0]['ID']));
	if (!is_numeric($res)) {
		return $res;
	}

	return NULL;
}

?>