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