function generateUserNewPwd($ID) { $sPwd = genRndPwd(); $sSalt = genRndSalt(); $sQuery = "\n UPDATE `Profiles`\n SET\n `Password` = '" . encryptUserPwd($sPwd, $sSalt) . "',\n `Salt` = '{$sSalt}'\n WHERE\n `ID`='{$ID}'\n "; db_res($sQuery); createUserDataFile($ID); require_once BX_DIRECTORY_PATH_CLASSES . 'BxDolAlerts.php'; $oZ = new BxDolAlerts('profile', 'edit', $ID); $oZ->alert(); return $sPwd; }
public function onProfileCreated($sProfileId, $sToken) { if (empty($sProfileId) || empty($sToken)) { return; } $sSid = encryptUserPwd($sProfileId, genRndSalt()); $this->_oModule->_oDb->updatePaymentDetails(array('profile_id' => $sProfileId, 'profile_sid' => $sSid), array('token' => $sToken)); $aAccount = $this->_oModule->_oDb->getAccount(array('type' => 'profile_id', 'value' => $sProfileId)); if (!empty($aAccount) && is_array($aAccount)) { $this->_oModule->_oDb->updateAccount(array('status' => BX_SITES_ACCOUNT_STATUS_PENDING), array('id' => $aAccount['id'])); // perform action $this->_oModule->isAllowedAdd(true); // alert bx_alert($this->_oModule->getName(), 'added', $aAccount['id']); } }
function update($val, $aValsToAdd = array(), &$aTrackTextFieldsChanges = null) { $sPwd = $this->getCleanValue(self::$FIELD_PASSWORD); if ($sPwd) { $sSalt = genRndSalt(); $sPasswordHash = encryptUserPwd($sPwd, $sSalt); } $aValsToAdd = array_merge($aValsToAdd, array(self::$FIELD_CHANGED => time()), $sPwd ? array(self::$FIELD_PASSWORD => $sPasswordHash, self::$FIELD_SALT => $sSalt) : array()); return parent::update($val, $aValsToAdd, $aTrackTextFieldsChanges); }
function createProfile($aData, $bSendMails = true, $iMainMemberID = 0) { if (!$aData or !is_array($aData) or empty($aData)) { return false; } unset($aData['Couple']); unset($aData['Captcha']); unset($aData['TermsOfUse']); unset($aData['ProfilePhoto']); /* @var $this ->oPF BxDolProfileFields */ $this->oPF = new BxDolProfileFields(100); if (!$this->oPF->aArea) { echo 'Profile Fields cache not loaded. Cannot continue.'; return false; } $this->aItems = $this->oPF->aArea[0]['Items']; if ($iMainMemberID) { $aMainMember = $this->getProfileInfo($iMainMemberID); } else { $aMainMember = false; } // begin profile info collecting $aNewProfile = array(); foreach ($this->aItems as $aItem) { $sItemName = $aItem['Name']; if (array_key_exists($sItemName, $aData)) { $aNewProfile[$sItemName] = $aData[$sItemName]; } elseif ($aMainMember and array_key_exists($sItemName, $aMainMember) and $aItem['Type'] != 'system') { if ($aItem['Unique']) { $aNewProfile[$sItemName] = $this->genUniqueValue($sItemName, $aMainMember[$sItemName]); } else { $aNewProfile[$sItemName] = $aMainMember[$sItemName]; } } else { switch ($aItem['Type']) { case 'pass': $aNewProfile[$sItemName] = $this->genRandomPassword(); break; case 'num': $aNewProfile[$sItemName] = (int) $aItem['Default']; break; case 'bool': $aNewProfile[$sItemName] = (bool) $aItem['Default']; break; case 'system': switch ($sItemName) { case 'ID': //set automatically //set automatically case 'Captcha': //not been inserted //not been inserted case 'Location': //not been inserted //not been inserted case 'Keyword': //not been inserted //not been inserted case 'TermsOfUse': //not been inserted //pass break; case 'DateReg': $aNewProfile[$sItemName] = date('Y-m-d H:i:s'); // set current date break; case 'DateLastEdit': case 'DateLastLogin': $aNewProfile[$sItemName] = '0000-00-00'; break; case 'Couple': $aNewProfile[$sItemName] = $aMainMember ? $iMainMemberID : 0; //if main member exists, set him as a couple link break; case 'Featured': $aNewProfile[$sItemName] = false; break; case 'Status': if (getParam('autoApproval_ifNoConfEmail') == 'on') { if (getParam('autoApproval_ifJoin') == 'on' && !(getParam('sys_dnsbl_enable') && 'approval' == getParam('sys_dnsbl_behaviour') && bx_is_ip_dns_blacklisted('', 'join'))) { $aNewProfile[$sItemName] = 'Active'; } else { $aNewProfile[$sItemName] = 'Approval'; } } else { $aNewProfile[$sItemName] = 'Unconfirmed'; } break; } break; default: $aNewProfile[$sItemName] = $aItem['Default']; } } } //we completed collecting // set default language $aNewProfile['LangID'] = getLangIdByName(getCurrentLangName()); // set default privacy bx_import('BxDolPrivacyQuery'); $oPrivacy = new BxDolPrivacyQuery(); $aNewProfile['allow_view_to'] = $oPrivacy->getDefaultValueModule('profile', 'view_block'); $sSet = $this->collectSetString($aNewProfile); $sQuery = "INSERT INTO `Profiles` SET \n{$sSet}"; $rRes = db_res($sQuery); if ($rRes) { $iNewID = db_last_id(); $this->createProfileCache($iNewID); if ($aMainMember) { $this->updateProfile($iMainMemberID, array('Couple' => $iNewID)); } //set main member's couple. they will be linked each other //collect status text if ($bSendMails and !$aMainMember) { //send mail only to main member, not to couple $sStatusText = $aNewProfile['Status']; if (getParam('autoApproval_ifNoConfEmail') == 'on') { if ('Active' == $sStatusText) { $this->sendActivationMail($iNewID); } else { $this->sendApprovalMail($iNewID); } } else { if (!$this->sendConfMail($iNewID)) { $sStatusText = 'NotSent'; } } } else { $sStatusText = 'OK'; } //set crypted password $sSalt = genRndSalt(); $this->updateProfile($iNewID, array('Password' => encryptUserPwd($aNewProfile['Password'], $sSalt), 'Salt' => $sSalt)); bx_member_ip_store($iNewID); return array($iNewID, $sStatusText); } else { return array(false, 'Failed'); } }
function processPostValues($bCouple, &$aValues, &$aErrors, $iPage = 0, $iProfileID = 0, $iBlockOnly = 0) { $iHumans = $bCouple ? 2 : 1; // number of members in profile (single/couple), made for double arrays if ($this->iAreaID == 1) { // join $this->aBlocks = $this->aArea[$iPage]; } foreach ($this->aBlocks as $iBlockID => $aBlock) { if ($iBlockOnly > 0 and $iBlockOnly != $iBlockID) { continue; } $aItems = $aBlock['Items']; foreach ($aItems as $iItemID => $aItem) { $sItemName = $aItem['Name']; for ($iHuman = 0; $iHuman < $iHumans; $iHuman++) { if ($iHuman == 1 and in_array($sItemName, $this->aCoupleMutual)) { continue; } $mValue = null; switch ($aItem['Type']) { case 'text': case 'area': case 'pass': case 'select_one': if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman])) { $mValue = process_pass_data($_POST[$sItemName][$iHuman]); } break; case 'html_area': if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman])) { $mValue = clear_xss(process_pass_data($_POST[$sItemName][$iHuman])); } break; case 'bool': if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman]) and $_POST[$sItemName][$iHuman] == 'yes') { $mValue = true; } else { $mValue = false; } break; case 'num': if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman]) and trim($_POST[$sItemName][$iHuman]) !== '') { $mValue = (int) trim($_POST[$sItemName][$iHuman]); } break; case 'date': if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman]) and trim($_POST[$sItemName][$iHuman]) !== '') { list($iYear, $iMonth, $iDay) = explode('-', $_POST[$sItemName][$iHuman]); // 1985-10-28 $iDay = intval($iDay); $iMonth = intval($iMonth); $iYear = intval($iYear); $mValue = sprintf("%04d-%02d-%02d", $iYear, $iMonth, $iDay); } break; case 'select_set': $mValue = array(); if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman]) and is_array($_POST[$sItemName][$iHuman])) { foreach ($_POST[$sItemName][$iHuman] as $sValue) { $mValue[] = process_pass_data($sValue); } } break; case 'range': if (isset($_POST[$sItemName]) and isset($_POST[$sItemName][$iHuman])) { if (is_array($_POST[$sItemName][$iHuman])) { $aRange = $_POST[$sItemName][$iHuman]; } else { $aRange = explode('-', $_POST[$sItemName][$iHuman], 2); } $mValue = array(null, null); $aRange[0] = isset($aRange[0]) ? trim($aRange[0]) : ''; $aRange[1] = isset($aRange[1]) ? trim($aRange[1]) : ''; if ($aRange[0] !== '') { $mValue[0] = (int) $aRange[0]; } if ($aRange[1] !== '') { $mValue[1] = (int) $aRange[1]; } } break; case 'system': switch ($aItem['Name']) { case 'Couple': case 'TermsOfUse': case 'Featured': //they are boolean if (isset($_POST[$sItemName]) and $_POST[$sItemName] == 'yes') { $mValue = true; } else { $mValue = false; } break; case 'Captcha': case 'Status': // they are select_one if (isset($_POST[$sItemName])) { $mValue = process_pass_data($_POST[$sItemName]); } break; case 'ProfilePhoto': if (isset($_FILES['ProfilePhoto'])) { if ($_FILES['ProfilePhoto']['error'] == UPLOAD_ERR_OK) { $sTmpName = tempnam($GLOBALS['dir']['tmp'], 'pphot'); if (move_uploaded_file($_FILES['ProfilePhoto']['tmp_name'], $sTmpName)) { $mValue = basename($sTmpName); } } } elseif (isset($_POST['ProfilePhoto']) && trim($_POST['ProfilePhoto'])) { $mValue = preg_replace('/[^a-zA-Z0-9\\.]/', '', $_POST['ProfilePhoto']); } break; } break; } $rRes = $this->checkPostValue($iBlockID, $iItemID, $mValue, $iHuman, $iProfileID); if ($rRes !== true) { $aErrors[$iHuman][$sItemName] = $rRes; } //it is returned error text //if password on edit page if ($aItem['Type'] == 'pass' and ($this->iAreaID == 2 or $this->iAreaID == 3 or $this->iAreaID == 4)) { if (empty($mValue)) { $mValue = $aValues[$iHuman][$sItemName]; } else { $mValue = encryptUserPwd($mValue, $aValues[$iHuman]['Salt']); } } $aValues[$iHuman][$sItemName] = $mValue; } } } }
/** * Create new profile; * * @param : $aProfileInfo (array) - remote profile's information; * * @param : $sAlternativeName (string) - profiles alternative nickname; * @return : error string or error or profile info array on success */ function _createProfileRaw($aProfileInfo, $sAlternativeName = '', $isAutoFriends = true, $isSetLoggedIn = true) { $sCountry = ''; $sCity = ''; // join by invite only if (getParam('reg_by_inv_only') == 'on' && (!isset($_COOKIE['idFriend']) || getID($_COOKIE['idFriend']) == 0)) { return _t('_registration by invitation only'); } // convert fields $aProfileFields = $this->_convertRemoteFields($aProfileInfo, $sAlternativeName); if (empty($aProfileFields['Email'])) { return _t('_Incorrect Email'); } // antispam check bx_import('BxDolStopForumSpam'); $oBxDolStopForumSpam = new BxDolStopForumSpam(); if (2 == getParam('ipBlacklistMode') && bx_is_ip_blocked()) { return _t('_Sorry, your IP been banned'); } elseif ('on' == getParam('sys_dnsbl_enable') && 'block' == getParam('sys_dnsbl_behaviour') && bx_is_ip_dns_blacklisted('', 'join oauth') || $oBxDolStopForumSpam->isSpammer(array('email' => $aProfileFields['Email'], 'ip' => getVisitorIP(false)), 'join oauth')) { return sprintf(_t('_sys_spam_detected'), BX_DOL_URL_ROOT . 'contact.php'); } // check fields existence; foreach ($aProfileFields as $sKey => $mValue) { if (!$this->_oDb->isFieldExist($sKey)) { // (field not existence) remove from array; unset($aProfileFields[$sKey]); } } // add some system values $sNewPassword = genRndPwd(); $sPasswordSalt = genRndSalt(); $aProfileFields['Password'] = encryptUserPwd($sNewPassword, $sPasswordSalt); $aProfileFields['Role'] = BX_DOL_ROLE_MEMBER; $aProfileFields['DateReg'] = date('Y-m-d H:i:s'); // set current date; $aProfileFields['Salt'] = $sPasswordSalt; // set default privacy bx_import('BxDolPrivacyQuery'); $oPrivacy = new BxDolPrivacyQuery(); $aProfileFields['allow_view_to'] = $oPrivacy->getDefaultValueModule('profile', 'view_block'); // check if user with the same email already exists $iExistingProfileId = $this->_oDb->isEmailExisting($aProfileFields['Email']); // check redirect page if ('join' == $this->_oConfig->sRedirectPage && !$iExistingProfileId) { return array('remote_profile_info' => $aProfileInfo, 'profile_fields' => $aProfileFields, 'join_page_redirect' => true); } // create new profile if ($iExistingProfileId) { $iProfileId = $iExistingProfileId; } else { $iProfileId = $this->_oDb->createProfile($aProfileFields); } $oProfileFields = new BxDolProfilesController(); // remember remote profile id for created member $this->_oDb->saveRemoteId($iProfileId, $aProfileInfo['id']); // check profile status; if (!$iExistingProfileId) { if (getParam('autoApproval_ifNoConfEmail') == 'on') { if (getParam('autoApproval_ifJoin') == 'on') { $sProfileStatus = 'Active'; if (!empty($aProfileInfo['email'])) { $oProfileFields->sendActivationMail($iProfileId); } } else { $sProfileStatus = 'Approval'; if (!empty($aProfileInfo['email'])) { $oProfileFields->sendApprovalMail($iProfileId); } } } else { if (!empty($aProfileInfo['email'])) { $oProfileFields->sendConfMail($iProfileId); $sProfileStatus = 'Unconfirmed'; } else { if (getParam('autoApproval_ifJoin') == 'on') { $sProfileStatus = 'Active'; } else { $sProfileStatus = 'Approval'; } } } // update profile's status; $this->_oDb->updateProfileStatus($iProfileId, $sProfileStatus); $oProfileFields->createProfileCache($iProfileId); // send email notification if (!empty($aProfileInfo['email'])) { $oEmailTemplate = new BxDolEmailTemplates(); $aTemplate = $oEmailTemplate->getTemplate($this->_oConfig->sEmailTemplatePasswordGenerated, $iProfileId); $aNewProfileInfo = getProfileInfo($iProfileId); $aPlus = array('NickName' => getNickName($aNewProfileInfo['ID']), 'NewPassword' => $sNewPassword); sendMail($aNewProfileInfo['Email'], $aTemplate['Subject'], $aTemplate['Body'], '', $aPlus); } // update location if (BxDolModule::getInstance('BxWmapModule')) { BxDolService::call('wmap', 'response_entry_add', array('profiles', $iProfileId)); } // create system event $oZ = new BxDolAlerts('profile', 'join', $iProfileId); $oZ->alert(); } // store IP bx_member_ip_store($iProfileId); // auto-friend members if they are already friends on remote site if ($isAutoFriends && method_exists($this, '_makeFriends')) { $this->_makeFriends($iProfileId); } // set logged if ($isSetLoggedIn) { $aProfile = getProfileInfo($iProfileId); $this->setLogged($iProfileId, $aProfile['Password'], '', false); } return array('remote_profile_info' => $aProfileInfo, 'profile_id' => $iProfileId, 'existing_profile' => $iExistingProfileId ? true : false); }
/** * Generate new password. */ protected function generateUserNewPwd($iAccountId) { $sPwd = genRndPwd(); $sSalt = genRndSalt(); $sPasswordHash = encryptUserPwd($sPwd, $sSalt); $this->_oAccountQuery->updatePassword($sPasswordHash, $sSalt, $iAccountId); bx_alert('account', 'edit', $iAccountId, $iAccountId, array('action' => 'forgot_password')); return $sPwd; }
function check_password($sUsername, $sPassword, $iRole = BX_DOL_ROLE_MEMBER, $error_handle = true) { $iId = getID($sUsername); if (!$iId) { return false; } $aUser = getProfileInfo($iId); $sPassCheck = encryptUserPwd($sPassword, $aUser['Salt']); return check_login($iId, $sPassCheck, $iRole, $error_handle); }
/** * Check unencrypted password * @return empty string on success or error string on error */ function bx_check_password($sLogin, $sPassword, $iRole = BX_DOL_ROLE_MEMBER) { bx_import('BxDolAccount'); $oAccount = BxDolAccount::getInstance($sLogin); if (!$oAccount) { bx_import('BxDolLanguages'); return _t("_sys_txt_login_error"); } $aAccountInfo = $oAccount->getInfo(); $sPassCheck = encryptUserPwd($sPassword, $aAccountInfo['salt']); if ($sErrorMsg = bx_check_login($aAccountInfo['id'], $sPassCheck, $iRole)) { return $sErrorMsg; } // Admin can always login even if he is blocked/banned/suspended/etc if (isAdmin($aAccountInfo['id'])) { return ''; } $sErrorMsg = ''; bx_alert('account', 'check_login', $aAccountInfo['id'], false, array('error_msg' => &$sErrorMsg)); return $sErrorMsg; }
function encryptPassword($sId, $sPassword) { $aUser = getProfileInfo($sId); return encryptUserPwd($sPassword, $aUser['Salt']); }
function _saveCatAdminPassword(&$aData) { $iId = (int) $_COOKIE['memberID']; $aAdmin = $this->_oDb->getRow("SELECT `Password`, `Salt` FROM `Profiles` WHERE `ID`= ?", [$iId]); if (encryptUserPwd($aData['pwd_old'], $aAdmin['Salt']) != $aAdmin['Password']) { return MsgBox(_t('_adm_txt_settings_wrong_old_pasword'), $this->_iResultTimer); } $iLength = strlen($aData['pwd_new']); if ($iLength < 3) { return MsgBox(_t('_adm_txt_settings_wrong_new_pasword'), $this->_iResultTimer); } if ($aData['pwd_new'] != $aData['pwd_conf']) { return MsgBox(_t('_adm_txt_settings_wrong_conf_pasword'), $this->_iResultTimer); } $this->_oDb->query("UPDATE `Profiles` SET `Password`='" . encryptUserPwd($aData['pwd_new'], $aAdmin['Salt']) . "' WHERE `ID`='{$iId}'"); createUserDataFile($iId); return true; }
/** * Create new profile; * * @param : $aProfileInfo (array) - some profile's information; * @see : $this -> aFacebookProfileFields; * * @param : $sAlternativeName (string) - profiles alternative nickname; * @return : error string or error or profile info array on success */ function _createProfileRaw($aProfileInfo, $sAlternativeName = '', $isAutoFriends = true, $isSetLoggedIn = true) { $sCountry = ''; $sCity = ''; //-- join by invite only --// if (getParam('reg_by_inv_only') == 'on' && (!isset($_COOKIE['idFriend']) || getID($_COOKIE['idFriend']) == 0)) { return _t('_registration by invitation only'); } //-- // process the date of birth; if (isset($aProfileInfo['birthday'])) { $aProfileInfo['birthday'] = isset($aProfileInfo['birthday']) ? date('Y-m-d', strtotime($aProfileInfo['birthday'])) : ''; } // generate new password for profile; $sNewPassword = genRndPwd(); $sPasswordSalt = genRndSalt(); $aProfileInfo['password'] = encryptUserPwd($sNewPassword, $sPasswordSalt); //-- define user's country and city --// $aLocation = array(); if (isset($aProfileInfo['location']['name'])) { $aLocation = $aProfileInfo['location']['name']; } else { if (isset($aProfileInfo['hometown']['name'])) { $aLocation = $aProfileInfo['hometown']['name']; } } if ($aLocation) { $aCountryInfo = explode(',', $aLocation); $sCountry = $this->_oDb->getCountryCode(trim($aCountryInfo[1])); $sCity = trim($aCountryInfo[0]); //set default country name, especially for American brothers if ($sCity && !$sCountry) { $sCountry = $this->_oConfig->sDefaultCountryCode; } } //-- //try define the user's email $sEmail = !empty($aProfileInfo['email']) ? $aProfileInfo['email'] : $aProfileInfo['proxied_email']; //-- fill array with all needed values --// $aProfileFields = array('NickName' => $aProfileInfo['nick_name'] . $sAlternativeName, 'Email' => $sEmail, 'Sex' => isset($aProfileInfo['gender']) ? $aProfileInfo['gender'] : '', 'DateOfBirth' => $aProfileInfo['birthday'], 'Password' => $aProfileInfo['password'], 'FullName' => (isset($aProfileInfo['first_name']) ? $aProfileInfo['first_name'] : '') . (isset($aProfileInfo['last_name']) ? ' ' . $aProfileInfo['last_name'] : ''), 'DescriptionMe' => clear_xss(isset($aProfileInfo['bio']) ? $aProfileInfo['bio'] : ''), 'Interests' => isset($aProfileInfo['interests']) ? $aProfileInfo['interests'] : '', 'Religion' => isset($aProfileInfo['religion']) ? $aProfileInfo['religion'] : '', 'Country' => $sCountry, 'City' => $sCity); //-- bx_import('BxDolStopForumSpam'); $oBxDolStopForumSpam = new BxDolStopForumSpam(); if (2 == getParam('ipBlacklistMode') && bx_is_ip_blocked()) { return _t('_Sorry, your IP been banned'); } elseif ('on' == getParam('sys_dnsbl_enable') && 'block' == getParam('sys_dnsbl_behaviour') && bx_is_ip_dns_blacklisted('', 'join facebook') || $oBxDolStopForumSpam->isSpammer(array('email' => $aProfileFields['Email'], 'ip' => getVisitorIP(false)), 'join facebook')) { return sprintf(_t('_sys_spam_detected'), BX_DOL_URL_ROOT . 'contact.php'); } // check fields existence; foreach ($aProfileFields as $sKey => $mValue) { if (!$this->_oDb->isFieldExist($sKey)) { // (field not existence) remove from array; unset($aProfileFields[$sKey]); } } //-- add some system values --// $aProfileFields['Role'] = BX_DOL_ROLE_MEMBER; $aProfileFields['DateReg'] = date('Y-m-d H:i:s'); // set current date; $aProfileFields['Salt'] = $sPasswordSalt; //-- $iExistingProfileId = $this->_oDb->isEmailExisting($sEmail); //check redirect page if ('join' == $this->_oConfig->sRedirectPage && !$iExistingProfileId) { return array('profile_info_fb' => $aProfileInfo, 'profile_fields' => $aProfileFields, 'join_page_redirect' => true); } // create new profile; if ($iExistingProfileId) { $iProfileId = $iExistingProfileId; } else { $iProfileId = $this->_oDb->createProfile($aProfileFields); } $oProfileFields = new BxDolProfilesController(); //remember FB uid for created member $this->_oDb->saveFbUid($iProfileId, $aProfileInfo['id']); // check profile status; if (!$iExistingProfileId) { if (getParam('autoApproval_ifNoConfEmail') == 'on') { if (getParam('autoApproval_ifJoin') == 'on') { $sProfileStatus = 'Active'; if (!empty($aProfileInfo['email'])) { $oProfileFields->sendActivationMail($iProfileId); } } else { $sProfileStatus = 'Approval'; if (!empty($aProfileInfo['email'])) { $oProfileFields->sendApprovalMail($iProfileId); } } } else { if (!empty($aProfileInfo['email'])) { $oProfileFields->sendConfMail($iProfileId); $sProfileStatus = 'Unconfirmed'; } else { if (getParam('autoApproval_ifJoin') == 'on') { $sProfileStatus = 'Active'; } else { $sProfileStatus = 'Approval'; } } } // update profile's status; $this->_oDb->updateProfileStatus($iProfileId, $sProfileStatus); $oProfileFields->createProfileCache($iProfileId); if (!empty($aProfileInfo['email'])) { //-- send email notification --// $oEmailTemplate = new BxDolEmailTemplates(); $aTemplate = $oEmailTemplate->getTemplate('t_fb_connect_password_generated', $iProfileId); $aNewProfileInfo = getProfileInfo($iProfileId); $aPlus = array('NickName' => getNickName($aNewProfileInfo['ID']), 'NewPassword' => $sNewPassword); sendMail($aNewProfileInfo['Email'], $aTemplate['Subject'], $aTemplate['Body'], '', $aPlus); } //-- if (BxDolModule::getInstance('BxWmapModule')) { BxDolService::call('wmap', 'response_entry_add', array('profiles', $iProfileId)); } // create system event $oZ = new BxDolAlerts('profile', 'join', $iProfileId); $oZ->alert(); } bx_member_ip_store($iProfileId); // auto-friend members if they are already friends on Facebook if ($isAutoFriends) { $this->_makeFriends($iProfileId); } // set logged if ($isSetLoggedIn) { $aProfile = getProfileInfo($iProfileId); $this->setLogged($iProfileId, $aProfile['Password'], '', false); } return array('profile_info_fb' => $aProfileInfo, 'profile_id' => $iProfileId, 'existing_profile' => $iExistingProfileId ? true : false); }
protected function getMarkers($a) { $aMarkers = array(); foreach ($this->_aConfig as $sKey => $r) { $aMarkers[$sKey] = isset($a[$sKey]) ? $a[$sKey] : ''; } $aMarkers['admin_pwd_salt'] = genRndPwd(); $aMarkers['admin_pwd_hash'] = encryptUserPwd($a['admin_password'], $aMarkers['admin_pwd_salt']); $aMarkers['current_timestamp'] = time(); $aMarkers['version'] = BX_DOL_VER; $aMarkers['time'] = time(); $aMarkers['secret'] = genRndPwd(11); $aMarkers['ffmpeg_path'] = $aMarkers['root_dir'] . 'plugins/ffmpeg/ffmpeg.exe'; return $aMarkers; }
/** * Create new profile; * * @param : $aProfileInfo (array) - some profile's information; * @see : $this -> aFacebookProfileFields; * * @param : $sAlternativeName (string) - profiles alternative nickname; * @return : (integer) profile's id; */ function _createProfile($aProfileInfo, $sAlternativeName = '') { $sCountry = ''; $sCity = ''; $bAvatarRedirect = false; $sMemberAvatar = !empty($aProfileInfo['picture']) ? $aProfileInfo['picture'] : ''; //-- join by invite only --// if (getParam('reg_by_inv_only') == 'on' && (!isset($_COOKIE['idFriend']) || getID($_COOKIE['idFriend']) == 0)) { $this->_oTemplate->getPage(_t('_bx_facebook'), MsgBox(_t('_registration by invitation only'))); exit; } //-- // process the date of birth; if (isset($aProfileInfo['birthday'])) { $aProfileInfo['birthday'] = isset($aProfileInfo['birthday']) ? date('Y-m-d', strtotime($aProfileInfo['birthday'])) : ''; } // generate new password for profile; $sNewPassword = genRndPwd(); $sPasswordSalt = genRndSalt(); $aProfileInfo['password'] = encryptUserPwd($sNewPassword, $sPasswordSalt); //-- define user's country and city --// $aLocation = array(); if (isset($aProfileInfo['location']['name'])) { $aLocation = $aProfileInfo['location']['name']; } else { if (isset($aProfileInfo['hometown']['name'])) { $aLocation = $aProfileInfo['hometown']['name']; } } if ($aLocation) { $aCountryInfo = explode(',', $aLocation); $sCountry = $this->_oDb->getCountryCode(trim($aCountryInfo[1])); $sCity = trim($aCountryInfo[0]); //set default country name, especially for American brothers if ($sCity && !$sCountry) { $sCountry = $this->_oConfig->sDefaultCountryCode; } } //-- //try define the user's email $sEmail = !empty($aProfileInfo['email']) ? $aProfileInfo['email'] : $aProfileInfo['proxied_email']; //check email if ($this->_oDb->isEmailExisting($sEmail)) { $this->_oTemplate->getPage(_t('_bx_facebook'), MsgBox(_t('_bx_facebook_error_email'))); exit; } //-- fill array with all needed values --// $aProfileFields = array('NickName' => $aProfileInfo['nick_name'] . $sAlternativeName, 'Email' => $sEmail, 'Sex' => isset($aProfileInfo['gender']) ? $aProfileInfo['gender'] : '', 'DateOfBirth' => $aProfileInfo['birthday'], 'Password' => $aProfileInfo['password'], 'FirstName' => isset($aProfileInfo['first_name']) ? $aProfileInfo['first_name'] : '', 'LastName' => isset($aProfileInfo['last_name']) ? $aProfileInfo['last_name'] : '', 'DescriptionMe' => isset($aProfileInfo['bio']) ? $aProfileInfo['bio'] : '', 'Interests' => isset($aProfileInfo['interests']) ? $aProfileInfo['interests'] : '', 'Religion' => isset($aProfileInfo['religion']) ? $aProfileInfo['religion'] : '', 'Country' => $sCountry, 'City' => $sCity); //-- // check fields existence; foreach ($aProfileFields as $sKey => $mValue) { if (!$this->_oDb->isFieldExist($sKey)) { // (field not existence) remove from array; unset($aProfileFields[$sKey]); } } //-- add some system values --// $aProfileFields['Role'] = BX_DOL_ROLE_MEMBER; $aProfileFields['DateReg'] = date('Y-m-d H:i:s'); // set current date; $aProfileFields['Salt'] = $sPasswordSalt; //-- //check redirect page switch ($this->_oConfig->sRedirectPage) { case 'join': return $this->_getJoinPage($aProfileFields, $aProfileInfo['id']); case 'pedit': $sRedirectUrl = BX_DOL_URL_ROOT . 'pedit.php'; break; case 'avatar': $bAvatarRedirect = true; break; case 'index': $sRedirectUrl = BX_DOL_URL_ROOT; break; case 'member': default: $sRedirectUrl = BX_DOL_URL_ROOT . 'member.php'; break; } // create new profile; $iProfileId = $this->_oDb->createProfile($aProfileFields); $oProfileFields = new BxDolProfilesController(); //remember FB uid for created member $this->_oDb->saveFbUid($iProfileId, $aProfileInfo['id']); // check profile status; if (getParam('autoApproval_ifNoConfEmail') == 'on') { if (getParam('autoApproval_ifJoin') == 'on') { $sProfileStatus = 'Active'; if (!empty($aProfileInfo['email'])) { $oProfileFields->sendActivationMail($iProfileId); } } else { $sProfileStatus = 'Approval'; if (!empty($aProfileInfo['email'])) { $oProfileFields->sendApprovalMail($iProfileId); } } } else { if (!empty($aProfileInfo['email'])) { $oProfileFields->sendConfMail($iProfileId); $sProfileStatus = 'Unconfirmed'; } else { if (getParam('autoApproval_ifJoin') == 'on') { $sProfileStatus = 'Active'; } else { $sProfileStatus = 'Approval'; } } } // update profile's status; $this->_oDb->updateProfileStatus($iProfileId, $sProfileStatus); $oProfileFields->createProfileCache($iProfileId); if (!empty($aProfileInfo['email'])) { //-- send email notification --// $oEmailTemplate = new BxDolEmailTemplates(); $aTemplate = $oEmailTemplate->getTemplate('t_fb_connect_password_generated'); $aNewProfileInfo = getProfileInfo($iProfileId); $aPlus = array('NickName' => $aNewProfileInfo['NickName'], 'NewPassword' => $sNewPassword); sendMail($aNewProfileInfo['Email'], $aTemplate['Subject'], $aTemplate['Body'], '', $aPlus); } //-- // create system event $oZ = new BxDolAlerts('profile', 'join', $iProfileId); $oZ->alert(); //Auto-friend members if they are already friends on Facebook $this->_makeFriends($iProfileId); // set logged $aProfileInfo = getProfileInfo($iProfileId); $this->setLogged($iProfileId, $aProfileInfo['Password'], '', false); //redirect to avatar page if ($bAvatarRedirect) { if (BxDolInstallerUtils::isModuleInstalled('avatar')) { // check profile's logo; if ($sMemberAvatar) { BxDolService::call('avatar', 'set_image_for_cropping', array($iProfileId, $sMemberAvatar)); } if (BxDolService::call('avatar', 'join', array($iProfileId, '_Join complete'))) { exit; } } else { header('location:' . $this->_oConfig->sDefaultRedirectUrl); exit; } } else { //assign avatar if ($sMemberAvatar) { $this->_assignAvatar($sMemberAvatar); } //redirect to other page header('location:' . $sRedirectUrl); exit; } }