Exemplo n.º 1
0
 public function UploadAction()
 {
     // TODO:: album_id - проверять, этого ли пользователя альбом
     $request_user_id = (int) Project::getUser()->getShowedUser()->id;
     $user_id = (int) Project::getUser()->getDbUser()->id;
     $request = Project::getRequest();
     $login = Project::getUser()->getDbUser()->login;
     $album_id = (int) $request->album_id;
     $access = (int) $request->pic_access;
     $album_model = new AlbumModel();
     $album_model->load($album_id);
     if ((int) $album_model->user_id !== $user_id) {
         // This album not of current user - so can't upload photo in somebody else album
         $this->_view->addFlashMessage(FM::ERROR, "Ошибка доступа к загрузке фотографий");
         $this->UploadFormAction($request->getKeys());
         return;
     }
     if (!count($_FILES) || $_FILES['photo_file_1']['error'] == 4) {
         $this->_view->addFlashMessage(FM::ERROR, "Нет изображений для загрузки");
         $this->UploadFormAction($request->getKeys());
         return;
     }
     $ids = array();
     $user_dir_size = HelpFunctions::getDirSize(USER_UPLOAD_DIR);
     foreach ($_FILES as $post_file) {
         $uploadfile = false;
         $dir = USER_UPLOAD_DIR . DIRECTORY_SEPARATOR . $login;
         $err = false;
         $ok = $this->checkDir($dir);
         if ($ok === true) {
             $album = $dir . DIRECTORY_SEPARATOR . 'album';
             $ok = $this->checkDir($album);
         }
         if ($ok === true) {
             $images = $album . DIRECTORY_SEPARATOR . 'images';
             $ok = $this->checkDir($images);
         }
         $ok_thumb = false;
         if ($ok === true) {
             $thumbs = $album . DIRECTORY_SEPARATOR . 'thumbs';
             $ok_thumb = $this->checkDir($thumbs);
         }
         if (!$ok || !$ok_thumb) {
             $this->_view->addFlashMessage(FM::ERROR, $post_file['name'] . " ошибка загрузки изображения в директорию пользователя");
             $this->UploadFormAction($request->getKeys());
             return;
         }
         $p = pathinfo($post_file['name']);
         $ext = strtolower(trim(isset($p['extension']) ? $p['extension'] : null));
         $fn = md5(uniqid(rand(), true)) . "." . $ext;
         $thumb = false;
         $uploaded = false;
         if ($ok === true) {
             $f = $images . DIRECTORY_SEPARATOR . $fn;
             $max_image_size = $this->getParam('max_image_size');
             $max_userdir_size = $this->getParam('max_userdir_size');
             $max_photo_width = $this->getParam('max_photo_width');
             $user_dir_size += $post_file['size'];
             if ($max_image_size < $post_file['size']) {
                 $this->_view->addFlashMessage(FM::ERROR, $post_file['name'] . " превышает максимальный размер фото (" . $max_image_size . " байт)");
                 $this->UploadFormAction($request->getKeys());
                 return;
             } elseif ($user_dir_size > $max_userdir_size) {
                 $this->_view->addFlashMessage(FM::ERROR, "Вы превысили максимальный размер загруженных фото (" . $max_userdir_size . " байт)");
                 $this->UploadFormAction($request->getKeys());
                 return;
             } elseif (HelpFunctions::_imageResize($post_file['tmp_name'], $f, $max_photo_width, $ext)) {
                 //move_uploaded_file($post_file['tmp_name'], $f)
                 //HelpFunctions::_imageResize($post_file['tmp_name'], $f, $max_photo_width)
                 // TODO:: write tщ log if thumb size no specified
                 $width = $this->getParam('thumb_size', 99999);
                 if ($width <= 0) {
                     $width = 100;
                 }
                 if ($ok_thumb === true) {
                     if (HelpFunctions::_imageResize($post_file['tmp_name'], $thumbs . DIRECTORY_SEPARATOR . $fn, $width, $ext)) {
                         $thumb = true;
                     } else {
                         // TODO:: error resizing image
                     }
                 }
             } else {
                 $this->_view->addFlashMessage(FM::ERROR, $post_file['name'] . " ошибка загрузки изображения");
                 $this->UploadFormAction($request->getKeys());
                 return;
             }
         }
         $photo_model = new PhotoModel();
         $photo_model->user_id = $user_id;
         $photo_model->album_id = $album_id;
         $photo_model->path = $fn;
         $photo_model->thumbnail = $fn;
         $photo_model->access = $access;
         $photo_model->name = '';
         $photo_model->is_onmain = 0;
         $photo_model->is_rating = 0;
         $photo_model->voices = 0;
         $photo_model->rating = 0;
         $photo_model->creation_date = date("Y-m-d H:i:s");
         $ids[] = $photo_model->save();
     }
     $c = new PhotoController();
     $c->EditAction($ids, $album_id);
     $this->setContent($c->getContent());
     //Project::getResponse() -> redirect($request -> createUrl('Album', 'UploadForm'));
 }