|
<?php |
|
|
|
namespace Kanboard\Model; |
|
|
|
use Exception; |
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AvatarFileModel extends Base |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
const PATH_PREFIX = 'avatars'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getFilename($user_id) |
|
{ |
|
return $this->db->table(UserModel::TABLE)->eq('id', $user_id)->findOneColumn('avatar_path'); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function create($user_id, $path) |
|
{ |
|
$result = $this->db->table(UserModel::TABLE)->eq('id', $user_id)->update(array( |
|
'avatar_path' => $path, |
|
)); |
|
|
|
$this->userSession->refresh($user_id); |
|
|
|
return $result; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function remove($user_id) |
|
{ |
|
try { |
|
$filename = $this->getFilename($user_id); |
|
|
|
if (! empty($filename)) { |
|
$this->objectStorage->remove($filename); |
|
return $this->db->table(UserModel::TABLE)->eq('id', $user_id)->update(array('avatar_path' => '')); |
|
} |
|
} catch (Exception $e) { |
|
$this->logger->error($e->getMessage()); |
|
return false; |
|
} |
|
|
|
return true; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function uploadImageFile($user_id, array $file) |
|
{ |
|
try { |
|
if ($file['error'] == UPLOAD_ERR_OK && $file['size'] > 0) { |
|
$destinationFilename = $this->generatePath($user_id, $file['name']); |
|
$this->objectStorage->moveUploadedFile($file['tmp_name'], $destinationFilename); |
|
$this->create($user_id, $destinationFilename); |
|
} else { |
|
throw new Exception('File not uploaded: '.var_export($file['error'], true)); |
|
} |
|
|
|
} catch (Exception $e) { |
|
$this->logger->error($e->getMessage()); |
|
return false; |
|
} |
|
|
|
return true; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function uploadImageContent($user_id, &$blob) |
|
{ |
|
try { |
|
$destinationFilename = $this->generatePath($user_id, 'imageContent'); |
|
$this->objectStorage->put($destinationFilename, $blob); |
|
$this->create($user_id, $destinationFilename); |
|
} catch (Exception $e) { |
|
$this->logger->error($e->getMessage()); |
|
return false; |
|
} |
|
|
|
return true; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function generatePath($user_id, $filename) |
|
{ |
|
return implode(DIRECTORY_SEPARATOR, array(self::PATH_PREFIX, $user_id, hash('sha1', $filename.time()))); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function isAvatarImage($filename) |
|
{ |
|
switch (get_file_extension($filename)) { |
|
case 'jpeg': |
|
case 'jpg': |
|
case 'png': |
|
case 'gif': |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
} |
|
|