コード例 #1
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));
 }