/**
  *  * Posta sulla timeline di Facebook (se possibile)
  * @param array $reviewDescription
  * @param PCModelWebsite $onSite
  * @param PCModelUserOauth $user
  * @return boolean
  */
  public static function postReviewToFacebook($reviewDescription, $onSite, $user){
     PCAutoloader::importLibrary('facebook');
     
     $oauth = $user->getOauthStore();
     if($oauth == null){
        
         return FALSE;
     }
    
     $domain = $onSite->getDomain();
     $usa = $reviewDescription['usability'];
     $rel = $reviewDescription['reliability'];
     $cont = $reviewDescription['contents'];
     $vote = sprintf("%.1f",(($usa+$rel+$cont)/3.0));
     $text = "I've just reviewed $domain (Vote: $vote) using http://websherpa.me : ".$reviewDescription['comment'];
     
     $facebook = new Facebook(array(
         "appId" => FB_APP_ID,
         "secret" => FB_APP_SECRET,
         "cookie" => true
     ));
     
     $facebook->setAccessToken($oauth['oauth_token']);
     
     try {
         $result = $facebook->api("/me/feed", 'post', array(
             'message' => $text,
             'name' => 'WebSherpa',
             'link' =>  "http://websherpa.me/sites/site?id=".$onSite->getIdentifier(),
             'picture' => 'http://websherpa.me/public/fresh/img/logo_footer.png',
         ));
        
         return isset($result['id']);
         
     } catch (FacebookApiException $exc) {
         c_dump($exc);
         return FALSE;
     }
     return FALSE;
 }
Exemplo n.º 2
0
 /**
  * 
  * @param string $user_id
  * @param PCModelWebsite $site
  * @return PCModelReview
  */
 public static function lastReviewForSite($user_id, $site){
     if($user_id == NULL) return NULL;
     $keys = array('user_identifier' => $user_id, 'site_identifier'=> $site->getIdentifier());
     $reviews = PCModelManager::fetchModelObjectInstances(PCModelReview::getMapper(), $keys);
     
     if(count($reviews) <= 0){
         return NULL;
     }
     return $reviews[0];
 }
Exemplo n.º 3
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.º 4
0
 /**
  * @XXX remove direct database interaction
  * @param PCModelWebsite $site
  */
 public static function recacheSiteReview($site)
 {
     //error_log('RECACHING SITE INFO: '.$site->getIdentifier());
     $select = "SELECT avg(usability) as usability, avg(reliability) as reliability,";
     $select .= " avg(contents) as contents, count(identifier) as count ";
     $mapper = PCModelReview::getMapper();
     $select .= " FROM " . $mapper->getTableName() . " WHERE site_identifier = :id";
     $pdo = PCDatabase::getSharedDatabaseConnection();
     $prepared = $pdo->prepare($select);
     $result = $prepared->execute(array(":id" => $site->getIdentifier()));
     if ($result === FALSE) {
         return NULL;
     }
     $item = $prepared->fetch(PDO::FETCH_ASSOC);
     if (!isset($item)) {
         return NULL;
     }
     $usability = (double) $item['usability'];
     $reliability = (double) $item['reliability'];
     $contents = (double) $item['contents'];
     $count = (double) $item['count'];
     $cache_time = new DateTime('now', new DateTimeZone('UTC'));
     $keys = array('usability' => $usability, 'reliability' => $reliability, 'contents' => $contents, 'number_of_votes' => $count, 'cached' => $cache_time->format('Y-m-d H:i:s'));
     $condition = "identifier = :id";
     $bindings = array(':id' => $site->getIdentifier());
     $websiteMapper = PCModelWebsite::getMapper();
     if (PCModelManager::updateObject($websiteMapper, $keys, $condition, $bindings)) {
         $site->cached_date = $cache_time;
         $site->contents = $contents;
         $site->number_of_votes = $count;
         $site->reliability = $reliability;
         $site->usability = $usability;
         PCCache::cacheProvider()->setItem($site, $websiteMapper->getTableName() . $site->getIdentifier());
         return $site;
     }
     return NULL;
 }
 /**
  * Posta sulla timeline di twitter
  * @param array $reviewDescription
  * @param PCModelWebsite $onSite
  * @param PCModelUserOauth $user
  * @return boolean
  */
 public static function postReviewToTwitter($reviewDescription, $onSite ,$user){
     PCAutoloader::importLibrary('twitter');
     
     $oauth = $user->getOauthStore();
     if($oauth == null) return FALSE;
     
     $connection = new TwitterOAuth(TW_CONSUMER_KEY, TW_CONSUMER_SECRET, $oauth['oauth_token'], $oauth['oauth_secret']);
     $domain = $onSite->getDomain();
     $usa = $reviewDescription['usability'];
     $rel = $reviewDescription['reliability'];
      $cont = $reviewDescription['contents'];
      $vote = sprintf("$.1f",(($usa+$rel+$cont)/3.0));;
     $text = "I've just reviewed http://$domain (Vote: $vote) using @WebSherpa_me http://websherpa.me/sites/site?id=".$onSite->getIdentifier();
     
     $status = $connection->post('statuses/update', array('status' => $text));
     if(isset($status->errors)) return FALSE;
     return TRUE;
 }
Exemplo n.º 6
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);
    }