204 lines
6.7 KiB
PHP
204 lines
6.7 KiB
PHP
<?php
|
|
class ClassUserCustom extends ClassUser {
|
|
|
|
public function createUserForWefraAdmin($data, $ext_id){
|
|
$this->_data = $data;
|
|
$this->_extId = $ext_id;
|
|
|
|
$config = ClassConfig::getConfig();
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
//IF password and confirmPassword are not identical, displaying an error message
|
|
if($this->_data['formRegisterFieldPassword'] != $this->_data['formRegisterFieldConfirmPassword']){
|
|
$message['state']='failed';
|
|
$message['css_class']='failed';
|
|
$message['translation_code'] = 'checkRegisterForm_notSamePassword';
|
|
return $message;
|
|
}
|
|
else {
|
|
$activation_code = rand();
|
|
$sql="
|
|
INSERT INTO user_user(email, password, activation_code, firstname, lastname,
|
|
core_lang_id, core_country_id, core_currency_id, core_theme_id,
|
|
is_active, comment
|
|
)VALUES(
|
|
:email, :password, :activation_code,
|
|
:firstname, :lastname,
|
|
12, 44, 4, 1,
|
|
true, 'user created during installation process')
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
if($execSQL->execute(array(
|
|
':email'=>$this->_data['formRegisterFieldEmail'],
|
|
':password'=>sha1($this->_data['formRegisterFieldPassword'].'-k3P[8x&'),
|
|
':activation_code'=>$activation_code,
|
|
':firstname'=>$this->_data['formRegisterFieldFirstname'],
|
|
':lastname'=>$this->_data['formRegisterFieldLastname']
|
|
))){
|
|
$newUserId = $oPDOLink->lastInsertId('user_user_id_seq');
|
|
//$isVipOfferActive = $this->_checkIfVipOfferActive();
|
|
//$isEverythingForFreeActive = $this->_checkIfEverythingForFreeActive();
|
|
// core user detail
|
|
$sql="
|
|
INSERT INTO user_detail(user_id, ext_id)
|
|
VALUES (:user_id, :ext_id)
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(':user_id'=>$newUserId, ':ext_id'=>$this->_extId));
|
|
|
|
// features for user
|
|
$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['formRegisterFieldEmail'], ':core_feature_code'=>'home'));
|
|
$execSQL->execute(array(':email'=>$this->_data['formRegisterFieldEmail'], ':core_feature_code'=>'my-profile'));
|
|
$execSQL->execute(array(':email'=>$this->_data['formRegisterFieldEmail'], ':core_feature_code'=>'logout'));
|
|
|
|
$message['user_id'] = $newUserId;
|
|
$message['activation_code'] = $activation_code;
|
|
$message['status'] = "success";
|
|
$message['css_class'] = 'success-message';
|
|
//TODO change confirmation_registration by register_form_success when registrations will need an activation by clic on link in an email
|
|
//$message['translation_code'] = 'register_form_success'; //'confirmation_registration';
|
|
|
|
//TODO send an email to admin to indicate that there is a new registration
|
|
return $message;
|
|
} else {
|
|
$message['status']='failed';
|
|
$message['css_class'] = 'failed-message';
|
|
//$message['translation_code'] = 'register_form_failed';
|
|
return $message;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function array_values_recursive($array){
|
|
$arrayValues = array();
|
|
|
|
foreach ($array as $value){
|
|
if (is_scalar($value) OR is_resource($value)){
|
|
$arrayValues[] = $value;
|
|
}
|
|
elseif (is_array($value)){
|
|
$arrayValues = array_merge($arrayValues, array_values_recursive($value));
|
|
}
|
|
}
|
|
|
|
return $arrayValues;
|
|
}
|
|
//ENDOF array_values_recursive()
|
|
|
|
public function getUser($user_id){
|
|
$this->_userId = $user_id;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
$sql="
|
|
SELECT ud.ext_id, uu.*
|
|
FROM user_user uu
|
|
LEFT JOIN user_detail ud
|
|
ON uu.id=ud.user_id
|
|
WHERE uu.id=:user_id;
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(':user_id'=>$this->_userId));
|
|
$row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
|
return $row;
|
|
}
|
|
|
|
public function login($post_datas=array()){
|
|
$this->_postDatas = $post_datas;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
if($this->_postDatas['formLoginFieldEmail']=='' || $this->_postDatas['formLoginFieldPassword']==''){
|
|
$message['state'] = 'no_required_fields_filled';
|
|
$message['css_class'] = 'failed-message';
|
|
$message['translation_code'] = "message_requiredFieldsNotFilled";
|
|
return $message;
|
|
}
|
|
|
|
$sql="
|
|
SELECT uu.id, uu.email, uu.password, uu.firstname, uu.lastname, uu.phone,
|
|
uu.core_lang_id, uu.core_country_id, uu.core_currency_id,
|
|
uu.is_active,
|
|
(SELECT code FROM core_lang WHERE id=core_lang_id) AS lang_code,
|
|
(SELECT code FROM core_country WHERE id=core_country_id) AS country_code,
|
|
(SELECT code FROM core_currency WHERE id=core_currency_id) AS currency_code
|
|
FROM user_user uu
|
|
INNER JOIN user_detail ud
|
|
ON uu.id=ud.user_id
|
|
WHERE uu.email=:email AND uu.password=:password
|
|
LIMIT 1
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(
|
|
':email'=>$this->_postDatas['formLoginFieldEmail'],
|
|
':password'=>sha1($this->_postDatas['formLoginFieldPassword'].'-k3P[8x&')
|
|
));
|
|
$row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
|
if(isset($row['is_active']) and $row['is_active']==false){
|
|
$message['state'] = 'account_not_activated';
|
|
$message['css_class'] = 'warning-message';
|
|
$message['translation_code'] = 'messageLogin_accountNotActivated';
|
|
return $message;
|
|
} else if(isset($row['email'])){
|
|
unset($_SESSION['features']);
|
|
$_SESSION['features'] = $this->getFeatures($row['id']);
|
|
$row['state'] = 'success';
|
|
return $row;
|
|
} else{
|
|
$message['state'] = 'bad_login_or_password';
|
|
$message['css_class'] = 'failed-message';
|
|
//FIX translate this message
|
|
$message['translation_code'] = "messageLogin_badLoginOrPassword";
|
|
return $message;
|
|
}
|
|
}
|
|
//ENDOF login()
|
|
|
|
public function changePassword($user_id, $data){
|
|
$this->_userId = $user_id;
|
|
$this->_data = $data;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
$sql="
|
|
SELECT password
|
|
FROM user_user
|
|
WHERE id=:user_id;
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(':user_id'=>$this->_userId));
|
|
$row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if(isset($row['password']) && sha1($this->_data['oldPassword'].'-k3P[8x&') != $row['password']){
|
|
$message['state'] = 'failed_bad_password';
|
|
} else if($this->_data['newPassword'] != $this->_data['confirmPassword']){
|
|
$message['state'] = 'failed_password_confirm';
|
|
} else{
|
|
|
|
$sql="
|
|
UPDATE user_user
|
|
SET password=:password
|
|
WHERE id=:user_id;
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
if($execSQL->execute(array(
|
|
':user_id'=>$this->_userId,
|
|
':password'=>sha1($this->_data['newPassword'].'-k3P[8x&')
|
|
))){
|
|
$message['state'] = 'success';
|
|
} else{
|
|
$message['state'] = 'failed';
|
|
}
|
|
}
|
|
return $message;
|
|
}
|
|
}
|