API: new procedure 'removeAllFiles' and contract change for 'createFile'
This commit is contained in:
@@ -49,7 +49,8 @@ class File extends Base
|
||||
{
|
||||
$file = $this->getbyId($file_id);
|
||||
|
||||
if (! empty($file) && @unlink(FILES_DIR.$file['path'])) {
|
||||
if (! empty($file)) {
|
||||
@unlink(FILES_DIR.$file['path']);
|
||||
return $this->db->table(self::TABLE)->eq('id', $file_id)->remove();
|
||||
}
|
||||
|
||||
@@ -66,10 +67,13 @@ class File extends Base
|
||||
public function removeAll($task_id)
|
||||
{
|
||||
$files = $this->getAll($task_id);
|
||||
$results = array();
|
||||
|
||||
foreach ($files as $file) {
|
||||
$this->remove($file['id']);
|
||||
$results[] = $this->remove($file['id']);
|
||||
}
|
||||
|
||||
return ! in_array(false, $results, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,26 +83,58 @@ class File extends Base
|
||||
* @param integer $task_id Task id
|
||||
* @param string $name Filename
|
||||
* @param string $path Path on the disk
|
||||
* @param bool $is_image Image or not
|
||||
* @param integer $size File size
|
||||
* @return bool
|
||||
* @return bool|integer
|
||||
*/
|
||||
public function create($task_id, $name, $path, $is_image, $size)
|
||||
public function create($task_id, $name, $path, $size)
|
||||
{
|
||||
$this->container['dispatcher']->dispatch(
|
||||
self::EVENT_CREATE,
|
||||
new FileEvent(array('task_id' => $task_id, 'name' => $name))
|
||||
);
|
||||
|
||||
return $this->db->table(self::TABLE)->save(array(
|
||||
$result = $this->db->table(self::TABLE)->save(array(
|
||||
'task_id' => $task_id,
|
||||
'name' => substr($name, 0, 255),
|
||||
'path' => $path,
|
||||
'is_image' => $is_image ? '1' : '0',
|
||||
'is_image' => $this->isImage($name) ? 1 : 0,
|
||||
'size' => $size,
|
||||
'user_id' => $this->userSession->getId() ?: 0,
|
||||
'date' => time(),
|
||||
));
|
||||
|
||||
if ($result) {
|
||||
|
||||
$this->container['dispatcher']->dispatch(
|
||||
self::EVENT_CREATE,
|
||||
new FileEvent(array('task_id' => $task_id, 'name' => $name))
|
||||
);
|
||||
|
||||
return (int) $this->db->getConnection()->getLastId();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PicoDb query to get all files
|
||||
*
|
||||
* @access public
|
||||
* @return \PicoDb\Table
|
||||
*/
|
||||
public function getQuery()
|
||||
{
|
||||
return $this->db
|
||||
->table(self::TABLE)
|
||||
->columns(
|
||||
self::TABLE.'.id',
|
||||
self::TABLE.'.name',
|
||||
self::TABLE.'.path',
|
||||
self::TABLE.'.is_image',
|
||||
self::TABLE.'.task_id',
|
||||
self::TABLE.'.date',
|
||||
self::TABLE.'.user_id',
|
||||
self::TABLE.'.size',
|
||||
User::TABLE.'.username',
|
||||
User::TABLE.'.name as user_name'
|
||||
)
|
||||
->join(User::TABLE, 'id', 'user_id')
|
||||
->asc(self::TABLE.'.name');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,24 +146,7 @@ class File extends Base
|
||||
*/
|
||||
public function getAll($task_id)
|
||||
{
|
||||
return $this->db
|
||||
->table(self::TABLE)
|
||||
->columns(
|
||||
self::TABLE.'.id',
|
||||
self::TABLE.'.name',
|
||||
self::TABLE.'.path',
|
||||
self::TABLE.'.is_image',
|
||||
self::TABLE.'.task_id',
|
||||
self::TABLE.'.date',
|
||||
self::TABLE.'.user_id',
|
||||
self::TABLE.'.size',
|
||||
User::TABLE.'.username',
|
||||
User::TABLE.'.name as user_name'
|
||||
)
|
||||
->join(User::TABLE, 'id', 'user_id')
|
||||
->eq('task_id', $task_id)
|
||||
->asc(self::TABLE.'.name')
|
||||
->findAll();
|
||||
return $this->getQuery()->eq('task_id', $task_id)->findAll();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -139,25 +158,7 @@ class File extends Base
|
||||
*/
|
||||
public function getAllImages($task_id)
|
||||
{
|
||||
return $this->db
|
||||
->table(self::TABLE)
|
||||
->columns(
|
||||
self::TABLE.'.id',
|
||||
self::TABLE.'.name',
|
||||
self::TABLE.'.path',
|
||||
self::TABLE.'.is_image',
|
||||
self::TABLE.'.task_id',
|
||||
self::TABLE.'.date',
|
||||
self::TABLE.'.user_id',
|
||||
self::TABLE.'.size',
|
||||
User::TABLE.'.username',
|
||||
User::TABLE.'.name as user_name'
|
||||
)
|
||||
->join(User::TABLE, 'id', 'user_id')
|
||||
->eq('task_id', $task_id)
|
||||
->eq('is_image', 1)
|
||||
->asc(self::TABLE.'.name')
|
||||
->findAll();
|
||||
return $this->getQuery()->eq('task_id', $task_id)->eq('is_image', 1)->findAll();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -169,29 +170,11 @@ class File extends Base
|
||||
*/
|
||||
public function getAllDocuments($task_id)
|
||||
{
|
||||
return $this->db
|
||||
->table(self::TABLE)
|
||||
->columns(
|
||||
self::TABLE.'.id',
|
||||
self::TABLE.'.name',
|
||||
self::TABLE.'.path',
|
||||
self::TABLE.'.is_image',
|
||||
self::TABLE.'.task_id',
|
||||
self::TABLE.'.date',
|
||||
self::TABLE.'.user_id',
|
||||
self::TABLE.'.size',
|
||||
User::TABLE.'.username',
|
||||
User::TABLE.'.name as user_name'
|
||||
)
|
||||
->join(User::TABLE, 'id', 'user_id')
|
||||
->eq('task_id', $task_id)
|
||||
->eq('is_image', 0)
|
||||
->asc(self::TABLE.'.name')
|
||||
->findAll();
|
||||
return $this->getQuery()->eq('task_id', $task_id)->eq('is_image', 0)->findAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a filename is an image
|
||||
* Check if a filename is an image (file types that can be shown as thumbnail)
|
||||
*
|
||||
* @access public
|
||||
* @param string $filename Filename
|
||||
@@ -226,24 +209,6 @@ class File extends Base
|
||||
return $project_id.DIRECTORY_SEPARATOR.$task_id.DIRECTORY_SEPARATOR.hash('sha1', $filename.time());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the base directory is created correctly
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
if (! is_dir(FILES_DIR)) {
|
||||
if (! mkdir(FILES_DIR, 0755, true)) {
|
||||
die('Unable to create the upload directory: "'.FILES_DIR.'"');
|
||||
}
|
||||
}
|
||||
|
||||
if (! is_writable(FILES_DIR)) {
|
||||
die('The directory "'.FILES_DIR.'" must be writeable by your webserver user');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle file upload
|
||||
*
|
||||
@@ -255,8 +220,7 @@ class File extends Base
|
||||
*/
|
||||
public function upload($project_id, $task_id, $form_name)
|
||||
{
|
||||
$this->setup();
|
||||
$result = array();
|
||||
$results = array();
|
||||
|
||||
if (! empty($_FILES[$form_name])) {
|
||||
|
||||
@@ -272,11 +236,10 @@ class File extends Base
|
||||
|
||||
if (@move_uploaded_file($uploaded_filename, FILES_DIR.$destination_filename)) {
|
||||
|
||||
$result[] = $this->create(
|
||||
$results[] = $this->create(
|
||||
$task_id,
|
||||
$original_filename,
|
||||
$destination_filename,
|
||||
$this->isImage($original_filename),
|
||||
$_FILES[$form_name]['size'][$key]
|
||||
);
|
||||
}
|
||||
@@ -284,7 +247,7 @@ class File extends Base
|
||||
}
|
||||
}
|
||||
|
||||
return count(array_unique($result)) === 1;
|
||||
return ! in_array(false, $results, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -294,7 +257,7 @@ class File extends Base
|
||||
* @param integer $project_id Project id
|
||||
* @param integer $task_id Task id
|
||||
* @param string $blob Base64 encoded image
|
||||
* @return bool
|
||||
* @return bool|integer
|
||||
*/
|
||||
public function uploadScreenshot($project_id, $task_id, $blob)
|
||||
{
|
||||
@@ -314,7 +277,6 @@ class File extends Base
|
||||
$task_id,
|
||||
$original_filename,
|
||||
$destination_filename,
|
||||
true,
|
||||
strlen($data)
|
||||
);
|
||||
}
|
||||
@@ -326,11 +288,10 @@ class File extends Base
|
||||
* @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
|
||||
* @return bool|integer
|
||||
*/
|
||||
public function uploadContent($project_id, $task_id, $filename, $is_image, &$blob)
|
||||
public function uploadContent($project_id, $task_id, $filename, $blob)
|
||||
{
|
||||
$data = base64_decode($blob);
|
||||
|
||||
@@ -347,7 +308,6 @@ class File extends Base
|
||||
$task_id,
|
||||
$filename,
|
||||
$destination_filename,
|
||||
$is_image,
|
||||
strlen($data)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user