array('type'=>'key', 'label' => 'Identifiant'),
		'machine' => array('type'=>'integer', 'label' => 'Machine hôte','link'=>'plugin/docker/DockerMachine.class.php'),
		'client' => array('type'=>'integer', 'label' => 'Client','link'=>'plugin/client/Client.class.php'),
		'domain' => array('type'=>'textarea', 'label' => 'Nom de domaine'),
		'port' => array('type'=>'integer', 'label' => 'Port docker'),
		'mysqlRootPassword' => array('type'=>'password', 'label' => 'Pass. Mysql Root'),
		'mysqlPassword' => array('type'=>'password', 'label' => 'Pass. Mysql App'),
		'git' => array('type'=>'textarea', 'label' => 'Dépot git'),
		'memory' => array('type'=>'decimal', 'label' => 'Mémoire max.'),
		'cpu' => array('type'=>'integer', 'label' => 'Cpu max.'),
		'ssl' => array('type'=>'boolean', 'label' => 'SSL'),
		'state' => array('type'=>'list', 'label' => 'Etat'),
		'certificate' => array('type'=>'string', 'label' => 'Certificat SSL'),
		'comment' => array('type'=>'wysiwyg', 'label' => 'Commentaire'),
	);
	
	//liste des Etat possibles
	public static function states($key=null){
		$items = array(
			DockerEnvironment::ACTIVE => array('label'=>'Actif') 
		);
		if(!isset($key)) return $items;
		return isset($items[$key]) ? $items[$key] : array('label'=>'Non définis');
	}
	//Colonnes indexées
	public $indexes = array();
	public function acronym(){
		return 'wp_';
	}
	public static function lastPort(){
		$lastPort = DockerEnvironment::staticQuery('SELECT max(port) as port FROM {{table}}')->fetch();
		return $lastPort!= false && is_numeric($lastPort['port']) ? $lastPort['port'] : 8008;
		
	}
	public function execute($ssh){
		require_once(__DIR__.SLASH.'SshClient.class.php');
		$clientDirectory = '/home/clients/'.$this->domain;
		return SshClient::format_output($ssh->execute('cd '.$clientDirectory.' && docker-compose up -d'));
	}
	public function createPma($ssh){
		require_once(__DIR__.SLASH.'SshClient.class.php');
		
		$logs = $ssh->execute('docker run --name myadmin -e UPLOAD_LIMIT=5G -d --network=proxy --link '.$this->domain.'_db:db -p 8011:80 phpmyadmin/phpmyadmin');
		return $logs;
	}
	public function removePma($ssh){
		require_once(__DIR__.SLASH.'SshClient.class.php');
	
		$logs = '
Remove container myadmin...
';
		$logs .= SshClient::format_output($ssh->execute('docker container stop myadmin && docker container rm myadmin'));
	
		return $logs;
	}
	public function removeContainer($ssh){
		require_once(__DIR__.SLASH.'SshClient.class.php');
		$clientDirectory = '/home/clients/'.$this->domain;
		if($clientDirectory == '/home/clients/') throw new Exception("Cant delete root !!!");
		if(strlen($clientDirectory) <= strlen('/home/clients/') ) throw new Exception("Cant delete root or root parent!!!");
		$logs = 'Remove vhost...
';
		$logs .= $ssh->execute('rm /etc/nginx/sites-available/'.$this->domain.'.conf');
		$logs .= $ssh->execute('rm /etc/nginx/sites-enabled/'.$this->domain.'.conf');
		$logs .= '
Reload nginx...
';
		$logs .= $ssh->execute('service nginx reload');
		$logs .= '
Remove containers '.$clientDirectory.'...
';
		$logs .= SshClient::format_output($ssh->execute('docker container stop '.$this->domain.'_wp && docker container rm '.$this->domain.'_wp'));
		$logs .= SshClient::format_output($ssh->execute('docker container stop '.$this->domain.'_db && docker container rm '.$this->domain.'_db'));
		$logs .= '
Remove client directory '.$clientDirectory.'...
';
		$logs .= $ssh->execute('rm '.$clientDirectory.' -r');
		return $logs;
	}
	public function createContainer($ssh){
		require_once(__DIR__.SLASH.'SshClient.class.php');
		$clientDirectory = '/home/clients/'.$this->domain;
		$logs = $ssh->execute('cp /home/client-template '.$clientDirectory.' -r');
		$localEnv = 'DB_CONTAINER='.$this->domain.'_db';
		$localEnv .="\n".'DB_NAME='.$this->domain;
		$localEnv .="\n".'DB_USER='.$this->domain;
		$localEnv .="\n".'DB_PASSWORD='.decrypt($this->mysqlPassword);
		$localEnv .="\n".'DB_ROOT_PASSWORD='.decrypt($this->mysqlRootPassword);
		$localEnv .="\n".'WP_CONTAINER='.$this->domain.'_wp';
		$localEnv .="\n".'WP_TABLE_PREFIX='.$this->acronym();
		$localEnv .="\n".'WP_PORT='.$this->port;
		$localEnv .="\n".'PMA_CONTAINER='.$this->domain.'_pma';
		$localEnv .="\n".'PMA_PORT='.($this->port+1);
		$localEnv .="\n".'DB_RAM_LIMIT=800M';
		$localEnv .="\n".'DB_RAM_RESERVATION=600M';
		$localEnv .="\n".'WP_RAM_LIMIT='.$this->memory.'M';
		$localEnv .="\n".'WP_RAM_RESERVATION=100M';
		$localEnv .="\n".'PMA_RAM_LIMIT=200M';
		$localEnv .="\n".'PMA_RAM_RESERVATION=100M';
		$localEnv .="\n".'DOMAIN='.$this->domain;
		$localEnv .="\n".'URL=https://'.$this->domain;
		$localEnv .="\n".'POSTFIX_CONTAINER='.$this->domain.'_postfix';
		$localEnv .="\n".'POSTFIX_PORT='.($this->port+2);
		
		$logs .= $ssh->send_stream($localEnv,$clientDirectory.'/.env');
		$vhost = 'server {
	listen 80;
	server_name '.$this->domain.';
	error_log '.$clientDirectory.'/log/proxy_error.log;
	location / {
		proxy_pass http://127.0.0.1:'.$this->port.';
		proxy_set_header Host $host;
		proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection "upgrade";
		proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
	    proxy_set_header X-Forward-Proto http;
	    proxy_set_header X-Nginx-Proxy true;
	}
}
server {
	listen 80;
	server_name www.'.$this->domain.';
	error_log '.$clientDirectory.'/log/proxy_error.log;
	location / {
		proxy_pass http://127.0.0.1:'.$this->port.';
		proxy_set_header Host $host;
		proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection "upgrade";
		proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
	    proxy_set_header X-Forward-Proto http;
	    proxy_set_header X-Nginx-Proxy true;
	}
}';
		$logs .= $ssh->send_stream($vhost,'/etc/nginx/sites-available/'.$this->domain.'.conf');
		$logs .= $ssh->execute('ln -s /etc/nginx/sites-available/'.$this->domain.'.conf /etc/nginx/sites-enabled/'.$this->domain.'.conf');
		$logs .= $ssh->execute('service nginx reload');
		return SshClient::format_output($logs);
	}
}
?>