Ejemplo n.º 1
0
 /**
  * Return EditStory component based on GET or POST request.
  * 
  * PARAMS
  *   framenum       Valid kanji id (frame number)
  *   kanjiData      Kanji data for kanji id
  *   reviewMode     True if called from the Review page
  *   
  * POST  requests to update the story for current user.
  * 
  *   character      Current kanji (utf8)
  *   chkPublic      Public story
  *   txtStory       Story
  * 
  * 
  * @return 
  * @param object $request
  */
 public function execute($request)
 {
     if ($request->getMethod() !== coreRequest::POST) {
         // get user's story
         $story = StoriesPeer::getStory($this->getUser()->getUserId(), $this->framenum);
         if ($story) {
             $request->getParameterHolder()->add(array('txtStory' => $story->text, 'chkPublic' => $story->public));
         }
     } else {
         $validator = new coreValidator($this->getActionName());
         if ($validator->validate($request->getParameterHolder()->getAll())) {
             if ($request->hasParameter('doUpdate')) {
                 $txtStory = trim($request->getParameter('txtStory', ''));
                 $txtStory = strip_tags($txtStory);
                 // delete empty story
                 if (empty($txtStory)) {
                     StoriesPeer::deleteStory($this->getUser()->getUserId(), $this->framenum);
                 } else {
                     StoriesPeer::updateStory($this->getUser()->getUserId(), $this->framenum, array('text' => $txtStory, 'public' => $request->hasParameter('chkPublic') ? 1 : 0));
                 }
                 $request->setParameter('txtStory', $txtStory);
             }
         }
     }
     // set state
     $request->setParameter('framenum', $this->framenum);
     if (!$request->hasParameter('reviewMode')) {
         $this->isRestudyKanji = ReviewsPeer::isRestudyKanji($this->getUser()->getUserId(), $this->framenum);
         $this->isRelearnedKanji = LearnedKanjiPeer::hasKanji($this->getUser()->getUserId(), $this->framenum);
     }
     $this->formatted_story = StoriesPeer::getFormattedStory($request->getParameter('txtStory', ''), $this->kanjiData->keyword, true);
     return coreView::SUCCESS;
 }