Jump to content

Wolfengoth

New Members
  • Posts

    1
  • Joined

  • Last visited

Posts posted by Wolfengoth

  1. I am trying to send a file through Rest Webservices using php and i was able to send the file through email but i'm having problems with the webservices, it only receives an empty file.

    <?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    if($_POST)
    {
        //check if its an ajax request, exit if not
        if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
            $output = json_encode(array( //create JSON data
                'type'=>'error',
                'text' => 'Sorry Request must be Ajax POST'
            ));
            die($output); //exit script outputting json data
        }
        //Sanitize input data using PHP filter_var().
        $user_name      = filter_var($_POST["user_name"], FILTER_SANITIZE_STRING);
    	$user_company   = filter_var($_POST["user_company"], FILTER_SANITIZE_STRING);
        $user_email     = filter_var($_POST["user_email"], FILTER_SANITIZE_EMAIL);
        $country_code   = filter_var($_POST["country_code"], FILTER_SANITIZE_NUMBER_INT);
        $phone_number   = filter_var($_POST["phone_number"], FILTER_SANITIZE_NUMBER_INT);
        $message        = filter_var($_POST["msg"], FILTER_SANITIZE_STRING);
        $to_email       = $user_email; //Recipient email, Replace with own email here
    	$from_email 	= 'jveleztorres@wovenware.com'; //From email address (eg: no-reply@YOUR-DOMAIN.com)
        //additional php validation
        if(strlen($user_name)<4){ // If length is less than 4 it will output JSON error.
            $output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!'.realpath(sys_get_temp_dir()."\\".basename($_FILES['file_attach']['tmp_name']))));
            die($output);
        }
    	if(strlen($user_company)<2){ // If length is less than 4 it will output JSON error.
            $output = json_encode(array('type'=>'error', 'text' => 'Company Name is too short or empty!'));
            die($output);
        }
        if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
            $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!'));
            die($output);
        }
        if(!filter_var($country_code, FILTER_VALIDATE_INT)){ //check for valid numbers in country code field
            $output = json_encode(array('type'=>'error', 'text' => 'Enter only digits in country code'));
            die($output);
        }
        if(!filter_var($phone_number, FILTER_SANITIZE_NUMBER_FLOAT)){ //check for valid numbers in phone number field
            $output = json_encode(array('type'=>'error', 'text' => 'Enter only digits in phone number'));
            die($output);
        }
    	if(strlen($phone_number) != 7){ // Phone number can contain 4 characters
            $output = json_encode(array('type'=>'error', 'text' => 'Must only contain 7 numbers without including  country code'));
            die($output);
        }
        if(strlen($message)<3){ //check emtpy message
            $output = json_encode(array('type'=>'error', 'text' => 'Too short message! Please enter something.'));
            die($output);
        }
    	 if(isset($_FILES['file_attach'])) //check uploaded file
        {
            //get file details we need
            $file_tmp_name    = $_FILES['file_attach']['tmp_name'];
            $file_name        = $_FILES['file_attach']['name'];
            $file_size        = $_FILES['file_attach']['size'];
            $file_type        = $_FILES['file_attach']['type'];
            $file_error       = $_FILES['file_attach']['error'];
            //exit script and output error if we encounter any
            if($file_error>0)
            {
                $mymsg = array( 
                1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini", 
                2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form", 
                3=>"The uploaded file was only partially uploaded", 
                4=>"No file was uploaded", 
                6=>"Missing a temporary folder" ); 
                $output = json_encode(array('type'=>'error', 'text' => $mymsg[$file_error]));
                die($output); 
    		}
    	}
        //read from the uploaded file & base64_encode content for the mail
    	$convertIt = $_FILES['file_attach']['type'];
    	$whatIWant1 = substr($convertIt, strpos($convertIt, "/") + 1);
    	if($whatIWant1 === "octet-stream"){
    		$whatIWant = "zip";
    	}
    	else{
    		$whatIWant = $whatIWant1;
    	}
        //email body with attachment
    	$message_body = "Message: ".$message."<br/>"."Contractor".$user_name."<br/>"."Company:".$user_company."<br/>"."Email : ".$user_email."<br/>"."Phone Number : (".$country_code.") ". $phone_number."<br/>"."Access Bonita to initiate Invoice Approval process" ;
    	$handle = $_FILES["file_attach"]["name"];
    	$uploadfile1 = "C:/Users/hrivera/Documents/".basename($_FILES['file_attach']['name']);
    	$handle =fopen($uploadfile1,"r");
    	$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['file_attach']['name'])); 
        if (move_uploaded_file($_FILES['file_attach']['tmp_name'], $uploadfile)) {
    		require 'PHPMailerAutoload.php';
    		$mail = new PHPMailer;
    		$mail->SMTPDebug = 3;                               // Enable verbose debug output
    		$mail->isSMTP();                                      // Set mailer to use SMTP
    		$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    		$mail->SMTPAuth = true;                               // Enable SMTP authentication
    		$mail->Username = '';                 // SMTP username
    		$mail->Password = '';                           // SMTP password
    		$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    		$mail->Port = 587;                                    // TCP port to connect to
    		$mail->From = '';
    		$mail->addAddress('');     
    		$mail->addAttachment($uploadfile, $user_company.' Invoice.'.$whatIWant);         // Add attachments
    		$mail->isHTML(true);                                  // Set email format to HTML
    		$mail->Subject = $user_company.' Invoice Approval Requested';
    		$mail->Body    = $message_body;
    		$mail->AltBody = ', Thank you and have a nice day';
    		if(!$mail->send()) {
    			echo 'Message could not be sent.';
    			echo 'Mailer Error: ' . $mail->ErrorInfo;
    		} else {
    			echo 'Message has been sent';
    		}
    	}
    //Login to bonitasoft by using REST API
    function httpRequest($host, $port, $method, $path, $params) {
    	$paramStr = "";
    	if ($method == "GET" || $method == "POST" ) {
    		foreach ($params as $name => $val) {
    			$paramStr .= $name . "=";
    			$paramStr .= $val;
    			$paramStr .= "&";
    		}
    	}
    	// Assign defaults to $method and $port, if needed
    	if (empty($method)) {
    		$method = "GET";
    	}
    	$method = strtoupper($method);
    	if (empty($port)) {
    		$port = 8081; // Default HTTP port
    	}
     
    	// Create the connection
    	$sock = fsockopen($host, $port);
    	if (!$sock) {
    		echo "Error! Couldn't open the file.";
    	} else {
    		if ($method == "GET") {
    			$path .= "?" . $data;
    	} 
    	//Necessary header
    	fputs($sock, "$method $path  HTTP/1.1\r\n");
    	fputs($sock, "Host: $host\r\n");
    	fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
    	if ($method == "PUT") {
    		fputs($sock, "Content-length: " . 
    		strlen($params) . "\r\n");
    	}elseif ($method == "POST") {
    		fputs($sock, "Content-length: " . 
    		strlen($paramStr) . "\r\n"); 
    	}
    	fputs($sock, "Connection: close\r\n\r\n");
    	if ($method == "PUT") {
    		fputs($sock, $params);
    	}
    	elseif ($method == "POST") {
    		fputs($sock, $paramStr);
    	}
    	// Buffer the result
    	$result = "";
    	do {
    		$temp = fgets($sock,1024);
    		$result .= $temp;
    	}while($temp !="");
    	fclose($sock);
    	return $result;
    	}
    }
    	//Call to Function that logs into bonitasoft
    	$resp = httpRequest("localhost",
        8081, "POST", "/bonita/loginservice",
        array("username" => "walter.bates", "password" => "bpm"));
    	$string = $resp;
    	echo $resp;
    	//Gets JSESSIONID
    	preg_match("/Set-Cookie: (.*?) Path/",$string, $display);
    	//Process to Start Case with variables
    	$data = array("processDefinitionId"=>"5623733440372144264", "variables" => array(array("name" => "contractorComment", "value" => "$message"),array("name" => "contractorName", "value" => "$user_name"),array("name" => "contractorCompanyName", "value" => "$user_company"),array("name" => "contractorEmail", "value" => "$user_email"),array("name" => "contractorPhone", "value" => "("."$country_code".") "."$phone_number")));
    	$options = array(
    	"http" => array(
        "method"  => "POST",
        "header"=>  "POST /bonita/API/bpm/case/  HTTP/1.1\r\n".
    				"Host: localhost\r\n".
    				"Cookie: ". $display[1]."\r\n".
    				"Content-Type: application/json\r\n" .
                    "Accept: application/json\r\n".
    				"Cache-Control: no-cache\r\n".
    	            "Pragma: no-cache\r\n".
    				"Connection: close\r\n\r\n",
    	 "content" => json_encode($data)
    		)
    	);
    	$url = "http://localhost:8081/bonita/API/bpm/case/";
    	$context  = stream_context_create( $options );
    	$result = file_get_contents( $url, false, $context );
    	$response =  json_decode($result);
    	echo print_r($response);
    	preg_match('/"rootCaseId":"(.*?)",/',$result, $case_id);
    	//Process to Attach Document to case
    	//problem lies here
    	$data1 = array("caseId"=> "$case_id[1]","file"=>realpath(sys_get_temp_dir()."\\".basename(sha1($_FILES['file_attach']['name']))),"name"=> "doc_Invoice", "fileName"=>"Invoice.pdf","description" => "Invoice");
        echo json_encode($data1);
        switch (json_last_error()) {
            case JSON_ERROR_NONE:
                echo ' - No errors';
            break;
            case JSON_ERROR_DEPTH:
                echo ' - Maximum stack depth exceeded';
            break;
            case JSON_ERROR_STATE_MISMATCH:
                echo ' - Underflow or the modes mismatch';
            break;
            case JSON_ERROR_CTRL_CHAR:
                echo ' - Unexpected control character found';
            break;
            case JSON_ERROR_SYNTAX:
                echo ' - Syntax error, malformed JSON';
            break;
            case JSON_ERROR_UTF8:
                echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
            break;
            default:
                echo ' - Unknown error';
            break;
        }
    	$options1 = array(
    	"http" => array(
    		"method"  => "POST",
    		"header"=>  "POST /bonita/API/bpm/case/  HTTP/1.1\r\n".
    				"Host: localhost\r\n".
    				"Cookie: ". $display[1]."\r\n".
    				"Content-Type: application/json\r\n" .
                    "Accept: application/json\r\n".
    				"Cache-Control: no-cache\r\n".
    	            "Pragma: no-cache\r\n".
    				"Connection: close\r\n\r\n",
    		"content" => json_encode($data1)
    		)
    	);
    	$url1 = "http://localhost:8081/bonita/API/bpm/caseDocument";
    	$context1  = stream_context_create($options1);
    	$result1 = file_get_contents($url1, false, $context1);
    	$response1 =  json_decode($result1) ;
    	echo print_r($response1);
    	}
    ?>
    
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.