Cheetah
ChWsbConnectModule.php
Go to the documentation of this file.
1 <?php
2 
8 ch_import('ChWsbModule');
9 
11 {
13  {
14  parent::__construct($aModule);
15  }
16 
22  function _actionAdministration($sOptionApiKey, $sLangSettingsTitle, $sLangInfoTitle = '', $sLangInfoText = '', $sInfoTextParam = '')
23  {
24  $GLOBALS['iAdminPage'] = 1;
25 
26  if (!isAdmin())
27  $this->_redirect(CH_WSB_URL_ROOT);
28 
29  // get sys_option's category id;
30  $iCatId = $this-> _oDb -> getSettingsCategoryId($sOptionApiKey);
31  if (!$iCatId) {
32  $sOptions = MsgBox( _t('_Empty') );
33  }
34  else {
35  ch_import('ChWsbAdminSettings');
36  $oSettings = new ChWsbAdminSettings($iCatId);
37 
38  $mixedResult = '';
39  if(isset($_POST['save']) && isset($_POST['cat']))
40  $mixedResult = $oSettings -> saveChanges($_POST);
41 
42  $sOptions = $oSettings->getForm();
43  if ($mixedResult !== true && !empty($mixedResult))
44  $sOptions = $mixedResult . $sOptions;
45  }
46 
47  $sCssStyles = $this->_oTemplate->addCss('forms_adv.css', true);
48 
49  $this->_oTemplate->pageCodeAdminStart();
50 
51  if ($sLangInfoText) {
52  echo DesignBoxAdmin(_t($sLangInfoTitle), $GLOBALS['oSysTemplate']->parseHtmlByName('default_padding.html', array(
53  'content' => _t($sLangInfoText, CH_WSB_URL_ROOT, $sInfoTextParam)
54  )));
55  }
56 
57  echo DesignBoxAdmin(_t('_Settings'), $GLOBALS['oSysTemplate']->parseHtmlByName('default_padding.html', array(
58  'content' => $sCssStyles . $sOptions
59  )));
60 
61  $this -> _oTemplate->pageCodeAdmin(_t($sLangSettingsTitle));
62  }
63 
73  function setLogged($iProfileId, $sPassword, $sCallbackUrl = '', $bRedirect = true)
74  {
76  $GLOBALS['logged']['member'] = true;
77 
78  if ($bRedirect) {
79  $sCallbackUrl = $sCallbackUrl
80  ? $sCallbackUrl
81  : $this -> _oConfig -> sDefaultRedirectUrl;
82 
83  header('Location: ' . $sCallbackUrl);
84  }
85  }
86 
93  function getAlternativeName($sNickName)
94  {
95  $sRetNickName = '';
96  $iIndex = 1;
97 
98  do {
99 
100  if (!getID($sNickName . $iIndex))
101  $sRetNickName = $iIndex;
102 
103  $iIndex++;
104 
105  } while ($sRetNickName == '');
106 
107  return $sRetNickName;
108  }
109 
117  {
118  if(!ChWsbService::call('membership', 'is_disable_free_join'))
119  return;
120 
121  ch_import('ChWsbSession');
122  $oSession = ChWsbSession::getInstance();
123  $oSession->setValue($this->_oConfig->sSessionProfile, $aProfileInfo);
124 
125  header('Location: ' . CH_WSB_URL_ROOT . 'join.php');
126  exit;
127  }
128 
130  {
131  ch_import('ChWsbSession');
132  $oSession = ChWsbSession::getInstance();
133 
134  $aRemoteSessionProfile = $oSession->getValue($this->_oConfig->sSessionProfile);
135  if(empty($aRemoteSessionProfile) || !is_array($aRemoteSessionProfile))
136  return;
137 
138  $oSession->unsetValue($this->_oConfig->sSessionProfile);
139 
140  $aResult = $this->serviceLogin($aRemoteSessionProfile);
141  if(!empty($aResult['error'])) {
142  $oAlert->aExtras['override_error'] = $aResult['error'];
143  return;
144  }
145 
146  $oAlert->aExtras['override'] = true; // should be set to TRUE which means that JOIN will be processed using this module
147  header('location: ' . $this->_getRedirectUrl((int)$aResult['member_id'], isset($aResult['existing_profile']) && $aResult['existing_profile']));
148  exit;
149  }
150 
157  function _assignAvatar($sAvatarUrl, $iProfileId = false)
158  {
159  if (!$iProfileId)
161 
163  ChWsbService::call ('avatar', 'make_avatar_from_image_url', array($sAvatarUrl));
164  }
165 
166  if (ChWsbRequest::serviceExists('photos', 'perform_photo_upload', 'Uploader')) {
167  ch_import('ChWsbPrivacyQuery');
168  $oPrivacy = new ChWsbPrivacyQuery();
169 
170  $sTmpFile = tempnam($GLOBALS['dir']['tmp'], 'bxoauth');
171  if (false !== file_put_contents($sTmpFile, ch_file_get_contents($sAvatarUrl))) {
172  $aFileInfo = array (
173  'medTitle' => _t('_sys_member_thumb_avatar'),
174  'medDesc' => _t('_sys_member_thumb_avatar'),
175  'medTags' => _t('_ProfilePhotos'),
176  'Categories' => array(_t('_ProfilePhotos')),
177  'album' => str_replace('{nickname}', getUsername($iProfileId), getParam('ch_photos_profile_album_name')),
178  'albumPrivacy' => $oPrivacy->getDefaultValueModule('photos', 'album_view'),
179  );
180  ChWsbService::call('photos', 'perform_photo_upload', array($sTmpFile, $aFileInfo, false), 'Uploader');
181  @unlink($sTmpFile);
182  }
183  }
184  }
185 
193  function _createProfile($aProfileInfo, $sAlternativeName = '')
194  {
195  $mixed = $this->_createProfileRaw($aProfileInfo, $sAlternativeName);
196 
197  // display error
198  if (is_string($mixed)) {
199  $this->_oTemplate->getPage(_t($this->_oConfig->sDefaultTitleLangKey), MsgBox($mixed));
200  exit;
201  }
202 
203  // display join page
204  if (is_array($mixed) && isset($mixed['join_page_redirect'])) {
205  $this->_getJoinPage($mixed['profile_fields'], $mixed['remote_profile_info']['id']);
206  exit;
207  }
208 
209  // continue profile creation
210  if (is_array($mixed) && isset($mixed['profile_id'])) {
211  $iProfileId = (int)$mixed['profile_id'];
212  $sMemberAvatar = !empty($mixed['remote_profile_info']['picture']) ? $mixed['remote_profile_info']['picture'] : '';
213 
214  //redirect to avatar page
215  if ($this->_oConfig->sRedirectPage == 'avatar' && !$mixed['existing_profile'] && ChWsbInstallerUtils::isModuleInstalled('avatar')) {
216  // check profile's logo;
217  if($sMemberAvatar)
218  ChWsbService::call('avatar', 'set_image_for_cropping', array($iProfileId, $sMemberAvatar));
219 
220  if(ChWsbService::call('avatar', 'join', array($iProfileId, '_Join complete')))
221  exit;
222  }
223  else {
224  if($sMemberAvatar && !$mixed['existing_profile'])
225  $this->_assignAvatar($sMemberAvatar);
226 
227  //redirect to other page
228  header('location:' . $this->_getRedirectUrl($iProfileId, $mixed['existing_profile']));
229  exit;
230  }
231  }
232 
233  $this->_oTemplate->getPage( _t($this->_oConfig->sDefaultTitleLangKey), MsgBox(_t('_Error Occured')) );
234  exit;
235  }
236 
242  protected function _convertRemoteFields($aProfileInfo, $sAlternativeName = '')
243  {
244  }
245 
254  function _createProfileRaw($aProfileInfo, $sAlternativeName = '', $isAutoFriends = true, $isSetLoggedIn = true)
255  {
256  $sCountry = '';
257  $sCity = '';
258 
259  // join by invite only
260  if ( getParam('reg_by_inv_only') == 'on' && (!isset($_COOKIE['idFriend']) || getID($_COOKIE['idFriend']) == 0) )
261  return _t('_registration by invitation only');
262 
263 
264  // convert fields
265  $aProfileFields = $this->_convertRemoteFields($aProfileInfo, $sAlternativeName);
266  if (empty($aProfileFields['Email']))
267  return _t('_Incorrect Email');
268 
269  // antispam check
270  ch_import('ChWsbStopForumSpam');
271  $oChWsbStopForumSpam = new ChWsbStopForumSpam();
272  if (2 == getParam('ipBlacklistMode') && ch_is_ip_blocked())
273  return _t('_Sorry, your IP been banned');
274  elseif (('on' == getParam('sys_dnsbl_enable') && 'block' == getParam('sys_dnsbl_behaviour') && ch_is_ip_dns_blacklisted('', 'join oauth')) || $oChWsbStopForumSpam->isSpammer(array('email' => $aProfileFields['Email'], 'ip' => getVisitorIP(false)), 'join oauth'))
275  return sprintf(_t('_sys_spam_detected'), CH_WSB_URL_ROOT . 'contact.php');
276 
277 
278  // check fields existence;
279  foreach($aProfileFields as $sKey => $mValue) {
280  if( !$this->_oDb->isFieldExist($sKey) ) {
281  // (field not existence) remove from array;
282  unset($aProfileFields[$sKey]);
283  }
284  }
285 
286  // add some system values
287  $sNewPassword = genRndPwd();
288  $sPasswordSalt = genRndSalt();
289 
290  $aProfileFields['Password'] = encryptUserPwd($sNewPassword, $sPasswordSalt);
291  $aProfileFields['Role'] = CH_WSB_ROLE_MEMBER;
292  $aProfileFields['DateReg'] = date( 'Y-m-d H:i:s' ); // set current date;
293  $aProfileFields['Salt'] = $sPasswordSalt;
294 
295  // set default privacy
296  ch_import('ChWsbPrivacyQuery');
297  $oPrivacy = new ChWsbPrivacyQuery();
298  $aProfileFields['allow_view_to'] = $oPrivacy->getDefaultValueModule('profile', 'view_block');
299 
300  // check if user with the same email already exists
301  $iExistingProfileId = $this->_oDb->isEmailExisting($aProfileFields['Email']);
302 
303  // check redirect page
304  if ('join' == $this->_oConfig->sRedirectPage && !$iExistingProfileId)
305  return array('remote_profile_info' => $aProfileInfo, 'profile_fields' => $aProfileFields, 'join_page_redirect' => true);
306 
307  // create new profile
308  if ($iExistingProfileId)
309  $iProfileId = $iExistingProfileId;
310  else
311  $iProfileId = $this->_oDb->createProfile($aProfileFields);
312 
313  $oProfileFields = new ChWsbProfilesController();
314 
315  // remember remote profile id for created member
316  $this ->_oDb->saveRemoteId($iProfileId, $aProfileInfo['id']);
317 
318  // check profile status;
319  if (!$iExistingProfileId) {
320  if ( getParam('autoApproval_ifNoConfEmail') == 'on' ) {
321  if ( getParam('autoApproval_ifJoin') == 'on' ) {
322  $sProfileStatus = 'Active';
323  if( !empty($aProfileInfo['email']) ) {
324  $oProfileFields -> sendActivationMail($iProfileId);
325  }
326  } else {
327  $sProfileStatus = 'Approval';
328  if( !empty($aProfileInfo['email']) ) {
329  $oProfileFields -> sendApprovalMail($iProfileId);
330  }
331  }
332  } else {
333  if( !empty($aProfileInfo['email']) ) {
334  $oProfileFields -> sendConfMail($iProfileId);
335  $sProfileStatus = 'Unconfirmed';
336  } else {
337  if ( getParam('autoApproval_ifJoin') == 'on' ) {
338  $sProfileStatus = 'Active';
339  } else {
340  $sProfileStatus = 'Approval';
341  }
342  }
343  }
344 
345  // update profile's status;
346  $this->_oDb->updateProfileStatus($iProfileId, $sProfileStatus);
347  $oProfileFields->createProfileCache($iProfileId);
348 
349  // send email notification
350  if( !empty($aProfileInfo['email']) ) {
351  $oEmailTemplate = new ChWsbEmailTemplates();
352  $aTemplate = $oEmailTemplate->getTemplate($this->_oConfig->sEmailTemplatePasswordGenerated, $iProfileId);
353  $aNewProfileInfo = getProfileInfo($iProfileId);
354 
355  $aPlus = array(
356  'NickName' => getNickName($aNewProfileInfo['ID']),
357  'NewPassword' => $sNewPassword,
358  );
359 
360  sendMail($aNewProfileInfo['Email'], $aTemplate['Subject'], $aTemplate['Body'], '', $aPlus);
361  }
362 
363  // update location
364  if (ChWsbModule::getInstance('ChWmapModule'))
365  ChWsbService::call('wmap', 'response_entry_add', array('profiles', $iProfileId));
366 
367  // create system event
368  $oZ = new ChWsbAlerts('profile', 'join', $iProfileId);
369  $oZ -> alert();
370 
371  }
372 
373  // store IP
375 
376  // auto-friend members if they are already friends on remote site
377  if ($isAutoFriends && method_exists($this, '_makeFriends'))
378  $this->_makeFriends($iProfileId);
379 
380  // set logged
381  if ($isSetLoggedIn) {
383  $this->setLogged($iProfileId, $aProfile['Password'], '', false);
384  }
385 
386  return array('remote_profile_info' => $aProfileInfo, 'profile_id' => $iProfileId, 'existing_profile' => $iExistingProfileId ? true : false);
387  }
388 
396  function _getJoinPage($aProfileFields, $iRemoteProfileId)
397  {
398  ch_import('ChWsbSession');
399  $oSession = ChWsbSession::getInstance();
400  $oSession->setValue($this->_oConfig->sSessionUid, $iRemoteProfileId);
401 
402  ch_import("ChWsbJoinProcessor");
403 
404  $GLOBALS['oSysTemplate']->addJs(array('join.js', 'jquery.form.min.js'));
405 
406  $oJoin = new ChWsbJoinProcessor();
407 
408  // process received fields
409  foreach($aProfileFields as $sFieldName => $sValue)
410  $oJoin -> aValues[0][$sFieldName] = $sValue;
411 
412  $this->_oTemplate->getPage(_t('_JOIN_H'), $this->_oTemplate->parseHtmlByName('default_padding.html', array('content' => $oJoin->process())));
413  exit;
414  }
415 
422  function _getRedirectUrl($iProfileId, $isExistingProfile = false)
423  {
424  if ($isExistingProfile)
425  return 'index' == $this->_oConfig->sRedirectPage ? CH_WSB_URL_ROOT : CH_WSB_URL_ROOT . 'member.php';
426 
427  $sRedirectUrl = $this->_oConfig->sDefaultRedirectUrl;
428 
429  switch($this->_oConfig->sRedirectPage) {
430  case 'join':
431  case 'pedit':
432  $sRedirectUrl = CH_WSB_URL_ROOT . 'pedit.php?ID=' . (int)$iProfileId;
433  break;
434 
435  case 'avatar':
436  if(ChWsbInstallerUtils::isModuleInstalled('avatar') && ChWsbService::call('avatar', 'join', array($iProfileId, '_Join complete')))
437  exit;
438  break;
439 
440  case 'index':
441  $sRedirectUrl = CH_WSB_URL_ROOT;
442  break;
443 
444  case 'member':
445  default:
446  $sRedirectUrl = CH_WSB_URL_ROOT . 'member.php';
447  break;
448  }
449 
450  return $sRedirectUrl;
451  }
452 
453  protected function _redirect($sUrl, $iStatus = 302)
454  {
455  header("Location:{$sUrl}", true, $iStatus);
456  exit;
457  }
458 }
header
</code > Be careful enabling this directive if you have a redirector script that does not use the< code > Location</code > HTTP header
Definition: URI.MungeResources.txt:10
$oSettings
$oSettings
Definition: advanced_settings.php:20
ChWsbConnectModule\_convertRemoteFields
_convertRemoteFields($aProfileInfo, $sAlternativeName='')
Definition: ChWsbConnectModule.php:242
getVisitorIP
getVisitorIP($isProxyCheck=true)
Definition: utils.inc.php:643
ch_login
ch_login($iId, $bRememberMe=false, $bAlert=true)
Definition: profiles.inc.php:514
ChWsbConnectModule\_createProfileRaw
_createProfileRaw($aProfileInfo, $sAlternativeName='', $isAutoFriends=true, $isSetLoggedIn=true)
Definition: ChWsbConnectModule.php:254
ChWsbConnectModule\processJoinAfterPayment
processJoinAfterPayment(&$oAlert)
Definition: ChWsbConnectModule.php:129
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
ChWsbConnectModule\_getJoinPage
_getJoinPage($aProfileFields, $iRemoteProfileId)
Definition: ChWsbConnectModule.php:396
ChWsbModule\getInstance
static getInstance($sClassName)
Definition: ChWsbModule.php:89
genRndSalt
genRndSalt()
Definition: utils.inc.php:1637
ChWsbConnectModule\getJoinAfterPaymentPage
getJoinAfterPaymentPage($aProfileInfo)
Definition: ChWsbConnectModule.php:116
ChWsbRequest\serviceExists
static serviceExists($mixedModule, $sMethod, $sClass="Module")
Definition: ChWsbRequest.php:70
$aModule
$aModule
Definition: classifieds.php:21
ChWsbEmailTemplates
Definition: ChWsbEmailTemplates.php:11
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
$aResult
$aResult
Definition: index.php:19
$oAlert
$oAlert
Definition: embed.php:15
sendMail
sendMail( $sRecipientEmail, $sMailSubject, $sMailBody, $iRecipientID=0, $aPlus=array(), $sEmailFlag='html', $isDisableAlert=false, $bForceSend=false)
Definition: utils.inc.php:461
ChWsbPrivacyQuery
Definition: ChWsbPrivacyQuery.php:11
$sUrl
$sUrl
Definition: cart.php:15
php
ChWsbStopForumSpam
Definition: ChWsbStopForumSpam.php:12
$oZ
$oZ
Definition: db.php:20
ChWsbConnectModule\_actionAdministration
_actionAdministration($sOptionApiKey, $sLangSettingsTitle, $sLangInfoTitle='', $sLangInfoText='', $sInfoTextParam='')
Definition: ChWsbConnectModule.php:22
isAdmin
isAdmin()
Definition: index.php:649
ch_member_ip_store
ch_member_ip_store($iMemberId, $sIP=false)
Definition: utils.inc.php:1799
DesignBoxAdmin
DesignBoxAdmin($sTitle, $sContent, $mixedTopItems='', $sBottomItems='', $iIndex=1)
Definition: admin_design.inc.php:50
$sPassword
$sPassword
Definition: actions.inc.php:10
ChWsbAlerts
Definition: ChWsbAlerts.php:39
exit
exit
Definition: cart.php:21
ChWsbConnectModule\setLogged
setLogged($iProfileId, $sPassword, $sCallbackUrl='', $bRedirect=true)
Definition: ChWsbConnectModule.php:73
$iIndex
$iIndex
Definition: bottom_menu_compose.php:142
ChWsbConnectModule\getAlternativeName
getAlternativeName($sNickName)
Definition: ChWsbConnectModule.php:93
ChWsbConnectModule\_redirect
_redirect($sUrl, $iStatus=302)
Definition: ChWsbConnectModule.php:453
getParam
getParam($sParamName, $bUseCache=true)
Definition: db.inc.php:130
getLoggedId
getLoggedId()
Definition: profiles.inc.php:32
$aProfile
$aProfile
Definition: flash.php:14
ChWsbJoinProcessor
Definition: ChWsbJoinProcessor.php:17
getNickName
getNickName( $ID='')
Definition: profiles.inc.php:461
ChWsbConnectModule\_assignAvatar
_assignAvatar($sAvatarUrl, $iProfileId=false)
Definition: ChWsbConnectModule.php:157
ch_file_get_contents
ch_file_get_contents($sFileUrl, $aParams=array(), $sMethod='get', $aHeaders=array(), &$sHttpCode=null)
Definition: utils.inc.php:1357
ChWsbConnectModule\__construct
__construct($aModule)
Definition: ChWsbConnectModule.php:12
getUsername
getUsername( $ID='')
Definition: profiles.inc.php:443
genRndPwd
genRndPwd($iLength=8, $bSpecialCharacters=true)
Definition: utils.inc.php:1618
ChWsbModule
Definition: ChWsbModule.php:41
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
ChWsbSession\getInstance
static getInstance()
Definition: ChWsbSession.php:28
CH_WSB_ROLE_MEMBER
const CH_WSB_ROLE_MEMBER
Definition: profiles.inc.php:16
ChWsbAdminSettings
Definition: ChWsbAdminSettings.php:35
ChWsbProfilesController
Definition: ChWsbProfilesController.php:12
$aProfileInfo
$aProfileInfo
Definition: short_profile_info.php:23
ChWsbConnectModule\_createProfile
_createProfile($aProfileInfo, $sAlternativeName='')
Definition: ChWsbConnectModule.php:193
$sCountry
$sCountry
Definition: browse.php:26
getID
getID( $str, $with_email=1)
Definition: admin.inc.php:139
ChWsbConnectModule\_getRedirectUrl
_getRedirectUrl($iProfileId, $isExistingProfile=false)
Definition: ChWsbConnectModule.php:422
getProfileInfo
getProfileInfo($iProfileID=0, $checkActiveStatus=false, $forceCache=false)
Definition: profiles.inc.php:249
encryptUserPwd
encryptUserPwd($sPwd, $sSalt)
Definition: utils.inc.php:1643
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
ChWsbService\call
static call($mixed, $sMethod, $aParams=array(), $sClass='Module')
Definition: ChWsbService.php:32
ChWsbInstallerUtils\isModuleInstalled
static isModuleInstalled($sUri)
Definition: ChWsbInstallerUtils.php:38
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
ch_is_ip_dns_blacklisted
ch_is_ip_dns_blacklisted($sCurIP='', $sType='')
Definition: utils.inc.php:995
ch_is_ip_blocked
ch_is_ip_blocked($sCurIP='')
Definition: utils.inc.php:1042
$iProfileId
if( $sMembersList) $iProfileId
Definition: communicator.php:29
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10
ChWsbConnectModule
Definition: ChWsbConnectModule.php:11