示例#1
0
 /**
  * 
  * @param string $email
  * @param PCModelUser $userValue
  * @param string $error
  * @return string|FALSE
  */
 public static function createRepassRequest($email, &$userValue, &$error){
     if(PCMapperUser::validateMail($email) == FALSE){
         $error = "Please insert a valid email1";
         return FALSE;
     }
     
     $users = PCModelManager::fetchModelObjectInstances(PCModelUser::getMapper(), array('email' => $email), NULL, TRUE);
     if(count($users) == 0){
         $error = "Please insert a valid email";
         return FALSE;
     }
     $user = $users[0];
     $userValue = $user;
     
     
     $token = PCModelToken::generateToken();
     
     $expirationDate = new DateTime("now",new DateTimeZone('UTC'));
     $expirationDate->add(new DateInterval("PT20M"));
     $expiration_mysql_format = $expirationDate->format('Y-m-d H:i:s');
             
     $values = array('expiration_date' => $expiration_mysql_format, "user_id" => $user->getIdentifier(), 'request_hash' => $token);
     
     $result = PCModelManager::insertObject(PCModelRepass::getMapper(), $values, array('expiration_date'));
     
     if($result === FALSE){
         $error = "Please insert a valid email";
         return FALSE;
     }
     
     
     return $token;
 }
示例#2
0
 /**
  * @param PCHelperSocialAdapter $adapter
  * @return PCModelUserOauth
  */
 public static function createUserForOauthServiceWithAdapter($adapter){
     $values = $adapter->getValuesForCreatingUser();
     $mapper = PCModelUser::getMapper();
     //creo il 'vero' utente nel db
     if (PCModelManager::insertObject($mapper, $values) == FALSE)
         return NULL;
     
     $instances = PCModelManager::fetchModelObjectInstances($mapper, $values);
     if(count($instances) == 0) return NULL;
     $user = $instances[0];
     
     $user_identifier = $user->getIdentifier();
     
     $token = $adapter->getTokenValue();
     $secret = $adapter->getSecretValue();
     $service_u_id = $adapter->getServiceUserIdentifier();
     $service_type = $adapter->getServiceType();
     
     if(PCMapperUserOauth::insertUserOauth($service_type, $service_u_id, $token, $secret, $user_identifier)){
         $adapter->addOauthInfoToUser($user);
         
         if (PCConfigManager::sharedManager()->getBoolValue('NOTIF_ON_REGISTER')) {
             $email = $values['email'];
             $surname = $values['surname'];
             $name = $values['name'];
             $username = $values['username'];
             $serv = $adapter->getServiceName();
             PCHelperNotificationSender::sendPushNotificationToAdmin("User Registered", "uname: $username Name: $name Sur: $surname mail: $email service_id: $service_u_id via: $serv");
         }
         
         return $user;
     }
     return NULL;
 }
示例#3
0
 /**
  * 
  * @param string $userId
  * @param string $reviewId
  * @param string $text
  * @return bool
  */
 public static function createReport($userId, $reviewId, $text){
     $dateAdded = new DateTime('now', new DateTimeZone('UTC'));
     $values = array(
         'user_identifier'=> $userId,
         "review_identifier"=>$reviewId,
         'text'=>$text , 
         "date_added"=>$dateAdded->format('Y-m-d H:i:s')
             );
     return PCModelManager::insertObject(PCModelReport::getMapper(), $values);
 }
示例#4
0
    /**
     * 
     * @param string $identifier
     * @param string $application
     * @param string $token
     * @param DateTime $date
     */
    
    public static function setTokenForUserWithIdentifier($identifier, $application, $token, $date){
        
        $values = array();
        $values['app_identifier'] = $application;
        $values['user_identifier'] = $identifier;
        $values['token_string'] = $token;
        $values['token_expiration'] = $date->format("Y-m-d H:i:s");

        $onUpdate = array('token_string','token_expiration');
        
        return PCModelManager::insertObject(PCModelToken::getMapper(), $values, $onUpdate);
                
    }
示例#5
0
 /**
  * 
  * @param PCModelWebsite $site
  * @param PCModelUser $user
  * @param string $comment
  * @param string $usability
  * @param string $contents
  * @param string $reliability
  * @param string $language
  * @param string $error
  * @return bool
  */
 public static function addReviewForSite($site, $user, $comment, $usability, $contents, $reliability, $language, &$error) {
     if (!isset($site) || !isset($site)){
         die("Internal Inconsistency");
     }
     
     if(!PCHelperValidator::validateLanguageCode($language)){
         $error = "Invalid language code";
         return FALSE;
     }
     $language = strtoupper($language);
     $commentLen = strlen($comment);
     if ($commentLen < 5 || $commentLen > PCModelReview::maxCommentLength) {
         
         $error = "Invalid comment length, ".( ($commentLen < 5) ? " minumum length is 6 characters" : "maximum length is 200 characters");
         return FALSE;
     }
     
     $usa = floatval($usability);
     $cont = floatval($contents);
     $rel = floatval($reliability);
     
     if($usa < PCModelReview::minVote ||$usa > PCModelReview::maxVote){
         $error = "usability is not valid";
         return FALSE;
     }
     if($cont < PCModelReview::minVote ||$cont > PCModelReview::maxVote){
          $error = "contents is not valid";
         return FALSE;
     }
     if($rel < PCModelReview::minVote ||$rel > PCModelReview::maxVote){
          $error = "reliability is not valid";
         return FALSE;
     }
     
     $date_added = new DateTime('now', new DateTimeZone('UTC'));
     $date_added_mysql = $date_added->format('Y-m-d H:i:s');
     
     $values = array(
         'site_identifier' => $site->getIdentifier(),
         'user_identifier' => $user->getIdentifier(),
         'comment' => $comment,
         'usability' => $usa,
         'reliability' => $rel,
         'contents' => $cont,
         'language_code' => $language,
         'date_added' => $date_added_mysql
     );
     
     if($user->getAccountType() !== PCModelUser::$TYPE_DEFAULT && PCConfigManager::sharedManager()->getBoolValue('SOCIAL_POST_ON_REVIEW') ){
         $user->postReviewToTimeline($values,$site);
     }
     
     $dupUpdate = array('language_code','date_added','contents','reliability','usability','comment');
     
     if(PCModelManager::insertObject(PCModelReview::getMapper(), $values, $dupUpdate)){
         return TRUE;
     }
     $error = "Error adding review please try later";
     return FALSE;
 }
示例#6
0
    /**
     * XXX evitare utilizzo diretto del database
     * @param array $attributes
     * @param string $error
     * @return boolean
     */
    public static function createUserWithAttributes($attributes, &$error) {
        $username = $attributes['username'];
        $name = $attributes['name'];
        $surname = $attributes['surname'];
        $email = $attributes['email'];
        $password = $attributes['password'];

        if (static::validateName($name) == false) {
            $error = "Invalid name";
            return false;
        }
        if (static::validateSurname($surname) == false) {
            $error = "Invalid surname";
            return false;
        }
        if (static::validateUsername($username) == FALSE) {
            $error = "username is not valid (min 5, max 20 chars)";
            return false;
        }
        if (static::validateMail($email) == FALSE) {
            $error = "email already registered";
            return FALSE;
        }

        $mapper = PCModelUser::getMapper();

        $pdo = PCDatabase::getSharedDatabaseConnection();

        $select = "SELECT username ,email FROM " . $mapper->getTableForInsertUpdate() . " WHERE (username = :uname OR email = :mail) AND account_type = :type;";
        $prepared = $pdo->prepare($select);

        if ($prepared === FALSE) {
            c_dump($prepared->errorInfo());
            return FALSE;
        }

        $result = $prepared->execute(array(':uname' => $username, ':mail' => $email, ':type' => PCModelUser::$TYPE_DEFAULT));

        if ($result === FALSE) {
            ob_start();
            print_r($prepared->errorInfo());
            $prepared->debugDumpParams();
            $contents = ob_get_contents();
            ob_end_clean();
            error_log($contents);
            return FALSE;
        }

        while ($item = $prepared->fetch(PDO::FETCH_ASSOC)) {

            if (strcmp($item['email'], $email) == 0) {
                $error = "email already registered";
                return FALSE;
            } else if (strcmp($item['username'], $username) == 0) {
                $error = "username already registered";
                return FALSE;
            }
        }

        $date = new DateTime('now', new DateTimeZone('UTC'));
        

        $keys = array(
            'creation_date' => $date->format('Y-m-d H:i:s'),
            'username' => $username,
            'penalities' => '0',
            'surname' => $surname,
            'name' => $name,
            'email' => $email,
            'password' => $password
        );



        return PCModelManager::insertObject($mapper, $keys);
    }
示例#7
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;
 }