From ffc7f63e2c39fc5ef009208a5a7644181329641f Mon Sep 17 00:00:00 2001 From: Robert Anderson <randerson@lbsd.net> Date: Wed, 13 May 2009 13:19:56 +0000 Subject: [PATCH] List, add, edit and remove group attributes --- webgui/ajax.php | 83 ++++++++++++++ .../ajax/functions/AdminGroupAttributes.php | 108 ++++++++++++++++++ webgui/index.html | 1 + 3 files changed, 192 insertions(+) create mode 100644 webgui/include/ajax/functions/AdminGroupAttributes.php diff --git a/webgui/ajax.php b/webgui/ajax.php index 73911b31..46e94277 100644 --- a/webgui/ajax.php +++ b/webgui/ajax.php @@ -9,6 +9,7 @@ include_once("include/ajax/functions/WiSPUsers.php"); include_once("include/ajax/functions/AdminUserAttributes.php"); include_once("include/ajax/functions/AdminUserGroups.php"); + include_once("include/ajax/functions/AdminGroupAttributes.php"); define('RES_OK',0); define('RES_ERR',-1); @@ -150,6 +151,30 @@ switch ($function) { + # getAdminUserLogs.js functions + case "getAdminUserLogs": + + $rawData = getAdminUserLogs($soapParams); + + $res = new json_response; + $res->setID('ID'); + $res->addField('ID','int'); + $res->addField('AcctStatusType','int'); + $res->addField('ServiceType','int'); + $res->addField('FramedProtocol','int'); + $res->addField('NASPort','string'); + $res->addField('NASPortType','int'); + $res->addField('NASPortID','string'); + $res->addField('CallingStationID','string'); + $res->addField('CalledStationID','string'); + $res->addField('AcctSessionID','string'); + $res->addField('FramedIPAddress','string'); + $res->parseHash($rawData); + + echo json_encode($res->export()); + + break; + # addAdminUserGroup.js functions case "addAdminUserGroup": @@ -185,6 +210,64 @@ break; + # AdminGroupAttributes.js functions + case "addAdminGroupAttribute": + + $res = addAdminGroupAttribute($soapParams); + if (isset($res)) { + ajaxException($res); + } + + break; + + case "updateAdminGroupAttribute": + + $res = updateAdminGroupAttribute($soapParams); + if (isset($res)) { + ajaxException($res); + } + + break; + + case "getAdminGroupAttribute": + $rawData = getAdminGroupAttribute($soapParams); + + $res = new json_response; + $res->setID('ID'); + $res->addField('ID','int'); + $res->addField('Name','string'); + $res->parseHash($rawData); + + echo json_encode($res->export()); + break; + + case "getAdminGroupAttributes": + + $res = getAdminGroupAttributes($soapParams); + $rawData = $res[0]; $numResults = $res[1]; + + $res = new json_response; + $res->setID('ID'); + $res->addField('ID','int'); + $res->addField('Name','string'); + $res->addField('Operator','string'); + $res->addField('Value','string'); + $res->addField('Disabled','boolean'); + $res->parseArray($rawData); + $res->setDatasetSize($numResults); + + echo json_encode($res->export()); + break; + + case "removeAdminGroupAttribute": + + $res = removeAdminGroupAttribute($soapParams); + if (isset($res)) { + ajaxException($res); + } + + break; + # AdminUserAttributes.js functions case "addAdminUserAttribute": diff --git a/webgui/include/ajax/functions/AdminGroupAttributes.php b/webgui/include/ajax/functions/AdminGroupAttributes.php new file mode 100644 index 00000000..c769b3f9 --- /dev/null +++ b/webgui/include/ajax/functions/AdminGroupAttributes.php @@ -0,0 +1,108 @@ +<?php + +include_once("include/db.php"); + +# Add user attribute +function addAdminGroupAttribute($params) { + global $db; + + $res = DBDo("INSERT INTO group_attributes (GroupID,Name) VALUES (?,?)",array($params[0]['GroupID'],$params[0]['Name'])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Remove user attribute +function removeAdminGroupAttribute($params) { + global $db; + + $res = DBDo("DELETE FROM group_attributes WHERE ID = ?",array($params[0])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Edit attribute +function updateAdminGroupAttribute($params) { + global $db; + + $res = DBDo("UPDATE group_attributes SET Name = ? WHERE ID = ?",array($params[0]['Name'],$params[0]['ID'])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Return specific attribute row +function getAdminGroupAttribute($params) { + global $db; + + + $res = DBSelect("SELECT ID, Name FROM group_attributes WHERE ID = ?",array($params[0])); + if (!is_object($res)) { + return $res; + } + + $resultArray = array(); + + $row = $res->fetchObject(); + + $resultArray['ID'] = $row->id; + $resultArray['Name'] = $row->name; + + return $resultArray; +} + +# Return list of attributes +function getAdminGroupAttributes($params) { + global $db; + + # Filters and sorts are the same here + $filtersorts = array( + 'ID' => 'group_attributes.ID', + 'Name' => 'group_attributes.Name', + 'Operator' => 'group_attributes.Operator', + 'Value' => 'group_attributes.Value', + 'Disabled' => 'group_attributes.Disabled' + ); + + $res = DBSelectSearch(" + SELECT + ID, Name, Operator, Value, Disabled + FROM + group_attributes + WHERE + GroupID = ".DBQuote($params[0])." + ",$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->id; + $item['Name'] = $row->name; + $item['Operator'] = $row->operator; + $item['Value'] = $row->value; + $item['Disabled'] = $row->disabled; + + # push this row onto array + array_push($resultArray,$item); + } + + return array($resultArray,$numResults); +} + +?> diff --git a/webgui/index.html b/webgui/index.html index 24380881..ecb611db 100644 --- a/webgui/index.html +++ b/webgui/index.html @@ -76,6 +76,7 @@ <script type="text/javascript" src="js/app/windows/WiSPLocations.js"></script> <script type="text/javascript" src="js/app/windows/AdminUsers.js"></script> <script type="text/javascript" src="js/app/windows/AdminGroups.js"></script> + <script type="text/javascript" src="js/app/windows/AdminGroupAttributes.js"></script> <script type="text/javascript" src="js/app/windows/AdminRealms.js"></script> <script type="text/javascript" src="js/app/windows/AdminUserLogs.js"></script> <script type="text/javascript" src="js/app/windows/AdminUserAttributes.js"></script> -- GitLab