Current File : //etc/zpanel/panel/modules/wordpress_installation/code/InstallWordPress.php
<?php

class InstallWordPress
{
	public function __construct()
	{
	}

	public function genHashpasswd($length)
    {
        require_once("wordpress_class/wp-passw-hash.php");
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?";
        $password = substr( str_shuffle( $chars ), 0, $length );
        $this->pass_wo_hash = $password;
        $wp_hash = new PasswordHash(8, TRUE);
        $password = $wp_hash->HashPassword($password);
        return $password;
    }

    public function genpasswd($length)
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $password = substr( str_shuffle( $chars ), 0, $length );
        return $password;
    }

	public function fromPostValues($over_write, $domain_name, $email_id, $folder_name, $admin_username, $admin_password)
	{
		// over write existing
        if($over_write == 1)
        {
            $post = array('softsubmit' => '1',
                'softdomain' => $domain_name, // Must be a valid Domain
                'softdirectory' => '', // Keep empty to install in Web Root
                'admin_username' => $admin_username,
                'admin_pass' => $admin_password,
                'admin_email' => $email_id,
                'language' => 'en',
                'site_name' => 'WordPress Site',
                'site_desc' => 'My Blog',
                'dbprefix' => 'wpb_',
                'overwrite_existing' => '1'
            );
        }
        // don't over write
        else if($over_write == 2)
        {
            $post = array('softsubmit' => '1',
                'softdomain' => $domain_name, // Must be a valid Domain
                'softdirectory' => $folder_name, // Keep empty to install in Web Root
                'admin_username' => $admin_username,
                'admin_pass' => $admin_password,
                'admin_email' => $email_id,
                'language' => 'en',
                'site_name' => 'WordPress Site',
                'site_desc' => 'My Blog',
                'dbprefix' => 'wpb_'
            );
        }
		// No index file so install in root directory
        else if($over_write == 3)
        {
            $post = array('softsubmit' => '1',
                'softdomain' => $domain_name, // Must be a valid Domain
                'softdirectory' => '', // Keep empty to install in Web Root
                'admin_username' => $admin_username,
                'admin_pass' => $admin_password,
                'admin_email' => $email_id,
                'language' => 'en',
                'site_name' => 'WordPress Site',
                'site_desc' => 'My Blog',
                'dbprefix' => 'wpb_'
            );
        }
		return json_encode($post);
	}

	public function InstallWordPress($domain_name, $email_id, $over_write, $admin_username, $admin_password, $folder_name)
	{
        global $controller;
        $wp_oneclick_install = 'modules/' . $controller->GetControllerRequest('URL', 'module') . '/code/WP_OneClick_Install.php' ;
        $MysqlConnectivity = 'modules/' . $controller->GetControllerRequest('URL', 'module') . '/code/MysqlConnectivity.php' ;
		require_once($wp_oneclick_install);
		require_once($MysqlConnectivity);
		$post_array = self::fromPostValues($over_write, $domain_name, $email_id, $folder_name, $admin_username, $admin_password);
		$get_post_array=array();
		$get_post_array=json_decode($post_array);
		$Mysql_Obj=new MysqlConnectivity();
		$WP_Obj=new WP_OneClick_Install();
		
		$chkdb_flag=1;
		$db_name="";
		$chkuser_flag=1;
		$mysql_user="";
		$mysql_password=self::genpasswd(10);
/* /////////////////////////  Create Database Start ////////////////////////////// */	
    	while($chkdb_flag == 1)
		{
			$db_name= strtolower(self::genpasswd(6));
			if($Mysql_Obj->checkDbExist($db_name)==DATABASE_DOESNOT_EXIST)
			{
			 	 $get_mysql_database_output=$Mysql_Obj->createDatabase($domain_name, $db_name);
				$chkdb_flag =0;
				$db_explode=explode(":",$get_mysql_database_output);
				// print_r($db_explode);
				 $db_name= $db_explode[count( $db_explode)-1];
			}
		}
		
/* /////////////////////////  Create Database End ////////////////////////////// */
/* /////////////////////////  Create  Mysql User Start ////////////////////////////// */
		while($chkuser_flag == 1)
		{
			$mysql_user= strtolower(self::genpasswd(5));
			if($Mysql_Obj->checkUserExist($mysql_user)== USER_DOESNOT_EXIST)
			{
				 	 $get_mysql_user_output=$Mysql_Obj->createUserForNewVersion($domain_name, $mysql_user, $mysql_password, $db_name);
					$chkuser_flag =0;
					$db_explode=explode(":",$get_mysql_user_output);
                 //  print_r($db_explode);
	
				 $mysql_user= $db_explode[count($db_explode)-1];

			}
		}
	//	print_r($get_post_array); 
/* /////////////////////////  Create  Mysql User End ////////////////////////////// */
		if($get_post_array->softdirectory == '')
		{
            $directory = ctrl_hrpanel::getFullPathOfDomain($domain_name);
            $cmd="download_unzip_wp";
            $sock_res= self::socket_connect($directory, $cmd);
		}
		else 
		{
            $directory=rtrim(ctrl_hrpanel::getFullPathOfDomain($domain_name).$get_post_array->softdirectory,"/")."/";
            $cmd="download_unzip_wp";
            $cmd="new_download_unzip_wp";
            $sock_res= self::socket_connect($directory, $cmd);
		}
        
		$user_host="localhost";
	  	$wp_config_output=$WP_Obj->WP_Configuaration($domain_name,$get_post_array->dbprefix,$db_name,$mysql_user,$mysql_password,$user_host,$get_post_array->softdirectory);
	 	$return_val= $WP_Obj->WP_Installation($domain_name,$get_post_array->admin_username,$get_post_array->admin_email,$get_post_array->admin_pass,$get_post_array->site_name,$get_post_array->softdirectory); 
    	if($return_val == true)
	        return true; 
        else 
        	return false;
	}

    static function socket_connect($directory, $cmd)
    {
        $service_port = 4444 ;
        $address = gethostbyname('localhost');
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket === false)
        {
                return "";
        }
        $result = socket_connect($socket, $address, $service_port);
        if ($result === false)
        {
                return "";
        }
        socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 2000, "usec" =>0));
        $in="command "."WordPress_Installation ".$directory." ".$cmd;
        $out = '';
        if(@socket_write($socket, $in, strlen($in)))
        {
            sleep(1);
            $s_data = socket_read($socket,1024);
            socket_close($socket);
            return $s_data;
        }
        else
        {
            return "";
        }
    }
}
?>