Exemple #1
0
 public function SaveAction()
 {
     $request_user_id = (int) Project::getUser()->getShowedUser()->id;
     $user_id = (int) Project::getUser()->getDbUser()->id;
     $login = Project::getUser()->getDbUser()->login;
     $request = Project::getRequest();
     $album = USER_UPLOAD_DIR . DIRECTORY_SEPARATOR . $login . DIRECTORY_SEPARATOR . 'album' . DIRECTORY_SEPARATOR;
     $thumbs = $album . 'thumbs' . DIRECTORY_SEPARATOR;
     $images = $album . 'images' . DIRECTORY_SEPARATOR;
     clearstatcache();
     $album_id = 0;
     if (is_array($request->photo_id)) {
         foreach ($request->photo_id as $photo_id) {
             $photo_id = (int) $photo_id;
             $photo_model = new PhotoModel();
             $photo_model->load($photo_id);
             // Проверка, является ли пользователем владельцем альбома
             if ((int) $photo_model->id > 0 && (int) $photo_model->user_id === $user_id) {
                 if (isset($request->photo_del[$photo_id])) {
                     // Delete album
                     $f = $thumbs . $photo_model->path;
                     if (file_exists($f) && is_file($f)) {
                         unlink($f);
                     }
                     $f = $images . $photo_model->thumbnail;
                     if (file_exists($f) && is_file($f)) {
                         unlink($f);
                     }
                     $photo_model->delete($photo_id);
                 } else {
                     $photo_model->is_rating = isset($request->is_rating[$photo_id]) ? 1 : 0;
                     $photo_model->is_onmain = isset($request->is_onmain[$photo_id]) ? 1 : 0;
                     $photo_model->access = (int) $request->photo_access[$photo_id];
                     $photo_model->name = isset($request->photo_name[$photo_id]) ? $request->photo_name[$photo_id] : $photo_model->name;
                     $photo_model->save();
                     if ($album_id == 0) {
                         $album_id = (int) $photo_model->album_id;
                     }
                 }
             }
         }
     }
     if ($album_id > 0) {
         $album_model = new AlbumModel();
         $album_model->load($album_id);
         $album_model->thumbnail_id = (int) $request->thumb_photo;
         $album_model->save();
     }
     Project::getResponse()->redirect($this->getAlbumUrl($album_id, $login));
 }
Exemple #2
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'));
 }