From 29a24043651ba41dfadff4169ba973f5ddc4e5a7 Mon Sep 17 00:00:00 2001 From: Nigel Kukard <nkukard@lbsd.net> Date: Thu, 7 May 2009 06:25:31 +0000 Subject: [PATCH] * Moved JSON functions to json.php --- webgui/include/ajax/AdminGroups.php | 38 ++++++ webgui/include/ajax/AdminLocations.php | 35 ++++++ webgui/include/ajax/AdminRealms.php | 36 ++++++ webgui/include/ajax/AdminUsers.php | 36 ++++++ webgui/include/ajax/json.php | 157 +++++++++++++++++++++++++ 5 files changed, 302 insertions(+) create mode 100644 webgui/include/ajax/AdminGroups.php create mode 100644 webgui/include/ajax/AdminLocations.php create mode 100644 webgui/include/ajax/AdminRealms.php create mode 100644 webgui/include/ajax/AdminUsers.php create mode 100644 webgui/include/ajax/json.php diff --git a/webgui/include/ajax/AdminGroups.php b/webgui/include/ajax/AdminGroups.php new file mode 100644 index 00000000..9336b7d4 --- /dev/null +++ b/webgui/include/ajax/AdminGroups.php @@ -0,0 +1,38 @@ +<?php + +include_once("include/db.php"); + + +# Return list of users +function getAdminGroups($params) { + + $db = connect_db(); + + $sql = "SELECT ID, Name, Priority, Disabled, Comment FROM groups"; + $res = $db->query($sql); + + $resultArray = array(); + + # loop through rows + while ($row = $res->fetchObject()) { + $item = array(); + + $item['ID'] = $row->id; + $item['Name'] = $row->name; + $item['Priority'] = $row->priority; + $item['Disabled'] = $row->disabled; + $item['Comment'] = $row->comment; + + # push this row onto array + array_push($resultArray,$item); + } + + # get number of rows + $sql = "SELECT count(*) FROM groups"; + $res = $db->query($sql); + $numResults = $res->fetchColumn(); + + return array($numResults,$resultArray); +} + +?> diff --git a/webgui/include/ajax/AdminLocations.php b/webgui/include/ajax/AdminLocations.php new file mode 100644 index 00000000..37cda530 --- /dev/null +++ b/webgui/include/ajax/AdminLocations.php @@ -0,0 +1,35 @@ +<?php + +include_once("include/db.php"); + + +# Return list of users +function getAdminLocations($params) { + + $db = connect_db(); + + $sql = "SELECT ID, Name FROM wisp_locations"; + $res = $db->query($sql); + + $resultArray = array(); + + # loop through rows + while ($row = $res->fetchObject()) { + $item = array(); + + $item['ID'] = $row->id; + $item['Name'] = $row->name; + + # push this row onto array + array_push($resultArray,$item); + } + + # get number of rows + $sql = "SELECT count(*) FROM wisp_locations"; + $res = $db->query($sql); + $numResults = $res->fetchColumn(); + + return array($numResults,$resultArray); +} + +?> diff --git a/webgui/include/ajax/AdminRealms.php b/webgui/include/ajax/AdminRealms.php new file mode 100644 index 00000000..1926f111 --- /dev/null +++ b/webgui/include/ajax/AdminRealms.php @@ -0,0 +1,36 @@ +<?php + +include_once("include/db.php"); + + +# Return list of users +function getAdminRealms($params) { + + $db = connect_db(); + + $sql = "SELECT ID, Name, Disabled FROM realms"; + $res = $db->query($sql); + + $resultArray = array(); + + # loop through rows + while ($row = $res->fetchObject()) { + $item = array(); + + $item['ID'] = $row->id; + $item['Name'] = $row->name; + $item['Disabled'] = $row->disabled; + + # push this row onto array + array_push($resultArray,$item); + } + + # get number of rows + $sql = "SELECT count(*) FROM realms"; + $res = $db->query($sql); + $numResults = $res->fetchColumn(); + + return array($numResults,$resultArray); +} + +?> diff --git a/webgui/include/ajax/AdminUsers.php b/webgui/include/ajax/AdminUsers.php new file mode 100644 index 00000000..75a7852a --- /dev/null +++ b/webgui/include/ajax/AdminUsers.php @@ -0,0 +1,36 @@ +<?php + +include_once("include/db.php"); + + +# Return list of users +function getAdminUsers($params) { + + $db = connect_db(); + + $sql = "SELECT ID, Username, Disabled FROM users"; + $res = $db->query($sql); + + $resultArray = array(); + + # loop through rows + while ($row = $res->fetchObject()) { + $item = array(); + + $item['ID'] = $row->id; + $item['Username'] = $row->username; + $item['Disabled'] = $row->disabled; + + # push this row onto array + array_push($resultArray,$item); + } + + # get number of rows + $sql = "SELECT count(*) FROM users"; + $res = $db->query($sql); + $numResults = $res->fetchColumn(); + + return array($numResults,$resultArray); +} + +?> diff --git a/webgui/include/ajax/json.php b/webgui/include/ajax/json.php new file mode 100644 index 00000000..d123698f --- /dev/null +++ b/webgui/include/ajax/json.php @@ -0,0 +1,157 @@ +<?php +# JSON interface +# Copyright (C) 2007-2009, AllWorldIT +# +# 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + + +class json_response { + + private $_fields = array(); + private $_id; + private $_results; + private $_datasetSize; + private $_status = RES_OK; + + ## @method setID($id) + # Set ID column + # + # @param id ID column name + public function setID($id) { + $this->_id = $id; + } + + ## @method setStatus($status) + # Set response status + # + # @param status Either RES_OK (default) or RES_ERROR + public function setStatus($status) { + $this->_status = $status; + } + + ## @method addField($name,$type) + # Add a field to our return results + # + # @param name Field name + # @param type Field type, 'int', 'string', 'float', 'boolean', 'date' + public function addField($name,$type) { + # Build field + $field = array( + 'name' => $name, + 'type' => $type + ); + + # Set ISO date format + if ($field['type'] == "date") { + $field['dateFormat'] = "Y-m-d"; + } + + # Add field to list + array_push($this->_fields,$field); + } + + ## @method setDatasetSize($size) + # Set how many records are returned in the dataset + # + # @param size Dataset size + public function setDatasetSize($size) { + $this->_datasetSize = $size; + } + + ## @method parseArrayRef($array) + # Parse in the array of results and fix it up + # + # @param arrayref Array ref containing the results + public function parseArray($array) { + $this->_results = array(); + + # Loop with array items + foreach ($array as $aitem) { + $item = array(); + + # Loop with fields we want + foreach ($this->_fields as $field) { + # FIXME - typecast? + $item[$field['name']] = $aitem[$field['name']]; + } + + array_push($this->_results,$item); + } + + } + + ## @method parseHash($hashref) + # Parse in the hash of results and fix it up + # + # @param hashref Hash ref containing the results + public function parseHash($hash) { + $this->_results = array(); + + foreach ($this->_fields as $field) { + # FIXME - typecast? + $this_results[$field['name']] = $hash[$field['name']]; + } + } + + ## @method export + # Export response into something we return + # + # @return JSON hash + # @li result - Result code/status + # @li data - Ref containing results + # @li metaData - Metadata containing info about the results being returned + # Metadata contains properties.. + # - root: root element, which is always 'data' + # - fields: Optional field description, arrayref of hash refs, name = 'name', type 'type' and 'dateFormat' = 'Y-m-d' + # - id: Optional ID field name + # - totalProperty: Optional property name containing the number of records, always 'datasetSize' + # @li datasetSize Optional, number of records we're rturning + public function export() { + + # Build result + $ret = array( + 'result' => $this->_status, + + # Additional stuff for other things to make life easier + 'success' => $this->_status == RES_OK ? 1 : 0, + 'metaData' => array( + 'successProperty' => 'success' + ) + ); + + # If we have results, add them + if (isset($this->_results)) { + $ret['data'] = $this->_results; + $ret['metaData']['root'] = 'data'; + + # If we have fields, set them up + if (isset($this->_fields)) { + $ret['metaData']['fields'] = $this->_fields; + } + } + + # Check if we have an ID set + if (isset($this->_id)) { + $ret['metaData']['totalProperty'] = 'datasetSize'; + $ret['datasetSize'] = $this->_datasetSize; + } + + return $ret; + } +} + + +# vim: ts=4 -- GitLab