/** * @param PCRequest $request */ public function profileAction($request) { $auth = $request->getAuthHandler(); $auth->authorize(); $params = $request->getParams(); if (isset($params['id']) && $auth->isAuthorized() && (strcmp($params['id'], $auth->getUserIdentifier()) == 0)) { $result = array(); $user = PCModelUser::getCurrentUser(); $result['username'] = $user->getUsername(); $result['name'] = $user->getName(); $result['surname'] = $user->getSurname(); $result['member_since'] = $user->getCreation_date()->format("Y-m-d"); $result['user_id'] = $user->getIdentifier(); $result['email'] = $user->getEmail(); $result['title'] = "WebSherpa - " . $user->getUsername(); return PCRendererHTML::rendererForView('user', $result); } return null; }
/** * * @param PCRequest $request * @param PCModelApplication $application * @return bool */ public function doLogin($request, $application) { $param = $request->getParams(); $userName = $param['uname']; $pwd = $param['pwd']; $keys = array('username' => $userName, "account_type" => PCModelUser::$TYPE_DEFAULT); $user_array = PCModelManager::fetchModelObjectInstances(PCModelUser::getMapper(), $keys, NULL, TRUE); $user = $user_array[0]; if (isset($user) && strcmp($pwd, $user->getPassword()) == 0) { $secret = $application->getAppSecret(); $appId = $application->getIdentifier(); $time = time(); $cookieValue = PCAuth::computeHashForString($userName . $time . $secret); $distantFuture = PCResponseCookie::getDistantFuture(); if (PCMapperToken::setTokenForUserWithIdentifier($user->getIdentifier(), $appId, $cookieValue, $distantFuture)) { $_SESSION['user'] = $this->user_id = $user->getIdentifier(); $presence_cookie = PCResponseCookie::lifetimeCookie("presence_c", $cookieValue); //setcookie("presence_c", $cookieValue, $expirationTime,"/"); $user_cookie = PCResponseCookie::lifetimeCookie("user", $user->getIdentifier()); //setcookie("user",$user->getIdentifier(), $expirationTime,"/"); $response = PCResponse::currentResponse(); $response->addCookie($presence_cookie); $response->addCookie($user_cookie); } else { return FALSE; } return TRUE; } return FALSE; }
/** * * @param PCRequest $request */ public function repassAction($request){ $params = $request->getParams(); $user_id = $params['id']; $hash = $params['val']; $model_user = NULL; $result = PCMapperRepass::handleRepassRequest($user_id, $hash, $model_user); if($result == FALSE){ return NULL; } $mail = PCEmailBuilder::buildEmailForPasswordNotification($result, $model_user); PCEmailSender::sendMail($mail); $content = array(); $content['title'] = "WebSherpa"; $content['pageContent']= "<h1>A new password has been sent to your e-mail address (".$model_user->getEmail().")</h1>"; return PCRendererHTML::rendererForView('flexiblePage', $content); }
/** * @param PCRequest $request */ public function facebookCallbackAction($request) { PCAutoloader::importLibrary('facebook'); $facebook = new Facebook(array( "appId" => FB_APP_ID, "secret" => FB_APP_SECRET, "cookie" => true )); $params = $request->getParams(); $user_profile = NULL; try { $user = $facebook->getUser(); if (isset($user)) { $user_profile = $facebook->api('/me'); } } catch (FacebookApiException $e) { c_dump($_GET); error_log("AAAA".$e); throw new PCExceptionRedirection("/page/register"); } if (isset($params['reg_username'])){ if (PCMapperUser::validateUsername($params['reg_username']) == FALSE) { $cont = array("title" => "WebSherpa - Insert Username", "text_error" => "Insert a valid Username; min 6 characters use only characters and numbers and \"_\"", "show_email" => TRUE); return PCRendererHTML::rendererForView('insertUname', $cont); } if (count(PCModelManager::fetchModelObjectInstances(PCModelUser::getMapper(), array("username" => $params['reg_username']))) != 0) { $cont = array("title" => "WebSherpa - Insert Username", "text_error" => "Username already used, please choose another username.", "show_email" => TRUE); return PCRendererHTML::rendererForView('insertUname', $cont); } $adapter = new PCHelperSocialAdapterFacebook($facebook, $user_profile, $params['reg_username']); if($request->getAuthHandler()->authorizeOauthUser($adapter)){ throw new PCExceptionRedirection("/"); } throw new PCExceptionRedirection("/page/register"); } else{ $adapter = new PCHelperSocialAdapterFacebook($facebook, $user_profile); if($request->getAuthHandler()->authorizeOauthUser($adapter) === FALSE){ return PCRendererHTML::rendererForView('insertUname', array("title" => "WebSherpa - Insert Username")); } throw new PCExceptionRedirection("/"); } }
/** * * @param PCRequest $request */ public function registerAction($request) { require_once __EXTERNAL_LIBRARIES__ . '/recaptcha/recaptchalib.php'; $auth = $request->getAuthHandler(); if ($auth->isAuthorized()) { return new PCRendererJSON(array("error" => "you can't register a new user while logged"), 400); } $attributes = $request->getParams(); $privatekey = "6Lfm39cSAAAAAFpyN0tQr4TYNt1zqiaHn9E22lYb"; $resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $attributes["recaptcha_challenge_field"], $attributes["recaptcha_response_field"]); if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrectly error_log($resp->error); return new PCRendererJSON(array("captcha_error" => "Incorrect Captcha")); } if (!isset($attributes['username']) || !isset($attributes['name']) || !isset($attributes['surname']) || !isset($attributes['email']) || !isset($attributes['password'])) { throw new PCExceptionAuth("Missing param", 400); } $inputError = NULL; if (PCHelperValidator::validatePassword($attributes['password'], $inputError) == FALSE) { return new PCRendererJSON(array("error" => $inputError), 400); } if (PCHelperValidator::validateUsername($attributes['username'], $inputError) == FALSE) { return new PCRendererJSON(array("error" => $inputError), 400); } if (PCHelperValidator::validateName($attributes['name'], $inputError) == FALSE) { return new PCRendererJSON(array("error" => $inputError), 400); } if (PCHelperValidator::validateSurname($attributes['surname'], $inputError) == FALSE) { return new PCRendererJSON(array("error" => $inputError), 400); } if (PCHelperValidator::validateEmail($attributes['email'], $inputError) == FALSE) { return new PCRendererJSON(array("error" => $inputError), 400); } $username = $attributes['username']; $name = $attributes['name']; $surname = $attributes['surname']; $email = $attributes['email']; $password = $attributes['password']; $store = array(); $store['username'] = $username; $store['name'] = $name; $store['surname'] = $surname; $store['email'] = $email; $store['password'] = PCAuth::computeHashForString($password); $error = NULL; if (PCMapperUser::createUserWithAttributes($store, $error)) { if (PCConfigManager::sharedManager()->getBoolValue('NOTIF_ON_REGISTER')) { PCHelperNotificationSender::sendPushNotificationToAdmin("User Registered", "uname: {$username} Name: {$name} Sur: {$surname} mail: {$email}"); } return new PCRendererJSON(array("OK" => "User added")); } return new PCRendererJSON(array("error" => $error), 400); }
/** * * @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); }