* Copyright 2016 Nicolas Goaziou * * 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 . **/ include_once('inc/config.php'); $mysqli = new mysqli($db_config['host'], $db_config['username'], $db_config['password'], $db_config['database']); if (mysqli_connect_errno()) { die(mysqli_connect_error()); } unset($db_config); $mysqli->set_charset("utf8") or die($mysqli->error); // $res = $mysqli->query("SELECT id, IFNULL(NULLIF(hostname,''), CONCAT('e', id)) as 'name', uplink_id // FROM equipements // WHERE equipement_modele_id >= 12 // AND equipement_modele_id != 47 // AND date_hs IS NULL"); $res = $mysqli->query("SELECT id, IFNULL(NULLIF(hostname,''), CONCAT('e', id)) as 'name', uplink_id FROM equipements WHERE (relais_id IS NOT NULL OR hostname='STG1') AND date_hs IS NULL"); $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); // Add the back-bone. $world = array('name' => 'world', 'children' => array()); $world['children'][] = array( 'name' => 'Fibre', 'children' => &$roots ); // Only add orphans if there is at least one of them to display. if ($orphans) { $world['children'][] = array( 'name' => 'Orphelins', 'children' => &$orphans ); }; /* echo "
\n";
  print_r($world);
*/
header('Content-type: application/json');
echo json_encode($world, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT | JSON_PARTIAL_OUTPUT_ON_ERROR);