Add file procedures to the API

This commit is contained in:
Frederic Guillot
2015-05-24 20:28:54 -04:00
parent 3eb5501ca0
commit 00c2e5c80e
6 changed files with 299 additions and 3 deletions

48
app/Api/File.php Normal file
View File

@@ -0,0 +1,48 @@
<?php
namespace Api;
/**
* File API controller
*
* @package api
* @author Frederic Guillot
*/
class File extends Base
{
public function getFile($file_id)
{
return $this->file->getById($file_id);
}
public function getAllFiles($task_id)
{
return $this->file->getAll($task_id);
}
public function downloadFile($file_id)
{
$file = $this->file->getById($file_id);
if (! empty($file)) {
$filename = FILES_DIR.$file['path'];
if (file_exists($filename)) {
return base64_encode(file_get_contents($filename));
}
}
return '';
}
public function createFile($project_id, $task_id, $filename, $is_image, &$blob)
{
return $this->file->uploadContent($project_id, $task_id, $filename, $is_image, $blob);
}
public function removeFile($file_id)
{
return $this->file->remove($file_id);
}
}

View File

@@ -96,7 +96,7 @@ class File extends Base
'path' => $path,
'is_image' => $is_image ? '1' : '0',
'size' => $size,
'user_id' => $this->userSession->getId(),
'user_id' => $this->userSession->getId() ?: 0,
'date' => time(),
));
}
@@ -319,6 +319,39 @@ class File extends Base
);
}
/**
* Handle file upload (base64 encoded content)
*
* @access public
* @param integer $project_id Project id
* @param integer $task_id Task id
* @param string $filename Filename
* @param bool $is_image Is image file?
* @param string $blob Base64 encoded image
* @return bool
*/
public function uploadContent($project_id, $task_id, $filename, $is_image, &$blob)
{
$data = base64_decode($blob);
if (empty($data)) {
return false;
}
$destination_filename = $this->generatePath($project_id, $task_id, $filename);
@mkdir(FILES_DIR.dirname($destination_filename), 0755, true);
@file_put_contents(FILES_DIR.$destination_filename, $data);
return $this->create(
$task_id,
$filename,
$destination_filename,
$is_image,
strlen($data)
);
}
/**
* Generate a jpeg thumbnail from an image (output directly the image)
*