Exemplo n.º 1
0
 /**
  * 
  * @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();
 }
Exemplo n.º 2
0
 /**
  * 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);
 }
Exemplo n.º 3
0
     /**
     * 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;
        
    }
Exemplo n.º 4
0
 public function __construct($request) {
     $this->request = $request;
     $this->application = PCModelManager::fetchObjectWithIdentifier(PCModelApplication::getMapper(), PCModelApplication::WEBSITE_APP_ID, NULL, TRUE);
     $this->setupSession();
 }
Exemplo n.º 5
0
    /**
     * 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;
    }
Exemplo n.º 6
0
    /**
     * 
     * @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);
    }
Exemplo n.º 7
0
    /**
     * 
     * @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;
    }
Exemplo n.º 8
0
 /**
  * 
  * @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;
 }
Exemplo n.º 9
0
    /**
     * 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);
    }