Location: PHPKode > scripts > cPanel Database Administering > cpanel-database-administering/cpanel_mysql.class.php
<?php

/**
 * Name: cPanel Database Class
 * Version: 1.0
 * Author: 	The HungryCoder
 * Contact:	hide@address.com
 * Homepage: www.hungrycoder.xenexbd.com
 * 
 * This class will create mysql database and users in cPanel. This is my first PHP work in my new job. Thanks for my collegues who inspired me while working. 
 */

class cpanel_db {
	protected $cpdomain;
	protected $cpuser;
	protected $cppass;
	protected $cptheme;
	private $error;
	public $callresult;

	
	function __construct($cpdomain,$cpuser,$cppass,$cptheme='x3'){
		$this->cpdomain = $cpdomain;
		$this->cpuser = $cpuser;
		$this->cppass = $cppass;
		$this->cptheme = $cptheme;
		
		
	}
	
	private function callUrl($urlsuffix){
		if(empty($urlsuffix)) return $this->error('URL is empty');
				
		$url = "http://".$this->cpdomain.":2082/frontend/".$this->cptheme.$urlsuffix;
		$this->callresult=''; //reset
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_HEADER, 1);
		curl_setopt($ch, CURLOPT_USERPWD, "$this->cpuser:$this->cppass");
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	//	curl_setopt($ch, CURLOPT_VERBOSE , 1 );
		$this->callresult = curl_exec($ch);
		$info = curl_getinfo($ch);
		curl_close($ch);
		return $info;
	}
	
	/**
	 * Create Database
	 *
	 * @param string $dbname
	 * @return boolean
	 */
	public function createDb($dbname){
		$suffix = "/sql/addb.html?db=$dbname";
		
		//return $this->callresult;
		$this->callUrl($suffix);
		
		return $this->isSuccess('db');
	}	
	
	public function createUser($username,$pass){
		$suffix = "/sql/adduser.html?user=$username&pass=$pass&pass2=$pass";
		
		//return $this->callresult;
		$this->callUrl($suffix);
		
		return $this->isSuccess('user');
	}
		
	public function grantPriv($db,$user){
		//prepare the params
		$params = "db=$db&user=$user&update=&ALL=ALL&SELECT=SELECT&CREATE=CREATE&INSERT=INSERT&ALTER=ALTER&UPDATE=UPDATE&DROP=DROP&DELETE=DELETE&LOCKTABLES=LOCK&INDEX=INDEX&REFERENCES=REFERENCES&CREATETEMPORARYTABLES=TEMPORARY&CREATEROUTINE=CREATEROUTINE";
		$callurl = "/sql/addusertodb.html?$params";
		
		$this->callUrl($callurl);
		
		return $this->isSuccess('grant');
	}
	
	private function isSuccess($type='db'){
		switch ($type){
			case 'db':
				if(eregi('Added the database',$this->callresult)){
					return true;
				} else {
					return false;
				}
				break;
				
			case 'user':
				if(eregi('Added user',$this->callresult)){
					return true;
				} else {
					return false;
				}
				break;
				
			case 'grant':
				if(eregi('was added to the database',$this->callresult)){
					return true;
				} else {
					return false;
				}
				break;				
			case 'deldb':
				if(eregi('deleted the database',$this->callresult)){
					return true;
				} else {
					return false;
				}
				break;				
			case 'deluser':
				if(eregi('Deleted the user',$this->callresult)){
					return true;
				} else {
					return false;
				}
				break;	
		}
	}

	public function error($msg){
		$this->error = $msg;
		return false;
	}
	
	public function runBatch($dbname,$dbuser,$dbpass){
		if(empty($dbname) OR empty($dbuser) OR empty($dbpass)) return false;
		$result = array();
		//create the database
		$result['db'] = $this->createDb($dbname);
		
		//create the user
		$result['user'] = $this->createUser($dbuser,$dbpass);
		
		//grant the access with real db name and username
		$result['grant'] = $this->grantPriv($this->cpuser.'_'.$dbname,$this->cpuser.'_'.$dbuser);
		
		return $result; 
	}
	
	/**
	 * This method deletes a number of databases from cpanel. 
	 *
	 * @param array $dbs
	 * @return array
	 */
	public function delDb($dbs){
		//this method will delete a number of dbs. 
		if(is_array($dbs)){
			foreach ($dbs as $db){
				$db_full_name = $this->cpuser .'_'.$db;
				$suffix = "/sql/deldb.html?db=$db_full_name";
				$this->callUrl($suffix);
				$result[$db] = $this->isSuccess('deldb');
			}
			return $result;
		} else {
			$this->error('Not an array');
		}
		return false;
	}	
	/**
	 * This method deletes a number of users from cpanel. 
	 *
	 * @param array $dbs
	 * @return array
	 */
	public function delUser($users){
		//this method will delete a number of dbs. 
		if(is_array($users)){
			foreach ($users as $user){
				$user_full_name = $this->cpuser .'_'.$user;
				$suffix = "/sql/deluser.html?user=$user_full_name";
				$this->callUrl($suffix);
				$result[$user] = $this->isSuccess('deluser');
			}
			return $result;
		} else {
			$this->error('Not an array');
		}
		return false;
	}
	
	/**
	 * Find whether a database is exists in cPanel or not! 
	 *
	 * @param string $dbname Do not include the database name prefix (anything before _). 
	 * @return boolean
	 */
	public function isDbExists($dbname,$limit=100){
		$suffix = "/sql/index.html?itemsperpage=$limit";
		$this->callUrl($suffix);
		$html = $this->callresult;
		$html = substr($html,stripos($html,'<select name=db>')-1);
		$html = substr($html,1,stripos($html,'</select>'));
		$html = str_ireplace('</option>','BR',$html);
		$html = strip_tags($html);
		$all_db = explode('BR',$html); //array of all databases. 
		
		//trim the whitespaces surrounding the dbname
		$all_db = array_map('trim',$all_db);
		//print_r($all_db);
		
		if(in_array($this->cpuser.'_'.$dbname,$all_db)){
			return true;
		} else {
			return false;
		}
	}	
	
	public function isUserExists($username,$limit=100){
		$suffix = "/sql/index.html?itemsperpage=$limit";
		$this->callUrl($suffix);
		$html = $this->callresult;
		
		$html = substr($html,stripos($html,'<select name=user>')-1);
		
		$html = substr($html,1,stripos($html,'</select>'));

		$html = str_ireplace('</option>','BR',$html);
		$html = strip_tags($html);
		$all_user = explode('BR',$html); //array of all databases. 
		
		//trim the whitespaces surrounding the dbname
		$all_user = array_map('trim',$all_user);
		//print_r($all_db);
		
		if(in_array($this->cpuser.'_'.$username,$all_user)){
			return true;
		} else {
			return false;
		}
	}
}
Return current item: cPanel Database Administering