285 lines
10 KiB
PHP
285 lines
10 KiB
PHP
|
<?php
|
||
|
|
||
|
class ClassApp extends ClassUser {
|
||
|
public function __construct(){}
|
||
|
public function __destruct(){}
|
||
|
|
||
|
private function _checkIfVipOfferActive(){
|
||
|
$config = ClassConfig::getConfig();
|
||
|
//$oPDOLink = ClassConfig::databaseConnect();
|
||
|
if($config['is_vip_offer_active']==='true'){
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private function _checkIfEverythingForFreeActive(){
|
||
|
$config = ClassConfig::getConfig();
|
||
|
//$oPDOLink = ClassConfig::databaseConnect(); //FIX is this code still needed?
|
||
|
if($config['is_everything_for_free_offer_active']=='true'){
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function listActiveApps(){
|
||
|
$oPDOLink = ClassConfig::databaseConnect();
|
||
|
$sql = "
|
||
|
SELECT *
|
||
|
FROM app_app
|
||
|
WHERE is_active=TRUE;
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array());
|
||
|
$rows = $execSQL->fetchAll(PDO::FETCH_ASSOC);
|
||
|
return $rows;
|
||
|
}
|
||
|
|
||
|
private function _checkIfUserReferralExists($email_referral){
|
||
|
$oPDOLink = ClassConfig::databaseConnect();
|
||
|
$sql = "SELECT id FROM user_user WHERE email=:email LIMIT 1;";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(':email'=>$email_referral));
|
||
|
$row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
||
|
return $row['id'];
|
||
|
}
|
||
|
|
||
|
private function _createDefaultPublicProfileForNewUser($user_id, $email, $country_id, $lang_id, $description, $files){
|
||
|
$oPDOLink = ClassConfig::databaseConnect();
|
||
|
$sql = "
|
||
|
INSERT INTO public_profile(user_id, email, country_id, lang_id, description, photo_name, photo_type, photo_size, photo)
|
||
|
VALUES(:user_id, :email, :country_id, :lang_id, :description, :photo_name, :photo_type, :photo_size, :photo);
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(
|
||
|
':user_id'=>$user_id,
|
||
|
':email'=>$email,
|
||
|
':country_id'=>$country_id,
|
||
|
':lang_id'=>$lang_id,
|
||
|
':description'=>$description,
|
||
|
':photo_name'=>$files['form_addPublicProfile_photo']['name'],
|
||
|
':photo_type'=>$files['form_addPublicProfile_photo']['type'],
|
||
|
':photo_size'=>$files['form_addPublicProfile_photo']['size'],
|
||
|
':photo'=>base64_encode(file_get_contents($files['form_addPublicProfile_photo']['tmp_name']))
|
||
|
));
|
||
|
}
|
||
|
|
||
|
public function createUser($data, $files){
|
||
|
$this->_data = $data;
|
||
|
$config = ClassConfig::getConfig();
|
||
|
$oPDOLink = ClassConfig::databaseConnect();
|
||
|
|
||
|
if($this->_data['register_form_emailReferral'] != ''){
|
||
|
$user_referral_id = $this->_checkIfUserReferralExists($this->_data['register_form_emailReferral']);
|
||
|
if($user_referral_id == false){
|
||
|
$message['state']='failed';
|
||
|
$message['css_class']='failed';
|
||
|
$message['translation_code'] = 'checkEmailReferralDoesNotExists';
|
||
|
return $message;
|
||
|
}
|
||
|
} else {
|
||
|
$user_referral_id = 1;
|
||
|
}
|
||
|
|
||
|
if($this->_data['register_form_password'] != $this->_data['register_form_passwordConfirm']){
|
||
|
$message['state']='failed';
|
||
|
$message['css_class']='failed';
|
||
|
$message['translation_code'] = 'checkRegisterForm_notSamePassword';
|
||
|
return $message;
|
||
|
}
|
||
|
else {
|
||
|
//get currency
|
||
|
$sql="
|
||
|
SELECT core_currency_id AS id
|
||
|
FROM core_country
|
||
|
WHERE id=:country_id
|
||
|
LIMIT 1
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(':country_id'=>$this->_data['country']));
|
||
|
$currency_row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
||
|
|
||
|
//get theme design
|
||
|
$sql="
|
||
|
SELECT id
|
||
|
FROM core_theme
|
||
|
WHERE code=:code_theme
|
||
|
LIMIT 1
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(':code_theme'=>'default')); //TODO theme may be a variable
|
||
|
$theme_row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
||
|
$rand = (string) rand();
|
||
|
$microtime = (integer) time();
|
||
|
$activation_code = $rand . $microtime;
|
||
|
$sql="
|
||
|
INSERT INTO user_user(firstname, lastname, email, password, core_country_id, core_currency_id, core_lang_id, core_theme_id, activation_code)
|
||
|
VALUES(:firstname, :lastname, :email, :password, :core_country_id, :core_currency_id, :core_lang_id,:core_theme_id, :activation_code)
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
if($execSQL->execute(array(
|
||
|
':firstname'=>$this->_data['register_form_firstname'],
|
||
|
':lastname'=>$this->_data['register_form_lastname'],
|
||
|
':email'=>$this->_data['register_form_email'],
|
||
|
':password'=>sha1($this->_data['register_form_password'].'-k3P[8x&'),
|
||
|
':core_country_id'=>$this->_data['country'],
|
||
|
':core_currency_id'=>$currency_row['id'],
|
||
|
':core_lang_id'=>$this->_data['lang'],
|
||
|
':core_theme_id'=>1, //$theme_row['id'],
|
||
|
':activation_code'=> (string) $activation_code
|
||
|
))){
|
||
|
$newUserId = $oPDOLink->lastInsertId('user_user_id_seq');
|
||
|
//$isVipOfferActive = $this->_checkIfVipOfferActive();
|
||
|
//$isEverythingForFreeActive = $this->_checkIfEverythingForFreeActive();
|
||
|
// core user detail
|
||
|
|
||
|
$sql="
|
||
|
INSERT INTO user_detail(user_id, user_referral_id)
|
||
|
VALUES (:user_id, :user_referral_id)
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(
|
||
|
':user_id'=>$newUserId,
|
||
|
':user_referral_id'=>$user_referral_id,
|
||
|
//':is_premium'=>($isVipOfferActive==true)?true:0,
|
||
|
//FIX get the lifespan of VIP offer from SQL table core_config
|
||
|
//':is_premium_end_date'=>($isVipOfferActive==true && $isPromotionalCode==true)?date('Y-m-d', strtotime('+6 months')):null,
|
||
|
//':is_premium_end_date'=>($isVipOfferActive==true)?'2017-08-31':null,
|
||
|
));
|
||
|
|
||
|
// create a default public profile
|
||
|
$this->_createDefaultPublicProfileForNewUser($newUserId, $this->_data['register_form_email'], $this->_data['country'], $this->_data['lang'], $this->_data['register_form_description'], $files);
|
||
|
|
||
|
// defining database name of user for Premium abonement
|
||
|
$db_name = "user_".$activation_code;
|
||
|
|
||
|
$sql_createdb = "CREATE DATABASE ".$db_name;
|
||
|
$execSQL = $oPDOLink->prepare($sql_createdb);
|
||
|
$execSQL->execute(array());
|
||
|
|
||
|
//TODO import data
|
||
|
$oPDOPrivate = new PDO("pgsql:host=localhost;dbname=".$db_name.";user=".InterfacePostgreSQL::PG_USER.";password=".InterfacePostgreSQL::PG_PASSWORD);
|
||
|
|
||
|
// $sql = file_get_contents(ClassConfig::getURLRoot('apps/install/install-v1.0.0.sql')); //DEV
|
||
|
$sql = file_get_contents("/var/www/html/buo/apps/install/install-v1.0.0.sql"); //PROD
|
||
|
$patterns = array();
|
||
|
$patterns[0] = '/installuserbuoid/';
|
||
|
$patterns[1] = '/installuserfirstname/';
|
||
|
$patterns[2] = '/installuserlastname/';
|
||
|
$patterns[3] = '/installuseremail/';
|
||
|
|
||
|
$replacements = array();
|
||
|
$replacements[0] = $newUserId;
|
||
|
$replacements[1] = $this->_data['register_form_firstname'];
|
||
|
$replacements[2] = $this->_data['register_form_lastname'];
|
||
|
$replacements[3] = $this->_data['register_form_email'];
|
||
|
ksort($patterns); ksort($replacements);
|
||
|
$sql2 = preg_replace($patterns, $replacements, $sql);
|
||
|
$oPDOPrivate->exec($sql2);
|
||
|
|
||
|
// insert into user_detail SQL table
|
||
|
$sql="
|
||
|
UPDATE user_detail
|
||
|
SET db_name=:db_name, db_host='localhost', db_user=:db_user, db_password=:db_password
|
||
|
WHERE user_id=:user_id
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(
|
||
|
':db_name'=>$db_name,
|
||
|
':db_user'=>InterfacePostgreSQL::PG_USER,
|
||
|
':db_password'=>InterfacePostgreSQL::PG_PASSWORD,
|
||
|
':user_id'=>$newUserId,
|
||
|
));
|
||
|
|
||
|
// features for user
|
||
|
/*
|
||
|
TODO: Get the list of feature to create for user from the SQL table core_feature
|
||
|
ie by a value which could be is_a_feature_for_registration=TRUE
|
||
|
*/
|
||
|
$sql="
|
||
|
INSERT INTO useruser_corefeature_rel(user_id, core_feature_id)
|
||
|
VALUES (
|
||
|
(SELECT id FROM user_user WHERE email=:email LIMIT 1),
|
||
|
(SELECT id FROM core_feature WHERE code=:core_feature_code LIMIT 1)
|
||
|
);
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'home'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'apps'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'my-profile'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'contact'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'logout'));
|
||
|
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'social-network'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'my-public-profile'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'people-i-may-know'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'connection-requests'));
|
||
|
$execSQL->execute(array(':email'=>$this->_data['register_form_email'], ':core_feature_code'=>'my-network'));
|
||
|
|
||
|
$message['user_id'] = $newUserId;
|
||
|
$message['activation_code'] = $activation_code;
|
||
|
$message['state'] = "success";
|
||
|
$message['css_class'] = 'success-message';
|
||
|
$message['translation_code'] = 'register_form_success';
|
||
|
return $message;
|
||
|
} else {
|
||
|
$message['state']='failed';
|
||
|
$message['css_class'] = 'failed-message';
|
||
|
$message['translation_code'] = 'register_form_failed';
|
||
|
return $message;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function activateUser($activation_code){
|
||
|
$this->_activationCode = (string) $activation_code;
|
||
|
$oPDOLink = ClassConfig::databaseConnect();
|
||
|
|
||
|
$sql="
|
||
|
UPDATE user_user
|
||
|
SET is_active=TRUE
|
||
|
WHERE activation_code=:activation_code
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
if($execSQL->execute(array(':activation_code'=>$this->_activationCode))){
|
||
|
$sql="
|
||
|
SELECT firstname, email
|
||
|
FROM user_user
|
||
|
WHERE activation_code=:activation_code
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array(':activation_code'=>$this->_activationCode));
|
||
|
$row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
||
|
|
||
|
$message['firstname'] = $row['firstname'];
|
||
|
$message['email'] = $row['email'];
|
||
|
$message['state'] = 'success';
|
||
|
$message['css_class'] = 'success-message';
|
||
|
$message['translation_code'] = 'message_activateUserSuccess';
|
||
|
} else {
|
||
|
$message['state'] = 'failed';
|
||
|
$message['css_class'] = 'failed-message';
|
||
|
$message['translation_code'] = 'message_activateUserFailed';
|
||
|
}
|
||
|
return $message;
|
||
|
|
||
|
}
|
||
|
|
||
|
public function listUsersWithActivationCodeAndActivated(){
|
||
|
$oPDOLink = ClassConfig::databaseConnect();
|
||
|
$sql = "
|
||
|
SELECT activation_code
|
||
|
FROM user_user
|
||
|
WHERE activation_code!='no activation code needed'
|
||
|
AND is_active=TRUE;
|
||
|
";
|
||
|
$execSQL = $oPDOLink->prepare($sql);
|
||
|
$execSQL->execute(array());
|
||
|
$users = $execSQL->fetchAll(PDO::FETCH_ASSOC);
|
||
|
return $users;
|
||
|
}
|
||
|
|
||
|
}
|