diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-03-12 15:40:43 +0100 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-03-12 15:40:43 +0100 |
commit | 82c54972d7cbfd48d325dacc005471b2a8137134 (patch) | |
tree | 7a58575b7211e99bfddf398bc2f6807b7546d5c5 /api/data.json.php | |
parent | b2c7b3f2d325d8ad52eaa35c558c00088618381b (diff) | |
download | chd_gestion-82c54972d7cbfd48d325dacc005471b2a8137134.zip chd_gestion-82c54972d7cbfd48d325dacc005471b2a8137134.tar.gz chd_gestion-82c54972d7cbfd48d325dacc005471b2a8137134.tar.bz2 |
Initial import for API part.
Diffstat (limited to 'api/data.json.php')
-rw-r--r-- | api/data.json.php | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/api/data.json.php b/api/data.json.php new file mode 100644 index 0000000..d94ffb2 --- /dev/null +++ b/api/data.json.php @@ -0,0 +1,87 @@ +<?php +/** + * Copyright 2016 Ludovic Pouzenc <ludovic@pouzenc.fr> + * Copyright 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> + * + * This file is part of CHD Gestion. + * + * CHD Gestion 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 3 of the License, or + * (at your option) any later version. + * + * CHD Gestion 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 CHD Gestion. If not, see <http://www.gnu.org/licenses/>. +**/ + +include_once('inc/config.php'); +$mysqli = new mysqli($db_config['host'], $db_config['username'], $db_config['password'], $db_config['database']); +unset($db_config); +$mysqli->query("SET NAMES 'utf8'"); + +$res = $mysqli->query("SELECT id, CONCAT('e', id) as 'name', uplink_id FROM equipements"); + +$roots = array(); +$childrens = array(); +while ( $row = $res->fetch_assoc() ) { + if ( ! array_key_exists($row['id'], $childrens) ) { + $childrens[$row['id']] = array(); + } + $row['children'] = &$childrens[$row['id']]; + $uplink_id = $row['uplink_id']; + unset($row['uplink_id']); + if ( $uplink_id !== NULL ) { + $childrens[$uplink_id][] = $row; + } else { + $roots[] = $row; + } +} +foreach ( $childrens as &$arr ) { + foreach ( $arr as &$node ) { + if ( array_key_exists('children', $node) && count($node['children']) === 0 ) { + unset($node['children']); + $node['size'] = 2000; + } + } +} +$orphans = array(); +foreach ( $roots as $k => &$node ) { + if ( array_key_exists('children', $node) && count($node['children']) === 0 ) { + unset($node['children']); + $node['size'] = 1000; + $orphans[$k] = &$node; + } +} + +// Remove orphans from $roots then rekey +foreach ( array_keys($orphans) as $k ) { + unset($roots[$k]); +} +$roots = array_values($roots); +$orphans = array_values($orphans); + +$world = array( + 'name' => 'world', + 'children' => array ( + array ( + 'name' => 'roots', + 'children' => &$roots + ), + array ( + 'name' => 'orphans', + 'children' => &$orphans + ), + ), +); +/* +echo "<pre>\n"; +print_r($world); + */ +header('Content-type: application/json'); +echo json_encode($world, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT | JSON_PARTIAL_OUTPUT_ON_ERROR); + |