/** * action unrate * * @param int $uid uid * @param string $hash hash * @param bool $ajax is ajax request? * @param string $settings settings * @return void */ public function unrateAction($uid = 0, $hash = "", $ajax = FALSE, $settings = NULL) { if ($uid > 0) { $item = $this->ratingRepository->findByUid($uid); if (is_object($item)) { if ($hash == $item->getHash()) { $redirectUri = $item->getUrlForeign() . "#ratingform"; // remove item from database $this->ratingRepository->remove($item); $this->persistenceManager->persistAll(); // add message $messages[] = ["icon" => '<span class="glyphicon glyphicon-ok icon-alert" aria-hidden="true"></span>', "title" => LocalizationUtility::translate(self::LLPATH . 'pi2.action_unrate', $this->extensionName), "text" => LocalizationUtility::translate(self::LLPATH . 'pi2.action_unrate.success', $this->extensionName), "type" => FlashMessage::OK]; // set flash messages $this->helperService->setFlashMessages($this, $messages); // end request if (!$ajax) { // redirect to target url $this->redirectToUri($redirectUri); } } } else { $this->view = NULL; } } else { $this->view = NULL; } }
/** * Get Info * * @param int $uid * @param string $tablenames * @param string $ratingmode * @param bool $extended * @param string $as output variable * @return array info */ public function render($uid, $tablenames, $ratingmode = "like_dislike", $extended = FALSE, $as = NULL) { $info = []; $extendedInfo = []; $filter['uid_foreign'] = $uid; $filter['tablenames'] = $tablenames; $filter['confirmed'] = true; if (in_array($ratingmode, array("like_dislike", "stars"))) { $info['rating'] = $this->ratingRepository->findRatingInfos($filter, $ratingmode)[0]; if ($ratingmode == "like_dislike") { if ($info['rating']['likes'] > 0) { $info['rating']['likes_percent'] = round($info['rating']['likes'] / $info['rating']['count'] * 100); } if ($info['rating']['dislikes'] > 0) { $info['rating']['dislikes_percent'] = round($info['rating']['dislikes'] / $info['rating']['count'] * 100); } } if ($extended) { $infosPerRating = $this->ratingRepository->findInfosPerRating($filter, $ratingmode); if (is_array($infosPerRating)) { foreach ($infosPerRating as $infoPerRating) { $extendedInfo[] = ["rating" => $infoPerRating['rating'], "count" => $infoPerRating['count'], "percent" => round($infoPerRating['count'] / $info['rating']['count'] * 100)]; } } } } if ($ratingmode == "stars" && !$info['rating']['average']) { $info['rating']['average'] = 0; } if ($extended) { $info['rating']['extended'] = $extendedInfo; } if (TRUE === empty($as)) { return $info; } else { $this->templateVariableContainer->add($as, $info); } }