public function setup() { parent::setup(); unset($this['id']); unset($this['community_topic_id']); unset($this['member_id']); unset($this['number']); unset($this['created_at']); unset($this['updated_at']); if (opMobileUserAgent::getInstance()->getMobile()->isNonMobile()) { $images = array(); if (!$this->isNew()) { $images = $this->getObject()->getImagesWithNumber(); } $max = (int) sfConfig::get('app_community_topic_comment_max_image_file_num', 3); for ($i = 1; $i <= $max; $i++) { $key = 'photo_' . $i; if (isset($images[$i])) { $image = $images[$i]; } else { $image = new CommunityTopicCommentImage(); $image->setCommunityTopicComment($this->getObject()); $image->setNumber($i); } $imageForm = new opCommunityTopicPluginImageForm($image); $imageForm->getWidgetSchema()->setFormFormatterName('list'); $this->embedForm($key, $imageForm, '<ul id="community_topic_comment_' . $key . '">%content%</ul>'); } } $this->widgetSchema->setLabel('body', sfContext::getInstance()->getI18N()->__('Comment')); $this->setValidator('body', new opValidatorString(array('rtrim' => true))); }
public function executeCreate(opMailRequest $request) { $member = $this->getRoute()->getMember(); if (!$member) { return sfView::NONE; } $topic = Doctrine::getTable('CommunityTopic')->find($request['id']); if (!$topic || !$topic->isCreatableCommunityTopicComment($member->id)) { return sfView::NONE; } if ($topic->member_id !== $member->id) { $relation = Doctrine::getTable('MemberRelationship')->retrieveByFromAndTo($topic->member_id, $member->id); if ($relation && $relation->getIsAccessBlock()) { return sfView::NONE; } } $mailMessage = $request->getMailMessage(); $validator = new opValidatorString(array('rtrim' => true)); try { $body = $validator->clean($mailMessage->getContent()); } catch (Exception $e) { return sfView::ERROR; } $topicComment = new CommunityTopicComment(); $topicComment->setCommunityTopic($topic); $topicComment->setMember($member); $topicComment->setBody($body); $topicComment->save(); $num = (int) sfConfig::get('app_community_topic_comment_max_image_file_num', 3); $files = $this->getImageFiles($mailMessage, $num); $number = 0; foreach ($files as $file) { $number++; $image = new CommunityTopicCommentImage(); $image->setCommunityTopicComment($topicComment); $image->setFile($file); $image->setNumber($number); $image->save(); } opCommunityTopicToolkit::sendNotificationMail($topic->getCommunity(), $topic->getId(), 'topic', $topicComment->getMember()->getName(), $topic->getName(), $topicComment->getBody()); return sfView::NONE; }