/** * 編集 */ public function edit() { $request = Request::getInstance(); $files_model = Model::load('Files'); $id = $request->get('id'); $blog_id = $this->getBlogId(); // 詳細データの取得 if (!($file = $files_model->findByIdAndBlogId($id, $blog_id))) { $this->redirect(array('action' => 'index')); } $this->set('file', $file); if (!$request->get('file')) { $request->set('file', $file); $back_url = $request->getReferer(); if (!empty($back_url)) { $request->set('back_url', $back_url); // 戻る用のURL } Session::set('sig', App::genRandomString()); return; } if (!Session::get('sig') || Session::get('sig') !== $request->get('sig')) { $request->clear(); $this->redirect(array('action' => 'upload')); } // 新規登録処理 $errors = array(); $errors['file'] = $files_model->updateValidate($request->file('file'), $request->get('file'), $file, $data_file); if (empty($errors['file'])) { $tmp_name = isset($data_file['tmp_name']) ? $data_file['tmp_name'] : null; unset($data_file['tmp_name']); if ($files_model->updateByIdAndBlogId($data_file, $id, $blog_id)) { // ファイルの移動 if (!empty($tmp_name)) { $data_file['id'] = $id; $data_file['blog_id'] = $blog_id; $move_file_path = App::getUserFilePath($data_file, true); App::deleteFile($blog_id, $id); move_uploaded_file($tmp_name, $move_file_path); } $this->setInfoMessage(__('I have updated the file')); $back_url = $request->get('back_url'); if (!empty($back_url)) { $this->redirect($back_url); } $this->redirect(array('action' => 'upload')); } } // エラー情報の設定 $this->setErrorMessage(__('Input error exists')); $this->set('errors', $errors); $back_url = $request->get('back_url'); if (!empty($back_url)) { $request->set('back_url', $back_url); // 戻る用のURL } }
/** * サムネイル処理 */ public function thumbnail() { $request = Request::getInstance(); $blog_id = $request->get('blog_id'); $id = $request->get('id'); $ext = $request->get('ext'); $size = $request->get('size'); $whs = $request->get('whs', 's'); $file = array('blog_id' => $blog_id, 'id' => $id, 'ext' => $ext); $file_path = App::getUserFilePath($file, true); if (!file_exists($file_path)) { return $this->error404(); } // GDが入っていない場合 if (!function_exists('gd_info')) { return $this->error404(); } // FC2規定サムネイルサイズ制限(72x72,width=300, 400, 600のみ対応) switch ($whs) { case 'h': return $this->error404(); case 'w': if (!in_array($size, array(300, 400, 600))) { return $this->error404(); } break; default: if ($size != 72) { return $this->error404(); } break; } // サムネイル出力処理 include Config::get('LIB_DIR') . 'ThumbnailImageMaker.php'; $image = new ThumbnailImageMaker(); $load_result = $image->load($file_path); if ($load_result !== true) { Debug::log('Load image fail[' . $file_path . ']', false, 'error', __FILE__, __LINE__); return $this->error404(); } switch ($whs) { default: $whs = ''; $resize_result = $image->resize($size, $size, false); break; case 'w': $resize_result = $image->resizeToWidth($size, false); break; case 'h': $resize_result = $image->resizeToHeight($size, false); break; } if ($resize_result !== true) { Debug::log('Resize thumbnail image fail[' . $file_path . ']', false, 'error', __FILE__, __LINE__); return $this->error404(); } preg_match('{^(.*?)\\.(png|gif|jpe?g)$}', $file_path, $matches); $save_file = $matches[1] . '_' . $whs . $size . '.' . $matches[2]; $save_result = $image->save($save_file, $image->image_type, 90); if ($save_result !== true) { Debug::log('Save thumbnail image fail[' . $file_path . ']', false, 'error', __FILE__, __LINE__); return $this->error404(); } chmod($save_file, 0777); // 作成したファイルへリダイレクト $this->redirect($request->getPath() . '?' . $request->getQuery()); }