コード例 #1
0
ファイル: PCMapperReview.php プロジェクト: Natio/WebSherpa
 /**
  * XXX rimuovere utilizzo diretto db
  * @param string $user_identifier
  * @return array
  */
 public static function getUserAverageAndCount($user_identifier){
     
     $mapper = PCModelReview::getMapper();
     
     $pdo = PCDatabase::getSharedDatabaseConnection();
     $select = "SELECT avg(usability) as usability, avg(reliability) as reliability,";
     $select .= " avg(contents) as contents, count(contents) as tot FROM ".$mapper->getTableName();
     $select .= " WHERE user_identifier = :id ;";
     
     $prepared = $pdo->prepare($select);
     
     
     $result = $prepared->execute(array(':id'=> $user_identifier));
     
     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'];
     $tot = (int)$item['tot'];
     $avg = ($usability + $reliability + $contents )/3.0;
     
     return array(
         'avg'=>$avg, 'tot'=>$tot,
         'usability'=>$usability,
         'reliability'=>$reliability,
         'contents'=>$contents
             );
     
 }
コード例 #2
0
ファイル: PCMapperWebsite.php プロジェクト: Natio/WebSherpa
 /**
  * @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;
 }