<?php

/*
   ------------------------------------------------------------------------
   FusionInventory
   Copyright (C) 2010-2011 by the FusionInventory Development Team.

   http://www.fusioninventory.org/   http://forge.fusioninventory.org/
   ------------------------------------------------------------------------

   LICENSE

   This file is part of FusionInventory project.

   FusionInventory is free software: you can redistribute it and/or modify
   it under the terms of the GNU Affero General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   FusionInventory 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 Affero General Public License for more details.

   You should have received a copy of the GNU Affero General Public License
   along with FusionInventory. If not, see <http://www.gnu.org/licenses/>.

   ------------------------------------------------------------------------

   @package   FusionInventory
   @author    Walid Nouh
   @co-author
   @copyright Copyright (c) 2010-2011 FusionInventory team
   @license   AGPL License 3.0 or (at your option) any later version
              http://www.gnu.org/licenses/agpl-3.0-standalone.html
   @link      http://www.fusioninventory.org/
   @link      http://forge.fusioninventory.org/projects/fusioninventory-for-glpi/
   @since     2010

   ------------------------------------------------------------------------
 */

include ("../../../inc/includes.php");

declare(ticks=1);


global $DB,$agents;

     $check_arr = [];
     $comps = [];
     $pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer();
     foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {

	$check = [];
        $a_computerextend = $pfInventoryComputerComputer->hasAutomaticInventory($a["computers_id"]);

	$check["url"] =  "http://".$a_computerextend["remote_addr"].":62354/status";
	$check["id"] = $a["id"];
	$check["computers_id"] = $a["computers_id"];
	$check["status"] = "unknown";

	$check_arr[] = $check;
	$comps[$a["computers_id"]] = $check;
	//print_r($agent->getAgentStatusURLs());
     }


$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);

$cwd = '/tmp';
$env = array('debug' => 'false');

$process = proc_open(__DIR__.'/check_status', $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
    // $pipes now looks like this:
    // 0 => writeable handle connected to child stdin
    // 1 => readable handle connected to child stdout
    // Any error output will be appended to /tmp/error-output.txt

    fwrite($pipes[0], json_encode($check_arr));
    fclose($pipes[0]);

    $checked = json_decode(stream_get_contents($pipes[1]));
    fclose($pipes[1]);

    // It is important that you close any pipes before calling
    // proc_close in order to avoid a deadlock
    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}

$req = $DB->request('glpi_states', ['FIELDS' => ['glpi_states' => ['id', 'name']]], [ 'OR' => [ 'name' => 'Online', 'name' => 'Offline']]);

$ret = $req->next();
$states_ids[$ret['name']] = $ret['id'];
$ret = $req->next();
$states_ids[$ret['name']] = $ret['id'];
print_r($states_ids);



		$DB->update("glpi_computers", [ 
			'states_id' => $states_ids["Offline"]  ] ,
			[ '1' => '1' ]
		);
	

foreach ($checked as $s) {
	echo $s->computers_id." ";

		$comp = new Computer();
		$comp->getFromDB($s->computers_id);
		$comp->fields["states_id"] = $states_ids["Online"];
		$DB->update("glpi_computers", [ 
			'states_id' => $comp->fields["states_id"] ],
			[ 'id' => $s->computers_id  ]
		);
		echo $comp->fields["contact"]."\n";

}

//	print_r($a_computerextend);     
exit(0);
