Exemplo n.º 1
0
 public function executeUpload()
 {
     $upload_max_filesize = str_replace('M', '', ini_get('upload_max_filesize'));
     $res = new \AjaxResponse();
     $postId = $this->request()->post('post_id');
     $upload_dir = PUBLIC_DIR . '/media/post_img/';
     Folder::create($upload_dir, 0777);
     $error = array();
     $fileUploader = new Uploader($upload_dir, 'file_upload');
     $fileUploader->setMaximumFileSize($upload_max_filesize);
     $fileUploader->setFilterType('.jpg, .jpeg, .png, .bmp, .gif');
     $fileUploader->setIsEncryptFileName(true);
     if ($fileUploader->upload('upload_images')) {
         $data = $fileUploader->getData();
         $filePath = '/media/post_img/' . $data['file_name'];
         $fileUrl = $this->document()->getBaseUrl() . '/../' . $filePath;
         $otherImages = \PostPeer::getPostImg($postId);
         $ordering = sizeof($otherImages);
         foreach ($otherImages as $image) {
             if ($image->getOrdering() > $ordering) {
                 $ordering = $image->getOrdering();
             }
         }
         $ordering++;
         $postImg = new \PostImages();
         $postImg->setPath($filePath);
         $postImg->setPostId($postId);
         $postImg->setOrdering($ordering);
         if (!\PostPeer::getPostMainImg($postId)) {
             $postImg->setIsMain(true);
         }
         if ($postImg->save()) {
             $res->type = \AjaxResponse::SUCCESS;
             $t = $postImg->toArray();
             $t['thumb_url'] = $postImg->getThumbs(96, 96);
             $t['url'] = $postImg->getUrl();
             $res->postImage = $t;
             return $this->renderText($res->toString());
         } else {
             foreach ($postImg->getValidationFailures() as $validationFailure) {
                 $error[$validationFailure->getColumn()] = $validationFailure->getMessage();
             }
         }
     } else {
         $error['upload'] = $fileUploader->getError();
     }
     $res->type = \AjaxResponse::ERROR;
     $res->error = $error;
     return $this->renderText($res->toString());
 }