+ function saveFile($user, $attachment, $mimetype) {
+
+ $filename = File::filename($user->getProfile(), "email", $mimetype);
+
+ $filepath = File::path($filename);
+
+ $stream = stream_get_meta_data($attachment);
+ if (copy($stream['uri'], $filepath) && chmod($filepath,0664)) {
+ return $filename;
+ } else {
+ $this->error(null,_('File could not be moved to destination directory.' . $stream['uri'] . ' ' . $filepath));
+ }
+ }
+
+ function storeFile($filename, $mimetype) {
+
+ $file = new File;
+ $file->filename = $filename;
+
+ $file->url = File::url($filename);
+
+ $filepath = File::path($filename);
+
+ $file->size = filesize($filepath);
+ $file->date = time();
+ $file->mimetype = $mimetype;
+
+ $file_id = $file->insert();
+
+ if (!$file_id) {
+ common_log_db_error($file, "INSERT", __FILE__);
+ $this->error(null,_('There was a database error while saving your file. Please try again.'));
+ }
+
+ return $file;
+ }
+
+ function maybeAddRedir($file_id, $url)
+ {
+ $file_redir = File_redirection::staticGet('url', $url);
+
+ if (empty($file_redir)) {
+ $file_redir = new File_redirection;
+ $file_redir->url = $url;
+ $file_redir->file_id = $file_id;
+
+ $result = $file_redir->insert();
+
+ if (!$result) {
+ common_log_db_error($file_redir, "INSERT", __FILE__);
+ $this->error(null,_('There was a database error while saving your file. Please try again.'));
+ }
+ }
+ }
+
+ function getUploadedFileType($fileHandle) {
+ require_once 'MIME/Type.php';
+
+ $cmd = &PEAR::getStaticProperty('MIME_Type', 'fileCmd');
+ $cmd = common_config('attachments', 'filecommand');
+
+ $stream = stream_get_meta_data($fileHandle);
+ $filetype = MIME_Type::autoDetect($stream['uri']);
+ if (in_array($filetype, common_config('attachments', 'supported'))) {
+ return $filetype;
+ }
+ $media = MIME_Type::getMedia($filetype);
+ if ('application' !== $media) {
+ $hint = sprintf(_(' Try using another %s format.'), $media);
+ } else {
+ $hint = '';
+ }
+ $this->error(null,sprintf(
+ _('%s is not a supported filetype on this server.'), $filetype) . $hint);
+ }
+
+ function isRespectsQuota($user,$fileSize) {
+ $file = new File;
+ $ret = $file->isRespectsQuota($user,$fileSize);
+ if (true === $ret) return true;
+ $this->error(null,$ret);
+ }
+