Example #1
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;
 }
Example #2
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);
    }
 public function allAction($request)
 {
     $all = PCMapperCategory::getAll();
     return new PCRendererJSON($all);
 }