/** * Return kanji data for given id (frame number). * * Must sanitize kanji id. * * @param Integer $id Frame number (in the future will be unicode) * @return Object Kanji rowdata as object, or FALSE */ public static function getKanjiById($id) { if (!BaseValidators::validateInteger($id)) { return false; } self::getInstance()->select()->where('framenum = ?', $id)->query(); return self::$db->fetchObject(); }
/** * Ajax handler for Shared Stories component. * * uid & sid identify the story to vote/report/copy. * * Post: * * request "star": star story * "report": report story * "copy": copy story * uid User id of the Story's author * sid Story id (framenum) * * @return */ public function executeAjax($request) { if ($request->getMethod() === coreRequest::GET) { // reload component $framenum = $request->getParameter('framenum', false); if (!BaseValidators::validateInteger($framenum)) { throw new rtkAjaxException('Bad request.'); } $kanjiData = (object) KanjisPeer::getKanjiById($framenum); return $this->renderComponent('study', 'SharedStories', array('framenum' => $framenum, 'kanjiData' => $kanjiData)); } else { $sRequest = $request->getParameter('request', ''); $sUid = $request->getParameter('uid'); $sSid = $request->getParameter('sid'); if (!preg_match('/^(star|report|copy)$/', $sRequest) || !BaseValidators::validateInteger($sUid) || !BaseValidators::validateInteger($sSid)) { throw new rtkAjaxException('Badrequest'); } if ($sRequest === 'copy') { // get unformatted story with original tags for copy story feature $oStory = StoriesPeer::getStory($sUid, $sSid); if ($oStory) { $oJSON = new stdClass(); $oJSON->text = $oStory->text; return $this->renderText(coreJson::encode($oJSON)); } } elseif ($sRequest === 'star') { $oJSON = StoryVotesPeer::starStory($this->getUser()->getUserId(), $sUid, $sSid); return $this->renderText(coreJson::encode($oJSON)); } elseif ($sRequest === 'report') { $oJSON = StoryVotesPeer::reportStory($this->getUser()->getUserId(), $sUid, $sSid); return $this->renderText(coreJson::encode($oJSON)); } } throw new rtkAjaxException('Badrequest'); }
/** * Summary Table ajax * * @return */ public function executeSummaryTable($request) { $ts_start = $request->getParameter('ts_start', 0); $this->forward404Unless(BaseValidators::validateInteger($ts_start)); return $this->renderComponent('review', 'summaryTable', array('ts_start' => $ts_start)); }