| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							
- <?php
 
- /**
 
-  * Permet la communication avec l'API REST de glpi
 
-  * @author Valentin CARRUESCO
 
-  * @category Rest/External
 
-  * @license MIT
 
-  */
 
- class GLPI{
 
- 	public $url,$token = '';
 
- 	
 
- 	function __construct($url){
 
- 		$this->url = $url;
 
- 	}
 
- 	//Connexion login/mdp et récuperaiton du token
 
- 	public function connect($login,$password){
 
- 		$response = $this->rest('/initSession/',$login,$password);		
 
- 		$this->token = isset($response['session_token']) && !is_null($response['session_token']) ? $response['session_token'] : '';
 
- 	}
 
- 	//Récuperation d'un utilisateur GLPI par son login
 
- 	public function userByLogin($login){
 
- 		$criteria = 'criteria[0][field]=2&criteria[0][searchtype]=2&criteria[0][value]=&criteria[1][link]=AND&criteria[1][field]=1&criteria[1][searchtype]=2&criteria[1][value]='.$login;
 
- 		$response = $this->rest('/search/User/?'.$criteria,$this->token);
 
- 		
 
- 		$user = array();
 
- 		if(isset($response['data'][0])){
 
- 			$user =  array(
 
- 				'id' => $response['data'][0][2],
 
- 				'name' => $response['data'][0][34],
 
- 				'firstname' => $response['data'][0][9],
 
- 				'mail' => $response['data'][0][5],
 
- 				'phone' => $response['data'][0][6],
 
- 				'mobile' => $response['data'][0][11]
 
- 			);
 
- 		}
 
- 		return $user;
 
- 	}
 
- 	//Récuperation d'un ticket glpi par son id
 
- 	public function ticketById($id){
 
- 		$response = $this->rest('/Ticket/'.$id.'?expand_dropdowns=true',$this->token);
 
- 		return $response;
 
- 	}
 
- 	//Récuperation des tickets par criteres
 
- 	public function searchTickets($criteria){
 
- 	
 
- 		$response = $this->rest('/search/Ticket/?'.$criteria,$this->token);
 
- 		$tickets = array();
 
- 		if(isset($response['data'])){
 
- 			foreach ($response['data'] as $ticket) {
 
- 				$tickets[] = array(
 
- 					'id' => $ticket[2],
 
- 					'url' => $this->url.'/front/ticket.form.php?id='.$ticket[2],
 
- 					'subject' => $ticket[1],
 
- 					'date' => $ticket[15],
 
- 					'user' => $ticket[64],
 
- 					'firm' => $ticket[80],
 
- 			
 
- 				);
 
- 			}
 
- 		}
 
- 		return $tickets;
 
- 	}
 
- 	//Décrit les champs d'un item de glpi
 
- 	public function searchOptions($itemType = 'Ticket'){
 
- 		return $this->rest('/listSearchOptions/'.$itemType,$this->token);
 
- 	}
 
- 	
 
- 	//Récuperation des tickets assigné à un utilisateur
 
- 	public function userTickets($id,$criteria = null){
 
- 		$criteria = isset($criteria) ? $criteria:  'criteria[0][field]=5&criteria[0][searchtype]=equals&criteria[0][value]='.$id.'&criteria[1][link]=AND&criteria[1][field]=15&criteria[1][searchtype]=equals&criteria[1][value]=TODAY';
 
- 		$response = $this->rest('/search/Ticket/?'.$criteria,$this->token);
 
- 		$tickets = array();
 
- 		if(isset($response['data'])){
 
- 			foreach ($response['data'] as $ticket) {
 
- 				$tickets[] = array(
 
- 					'id' => $ticket[2],
 
- 					'url' => 'https://glpi.kiss.fr/front/ticket.form.php?id='.$ticket[2],
 
- 					'subject' => $ticket[1],
 
- 					'date' => $ticket[15],
 
- 					'firm' => $ticket[80],
 
- 				);
 
- 			}
 
- 		}
 
- 		return $tickets;
 
- 	}
 
- 	//Requete rest
 
- 	public function rest($action,$login,$password=null,$headers=array()){
 
- 		$url = $this->url.'/apirest.php'.$action;
 
- 		$ch = curl_init();
 
- 		curl_setopt($ch, CURLOPT_URL, $url);
 
- 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
- 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
- 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 
- 		if($password!=null) curl_setopt($ch, CURLOPT_USERPWD, $login . ":" . $password);  
 
- 		$headers = array();
 
- 		if($password==null) $headers[] = 'Session-Token: '.$login;
 
- 		$headers[] = 'Content-Type: application/json';
 
- 		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
- 		$response = curl_exec($ch);
 
- 		curl_close($ch);
 
- 		return json_decode($response,true);
 
- 	}
 
- }
 
- ?>
 
 
  |