コード例 #1
0
ファイル: actions.class.php プロジェクト: te-koyama/openpne
 public function executeImage(sfWebRequest $request)
 {
     $member = $this->getRoute()->getMember();
     if (!$member) {
         return sfView::NONE;
     }
     $community = Doctrine::getTable('Community')->find($request->getParameter('id'));
     if (!$community) {
         return sfView::ERROR;
     }
     $isAdmin = Doctrine::getTable('CommunityMember')->isAdmin($member->getId(), $community->getId());
     if (!$isAdmin || $community->getImageFileName()) {
         return sfView::ERROR;
     }
     $message = $request->getMailMessage();
     if ($images = $message->getImages()) {
         $image = array_shift($images);
         $validator = new opValidatorImageFile();
         $validFile = $validator->clean($image);
         $file = new File();
         $file->setFromValidatedFile($validFile);
         $file->setName('c_' . $community->getId() . '_' . $file->getName());
         $community->setFile($file);
         $community->save();
     }
     return sfView::NONE;
 }
コード例 #2
0
ファイル: actions.class.php プロジェクト: te-koyama/openpne
 public function executeImage(sfWebRequest $request)
 {
     $member = $this->getRoute()->getMember();
     if (!$member) {
         return sfView::NONE;
     }
     $message = $request->getMailMessage();
     $images = $message->getImages();
     foreach ($images as $image) {
         $count = $member->getMemberImage()->count();
         if ($count >= 3) {
             return sfView::ERROR;
         }
         $validator = new opValidatorImageFile();
         $validFile = $validator->clean($image);
         $file = new File();
         $file->setFromValidatedFile($validFile);
         $file->setName('m_' . $member->getId() . '_' . $file->getName());
         $memberImage = new MemberImage();
         $memberImage->setMember($member);
         $memberImage->setFile($file);
         if (!$count) {
             $memberImage->setIsPrimary(true);
         }
         $memberImage->save();
     }
     return sfView::NONE;
 }
コード例 #3
0
ファイル: actions.class.php プロジェクト: te-koyama/openpne
 public function executePost(sfWebRequest $request)
 {
     $this->forward400If('' === (string) $request['body'], 'body parameter is not specified.');
     $this->forward400If('' === (string) $request['toMember'], 'toMember parameter is not specified.');
     $body = $request['body'];
     $this->myMember = $this->member;
     $toMember = Doctrine::getTable('Member')->find($request['toMember']);
     $this->forward400Unless($toMember, 'invalid member');
     $relation = Doctrine_Core::getTable('MemberRelationship')->retrieveByFromAndTo($toMember->getId(), $this->member->getId());
     $this->forward400If($relation && $relation->getIsAccessBlock(), 'Cannot send the message.');
     $message = Doctrine::getTable('SendMessageData')->sendMessage($toMember, SendMessageData::SMARTPHONE_SUBJECT, $body, array());
     $file = $request->getFiles('message_image');
     try {
         $validator = new opValidatorImageFile(array('required' => false));
         $clean = $validator->clean($file);
         if (is_null($clean)) {
             // if empty.
             return sfView::SUCCESS;
         }
     } catch (Exception $e) {
         $this->logMessage($e->getMessage());
         $this->forward400('This image file is invalid.');
     }
     $file = new File();
     $file->setFromValidatedFile($clean);
     $file->save();
     $messageFile = new MessageFile();
     $messageFile->setMessageId($message->getId());
     $messageFile->setFile($file);
     $messageFile->save();
 }
コード例 #4
0
 public function executePost(sfWebRequest $request)
 {
     $this->forward400If('' === (string) $request['title'], 'title parameter is not specified.');
     $this->forward400If('' === (string) $request['body'], 'body parameter is not specified.');
     $this->forward400If(!isset($request['public_flag']) || '' === (string) $request['public_flag'], 'public flag is not specified');
     if (isset($request['id']) && '' !== $request['id']) {
         $diary = Doctrine::getTable('Diary')->findOneById($request['id']);
         $this->forward400If(false === $diary, 'the specified diary does not exit.');
         $this->forward400If(false === $diary->isAuthor($this->member->getId()), 'this diary is not yours.');
     } else {
         $diary = new Diary();
         $diary->setMemberId($this->member->getId());
     }
     $diary->setTitle($request['title']);
     $diary->setBody($request['body']);
     $diary->setPublicFlag($request['public_flag']);
     $diary->save();
     $this->diary = $diary;
     for ($i = 1; $i <= 3; $i++) {
         $diaryImage = Doctrine::getTable('DiaryImage')->retrieveByDiaryIdAndNumber($diary->getId(), $i);
         $filename = basename($_FILES['diary_photo_' . $i]['name']);
         if (!is_null($filename) && '' !== $filename) {
             try {
                 $validator = new opValidatorImageFile(array('required' => false));
                 $validFile = $validator->clean($_FILES['diary_photo_' . $i]);
             } catch (Exception $e) {
                 $this->forward400($e->getMessage());
             }
             $f = new File();
             $f->setFromValidatedFile($validFile);
             $f->setName(hash('md5', uniqid((string) $i) . $filename));
             if ($stream = fopen($_FILES['diary_photo_' . $i]['tmp_name'], 'r')) {
                 if (!is_null($diaryImage)) {
                     $diaryImage->delete();
                 }
                 $bin = new FileBin();
                 $bin->setBin(stream_get_contents($stream));
                 $f->setFileBin($bin);
                 $f->save();
                 $di = new DiaryImage();
                 $di->setDiaryId($diary->getId());
                 $di->setFileId($f->getId());
                 $di->setNumber($i);
                 $di->save();
                 $diary->updateHasImages();
             } else {
                 $this->forward400(__('Failed to write file to disk.'));
             }
         }
         $deleteCheck = $request['diary_photo_' . $i . '_photo_delete'];
         if ('on' === $deleteCheck && !is_null($diaryImage)) {
             $diaryImage->delete();
         }
     }
 }
コード例 #5
0
 public function validatePhoto($validator, $value, $arguments)
 {
     $validatorFile = new opValidatorImageFile();
     $validatorString = new opValidatorString(array('trim' => true, 'max_length' => 140, 'required' => false));
     try {
         $value['file'] = $validatorFile->clean($value['file']);
         $value['description'] = $validatorString->clean($value['description']);
     } catch (sfValidatorError $e) {
         if ('required' !== $e->getCode()) {
             throw $e;
         }
         $value['description'] = '';
         $value['file'] = null;
     }
     return $value;
 }
コード例 #6
0
 public function fetchImage($imageUrl = null)
 {
     if (!is_null($imageUrl)) {
         $this->orig_url = $imageUrl;
     }
     $tmppath = tempnam(sys_get_temp_dir(), 'IMG');
     $fh = fopen($tmppath, 'w');
     $c = curl_init();
     curl_setopt_array($c, array(CURLOPT_URL => $imageUrl, CURLOPT_HEADER => false, CURLOPT_FILE => $fh));
     curl_exec($c);
     curl_close($c);
     fclose($fh);
     $validator = new opValidatorImageFile();
     $validFile = $validator->clean(array('tmp_name' => $tmppath));
     $this->File = new File();
     $this->File->setFromValidatedFile($validFile);
 }
コード例 #7
0
 protected function getImageFiles(opMailMessage $message, $num = null)
 {
     $files = array();
     $images = $message->getImages();
     $i = 1;
     foreach ($images as $image) {
         if (null !== $num && $i > $num) {
             break;
         }
         $validator = new opValidatorImageFile();
         $validFile = $validator->clean($image);
         $file = new File();
         $file->setFromValidatedFile($validFile);
         $files[] = $file;
         $i++;
     }
     return $files;
 }
コード例 #8
0
 public function executePost(sfWebRequest $request)
 {
     $errorResponse = $this->getErrorResponseIfBadRequestOfTweetPost($request);
     if (!is_null($errorResponse)) {
         return $this->renderJSONDirect($errorResponse);
     }
     $validator = new opValidatorImageFile(array('required' => false));
     $validator->setOption('max_size', opTimelinePluginUtil::getFileSizeMax());
     try {
         $file = $request->getFiles('timeline-submit-upload');
         if (0 !== count($file)) {
             $validatedFile = $validator->clean($file);
         } else {
             $validatedFile = null;
         }
     } catch (sfValidatorError $e) {
         if ('max_size' === $e->getCode()) {
             $errorResponse = array('status' => 'error', 'message' => 'file size over', 'type' => 'file_size');
         } elseif ('mime_types' === $e->getCode()) {
             $errorResponse = array('status' => 'error', 'message' => 'not image', 'type' => 'not_image');
         } else {
             $errorResponse = array('status' => 'error', 'message' => 'file upload error', 'type' => 'upload');
         }
         return $this->renderJSONDirect($errorResponse);
     }
     $this->createActivityDataByRequest($request);
     if (!is_null($validatedFile)) {
         $this->timeline->createActivityImageByFileInfoAndActivity($validatedFile, $this->createdActivity);
     }
     $responseData = $this->createResponActivityDataOfPost();
     $responseData['body'] = htmlspecialchars($responseData['body'], ENT_QUOTES, 'UTF-8');
     $responseData['body_html'] = $request->getParameter('in_reply_to_activity_id');
     if (is_null($request->getParameter('in_reply_to_activity_id'))) {
         $responseData['body_html'] = op_activity_linkification(nl2br(op_api_force_escape($responseData['body'])));
     } else {
         $responseData['body_html'] = op_activity_linkification(nl2br($responseData['body']));
     }
     if (!is_null($validatedFile)) {
         return $this->renderJSONDirect(array('status' => 'success', 'message' => 'file up success', 'data' => $responseData));
     }
     return $this->renderJSONDirect(array('status' => 'success', 'message' => 'tweet success', 'data' => $responseData));
 }
コード例 #9
0
 public function setImage($data)
 {
     $form = new MemberImageForm(array(), array('member' => $this->member));
     $imageUri = '';
     $pathList = array('media/image/default', 'media/image/aspect11', 'media/image/aspect43', 'media/image/aspect34');
     foreach ($pathList as $v) {
         $img = $this->getValue($data, $v);
         if ($img) {
             $imageUri = $img;
             break;
         }
     }
     if ($imageUri) {
         $client = new Zend_Http_Client(array_shift($imageUri));
         $response = $client->request();
         if (!$response->isError()) {
             $type = $response->getHeader('Content-type');
             if (is_array($type)) {
                 $type = array_shift($type);
             }
             $tmppath = tempnam(sys_get_temp_dir(), 'IMG');
             $fh = fopen($tmppath, 'w');
             fwrite($fh, $response->getBody());
             fclose($fh);
             $image = array('tmp_name' => $tmppath, 'type' => $type);
             $validator = new opValidatorImageFile();
             $validFile = $validator->clean($image);
             $file = new File();
             $file->setFromValidatedFile($validFile);
             $file->setName('m_' . $this->member->getId() . '_' . $file->getName());
             $memberImage = new MemberImage();
             $memberImage->setMember($this->member);
             $memberImage->setFile($file);
             $memberImage->setIsPrimary(true);
             $memberImage->save();
         }
     }
 }
コード例 #10
0
ファイル: actions.class.php プロジェクト: te-koyama/openpne
 public function executePost(sfWebRequest $request)
 {
     $body = (string) $request['body'];
     $this->forward400If('' === $body, 'body parameter not specified.');
     $this->forward400If(mb_strlen($body) > 140, 'The body text is too long.');
     $memberId = $this->getUser()->getMemberId();
     $options = array();
     if (isset($request['public_flag'])) {
         $options['public_flag'] = $request['public_flag'];
     }
     if (isset($request['in_reply_to_activity_id'])) {
         $options['in_reply_to_activity_id'] = $request['in_reply_to_activity_id'];
     }
     if (isset($request['uri'])) {
         $options['uri'] = $request['uri'];
     } elseif (isset($request['url'])) {
         $options['uri'] = $request['url'];
     }
     if (isset($request['target']) && 'community' === $request['target']) {
         if (!isset($request['target_id'])) {
             $this->forward400('target_id parameter not specified.');
         }
         $options['foreign_table'] = 'community';
         $options['foreign_id'] = $request['target_id'];
     }
     $options['source'] = 'API';
     $imageFiles = $request->getFiles('images');
     if (!empty($imageFiles)) {
         foreach ((array) $imageFiles as $imageFile) {
             $validator = new opValidatorImageFile(array('required' => false));
             try {
                 $obj = $validator->clean($imageFile);
             } catch (sfValidatorError $e) {
                 $this->forward400('This image file is invalid.');
             }
             if (is_null($obj)) {
                 continue;
                 // empty value
             }
             $file = new File();
             $file->setFromValidatedFile($obj);
             $file->setName('ac_' . $this->getUser()->getMemberId() . '_' . $file->getName());
             $file->save();
             $options['images'][]['file_id'] = $file->getId();
         }
     }
     $this->activity = Doctrine::getTable('ActivityData')->updateActivity($memberId, $body, $options);
     if ('1' === $request['forceHtml']) {
         // workaround for some browsers (see #3201)
         $this->getRequest()->setRequestFormat('html');
         $this->getResponse()->setContentType('text/html');
     }
     $this->setTemplate('object');
 }
コード例 #11
0
$albumImage2 = Doctrine::getTable('AlbumImage')->find(2);
$albumImage3 = Doctrine::getTable('AlbumImage')->find(3);
$conn = Doctrine::getTable('AlbumImage')->getConnection();
// isAuthor()
$t->cmp_ok($albumImage1->isAuthor(1), '===', true, '->isAuthor() returns true.');
$t->cmp_ok($albumImage1->isAuthor(2), '===', false, '->isAuthor() returns false.');
// getPrevious()
$t->cmp_ok($albumImage1->getPrevious(), '===', false, '->getPrevious() returns false.');
$result = $albumImage2->getPrevious();
$t->isa_ok($result, 'AlbumImage', "->getPrevious() returns AlbumImage's instance.");
$t->is($result->id, $albumImage1->id, '->getPrevious() returns previous AlbumImage corectlly.');
// getNext()
$result = $albumImage1->getNext();
$t->isa_ok($result, 'AlbumImage', "->getNext() returns AlbumImage's instance.");
$t->is($result->id, $albumImage2->id, '->getNext() returns next AlbumImage corectlly.');
$t->cmp_ok($albumImage2->getNext(), '===', false, '->getNext() returns false.');
// save()
$conn->beginTransaction();
$file_new = new File();
$data = array('tmp_name' => dirname(__FILE__) . '/../../../images/OpenPNE.jpg', 'type' => 'image/jpeg', 'size' => 8327, 'name' => 'OpenPNE.jpg');
$validatorFile = new opValidatorImageFile();
$validatedFile = $validatorFile->clean($data);
$file_new->setFromValidatedFile($validatedFile);
$albumImage_new = new AlbumImage();
$albumImage_new->setMember($member1);
$albumImage_new->setAlbum($album1);
$albumImage_new->setFile($file_new);
$albumImage_new->save();
$t->is($albumImage1->getFile()->getName(), 'a_1055_a_2_a_1_a_1_dummy_file', 'filename is setted by ->save()');
$t->is($albumImage_new->getFilesize(), 8327, 'filesize is setted by ->preSave().');
$conn->rollback();
コード例 #12
0
 protected function getImageFiles($files)
 {
     $images = array();
     $validImages = array();
     foreach ($files as $key => $file) {
         $file['name'] ? $images[$key] = $file : null;
     }
     if (!$images) {
         return $images;
     }
     try {
         $validator = new opValidatorImageFile(array('required' => false));
         foreach ($images as $key => $image) {
             $validImage = $validator->clean($image);
             $f = new File();
             $f->setFromValidatedFile($validImage);
             $validImages[$key] = $f;
         }
         return $validImages;
     } catch (sfValidatorError $e) {
         throw new opDiaryPluginAPIException($e->getMessage());
     }
 }