/** * * @param PCRequest $request */ public function siteAction($request) { $param = $request->getParams(); $hostName = $request->dequeuePathComponent(); if (isset($hostName)) { $site = PCMapperWebsite::getSiteWithDomain($hostName); if (isset($site) == FALSE) { throw new PCExceptionController("Page not found", 404); } $identifier = $site->getIdentifier(); throw new PCExceptionRedirection("/sites/site?id=$identifier"); } if (isset($param['id']) == FALSE) throw new PCExceptionController("Page not found", 404); /** @value PCModelWebsite $site */ $site = PCModelManager::fetchObjectWithIdentifier(PCModelWebsite::getMapper(), $param['id'], NULL, TRUE); if (!isset($site)) { throw new PCExceptionController("Page not found", 404); } if ($site->cacheIsExpired()) { $site = PCMapperWebsite::recacheSiteReview($site); if (isset($site) == FALSE) { throw new PCExceptionController('Error caching', 500); } } $result = array(); $result['siteCategory'] = PCMapperCategory::nameFromIdentifier($site->getCategory()); $result['site_id'] = $site->getIdentifier(); $result['siteHost'] = $site->getUrl(); $result['reliability'] = $site->getReliability(); $result['contents'] = $site->getContents(); $result['usability'] = $site->getUsability(); $result['averageVote'] = $site->getVote(); $result['votesCount'] = $site->getNumber_of_votes(); $result['dateAdded'] = $site->getDate_added()->format("Y-m-d"); $reviews = PCMapperReview::getReviewsWithSiteIdentifier($site->getIdentifier(), 0); $reviewsList = array(); foreach ($reviews as $r) { $reviewArray = array(); $reviewArray["vote"] = sprintf("%.1f", $r->getVote()); $user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), $r->getUserIdentifier(), NULL, TRUE); $reviewArray["user"] = $user->getUsername(); $reviewArray["date_added"] = $r->getDate_added()->format("Y-m-d"); $reviewArray["comment"] = $r->getComment(); $reviewArray["reviewId"] = $r->getIdentifier(); $reviewArray["userId"] = $r->getUserIdentifier(); $reviewArray['reliability'] = sprintf("%.1f", $r->getReliabilityVote()); $reviewArray['contents'] = sprintf("%.1f", $r->getContentsVote()); $reviewArray['usability'] = sprintf("%.1f", $r->getUsabilityVote()); $reviewsList[] = $reviewArray; } $result['reviews'] = $reviewsList; $result['title'] = "WebSherpa - " . $site->getUrl(); return PCRendererHTML::rendererForView('host', $result); }
/** * Restituisce le recensioni legate ad un sito oppure ad un utente * @param PCRequest $request */ public function getSiteReviewsAction($request) { $params = $request->getParams(); if( isset($params['offset']) == FALSE) return new PCRendererJSON(array("error" => "missing param 'offset'"), 400); $offset = $params['offset']; if( isset($params['site_id'])){ $site_id = $params['site_id']; $result = array(); $reviews = PCMapperReview::getReviewsWithSiteIdentifier($site_id, $offset); foreach ($reviews as $r) { $tmp = array(); $tmp["vote"] = sprintf("%.1f", $r->getVote()); //XXX pensare ad un modo più efficente per risolvere gli identificativi $user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), $r->getUserIdentifier(), NULL, TRUE); $tmp["user"] = $user->getUsername(); $tmp["date_added"] = $r->getDate_added()->format("Y-m-d"); $tmp["comment"] = $r->getComment(); $tmp["reviewId"] = $r->getIdentifier(); $tmp["userId"] = $user->getIdentifier(); $tmp['reliability'] = sprintf("%.1f", $r->getReliabilityVote()); $tmp['contents'] = sprintf("%.1f", $r->getContentsVote()); $tmp['usability'] = sprintf("%.1f", $r->getUsabilityVote()); $result[] = $tmp; } return new PCRendererJSON($result); } if (isset($params['user_id'])) { $user_id = $params['user_id']; $result = array(); $user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), $user_id, NULL, TRUE); if (!isset($user)) new PCRendererJSON(array("error" => "wrong user identifier"), 400); // $user_name = $user->getUsername(); $reviews = PCMapperReview::getReviewsWithUserIdentifier($user_id, $offset); foreach ($reviews as $r) { $tmp = array(); //XXX pensare ad un modo più efficente per risolvere gli identificativi $site = PCModelManager::fetchObjectWithIdentifier(PCModelWebsite::getMapper(), $r->getSiteIdentifier(), NULL, TRUE); $tmp["vote"] = sprintf("%.1f",$r->getVote()); $tmp["site"] = $site->getDomain(); $tmp["date_added"] = $r->getDate_added()->format("Y-m-d"); $tmp["comment"] = $r->getComment(); $tmp["reviewId"] = $r->getIdentifier(); $tmp["siteId"] = $site->getIdentifier(); $tmp['reliability'] = sprintf("%.1f",$r->getReliabilityVote()); $tmp['contents'] = sprintf("%.1f",$r->getContentsVote()); $tmp['usability'] = sprintf("%.1f",$r->getUsabilityVote()); $result[] = $tmp; } return new PCRendererJSON($result); } return new PCRendererJSON(array("error" => "missing param 'site_id' or 'user_id"), 400); }