/** * * @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; }
/** * @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; }
/** * * @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); }
/** * * @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); }
/** * * @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; }
/** * 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); }
/** * * @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; }