/** * * @param PCRequest $request * @param PCAuthCookiesAdapter $adapter */ public function __construct($request, $adapter = NULL) { parent::__construct($request); $this->adapter = ($adapter == NULL ? new PCAuthDefaultCookiesAdapter() : $adapter); $this->application = PCModelManager::fetchObjectWithIdentifier(PCModelApplication::getMapper(), PCModelApplication::WEBSITE_APP_ID, NULL, TRUE); $this->setupSession(); $this->authorize(); }
/** * Returns TRUE if the category exists * @param string $identifier * @retrun bool */ public static function existsCategoryWithIdentifier($identifier){ $category = PCModelManager::fetchObjectWithIdentifier(PCModelCategory::getMapper(), $identifier, NULL, TRUE); return isset($category); }
/** * Crea una nuova password(aggiorna il db) e la restituisce. restituisce false in caso negativo * @param PCModelUser $user_id l' id dell' utente * @param string $hash l' hash inviato dall'utente * @param PCModelUser * @return boolean|string */ public static function handleRepassRequest($user_id, $hash, &$user_to_ret) { $keys = array('request_hash'=>$hash, 'user_id'=>$user_id); $items = PCModelManager::fetchModelObjectInstances(PCModelRepass::getMapper(), $keys, NULL, TRUE); if (count($items) <= 0) { return FALSE; } $item = $items[0]; if ($item == NULL || $item->isExpired()) { c_dump("SCADUTA"); return FALSE; } $bindigngs = array(":h" => $hash, ":user"=> $user_id); PCModelManager::deleteObject(PCModelRepass::getMapper(), "request_hash = :h AND user_id = :user", $bindigngs); $newPwd = PCMapperRepass::rand_password(8); $model_user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), $item->getUser_id(), NULL, TRUE); if($model_user == NULL){ $id = $item->getUser_id(); error_log("User non presente (user_id: $id )"); return FALSE; } $newPwdHash = PCAuth::computeHashForString($newPwd); if(PCMapperUser::changePasswordForUser($model_user, $newPwdHash) == FALSE){ return FALSE; } $user_to_ret = $model_user; return $newPwd; }
public function __construct($request) { $this->request = $request; $this->application = PCModelManager::fetchObjectWithIdentifier(PCModelApplication::getMapper(), PCModelApplication::WEBSITE_APP_ID, NULL, TRUE); $this->setupSession(); }
/** * Restituisce l'utente connesso attualmente (se disponibile) * @return ModelUser */ public static function getCurrentUser(){ if(static::$current_user != NULL) return static::$current_user; if(isset(static::$current_user_identifier)){ $user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), static::$current_user_identifier, NULL, TRUE); static::$current_user = $user; return $user; } return NULL; }
/** * * @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); }
/** * * @param PCHelperSocialAdapter $service_adapter * @return PCModelUserOauth */ public static function getOauthUserWithIdentifier($service_adapter) { $keys = array( "oauth_provider" => $service_adapter->getServiceType(), "oauth_uid" => $service_adapter->getServiceUserIdentifier() ); $instances = PCModelManager::fetchModelObjectInstances(PCModelUserOauth::getMapper(), $keys); if (count($instances) == 0) return NULL; $result = $instances[0]; if(isset($result['oauth_uid']) && $result['user_identifier'] == '0') return FALSE; $user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), $result['user_identifier'], NULL, TRUE); if (isset($user)) { $bindings = array( "oauth_token" => $service_adapter->getTokenValue(), "oauth_secret" => $service_adapter->getSecretValue(), ); if( PCModelManager::updateObject(PCModelUserOauth::getMapper(), $bindings, "identifier = :iddd",array(":iddd"=>$result['identifier'])) === FALSE) return NULL; $service_adapter->addOauthInfoToUser($user); } return $user; }
/** * * @param string $url * @param PCModelUser $user * @param string $comment * @param string $usability * @param string $contents * @param string $reliability * @param string $categoty * @param string $language * @param string $error * @param string $siteIdentifier * @return bool */ public static function addSiteWithReview($url, $user, $comment, $usability, $contents, $reliability, $category, $language, &$error, $siteIdentifier = null) { //estraggo l' hostname dell'URL //Se è stato specificato l' identificativo del sito if (!empty($siteIdentifier)) { $site = PCModelManager::fetchObjectWithIdentifier(PCModelWebsite::getMapper(), $siteIdentifier, NULL, TRUE); if (isset($site) == FALSE) { $error = "Site not found"; return FALSE; } $error3 = NULL; if (PCMapperReview::addReviewForSite($site, $user, $comment, $usability, $contents, $reliability, $language, $error3)) { return TRUE; } $error = $error3; return FALSE; } //se p stato specificato l'URL del sito $parsedUrl = parse_url($url); $scheme = $parsedUrl['scheme']; if ($scheme == NULL || strcmp($scheme, "http") != 0 && strcmp($scheme, "https") != 0) { $scheme = 'http'; } $host = $parsedUrl['host']; if ($host == NULL) { $error = "URL not valid"; return FALSE; } $site = static::getSiteWithDomain($host); //costruisco l'URL da verificare(reggiungibilità) $buildedUrl = $scheme . "://" . $host; //se il sito non è presente lo aggiungo if ($site == NULL) { if (PCMapperCategory::existsCategoryWithIdentifier($category) == FALSE) { $error = "Category is not valid"; return FALSE; } $tld = static::getTLDFromURL($buildedUrl); if (static::checkForWebsiteReachability($buildedUrl) == FALSE) { $error = "Error: site not reachable"; return FALSE; } $date_added = new DateTime('now', new DateTimeZone('UTC')); $date_added_mysql = $date_added->format('Y-m-d H:i:s'); $values = array('domain' => $host, 'date_added' => $date_added_mysql, 'tld' => $tld, 'category' => $category, 'user' => $user->getIdentifier()); if (PCModelManager::insertObject(PCModelWebsite::getMapper(), $values)) { $site = static::getSiteWithDomain($host); } else { $error = "Error adding website, please try later"; return FALSE; } } if ($site == NULL) { $error = "Error adding website, please try later"; return FALSE; } $error2 = NULL; if (PCMapperReview::addReviewForSite($site, $user, $comment, $usability, $contents, $reliability, $language, $error2)) { return TRUE; } $error = $error2; return FALSE; }
/** * 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); }