| Current Path : /var/www/html/eform/frontend/queue/ |
| Current File : /var/www/html/eform/frontend/queue/FileConversionJob.php |
<?php
namespace frontend\queue;
use yii\base\BaseObject;
use frontend\models\eform\FileConversion;
use GuzzleHttp\Psr7;
use GuzzleHttp\Client;
use Throwable;
use Yii;
use frontend\models\eform\EformApplicationAttachments;
class FileConversionJob extends BaseObject implements \yii\queue\JobInterface
{
public $conversion_id;
public function execute($queue)
{
// find the record
$file_conversion = FileConversion::findOne($this->conversion_id);
try {
$base_uri = Yii::$app->params['file_conversion']['base_uri'];
$output_uri = Yii::$app->params['file_conversion']['ouput'];
$client = new Client([
// Base URI is used with relative requests
'base_uri' => Yii::$app->params['file_conversion']['base_uri'],
// You can set any number of default request options.
'timeout' => 360.0,
]);
$response = $client->request('POST', '/upload', [
'multipart' => [
[
'name' => 'data',
'contents' => $file_conversion->data
],
[
'name' => 'file',
'contents' => Psr7\Utils::tryFopen( getcwd() . '/www' . $file_conversion->file_path, 'r')
],
]
]);
$body = $response->getBody();
$body_object = json_decode($body->getContents());
$file_output = $body_object->data->output;
$output_full_uri = $base_uri . $output_uri . $file_output;
$file_put_url = getcwd() . '/www' . $output_uri . $file_output;
$this->download($file_put_url, $output_full_uri);
$existing_attachment = EformApplicationAttachments::find()
->where([
'AppGuid' => $file_conversion->app_guid,
'AttachmentType' => 1
]
)
->one();
if(!empty($existing_attachment)) {
$application_attachment = new EformApplicationAttachments();
$application_attachment->AppGuid = '';
$application_attachment->OriginalFileName = $existing_attachment->OriginalFileName;
$application_attachment->AttachmentType = 3;
$application_attachment->ConvertedFromDocumentID = $existing_attachment->ID;
$application_attachment->FileName = $file_output;
$application_attachment->FileExtension = pathinfo($file_output, PATHINFO_EXTENSION);
$application_attachment->FileHash = hash_file('sha256', $file_put_url);
$application_attachment->FileUrl = $file_put_url;
$application_attachment->SiteID = EformApplicationAttachments::SITEID;
$application_attachment->ListID = EformApplicationAttachments::LISTID;
$application_attachment->ListItemID = 0; //dont know where to get this of what this id serve for
}
$file_conversion->conversion_path = $output_uri . $file_output;
$file_conversion->response = $body->getContents();
$file_conversion->status = 1;
$file_conversion->save();
} catch (Throwable $t) {
$file_conversion = FileConversion::findOne($this->conversion_id);
$file_conversion->exception = $t->getMessage() . ' | ' . $t->getLine() . getcwd();
$file_conversion->status = -1;
$file_conversion->save();
}
}
public function download($put, $download) {
file_put_contents($put, file_get_contents($download));
return;
}
}