public function action_edit() { $file = ORM::factory('file', $this->request->param('id')); if (!$file->loaded()) { notes::add('error', 'Filen blev ikke fundet!'); cms::redirect('files'); } if ($_POST) { $filename = arr::get($_POST, 'filename', ''); if (empty($filename)) { $filename = $file->filename; } if ($filename != $file->filename) { $filename = files::fixname($filename); $filename = files::get_available_filename('files/', $filename, $file->ext); rename('files/' . $file->filename(), 'files/' . $filename . '.' . $file->ext); $versions = $file->versions->find_all(); if ((bool) $versions->count()) { foreach ($versions as $version) { $version->delete(); } } } $file->filename = $filename; $file->alt = arr::get($_POST, 'alt', ''); $file->description = arr::get($_POST, 'description', ''); try { $file->save(); cms::redirect('files/edit/' . $file->id); } catch (exception $e) { notes::add('error', 'Filen kunne ikke gemmes! Siden sagde: ' . $e->getMessage()); } } $this->bind('file', $file); }
public static function upload() { $dir = 'files/'; $file = $_FILES['files']; $parts = explode('.', $file['name'][0]); $ext = strtolower(strtolower(end($parts))); $name = mb_strtolower(implode('.', array_slice($parts, 0, count($parts) - 1))); $name = files::fixname($name); $name = self::get_available_filename($dir, $name, $ext); $filename = $name . '.' . $ext; if (move_uploaded_file($file['tmp_name'][0], $dir . $filename)) { $finfo = new finfo(FILEINFO_MIME); $type = $finfo->file($dir . $filename); $mime = substr($type, 0, strpos($type, ';')); $file = ORM::factory('File'); $file->filename = $name; $file->type = $mime; $file->ext = $ext; $file->created = time(); try { $file->save(); return $file; } catch (exception $e) { unlink($dir . $name); return false; } } else { return false; } }