8 require_once( CH_DIRECTORY_PATH_CLASSES .
'ChWsbProfileFields.php' );
9 require_once( CH_DIRECTORY_PATH_CLASSES .
'ChWsbEmailTemplates.php' );
22 function createProfile( $aData, $bSendMails =
true, $iMainMemberID = 0 )
24 if( !$aData
or !is_array($aData)
or empty($aData) )
27 unset( $aData[
'Couple'] );
28 unset( $aData[
'Captcha'] );
29 unset( $aData[
'TermsOfUse'] );
30 unset( $aData[
'ProfilePhoto'] );
35 if( !$this -> oPF -> aArea ) {
36 echo
'Profile Fields cache not loaded. Cannot continue.';
40 $this -> aItems = $this -> oPF -> aArea[0][
'Items'];
48 $aNewProfile = array();
50 foreach( $this -> aItems
as $aItem ) {
51 $sItemName = $aItem[
'Name'];
53 if( array_key_exists( $sItemName, $aData ) ) {
54 $aNewProfile[$sItemName] = $aData[$sItemName];
55 } elseif( $aMainMember
and array_key_exists( $sItemName, $aMainMember )
and $aItem[
'Type'] !=
'system' ) {
56 if( $aItem[
'Unique'] )
57 $aNewProfile[$sItemName] = $this ->
genUniqueValue($sItemName, $aMainMember[$sItemName]);
59 $aNewProfile[$sItemName] = $aMainMember[$sItemName];
61 switch( $aItem[
'Type'] ) {
67 $aNewProfile[$sItemName] = (int)$aItem[
'Default'];
71 $aNewProfile[$sItemName] = (bool)$aItem[
'Default'];
75 switch( $sItemName ) {
85 $aNewProfile[$sItemName] = date(
'Y-m-d H:i:s' );
90 $aNewProfile[$sItemName] =
'0000-00-00';
94 $aNewProfile[$sItemName] = $aMainMember ? $iMainMemberID : 0;
98 $aNewProfile[$sItemName] =
false;
102 if (
getParam(
'autoApproval_ifNoConfEmail') ==
'on') {
104 $aNewProfile[$sItemName] =
'Active';
106 $aNewProfile[$sItemName] =
'Approval';
108 $aNewProfile[$sItemName] =
'Unconfirmed';
114 $aNewProfile[$sItemName] = $aItem[
'Default'];
125 $aNewProfile[
'allow_view_to'] = $oPrivacy->getDefaultValueModule(
'profile',
'view_block');
128 $sQuery =
"INSERT INTO `Profiles` SET \n$sSet";
130 $rRes =
db_res( $sQuery );
138 $this ->
updateProfile( $iMainMemberID, array(
'Couple' => $iNewID ) );
141 if( $bSendMails
and !$aMainMember ) {
143 if (
getParam(
'autoApproval_ifNoConfEmail') ==
'on') {
166 return array(
false,
'Failed' );
183 $sEmail = $aMember[
'Email'];
185 $sConfCode = base64_encode( base64_encode( crypt( $sEmail, CRYPT_EXT_DES ?
'secret_ph' :
'se' ) ) );
186 $sConfLink =
"{$site['url']}profile_activate.php?ConfID={$iMemID}&ConfCode=" . urlencode( $sConfCode );
188 $aPlus = array(
'ConfCode' => $sConfCode,
'ConfirmationLink' => $sConfLink );
190 $aTemplate = $this -> oEmailTemplate -> getTemplate(
't_Confirmation',
$iMemID ) ;
191 return sendMail( $sEmail, $aTemplate[
'Subject'], $aTemplate[
'Body'],
$iMemID, $aPlus,
'html',
false,
true );
202 $sEmail = $aMember[
'Email'];
203 $aTemplate = $this -> oEmailTemplate -> getTemplate(
't_Activation',
$iMemID ) ;
205 return sendMail( $sEmail, $aTemplate[
'Subject'], $aTemplate[
'Body'],
$iMemID, array(),
'html',
false,
true);
222 $aTemplate = $oEmailTemplates->getTemplate(
't_UserJoined');
229 if(
empty($aMember) || !is_array($aMember))
233 $aTemplate = $oEmailTemplates->parseTemplate(
't_UserUnregistered', array(
234 'NickName' => $aMember[
'NickName'],
235 'Email' => $aMember[
'Email'],
238 return sendMail(
$GLOBALS[
'site'][
'email'], $aTemplate[
'subject'], $aTemplate[
'body']);
243 if( !$aData
or !is_array($aData)
or empty($aData) )
249 $sQuery =
"UPDATE `Profiles` SET {$sSet} WHERE `ID` = " . (int)$iMemberID;
262 $aAllMatchFields = array();
265 $aData[
'UpdateMatch'] =
false;
269 $aMatchFields = $oMatchFields -> aArea[0][
'Items'];
273 $aAllFields = $oAllFields -> aArea[0][
'Items'];
276 foreach ($aMatchFields
as $iFieldID => $aField) {
278 $aAllMatchFields[$iFieldID] = $aField[
'Name'];
281 $iNewFieldID = $aField[
'MatchField'];
282 $aNewField = $aAllFields[$iNewFieldID];
285 $aAllMatchFields[$iNewFieldID] = $aNewField[
'Name'];
289 $aAllMatchFields[7] =
'Status';
294 foreach ($aData
as $sName => $sValue) {
296 if (in_array(
$sName, $aAllMatchFields)) {
297 $aData[
'UpdateMatch'] =
true;
309 foreach( $aData
as $sField => $mValue ) {
310 if( is_string($mValue) )
311 $sValue =
"{$GLOBALS['MySQL']->escape($mValue)}";
312 elseif( is_bool($mValue) )
313 $sValue = (int)$mValue;
314 elseif( is_array($mValue) ) {
316 foreach( $mValue
as $sStr )
317 $sValue .=
$GLOBALS[
'MySQL']->escape(str_replace(
',',
'', $sStr ),
false) .
',';
319 $sValue =
"'" . substr($sValue,0,-1) .
"'";
320 } elseif( is_int($mValue) ) {
325 $sRequestSet .=
"`$sField` = $sValue,\n";
328 $sRequestSet = substr( $sRequestSet,0, -2 );
344 return db_assoc_arr(
"SELECT * FROM `Profiles` WHERE `ID` = " . (
int)$iMemberID );
349 if( $mixedRandMore ===
true )
350 $sRand =
'(' . rand(1000, 9999) .
')';
351 else if(is_string($mixedRandMore) && !
empty($mixedRandMore))
352 $sRand = $mixedRandMore;
356 $sNewValue = $sValue . $sRand;
358 $iCount = (int)
db_value(
"SELECT COUNT(*) FROM `Profiles` WHERE `$sFieldName` = {$GLOBALS['MySQL']->escape($sNewValue)}" );