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)); }
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')); }