Example #1
0
 /**
  * 編集
  */
 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
     }
 }
Example #2
0
 /**
  * サムネイル処理
  */
 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());
 }