| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- <?php
 
- class Connection extends Entity{
 
- 	public $id,$label,$meta,$handler;
 
- 	public $TABLE_NAME = 'statistic_connection';
 
- 	public $fields = array(
 
- 		'id'=>'key',
 
- 		'label'=>'longstring',
 
- 		'meta'=>'longstring',
 
- 		'handler'=>'string'
 
- 	);
 
- 	public function realString(){
 
- 		$meta = json_decode($this->meta,true);
 
- 		require_once(__ROOT__.SLASH.'connector'.SLASH.$this->handler.'.class.php');
 
- 		$connection = $this->handler::connection;
 
- 		foreach ($meta as $key => $value) {
 
- 			$connection = str_replace('{{'.$key.'}}',$value,$connection);
 
- 		}
 
- 		$connection = str_replace('{{ROOT}}',__ROOT__,$connection);
 
- 		return  $connection;
 
- 	}
 
- 	public function test(){
 
- 		require_once(__ROOT__.SLASH.'connector'.SLASH.$this->handler.'.class.php');
 
- 		$pdo = $this->getPdo();
 
- 		if(!isset($pdo)) throw new Exception("Impossible de se connecter à la base");
 
- 		$statment = $pdo->prepare($this->handler::show_tables());
 
- 		$statment->execute(array());
 
- 		$rows = $statment->fetchAll();
 
- 		if(!is_array($rows))  throw new Exception("Impossible de requeter la base");
 
- 		return count($rows);
 
- 	}
 
- 	public function getPdo(){
 
- 		$fileHandler = __ROOT__.SLASH.'connector'.SLASH.$this->handler.'.class.php';
 
- 		if(!file_exists($fileHandler)) return null;
 
- 		require_once($fileHandler);
 
- 		$string = $this->realString();
 
- 		$meta = json_decode($this->meta,true);
 
- 		$login = isset($meta['login']) ? $meta['login'] : null;
 
- 		$password = isset($meta['password']) ? $meta['password'] : null;
 
- 		try{
 
- 			$connection = new PDO($string, $login,$password,$this->handler::pdo_attributes());
 
- 			if(method_exists ( $this->handler , 'beforeTransaction' ))
 
-          	$this->handler::beforeTransaction($connection);
 
- 			return $connection;
 
- 		}catch(Exception $e){
 
- 	      return null;
 
- 	   }
 
- 	}
 
- 	public function readOnly(){
 
- 		$pdo = $this->getPdo();
 
- 		if(strrpos($this->realString(), 'mysql:')!==false){
 
- 			$query = $pdo->query('SHOW GRANTS');
 
- 			$response = $query->fetchAll();
 
- 			if(isset($response[0])){
 
- 				if(!preg_match("/GRANT SELECT ON .* TO /i",$response[0][0])) return false;
 
- 			}
 
- 		}
 
- 		return true;
 
- 	}
 
- 	public function tables(){
 
- 		$fileHandler = __ROOT__.SLASH.'connector'.SLASH.$this->handler.'.class.php';
 
- 		if(!file_exists($fileHandler)) return array();
 
- 		require_once($fileHandler);
 
- 		$pdo = $this->getPDO();
 
- 		$tables = array();
 
- 		if(is_null($pdo)) return $tables;
 
- 		$lines = array();
 
- 		$query = $pdo->query($this->handler::show_tables());
 
- 		$lines = $query->fetchAll();
 
- 		foreach($lines as $line)
 
- 			$tables[] = $line[0];
 
- 		return $tables;
 
- 	}
 
- 	public function columns($table){
 
- 		$fileHandler = __ROOT__.SLASH.'connector'.SLASH.$this->handler.'.class.php';
 
- 		if(!file_exists($fileHandler)) return array();
 
- 		require_once($fileHandler);
 
- 		$pdo = $this->getPDO();
 
- 		$columns = array();
 
- 		if(is_null($pdo)) return array();
 
- 		$lines = array();
 
- 		$query = str_replace('{{table}}',$table,$this->handler::show_columns());
 
- 		$query = $pdo->query($query);
 
- 		$lines = $query->fetchAll();
 
- 		foreach($lines as $line){
 
- 			if(!isset($line['column'])){
 
- 				if(isset($line['name'])) $line['column'] = $line['name'];
 
- 			}
 
- 			$columns[] = $line;
 
- 		}
 
- 		return $columns;
 
- 	}
 
- }
 
- ?>
 
 
  |