getPath( 'front_html' ) ); /** * CB framework * @global CBframework $_CB_framework */ global $_CB_framework; /** @global array $ueConfig */ global $ueConfig; if ( defined( 'JPATH_ADMINISTRATOR' ) ) { include_once( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' ); } else { include_once( $mainframe->getCfg( 'absolute_path' ). '/administrator/components/com_comprofiler/plugin.foundation.php' ); } $_CB_framework->cbset( '_ui', 1 ); // we're in 1: frontend, 2: admin back-end if($_CB_framework->getCfg( 'debug' )) { ini_set('display_errors',true); error_reporting(E_ALL); } cbimport( 'language.front' ); cbimport( 'cb.tabs' ); cbimport( 'cb.imgtoolbox' ); if ( class_exists( 'JFactory' ) ) { // Joomla 1.5 : for string WARNREG_EMAIL_INUSE used in error js popup. $lang =& JFactory::getLanguage(); $lang->load( "com_user" ); } $option = $_CB_framework->getRequestVar( 'option' ); $task = $_CB_framework->getRequestVar( 'task' ); $form = cbGetParam( $_REQUEST, 'reportform', 1 ); $uid = cbGetParam( $_REQUEST, 'uid', 0 ); $act = cbGetParam( $_REQUEST, 'act', 1 ); $oldignoreuserabort = null; $_CB_framework->document->_outputToHeadCollectionStart(); ob_start(); switch( $task ) { case "userDetails": case "userdetails": userEdit( $option, $uid, _UE_UPDATE ); break; case "saveUserEdit": case "saveuseredit": $oldignoreuserabort = ignore_user_abort(true); userSave( $option, (int) cbGetParam( $_POST, 'id', 0 ) ); break; case "userProfile": case "userprofile": userProfile($option, $_CB_framework->myId(), _UE_UPDATE); break; case "usersList": case "userslist": usersList( $_CB_framework->myId() ); break; case "userAvatar": case "useravatar": userAvatar($option, $uid, _UE_UPDATE); break; case "lostPassword": case "lostpassword": lostPassForm( $option ); break; case "sendNewPass": case "sendnewpass": $oldignoreuserabort = ignore_user_abort(true); sendNewPass( $option ); break; case "registers": registerForm( $option, isset( $ueConfig['emailpass'] ) ? $ueConfig['emailpass'] : '0' ); break; case "saveregisters": $oldignoreuserabort = ignore_user_abort(true); saveRegistration( $option ); break; case "login": $oldignoreuserabort = ignore_user_abort(true); login(); break; case "logout": $oldignoreuserabort = ignore_user_abort(true); logout(); break; case "confirm": $oldignoreuserabort = ignore_user_abort(true); confirm( cbGetParam( $_GET, 'confirmcode', '1' ) ); // mambo 4.5.3h braindead: does intval of octal from hex in cbGetParam... break; case "moderateImages": case "moderateimages": $oldignoreuserabort = ignore_user_abort(true); moderateImages($option); break; case "moderateReports": case "moderatereports": $oldignoreuserabort = ignore_user_abort(true); moderateReports($option); break; case "moderateBans": case "moderatebans": $oldignoreuserabort = ignore_user_abort(true); moderateBans($option,$act,$uid); break; case "approveImage": case "approveimage": $oldignoreuserabort = ignore_user_abort(true); approveImage(); break; case "reportUser": case "reportuser": $oldignoreuserabort = ignore_user_abort(true); reportUser($option,$form,$uid); break; case "processReports": case "processreports": $oldignoreuserabort = ignore_user_abort(true); processReports(); break; case "banProfile": case "banprofile": $oldignoreuserabort = ignore_user_abort(true); banUser($option,$uid,$form,$act); break; case "viewReports": case "viewreports": viewReports($option,$uid,$act); break; case "emailUser": case "emailuser": emailUser($option,$uid); break; case "pendingApprovalUser": case "pendingapprovaluser": pendingApprovalUsers($option); break; case "approveUser": case "approveuser": $oldignoreuserabort = ignore_user_abort(true); approveUser(cbGetParam($_POST,'uids')); break; case "rejectUser": case "rejectuser": $oldignoreuserabort = ignore_user_abort(true); rejectUser(cbGetParam($_POST,'uids')); break; case "sendUserEmail": case "senduseremail": $oldignoreuserabort = ignore_user_abort(true); sendUserEmail( $option, (int) cbGetParam( $_POST, 'toID', 0 ), (int) cbGetParam( $_POST, 'fromID', 0 ), cbGetParam( $_POST, 'emailSubject', '' ), cbGetParam( $_POST, 'emailBody', '' ) ); break; case "addConnection": case "addconnection": $oldignoreuserabort = ignore_user_abort(true); addConnection( $_CB_framework->myId(), (int) cbGetParam($_REQUEST,'connectionid'), ((isset($_POST['message'])) ? cbGetParam($_POST,'message') : "")); break; case "removeConnection": case "removeconnection": $oldignoreuserabort = ignore_user_abort(true); removeConnection( $_CB_framework->myId(), (int) cbGetParam($_REQUEST, 'connectionid') ); break; case "denyConnection": case "denyconnection": $oldignoreuserabort = ignore_user_abort(true); denyConnection( $_CB_framework->myId(), (int) cbGetParam($_REQUEST,'connectionid')); break; case "acceptConnection": case "acceptconnection": $oldignoreuserabort = ignore_user_abort(true); acceptConnection( $_CB_framework->myId(), (int) cbGetParam($_REQUEST,'connectionid')); break; case "manageConnections": case "manageconnections": manageConnections( $_CB_framework->myId() ); break; case "saveConnections": case "saveconnections": $oldignoreuserabort = ignore_user_abort(true); saveConnections(cbGetParam($_POST,'uid')); break; case "processConnectionActions": case "processconnectionactions": $oldignoreuserabort = ignore_user_abort(true); processConnectionActions(cbGetParam($_POST,'uid')); break; case "teamCredits": case "teamcredits": teamCredits(1); break; case "fieldclass": case "tabclass": case "pluginclass": tabClass( $option, $task, $_CB_framework->myId() ); break; case "done": break; case "performcheckusername": performCheckUsername( cbGetParam( $_POST, 'value' ), cbGetParam( $_GET, 'function' ) ); break; case "performcheckemail": performCheckEmail( cbGetParam( $_POST, 'value' ), cbGetParam( $_GET, 'function' ) ); break; default: userProfile($option, $_CB_framework->myId(), _UE_UPDATE); break; } if (!is_null($oldignoreuserabort)) ignore_user_abort($oldignoreuserabort); echo $_CB_framework->getAllJsPageCodes(); $html = ob_get_contents(); ob_end_clean(); if ( cbGetParam( $_GET, 'no_html', 0 ) != 1 ) { echo $_CB_framework->document->_outputToHead(); } echo $html; // END OF MAIN. function sendUserEmail( $option, $toid, $fromid, $subject, $message ) { global $ueConfig, $_CB_framework, $_CB_database, $_POST, $_PLUGINS; // simple spoof check security cbSpoofCheck( 'emailUser' ); $errorMsg = cbAntiSpamCheck( false ); if (($_CB_framework->myId() == 0) || ($_CB_framework->myId() != $fromid) || ( ! $toid ) || ($ueConfig['allow_email_display']!=1 && $ueConfig['allow_email_display']!=3)) { cbNotAuth(); return; } $rowFrom = new moscomprofilerUser( $_CB_database ); $rowFrom->load( (int) $fromid ); $rowTo = new moscomprofilerUser( $_CB_database ); $rowTo->load( (int) $toid ); $subject = stripslashes( $subject ); // cbGetParam() adds slashes...remove'em... $message = stripslashes( $message ); if ( ! $errorMsg ) { $errorMsg = _UE_SESSIONTIMEOUT . " " . _UE_SENTEMAILFAILED; if ( isset( $_POST["protect"] ) ) { $parts = explode( '_', cbGetParam( $_POST, 'protect', '' ) ); if ( ( count( $parts ) == 3 ) && ( $parts[0] == 'cbmv1' ) && ( strlen( $parts[2] ) == 16 ) && ( $parts[1] == md5($parts[2].$rowTo->id.$rowTo->password.$rowTo->lastvisitDate.$rowFrom->password.$rowFrom->lastvisitDate) ) ) { $errorMsg = null; $_PLUGINS->loadPluginGroup('user'); $pluginResults = $_PLUGINS->trigger( 'onBeforeEmailUser', array( &$rowFrom, &$rowTo, 1 )); //$ui=1 if ($_PLUGINS->is_errors()) { $errorMsg = $_PLUGINS->getErrorMSG( '
') . "\n"; } else { $spamCheck = cbSpamProtect( $_CB_framework->myId(), true ); if ( $spamCheck ) { $errorMsg = $spamCheck; } else { $cbNotification = new cbNotification(); $res = $cbNotification->sendUserEmail($toid,$fromid,$subject,$message, true); if ($res) { echo _UE_SENTEMAILSUCCESS; if (is_array($pluginResults)) { echo implode( "
", $pluginResults ); } return; } else { $errorMsg = _UE_SENTEMAILFAILED; } } } } } } echo '
' . $errorMsg . '
'; HTML_comprofiler::emailUser( $option, $rowFrom, $rowTo, $subject, $message ); } function emailUser($option,$uid) { global $_CB_framework, $_CB_database, $ueConfig; if (($_CB_framework->myId() == 0) || ($ueConfig['allow_email_display']!=1 && $ueConfig['allow_email_display']!=3)) { cbNotAuth(); return; } $spamCheck = cbSpamProtect( $_CB_framework->myId(), false ); if ( $spamCheck ) { echo $spamCheck; return; } $rowFrom = new moscomprofilerUser( $_CB_database ); $rowFrom->load( $_CB_framework->myId() ); $rowTo = new moscomprofilerUser( $_CB_database ); $rowTo->load( (int) $uid ); HTML_comprofiler::emailUser($option,$rowFrom,$rowTo); } function userEdit( $option, $uid, $submitvalue, $regErrorMSG = null ) { global $_CB_framework, $_POST, $_PLUGINS; $msg = cbCheckIfUserCanPerformUserTask( $uid, 'allowModeratorsUserEdit'); if ( ( $uid != $_CB_framework->myId() ) && ( $msg === null ) ) { // safeguard against missconfiguration of the above: also avoids lower-level users editing higher level ones: $msg = checkCBpermissions( array( (int) $uid ), 'edit', true ); } if ( $msg ) { echo $msg; return; } $_PLUGINS->loadPluginGroup('user'); $cbUser =& CBuser::getInstance( $uid ); if ( $cbUser !== null ) { $user =& $cbUser->getUserData(); HTML_comprofiler::userEdit( $user, $option, $submitvalue, $regErrorMSG ); } else { echo '
' . _UE_ERROR_USER_NOT_SYNCHRONIZED . '
'; } /* $user = new moscomprofilerUser( $_CB_database ); if ( $user->load( (int) $uid ) ) { HTML_comprofiler::userEdit( $user, $option, $submitvalue, $regErrorMSG ); } else { echo '
' . _UE_ERROR_USER_NOT_SYNCHRONIZED . '
'; } */ } function userSave( $option, $uid ) { global $_CB_framework, $_CB_database, $_POST, $_PLUGINS; // simple spoof check security cbSpoofCheck( 'userEdit' ); // check rights to access: if ( $uid == null ) { echo _UE_USER_PROFILE_NOT; return; } $msg = cbCheckIfUserCanPerformUserTask( $uid, 'allowModeratorsUserEdit' ); if ( $msg ) { echo $msg; return; } $_PLUGINS->loadPluginGroup('user'); // Get current user state: $userComplete = new moscomprofilerUser( $_CB_database ); if ( ! $userComplete->load( (int) $uid ) ) { echo _UE_USER_PROFILE_NOT; return; } // Update lastupdatedate of profile by user: if ( $_CB_framework->myId() == $uid ) { $userComplete->lastupdatedate = date( 'Y-m-d H:i:s' ); } // Store new user state: $saveResult = $userComplete->saveSafely( $_POST, $_CB_framework->getUi(), 'edit' ); if ( ! $saveResult ) { $regErrorMSG = $userComplete->getError(); echo "\n"; // userEdit( $option, $uid, _UE_UPDATE, $userComplete->getError() ); HTML_comprofiler::userEdit( $userComplete, $option, _UE_UPDATE, $regErrorMSG ); return; } cbRedirectToProfile( $uid, _USER_DETAILS_SAVE ); } function userAvatar( $option, $uid, $submitvalue) { global $_CB_database, $_CB_framework, $_REQUEST, $ueConfig, $_PLUGINS, $_FILES; if ( ! $uid ) { $uid = $_CB_framework->myId(); } if ( ! $uid ) { echo _UE_NOT_AUTHORIZED; return; } $msg = cbCheckIfUserCanPerformUserTask( $uid, 'allowModeratorsUserEdit'); if ( $msg ) { echo $msg; return; } $row = new moscomprofilerUser( $_CB_database ); if ( ! $row->load( (int) $uid ) ) { echo _UE_NOSUCHPROFILE; return; } $do = cbGetParam( $_REQUEST, 'do', 'init' ); if ( $do == 'init' ) { HTML_comprofiler::userAvatar( $row, $option, $submitvalue); } elseif ( $do == 'validate' ) { // simple spoof check security cbSpoofCheck( 'userAvatar' ); if ( ! $ueConfig['allowAvatarUpload'] ) { cbNotAuth(); return; } $isModerator=isModerator( $_CB_framework->myId() ); if ( ( ! isset( $_FILES['avatar']['tmp_name'] ) ) || empty( $_FILES['avatar']['tmp_name'] ) || ( $_FILES['avatar']['error'] != 0 ) || ( ! is_uploaded_file( $_FILES['avatar']['tmp_name'] ) ) ) { cbRedirectToProfile( $row->id, _UE_UPLOAD_ERROR_EMPTY, 'userAvatar' ); } $_PLUGINS->loadPluginGroup( 'user' ); $_PLUGINS->trigger( 'onBeforeUserAvatarUpdate', array( &$row, &$row, $isModerator, &$_FILES['avatar']['tmp_name'] ) ); if ($_PLUGINS->is_errors()) { cbRedirectToProfile( $row->id, $_PLUGINS->getErrorMSG(), 'userAvatar' ); } $imgToolBox = new imgToolBox(); $imgToolBox->_conversiontype = $ueConfig['conversiontype']; $imgToolBox->_IM_path = $ueConfig['im_path']; $imgToolBox->_NETPBM_path = $ueConfig['netpbm_path']; $imgToolBox->_maxsize = $ueConfig['avatarSize']; $imgToolBox->_maxwidth = $ueConfig['avatarWidth']; $imgToolBox->_maxheight = $ueConfig['avatarHeight']; $imgToolBox->_thumbwidth = $ueConfig['thumbWidth']; $imgToolBox->_thumbheight = $ueConfig['thumbHeight']; $imgToolBox->_debug = 0; $allwaysResize = ( isset( $ueConfig['avatarResizeAlways'] ) ? $ueConfig['avatarResizeAlways'] : 1 ); $newFileName = $imgToolBox->processImage( $_FILES['avatar'], uniqid($row->id."_"), $_CB_framework->getCfg('absolute_path') . '/images/comprofiler/', 0, 0, 1, $allwaysResize ); if ( ! $newFileName ) { cbRedirectToProfile( $row->id, $imgToolBox->_errMSG, 'userAvatar' ); } if ($row->avatar != null && $row->avatar!="") { deleteAvatar($row->avatar); } if ($ueConfig['avatarUploadApproval']==1 && $isModerator==0) { $cbNotification = new cbNotification(); $cbNotification->sendToModerators(_UE_IMAGE_ADMIN_SUB,_UE_IMAGE_ADMIN_MSG); $_CB_database->setQuery("UPDATE #__comprofiler SET avatar='" . $_CB_database->getEscaped($newFileName) . "', avatarapproved=0 WHERE id=" . (int) $row->id); $redMsg = _UE_UPLOAD_PEND_APPROVAL; } else { $_CB_database->setQuery("UPDATE #__comprofiler SET avatar='" . $_CB_database->getEscaped($newFileName) . "', avatarapproved=1, lastupdatedate='".date('Y-m-d\TH:i:s')."' WHERE id=" . (int) $row->id); $redMsg = _UE_UPLOAD_SUCCESSFUL; } $_CB_database->query(); $_PLUGINS->trigger( 'onAfterUserAvatarUpdate', array(&$row,&$row,$isModerator,$newFileName) ); cbRedirectToProfile( $row->id, $redMsg ); } elseif ( $do == 'fromgallery' ) { // simple spoof check security cbSpoofCheck( 'userAvatar' ); if( ! $ueConfig['allowAvatarGallery'] ) { cbNotAuth(); return; } $newAvatar = cbGetParam( $_POST, 'newavatar', null ); if ( ( $newAvatar == '' ) || preg_match( '/[^-_a-zA-Z0-9.]/', $newAvatar ) || ( strpos( $newAvatar, '..' ) !== false ) ) { cbRedirectToProfile( $row->id, _UE_UPLOAD_ERROR_CHOOSE, 'userAvatar' ); } $_CB_database->setQuery( "UPDATE #__comprofiler SET avatar = " . $_CB_database->Quote( 'gallery/' . $newAvatar ) . ", avatarapproved=1, lastupdatedate = " . $_CB_database->Quote( date('Y-m-d H:i:s') ) . " WHERE id = " . (int) $row->id); if( ! $_CB_database->query() ) { $msg = _UE_USER_PROFILE_NOT; }else { // delete old avatar: deleteAvatar( $row->avatar ); $msg = _UE_USER_PROFILE_UPDATED; } cbRedirectToProfile( $row->id, $msg ); } elseif ( $do == 'deleteavatar' ) { if ( $row->avatar != null && $row->avatar != "" ) { deleteAvatar( $row->avatar ); $_CB_database->setQuery("UPDATE #__comprofiler SET avatar=null, avatarapproved=1, lastupdatedate='" . date('Y-m-d H:i:s') . "' WHERE id=" . (int) $row->id); $_CB_database->query(); } cbRedirectToProfile( $row->id, _USER_DETAILS_SAVE ); } } function & loadComprofilerUser( $uid ) { global $_CB_framework, $_REQUEST; if ( ! isset( $_REQUEST['user'] ) ) { if ( ! $uid ) { $null = null; return $null; } } else { $userReq = urldecode( stripslashes( cbGetParam( $_REQUEST, 'user' ) ) ); $len = strlen( $userReq ); if ( ( $len > 2 ) && ( $userReq[0] == "'" ) && ( $userReq[$len-1] == "'" ) ) { $userReq = substr($userReq, 1, $len-2); $uid = $_CB_framework->getUserIdFrom( 'username', utf8ToISO( $userReq ) ); } else { $uid = (int) $userReq; } } if ( $uid ) { $cbUser =& CBuser::getInstance( $uid ); if ( $cbUser ) { $user =& $cbUser->getUserData(); return $user; } } /* global $_CB_database; $user = new moscomprofilerUser( $_CB_database ); if ( $user->load( (int) $uid ) ) { return $user; } } */ $null = null; return $null; } function userProfile( $option, $uid, $submitvalue) { global $_REQUEST, $ueConfig, $_CB_framework; if ( isset( $_REQUEST['user'] ) ) { if ( ! allowAccess( $ueConfig['allow_profileviewbyGID'], 'RECURSE', userGID( $_CB_framework->myId() ) ) ) { if ( ( $_CB_framework->myId() < 1 ) && ( ! ( ( ( $_CB_framework->getCfg( 'allowUserRegistration' ) == '0' ) && ( ( ! isset($ueConfig['reg_admin_allowcbregistration']) ) || $ueConfig['reg_admin_allowcbregistration'] != '1' ) ) ) ) && allowAccess( $ueConfig['allow_profileviewbyGID'], 'RECURSE', $_CB_framework->acl->get_group_id('Registered','ARO') ) ) { echo _UE_REGISTERFORPROFILEVIEW; } else { echo _UE_NOT_AUTHORIZED; } return; } } else { if ($uid==0) { echo _UE_REGISTERFORPROFILE; return; } } $user =& loadComprofilerUser( $uid ); if ( $user === null ) { echo _UE_NOSUCHPROFILE; return; } HTML_comprofiler::userProfile( $user, $option, $submitvalue); } // NB for now duplicated in frontend and admin backend: function tabClass( $option, $task, $uid ) { global $_CB_framework, $_PLUGINS, $ueConfig, $_REQUEST, $_POST; $user =& loadComprofilerUser( $uid ); $cbUser =& CBuser::getInstance( ( $user === null ? null : $user->id ) ); $unsecureChars = array( '/', '\\', ':', ';', '{', '}', '(', ')', "\"", "'", '.', ',', "\0", ' ', "\t", "\n", "\r", "\x0B" ); if ( $task == 'fieldclass' ) { $reason = cbGetParam( $_REQUEST, 'reason' ); if ( $user && $user->id ) { if ( $reason === 'edit' ) { $msg = cbCheckIfUserCanPerformUserTask( $user->id, 'allowModeratorsUserEdit' ); if ( ( $uid != $_CB_framework->myId() ) && ( $msg === null ) ) { // safeguard against missconfiguration of the above: also avoids lower-level users editing higher level ones: $msg = checkCBpermissions( array( (int) $user->id ), 'edit', true ); } } elseif ( ( $reason === 'profile' ) || ( $reason === 'list' ) ) { if ( allowAccess( $ueConfig['allow_profileviewbyGID'], 'RECURSE', userGID( $_CB_framework->myId() ) ) ) { $msg = null; } else { $msg = _UE_NOT_AUTHORIZED; } } else { $msg = _UE_NO_INDICATION; } if ( $msg ) { echo $msg; return; } } elseif ( $reason == 'register' ) { if ( $_CB_framework->myId() != 0 ) { echo _UE_ALREADY_LOGGED_IN; return; } } else { /* if ( ( ! ( ( ( $_CB_framework->getCfg( 'allowUserRegistration' ) == '0' ) && ( ( ! isset($ueConfig['reg_admin_allowcbregistration']) ) || $ueConfig['reg_admin_allowcbregistration'] != '1' ) ) ) ) && allowAccess( $ueConfig['allow_profileviewbyGID'], 'RECURSE', $_CB_framework->acl->get_group_id('Registered','ARO') ) ) { $msg = _UE_REGISTERFORPROFILEVIEW; echo $msg; return; } else { $msg = _UE_NOT_AUTHORIZED; echo $msg; return; } */ $msg = _UE_NOT_AUTHORIZED; echo $msg; return; } $fieldName = trim( substr( str_replace( $unsecureChars, '', urldecode( stripslashes( cbGetParam( $_REQUEST, "field" ) ) ) ), 0, 50 ) ); if ( ! $fieldName ) { echo 'no field'; return; } } elseif ( $task == 'tabclass' ) { $tabClassName = urldecode( stripslashes( cbGetParam( $_REQUEST, "tab" ) ) ); if ( ! $tabClassName ) { return; } $pluginName = null; $tabClassName = substr( str_replace( $unsecureChars, '', $tabClassName ), 0, 32 ); $method = 'getTabComponent'; } elseif ( $task == 'pluginclass' ) { $pluginName = urldecode( stripslashes( cbGetParam( $_REQUEST, "plugin" ) ) ); if ( ! $pluginName ) { return; } $tabClassName = 'CBplug_' . strtolower( substr( str_replace( $unsecureChars, '', $pluginName ), 0, 32 ) ); $method = 'getCBpluginComponent'; } $tabs = $cbUser->_getCbTabs( false ); if ( $task == 'fieldclass' ) { $result = $tabs->fieldCall( $fieldName, $user, $_POST, $reason ); } else { $result = $tabs->tabClassPluginTabs( $user, $_POST, $pluginName, $tabClassName, $method ); } if ( $result === false ) { if( $_PLUGINS->is_errors() ) { echo "\n"; } } elseif ( $result !== null ) { echo $result; } } function usersList( $uid ) { global $_CB_database, $_CB_framework, $ueConfig, $Itemid, $_PLUGINS, $_POST, $_REQUEST; $search = null; // $searchPOST = stripslashes( cbGetParam( $_POST, 'search' ) ); $searchGET = cbGetParam( $_GET, 'search' ); $limitstart = (int) cbGetParam( $_REQUEST, 'limitstart', 0 ); $searchmode = (int) cbGetParam( $_REQUEST, 'searchmode', 0 ); // old search on formated name: /* if ( $searchPOST || count( $_POST ) ) { // simple spoof check security cbSpoofCheck( 'usersList' ); if ( cbGetParam( $_GET, "action" ) == "search" ) { $search = $searchPOST; } } else if ( isset( $_GET['limitstart'] ) ) { $search = stripslashes( $searchGET ); } */ // get my user and gets the list of user lists he is allowed to see (ACL): $myCbUser =& CBuser::getInstance( $uid ); if ( $myCbUser === null ) { $myCbUser =& CBuser::getInstance( null ); } $myUser =& $myCbUser->getUserData(); /* $myUser = new moscomprofilerUser( $_CB_database ); if ( $uid ) { $myUser->load( (int) $uid ); } */ $useraccessgroupSQL = " AND useraccessgroupid IN (".implode(',',getChildGIDS(userGID($uid))).")"; $_CB_database->setQuery( "SELECT listid, title FROM #__comprofiler_lists WHERE published=1" . $useraccessgroupSQL . " ORDER BY ordering" ); $plists = $_CB_database->loadObjectList(); $lists = array(); $publishedlists = array(); for ( $i=0, $n=count( $plists ); $i < $n; $i++ ) { $plist =& $plists[$i]; $listTitleNoHtml = strip_tags( cbReplaceVars( getLangDefinition( $plist->title ), $myUser, false, false ) ); $publishedlists[] = moscomprofilerHTML::makeOption( $plist->listid, $listTitleNoHtml ); } // select either list selected or default list to which he has access (ACL): if ( isset( $_POST['listid'] ) ) { $listid = (int) cbGetParam( $_POST, 'listid', 0 ); } else { $listid = (int) cbGetParam( $_GET, 'listid', 0 ); } if ( $listid == 0 ) { $_CB_database->setQuery( "SELECT listid FROM #__comprofiler_lists " . "\n WHERE `default`=1 AND published=1" . $useraccessgroupSQL ); $listid = (int) $_CB_database->loadresult(); if ( $listid == 0 && ( count( $plists ) > 0 ) ) { $listid = (int) $plists[0]->listid; } } if ( ! ( $listid > 0 ) ) { echo _UE_NOLISTFOUND; return; } // generates the drop-down list of lists: if ( count( $plists ) > 1 ) { $lists['plists'] = moscomprofilerHTML::selectList( $publishedlists, 'listid', 'class="inputbox" size="1" onchange="this.form.submit();"', 'value', 'text', $listid, 1 ); } // loads the list record: $row = new moscomprofilerLists( $_CB_database ); if ( ( ! $row->load( (int) $listid ) ) || ( $row->published != 1 ) ) { echo _UE_LIST_DOES_NOT_EXIST; return; } if ( ! allowAccess( $row->useraccessgroupid,'RECURSE', userGID($uid) ) ) { echo _UE_NOT_AUTHORIZED; return; } $params = new cbParamsBase( $row->params ); $hotlink_protection = $params->get( 'hotlink_protection', 0 ); if ( $hotlink_protection == 1 ) { if ( ( $searchGET !== null ) || $limitstart ) { cbSpoofCheck( 'usersList', 'GET' ); } } $limit = (int) $params->get( 'list_limit' ); if ( $limit == 0 ) { $limit = (int) $ueConfig['num_per_page']; } $showPaging = $params->get( 'list_paging', 1 ); if ( $showPaging != 1 ) { $limitstart = 0; } $isModerator = isModerator( $_CB_framework->myId() ); $_PLUGINS->loadPluginGroup( 'user' ); // $plugSearchFieldsArray = $_PLUGINS->trigger( 'onStartUsersList', array( &$listid, &$row, &$search, &$limitstart, &$limit ) ); $_PLUGINS->trigger( 'onStartUsersList', array( &$listid, &$row, &$search, &$limitstart, &$limit ) ); // handles the users allowed to be listed in the list by ACL: $allusergids = array(); $usergids = explode( ',', $row->usergroupids ); /* This was a bug tending to list admins when "public backend" was checked, and all frontend users when "public backend was checked. Now just ignore them: foreach( $usergids AS $usergid ) { $allusergids[] = $usergid; if ($usergid==29 || $usergid==30) { $groupchildren = array(); $groupchildren = $_CB_framework->acl->get_group_children( $usergid, 'ARO','RECURSE' ); $allusergids = array_merge($allusergids,$groupchildren); } } */ $allusergids = array_diff( $usergids, array( 29, 30 ) ); $usergids = implode( ",", $allusergids ); // build SQL Select query: if( $row->sortfields != '' ) { $orderby = "\n ORDER BY " . $row->sortfields; } $filterby = ''; if ( $row->filterfields != '' ) { $filterRules = utf8RawUrlDecode( substr( $row->filterfields, 1 ) ); if ( $_CB_framework->myId() ) { $user = new moscomprofilerUser( $_CB_database ); if ( $user->load( (int) $_CB_framework->myId() ) ) { $filterRules = cbReplaceVars( $filterRules, $user, array( $_CB_database, 'getEscaped' ), false, array() ); } } $filterby = " AND ". $filterRules; } // Prepare part after SELECT .... " and before "FROM" : $tableReferences = array( '#__comprofiler' => 'ue', '#__users' => 'u' ); // Fetch all fields: $tabs = $myCbUser->_getCbTabs(); // new cbTabs( 0, 1 ); //TBD: later: this private method should not be called here, but the whole users-list should go into there and be called here. $allFields = $tabs->_getTabFieldsDb( null, $myUser, 'list' ); // $_CB_database->setQuery( "SELECT * FROM #__comprofiler_fields WHERE published = 1" ); // $allFields = $_CB_database->loadObjectList( 'fieldid', 'moscomprofilerFields', array( &$_CB_database ) ); //Make columns array. This array will later be constructed from the tabs table: $columns = array(); for ( $i = 1; $i < 50; ++$i ) { $enabledVar = "col".$i."enabled"; if ( ! isset( $row->$enabledVar ) ) { break; } $titleVar = "col".$i."title"; $fieldsVar = "col".$i."fields"; $captionsVar = "col".$i."captions"; if ( $row->$enabledVar == 1 ) { $col = new stdClass(); $col->fields = ( $row->$fieldsVar ? explode( '|*|', $row->$fieldsVar ) : array() ); $col->title = $row->$titleVar; $col->titleRendered = $myCbUser->replaceUserVars( $col->title ); $col->captions = $row->$captionsVar; // $col->sort = 1; //All columns can be sorted $columns[$i] = $col; } } // build fields and tables accesses, also check for searchable fields: $searchableFields = array(); $fieldsSQL = getFieldsSQL( $columns, $allFields, $tableReferences, $searchableFields, $params ); $_PLUGINS->trigger( 'onAfterUsersListFieldsSql', array( &$columns, &$allFields, &$tableReferences ) ); $tablesSQL = array(); $joinsSQL = array(); $tablesWhereSQL = array( 'block' => 'u.block = 0', 'approved' => 'ue.approved = 1', 'confirmed' => 'ue.confirmed = 1' ); if ( ! $isModerator ) { $tablesWhereSQL['banned'] = 'ue.banned = 0'; } if ( $usergids ) { $tablesWhereSQL['gid'] = 'u.gid IN (' . $usergids . ')'; } foreach ( $tableReferences as $table => $name ) { $tablesSQL[] = $table . ' ' . $name; if ( $name != 'u' ) { $tablesWhereSQL[] = "u.`id` = " . $name . ".`id`"; } } // handles search criterias: $list_compare_types = $params->get( 'list_compare_types', 0 ); $searchVals = new stdClass(); $searchesFromFields = $tabs->applySearchableContents( $searchableFields, $searchVals, $_GET, $list_compare_types ); $whereFields = $searchesFromFields->reduceSqlFormula( $tableReferences, $joinsSQL, TRUE ); if ( $whereFields ) { $tablesWhereSQL[] = '(' . $whereFields . ')'; /* if ( $search === null ) { $search = ''; } */ } $_PLUGINS->trigger( 'onBeforeUsersListBuildQuery', array( &$tablesSQL, &$joinsSQL, &$tablesWhereSQL ) ); $queryFrom = "FROM " . implode( ', ', $tablesSQL ) . ( count( $joinsSQL ) ? "\n " . implode( "\n ", $joinsSQL ) : '' ) . "\n WHERE " . implode( "\n AND ", $tablesWhereSQL ); // handles old formatted names search: /* if ( $search != '' ) { $searchSQL = cbEscapeSQLsearch( strtolower( $_CB_database->getEscaped( $search ) ) ); $queryFrom .= " AND ("; $searchFields = array(); if ( $ueConfig['name_format']!='3' ) { $searchFields[] = "u.name LIKE '%%s%'"; } if ( $ueConfig['name_format']!='1' ) { $searchFields[] = "u.username LIKE '%%s%'"; } if ( is_array( $plugSearchFieldsArray ) ) { foreach ( $plugSearchFieldsArray as $v ) { if ( is_array( $v ) ) { $searchFields = array_merge( $searchFields, $v ); } } } $queryFrom .= str_replace( '%s', $searchSQL, implode( " OR ", $searchFields ) ); $queryFrom .= ")"; } */ $queryFrom .= " " . $filterby; $_PLUGINS->trigger( 'onBeforeUsersListQuery', array( &$queryFrom, 1 ) ); // $uid = 1 $errorMsg = null; // counts number of users and loads the listed fields of the users if not in search-form-only mode: if ( $searchmode == 0 ) { $_CB_database->setQuery( "SELECT COUNT(*) " . $queryFrom ); $total = $_CB_database->loadResult(); if ( ( $limit > $total ) || ( $limitstart >= $total ) ) { $limitstart = 0; } // $query = "SELECT u.id, ue.banned, '' AS 'NA' " . ( $fieldsSQL ? ", " . $fieldsSQL . " " : '' ) . $queryFrom . " " . $orderby $query = "SELECT ue.*, u.*, '' AS 'NA' " . ( $fieldsSQL ? ", " . $fieldsSQL . " " : '' ) . $queryFrom . " " . $orderby . "\n LIMIT " . (int) $limitstart . ", " . (int) $limit; $_CB_database->setQuery($query); $users = $_CB_database->loadObjectList( null, 'moscomprofilerUser', array( &$_CB_database ) ); if ( is_array( $users ) ) { // creates the CBUsers in cache corresponding to the $users: foreach ( array_keys( $users ) as $k) { CBuser::setUserGetCBUserInstance( $users[$k] ); } } else { $users = array(); $errorMsg = _UE_ERROR_IN_QUERY_TURN_SITE_DEBUG_ON_TO_VIEW; } if ( count( get_object_vars( $searchVals ) ) > 0 ) { $search = ''; } else { $search = null; } } else { $total = null; $users = array(); if ( $search === null ) { $search = ''; } } // Compute itemId of users in users-list: if ( $Itemid ) { $option_itemid = (int) $Itemid; } else { $option_itemid = getCBprofileItemid( 0 ); } HTML_comprofiler::usersList( $row, $users, $columns, $allFields, $lists, $listid, $search, $searchmode, $option_itemid, $limitstart, $limit, $total, $myUser, $searchableFields, $searchVals, $tabs, $list_compare_types, $showPaging, $hotlink_protection, $errorMsg ); } /** * Creates the column references for the userlist query * * @param array $columns * @param array $allFields * @param array $tables * @param array $searchableFields * @param cbParamsBase $params * @return string */ function getFieldsSQL( &$columns, &$allFields, &$tables, &$searchableFields, &$params ){ $colRefs = array(); $newtableindex = 0; $list_search = (int) $params->get( 'list_search', 1 ); foreach ( $columns as $i => $column ) { foreach ( $column->fields as $k => $fieldid ) { if ( isset( $allFields[$fieldid] ) ) { // now done in field fetching: // if ( ! is_object( $allFields[$fieldid]->params ) ) { // $allFields[$fieldid]->params = new cbParamsBase( $allFields[$fieldid]->params ); // } $field = $allFields[$fieldid]; if ( ! array_key_exists( $field->table, $tables ) ) { $newtableindex++; $tables[$field->table] = 't'.$newtableindex; } /* if ( $field->name == 'avatar' ) { $colRefs['avatarapproved'] = 'ue.`avatarapproved`'; $colRefs['name'] = 'u.`name`'; $colRefs['username'] = 'u.`username`'; } if ( $field->type == 'formatname' ) { $colRefs['name'] = 'u.`name`'; $colRefs['username'] = 'u.`username`'; } */ if ( ( $tables[$field->table][0] != 'u' ) && ( $field->name != 'NA' ) ) { // CB 1.1 table compatibility : TBD: remove after CB 1.2 foreach ( $field->getTableColumns() as $col ) { $colRefs[$col] = $tables[$field->table] . '.' . $field->_db->NameQuote( $col ); } } if ( $field->searchable && ( $list_search == 1 ) ) { $searchableFields[] =& $allFields[$fieldid]; } $allFields[$fieldid]->_listed = true; } else { // field unpublished or deleted but still in list: remove field from columns, so that we don't handle it: unset( $columns[$i]->fields[$k] ); } } } if ( $list_search == 2 ) { foreach ( $allFields as $fieldid => $field ) { if ( $field->searchable ) { $searchableFields[] =& $allFields[$fieldid]; } } } return implode( ', ', $colRefs ); } function lostPassForm( $option ) { global $_CB_framework; $_CB_framework->setPageTitle( _PROMPT_PASSWORD ); HTML_comprofiler::lostPassForm( $option ); } function sendNewPass( $option ) { global $_CB_framework, $_CB_database, $Itemid, $_PLUGINS, $_POST; // simple spoof check security cbSpoofCheck( 'lostPassForm' ); cbRegAntiSpamCheck(); // ensure no malicous sql gets past $checkusername = trim( cbGetParam( $_POST, 'checkusername', '' ) ); $confirmEmail = trim( cbGetParam( $_POST, 'checkemail', '' ) ); $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger( 'onStartNewPassword', array( &$checkusername, &$confirmEmail )); if ($_PLUGINS->is_errors()) { cbRedirect( cbSef("index.php?option=$option&task=lostPassword".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $_PLUGINS->getErrorMSG(), 'error' ); return; } $checkusername = stripslashes( $checkusername ); $confirmEmail = stripslashes( $confirmEmail ); // these two are used by _NEWPASS_SUB message below: $_live_site = $_CB_framework->getCfg( 'live_site' ); $_sitename = ""; // NEEDED BY _NEWPASS_SUB for sitename already added in subject by cbNotification class. was = $_CB_framework->getCfg( 'sitename' ); if ( ( $confirmEmail != '' ) && ! $checkusername ) { $_CB_database->setQuery( "SELECT id, username FROM #__users" . "\n WHERE email = " . $_CB_database->Quote( $confirmEmail ) ); $userIdUsername = null; $result = $_CB_database->loadObjectList( $userIdUsername ); if ( ( ! is_array( $result ) ) || ( count( $result ) == 0 ) ) { cbRedirect( cbSef( 'index.php?option=' . $option . '&task=lostPassword' . ( $Itemid ? '&Itemid=' . (int) $Itemid : '' ), false ), sprintf( _UE_EMAIL_DOES_NOT_EXISTS_ON_SITE, htmlspecialchars( $confirmEmail ) ), 'error' ); } foreach ( $result as $userIdUsername ) { $message = str_replace( '\n', "\n", sprintf( _UE_USERNAMEREMINDER_MSG, $_CB_framework->getCfg( 'sitename' ), $userIdUsername->username, $_live_site ) ); $subject = sprintf( _UE_USERNAMEREMINDER_SUB, $userIdUsername->username ); $_PLUGINS->trigger( 'onBeforeUsernameReminder', array( $userIdUsername->id, &$subject, &$message )); if ($_PLUGINS->is_errors()) { cbRedirect( cbSef("index.php?option=$option&task=lostPassword".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $_PLUGINS->getErrorMSG(), 'error' ); return; } $cbNotification = new cbNotification(); $res = $cbNotification->sendFromSystem( $userIdUsername->id, $subject, $message ); if ( ! $res ) { break; } } $_PLUGINS->trigger( 'onAfterUsernameReminder', array( &$result, &$res ) ); if ( $res ) { cbRedirect( cbSef("index.php?option=$option&task=done".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), sprintf( _UE_USERNAME_REMINDER_SENT, htmlspecialchars( $confirmEmail ) ) ); } else { cbRedirect( cbSef("index.php?option=$option&task=done".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ),_UE_EMAIL_SENDING_ERROR ); } } else { $_CB_database->setQuery( "SELECT id FROM #__users" . "\n WHERE username = " . $_CB_database->Quote( $checkusername ) . " AND email = " . $_CB_database->Quote( $confirmEmail ) ); $user_id = $_CB_database->loadResult(); if ( ( ! $user_id ) || ( ! $checkusername ) || ( ! $confirmEmail ) ) { cbRedirect( cbSef( 'index.php?option=' . $option . '&task=lostPassword' . ( $Itemid ? '&Itemid=' . (int) $Itemid : '' ), false ), _ERROR_PASS ); } $newpass = cbMakeRandomString( 8, true ); $message = str_replace( '\n', "\n", sprintf( _UE_NEWPASS_MSG, $checkusername, $_live_site, $newpass ) ); $subject = sprintf( _UE_NEWPASS_SUB, $checkusername ); $_PLUGINS->trigger( 'onBeforeNewPassword', array( $user_id, &$newpass, &$subject, &$message )); if ($_PLUGINS->is_errors()) { cbRedirect( cbSef("index.php?option=$option&task=lostPassword".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $_PLUGINS->getErrorMSG(), 'error' ); return; } $cbNotification = new cbNotification(); $res = $cbNotification->sendFromSystem($user_id,$subject,$message); if ($res) { $_PLUGINS->trigger( 'onNewPassword', array($user_id,$newpass)); $newpass = cbHashPassword( $newpass ); $sql = "UPDATE #__users SET password = '" . $_CB_database->getEscaped( $newpass ) . "' WHERE id = " . (int) $user_id; $_CB_database->setQuery( $sql ); if (!$_CB_database->query()) { die("SQL error" . $_CB_database->stderr(true)); } cbRedirect( cbSef("index.php?option=$option&task=done".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), sprintf( _UE_NEWPASS_SENT, htmlspecialchars( $confirmEmail ) ) ); } else { cbRedirect( cbSef("index.php?option=$option&task=done".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ),_UE_NEWPASS_FAILED ); } } } function registerForm( $option, $emailpass, $regErrorMSG = null ) { global $_CB_framework, $_CB_database, $ueConfig, $_PLUGINS, $_POST; if ( ( ( $_CB_framework->getCfg( 'allowUserRegistration' ) == '0' ) && ( ( ! isset($ueConfig['reg_admin_allowcbregistration']) ) || $ueConfig['reg_admin_allowcbregistration'] != '1' ) ) ) { cbNotAuth(); return; } if ( $_CB_framework->myId() ) { echo '
' . _UE_ALREADY_LOGGED_IN . '
'; return; } $fieldsQuery = null; $_PLUGINS->loadPluginGroup('user'); $results = $_PLUGINS->trigger( 'onBeforeRegisterForm', array( $option, $emailpass, &$regErrorMSG, $fieldsQuery ) ); if($_PLUGINS->is_errors()) { echo "\n"; echo $_PLUGINS->getErrorMSG("
"); return; } if ( implode( '', $results ) != "" ) { $allResults = implode( "
", $results ); echo "
" . $allResults . "
"; return; } $userComplete = new moscomprofilerUser( $_CB_database ); if ( $regErrorMSG !== null ) { HTML_comprofiler::registerForm( $option, $emailpass, $userComplete, $_POST, $regErrorMSG ); } else { $null = null; HTML_comprofiler::registerForm( $option, $emailpass, $userComplete, $null, $regErrorMSG ); } } function saveRegistration( $option ) { global $_CB_framework, $_CB_database, $ueConfig, $_POST, $_PLUGINS; // simple spoof check security cbSpoofCheck( 'registerForm' ); cbRegAntiSpamCheck(); // Check rights to access: if ( ( ( $_CB_framework->getCfg( 'allowUserRegistration' ) == '0' ) && ( ( ! isset($ueConfig['reg_admin_allowcbregistration']) ) || $ueConfig['reg_admin_allowcbregistration'] != '1' ) ) || $_CB_framework->myId() ) { cbNotAuth(); return; } if ( ! isset( $ueConfig['emailpass'] ) ) { $ueConfig['emailpass'] = '0'; } $userComplete = new moscomprofilerUser( $_CB_database ); // Pre-registration trigger: $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger( 'onStartSaveUserRegistration', array() ); if( $_PLUGINS->is_errors() ) { echo "\n"; $oldUserComplete = new moscomprofilerUser( $_CB_database ); $userComplete->bindSafely( $_POST, $_CB_framework->getUi(), 'register', $oldUserComplete ); HTML_comprofiler::registerForm( $option, $ueConfig['emailpass'], $userComplete, $_POST, $_PLUGINS->getErrorMSG("
") ); return; } // Check if this user already registered with exactly this username and password: $username = cbGetParam( $_POST, 'username', '' ); $usernameExists = $userComplete->loadByUsername( $username ); if ( $usernameExists ) { $password = cbGetParam( $_POST, 'password', '', _CB_ALLOWRAW ); $passwordMatches = cbHashPassword( $password, $userComplete ); if ( $passwordMatches ) { $pwd_md5 = $userComplete->password; $userComplete->password = $password; $messagesToUser = activateUser( $userComplete, 1, 'SameUserRegistrationAgain' ); $userComplete->password = $pwd_md5; echo "\n
" . implode( "
\n
", $messagesToUser ) . "
\n"; return; } else { $msg = sprintf( _UE_USERNAME_ALREADY_EXISTS, $username ); echo "\n"; $oldUserComplete = new moscomprofilerUser( $_CB_database ); $userComplete->bindSafely( $_POST, $_CB_framework->getUi(), 'register', $oldUserComplete ); HTML_comprofiler::registerForm( $option, $ueConfig['emailpass'], $userComplete, $_POST, htmlspecialchars( $msg ) ); return; } } // Store and check terms and conditions accepted (not a field yet !!!!): if ( isset( $_POST['acceptedterms'] ) ) { $userComplete->acceptedterms = ( (int) cbGetParam( $_POST, 'acceptedterms', 0 ) == 1 ? 1 : 0 ); } else { $userComplete->acceptedterms = null; } if($ueConfig['reg_enable_toc']) { if ( $userComplete->acceptedterms != 1 ) { echo "\n"; $oldUserComplete = new moscomprofilerUser( $_CB_database ); $userComplete->bindSafely( $_POST, $_CB_framework->getUi(), 'register', $oldUserComplete ); HTML_comprofiler::registerForm( $option, $ueConfig['emailpass'], $userComplete, $_POST, _UE_TOC_REQUIRED . '
' ); return; } } // Set id to 0 for autoincrement and store IP address used for registration: $userComplete->id = 0; $userComplete->registeripaddr = cbGetIPlist(); // Store new user state: $saveResult = $userComplete->saveSafely( $_POST, $_CB_framework->getUi(), 'register' ); if ( $saveResult === false ) { echo "\n"; HTML_comprofiler::registerForm( $option, $ueConfig['emailpass'], $userComplete, $_POST, $userComplete->getError() ); return; } if ( $saveResult['ok'] === true ) { $messagesToUser = activateUser( $userComplete, 1, "UserRegistration" ); } foreach ( $saveResult['tabs'] as $res ) { if ($res) { $messagesToUser[] = $res; } } if ( $saveResult['ok'] === false ) { echo "\n"; HTML_comprofiler::registerForm( $option, $ueConfig['emailpass'], $userComplete, $_POST, $userComplete->getError() ); return; } $_PLUGINS->trigger( 'onAfterUserRegistrationMailsSent', array( &$userComplete, &$userComplete, &$messagesToUser, $ueConfig['reg_confirmation'], $ueConfig['reg_admin_approval'], true)); foreach ( $saveResult['after'] as $res ) { if ( $res ) { echo "\n
" . $res . "
\n"; } } if ( $_PLUGINS->is_errors() ) { echo $_PLUGINS->getErrorMSG(); HTML_comprofiler::registerForm( $option, $ueConfig['emailpass'], $userComplete, $_POST, $_PLUGINS->getErrorMSG() ); return; } echo "\n
" . implode( "
\n
", $messagesToUser ) . "
\n"; } /** * Ajax function: Checks the availability of a username for registration and echoes a text containing the result of username search. * * @param string $username */ function performCheckUsername( $username, $function ) { global $_CB_database, $ueConfig; if ( ( ! isset( $ueConfig['reg_username_checker'] ) ) || ( ! $ueConfig['reg_username_checker'] ) ) { echo ISOtoUtf8( _UE_NOT_AUTHORIZED ); exit(); } // simple spoof check security cbSpoofCheck( 'registerForm' ); cbRegAntiSpamCheck(); $username = stripslashes( $username ); $usernameISO = utf8ToISO( $username ); // ajax sends in utf8, we need to convert back to the site's encoding. if ( $_CB_database->isDbCollationCaseInsensitive() ) { $query = "SELECT COUNT(*) AS result FROM #__users WHERE username = " . $_CB_database->Quote( ( trim( $usernameISO ) ) ); } else { $query = "SELECT COUNT(*) AS result FROM #__users WHERE LOWER(username) = " . $_CB_database->Quote( ( strtolower( trim( $usernameISO ) ) ) ); } $_CB_database->setQuery($query); $dataObj = null; if ( $_CB_database->loadObject( $dataObj ) ) { if ( $dataObj->result ) { // funily, the output does not need to be UTF8 again: if ( $function == 'testexists' ) { echo ( '' . sprintf( ISOtoUtf8( _UE_USERNAME_EXISTS_ON_SITE ), htmlspecialchars( $username ) ) . '' ); } else { echo ( '' . sprintf( ISOtoUtf8( _UE_USERNAME_ALREADY_EXISTS ), htmlspecialchars( $username ) ) . '' ); } } else { if ( $function == 'testexists' ) { echo ( '' . sprintf( ISOtoUtf8( _UE_USERNAME_DOES_NOT_EXISTS_ON_SITE ), htmlspecialchars( $username ) ) . '' ); } else { echo ( '' . sprintf( ISOtoUtf8( _UE_USERNAME_DOESNT_EXISTS ), htmlspecialchars( $username ) ) . '' ); } } } else { echo ( '' . ISOtoUtf8( _UE_SEARCH_ERROR ) . ' !' . '' ); } } /** * Ajax function: Checks the availability of a username for registration and echoes a text containing the result of username search. * * @param string $username */ function performCheckEmail( $email, $function ) { global $_CB_framework, $_CB_database, $ueConfig; if ( ( ! isset( $ueConfig['reg_email_checker'] ) ) || ( ! $ueConfig['reg_email_checker'] ) ) { echo ISOtoUtf8( _UE_NOT_AUTHORIZED ); exit(); } // simple spoof check security if ( ( ! cbSpoofCheck( 'registerForm', 'POST', 2 ) ) || ( ! cbRegAntiSpamCheck( 2 ) ) ) { echo '' . ISOtoUtf8( _UE_SESSION_EXPIRED ) . ""; exit; } $email = stripslashes( $email ); $emailISO = utf8ToISO( $email ); // ajax sends in utf8, we need to convert back to the site's encoding. if ( $ueConfig['reg_email_checker'] > 1 ) { if ( $_CB_database->isDbCollationCaseInsensitive() ) { $query = "SELECT COUNT(*) AS result FROM #__users WHERE email = " . $_CB_database->Quote( ( trim( $emailISO ) ) ); } else { $query = "SELECT COUNT(*) AS result FROM #__users WHERE LOWER(email) = " . $_CB_database->Quote( ( strtolower( trim( $emailISO ) ) ) ); } $_CB_database->setQuery($query); $dataObj = null; if ( $_CB_database->loadObject( $dataObj ) ) { if ( $function == 'testexists' ) { if ( $dataObj->result ) { echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_EXISTS_ON_SITE ), htmlspecialchars( $email ) ) . ""; return; } else { echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_DOES_NOT_EXISTS_ON_SITE ), htmlspecialchars( $email ) ) . ""; return; } } else { if ( $dataObj->result ) { echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_ALREADY_REGISTERED ), htmlspecialchars( $email ) ) . ""; return; } } } } if ( $function == 'testexists' ) { echo ISOtoUtf8( _UE_NOT_AUTHORIZED ); return; } else { $checkResult = cbCheckMail( $_CB_framework->getCfg( 'mailfrom' ), $email ); } switch ( $checkResult ) { case -2: echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_NOVALID ), htmlspecialchars( $email ) ) . ""; break; case -1: echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_COULD_NOT_CHECK ), htmlspecialchars( $email ) ) . ""; break; case 0: if ( $ueConfig['reg_confirmation'] == 0 ) { echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_INCORRECT_CHECK ), htmlspecialchars( $email ) ) . ""; } else { echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_INCORRECT_CHECK_NEEDED ), htmlspecialchars( $email ) ) . ""; } break; case 1: echo '' . sprintf( ISOtoUtf8( _UE_EMAIL_VERIFIED ), htmlspecialchars( $email ) ) . ""; break; default: echo 'performCheckEmail:: Unexpected cbCheckMail result.'; break; } } function login( $username=null, $passwd2=null ) { global $_CB_database, $_GET, $_POST, $_CB_framework, $ueConfig, $_PLUGINS; if ( count( $_POST ) == 0 ) { HTML_comprofiler::loginForm( 'com_comprofiler', $_POST, null ); return; } $spoofCheckOk = false; if ( cbSpoofCheck( 'login', 'POST', 2 ) ) { $spoofCheckOk = true; } else { if ( is_callable("josSpoofCheck") && is_callable("josSpoofValue") ) { $validate = josSpoofValue(); if ( cbGetParam( $_POST, $validate ) ) { josSpoofCheck(1); $spoofCheckOk = true; } } } if ( ! $spoofCheckOk ) { echo _UE_SESSION_EXPIRED . ' ' . _UE_PLEASE_REFRESH; return; } $messagesToUser = array(); $resultError = null; if ( !$username || !$passwd2 ) { $username = trim( cbGetParam( $_POST, 'username', '' ) ); $passwd2 = trim( cbGetParam( $_POST, 'passwd', '', _CB_ALLOWRAW ) ); } $rememberMe = cbGetParam( $_POST, 'remember' ); $return = trim( stripslashes( cbGetParam( $_POST, 'return', null ) ) ); if ( cbStartOfStringMatch( $return, 'B:' ) ) { $return = base64_decode( substr( $return, 2 ) ); $arrToClean = array( 'B' => get_magic_quotes_gpc() ? addslashes( $return ) : $return ); $return = cbGetParam( $arrToClean, 'B', '' ); } if ( ! ( ( cbStartOfStringMatch( $return, $_CB_framework->getCfg( 'live_site' ) ) || cbStartOfStringMatch( $return, 'index.php' ) ) ) ) { $return = ''; } $message = trim( cbGetParam( $_POST, 'message', 0 ) ); //print "message:".$message; // $remember = trim( cbGetParam( $_POST, 'remember', '' ) ); // $lang = trim( cbGetParam( $_POST, 'lang', '' ) ); if ( !$username || !$passwd2 ) { $resultError = _LOGIN_INCOMPLETE; } else { $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger( 'onBeforeLogin', array( &$username, &$passwd2 ) ); $alertmessages = array(); $showSysMessage = true; $stopLogin = false; $loggedIn = false; $returnURL = null; if($_PLUGINS->is_errors()) { $resultError = $_PLUGINS->getErrorMSG(); } else { /* $_CB_database->setQuery( "SELECT * " . "\n FROM #__users u, " . "\n #__comprofiler ue " . "\n WHERE u.username='".$username."' AND u.id = ue.id" ); $row = null; if ( $_CB_database->loadObject( $row ) && cbHashPassword( $passwd2, $row ) ) { */ $loginType = ( isset( $ueConfig['login_type'] ) ? $ueConfig['login_type'] : 0 ); // NEXT 3 LINES: CB 1.2 RC 2 + CB 1.2 specific : remove after ! if ( ! defined( '_UE_INCORRECT_EMAIL_OR_PASSWORD' ) ) { DEFINE('_UE_INCORRECT_EMAIL_OR_PASSWORD','Incorrect email or password. Please try again.'); } $row = new moscomprofilerUser( $_CB_database ); $foundUser = false; // Try login by CB authentication trigger: $_PLUGINS->trigger( 'onLoginAuthentication', array( &$username, &$passwd2, &$row, $loginType, &$foundUser, &$stopLogin, &$resultError, &$messagesToUser, &$alertmessages, &$return ) ); if ( ! $foundUser ) { if ( $loginType != 2 ) { // login by username: $foundUser = $row->loadByUsername( stripslashes( $username ) ) && cbHashPassword( $passwd2, $row ); } if ( ( ! $foundUser ) && ( $loginType >= 1 ) ) { // login by email: $foundUser = $row->loadByEmail( stripslashes( $username ) ) && cbHashPassword( $passwd2, $row ); if ( $foundUser ) { $username = $row->username; } } if ( ( ! $foundUser ) && ( $loginType > 2 ) ) { // If no result, try login by CMS authentication: if ( $_CB_framework->login( $username, $passwd2, $rememberMe ) ) { $foundUser = $row->loadByUsername( stripslashes( $username ) ); cbSplitSingleName( $row ); $row->confirmed = 1; $row->approved = 1; $row->store(); // synchronizes with comprofiler table $loggedIn = true; } } } if ( $foundUser ) { $pluginResults = $_PLUGINS->trigger( 'onDuringLogin', array( &$row, 1, &$return ) ); if ( is_array( $pluginResults ) && count( $pluginResults ) ) { foreach ( $pluginResults as $res ) { if ( is_array( $res ) ) { if ( isset( $res['messagesToUser'] ) ) { $messagesToUser[] = $res['messagesToUser']; } if ( isset( $res['alertMessage'] ) ) { $alertmessages[] = $res['alertMessage']; } if ( isset( $res['showSysMessage'] ) ) { $showSysMessage = $showSysMessage && $res['showSysMessage']; } if ( isset( $res['stopLogin'] ) ) { $stopLogin = $stopLogin || $res['stopLogin']; } } } } if($_PLUGINS->is_errors()) { $resultError = $_PLUGINS->getErrorMSG(); } elseif ( $stopLogin ) { // login stopped: don't even check for errors... } elseif ($row->approved == 2){ $resultError = _LOGIN_REJECTED; } elseif ($row->confirmed != 1){ if ( $row->cbactivation == '' ) { $row->store(); // just in case the activation code was missing } $cbNotification = new cbNotification(); $cbNotification->sendFromSystem($row->id,getLangDefinition(stripslashes($ueConfig['reg_pend_appr_sub'])),getLangDefinition(stripslashes($ueConfig['reg_pend_appr_msg']))); $resultError = _LOGIN_NOT_CONFIRMED; } elseif ($row->approved == 0){ $resultError = _LOGIN_NOT_APPROVED; } elseif ($row->block == 1) { $resultError = _UE_LOGIN_BLOCKED; } elseif ($row->lastvisitDate == '0000-00-00 00:00:00') { if (isset($ueConfig['reg_first_visit_url']) and ($ueConfig['reg_first_visit_url'] != "")) { $return = $ueConfig['reg_first_visit_url']; } else { $return = null; // by default return to homepage on first login. } $_PLUGINS->trigger( 'onBeforeFirstLogin', array( &$row, $username, $passwd2, &$return )); if ($_PLUGINS->is_errors()) { $resultError = $_PLUGINS->getErrorMSG( "
" ); } } } else { if ( $loginType < 2 ) { $resultError = _LOGIN_INCORRECT; } else { $resultError = _UE_INCORRECT_EMAIL_OR_PASSWORD; } } } if ( $resultError ) { if ( $showSysMessage ) { $alertmessages[] = $resultError; } } elseif ( ! $stopLogin ) { if ( ! $loggedIn ) { $_PLUGINS->trigger( 'onDoLoginNow', array( $username, $passwd2, $rememberMe, &$row, &$loggedIn, &$resultError, &$messagesToUser, &$alertmessages, &$return ) ); } if ( ! $loggedIn ) { $_CB_framework->login( $username, $passwd2, $rememberMe ); $loggedIn = true; } $_PLUGINS->trigger( 'onAfterLogin', array( &$row, $loggedIn ) ); if ( $loggedIn && $message && $showSysMessage ) { $alertmessages[] = _LOGIN_SUCCESS; } if ( ! $loggedIn ) { $resultError = _LOGIN_INCORRECT; } // changing com_comprofiler to comprofiler is a quick-fix for SEF ON on return path... if ( $return && !( strpos( $return, 'comprofiler' /* 'com_comprofiler' */ ) && ( strpos( $return, 'login') || strpos( $return, 'logout') || strpos( $return, 'registers' ) || strpos( strtolower( $return ), 'lostpassword' ) ) ) ) { // checks for the presence of a return url // and ensures that this url is not the registration or login pages $returnURL = cbSef( $return, false ); } elseif ( ! $returnURL ) { $returnURL = cbSef( 'index.php', false ); } } } if ( count( $messagesToUser ) > 0 ) { if ( $resultError ) { echo "
".$resultError."
"; } echo "\n
" . stripslashes( implode( "
\n
", $messagesToUser ) ) . "
\n"; if ( in_array( cbGetParam( $_POST, 'loginfrom' ), array( 'loginform', 'regform', 'loginmodule' ) ) ) { HTML_comprofiler::loginForm( 'com_comprofiler', $_POST, $resultError ); } } elseif ($resultError) { if ( in_array( cbGetParam( $_POST, 'loginfrom' ), array( 'loginform', 'regform', 'loginmodule' ) ) ) { HTML_comprofiler::loginForm( 'com_comprofiler', $_POST, $resultError ); } else { echo "
".$resultError."
"; } } else { cbRedirect( $returnURL, ( count( $alertmessages ) > 0 ? stripslashes( implode( '\n', $alertmessages ) ) : '' ) ); } } function logout() { global $_POST, $_CB_framework, $_CB_database, $_PLUGINS; $return = trim( stripslashes( cbGetParam( $_POST, 'return', null ) ) ); if ( cbStartOfStringMatch( $return, 'B:' ) ) { $return = base64_decode( substr( $return, 2 ) ); $arrToClean = array( 'B' => get_magic_quotes_gpc() ? addslashes( $return ) : $return ); $return = cbGetParam( $arrToClean, 'B', '' ); } $message = trim( cbGetParam( $_POST, 'message', 0 ) ); if ($return || $message) { $spoofCheckOk = false; if ( cbSpoofCheck( 'logout', 'POST', 2 ) ) { $spoofCheckOk = true; } else { if ( is_callable("josSpoofCheck") && is_callable("josSpoofValue") ) { $validate = josSpoofValue(); if ( cbGetParam( $_POST, $validate ) ) { josSpoofCheck(1); $spoofCheckOk = true; } } } if ( ! $spoofCheckOk ) { echo _UE_SESSION_EXPIRED . ' ' . _UE_PLEASE_REFRESH; return; } } $_CB_database->setQuery( "SELECT * " . "\nFROM #__users u, " . "\n#__comprofiler ue" . "\nWHERE u.id=" . (int) $_CB_framework->myId() . " AND u.id = ue.id" ); $row = null; $_CB_database->loadObject( $row ); $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger( 'onBeforeLogout', array($row)); if($_PLUGINS->is_errors()) { echo "\n"; echo "
".$_PLUGINS->getErrorMSG()."
";; return; } $loggedOut = false; $_PLUGINS->trigger( 'onDoLogoutNow', array( &$loggedOut, &$row, &$return ) ); if ( ! $loggedOut ) { $_CB_framework->logout(); } $_PLUGINS->trigger( 'onAfterLogout', array($row, true)); if ( ! ( ( cbStartOfStringMatch( $return, $_CB_framework->getCfg( 'live_site' ) ) || cbStartOfStringMatch( $return, 'index.php' ) ) ) ) { $return = null; } elseif ( strpos( $return, 'comprofiler' /* 'com_comprofiler' */ ) && ( strpos( $return, 'login') || strpos( $return, 'logout') || strpos( $return, 'registers' ) || strpos( strtolower( $return ), 'lostpassword' ) ) ) { // checks for the presence of a return url // and ensures that this url is not the registration or login pages $return = null; } cbRedirect( cbSef( ( $return ? $return : 'index.php' ), false ), ( $message ? stripslashes( _LOGOUT_SUCCESS ) : '' ) ); } function confirm($confirmcode){ global $_CB_database, $_CB_framework, $ueConfig, $_PLUGINS; if( $_CB_framework->myId() < 1) { $lengthConfirmcode = strlen($confirmcode); if ($lengthConfirmcode == ( 3+32+8 ) ) { $scrambleSeed = (int) hexdec(substr( md5 ( $_CB_framework->getCfg( 'secret' ) . $_CB_framework->getCfg( 'db' ) ), 0, 7)); $unscrambledId = $scrambleSeed ^ ( (int) hexdec(substr( $confirmcode, 3+32 ) ) ); $query = "SELECT * FROM #__comprofiler c, #__users u " . " WHERE c.id = " . (int) $unscrambledId . " AND c.cbactivation = '" . cbGetEscaped($confirmcode) . "' AND c.id=u.id"; // } elseif ($lengthConfirmcode == 32) { //BBTODO: this is for confirmation links previous to CB 1.0.2: remove after CB 1.0.2: // $query = "SELECT * FROM #__comprofiler c, #__users u WHERE c.id=u.id AND md5(c.id) = '" . cbGetEscaped($confirmcode) . "'"; } else { cbNotAuth(); return; } $_CB_database->setQuery($query); $user = $_CB_database->loadObjectList(); if ( ( $user === null ) || ( count( $user ) == 0 ) /* || ( ($lengthConfirmcode == 32) && isset($user[0]->cbactivation ) && $user[0]->cbactivation ) */ ) { $query = "SELECT * FROM #__comprofiler c, #__users u " . " WHERE c.id = " . (int) $unscrambledId . " AND c.id=u.id"; $_CB_database->setQuery($query); $user = $_CB_database->loadObjectList(); if ( ( $user === null ) || ( count( $user ) == 0 ) || ($user[0]->confirmed == 0) ) { cbNotAuth(); } else { $messagesToUser = getActivationMessage($user[0], "UserConfirmation"); echo "\n
" . implode( "
\n
", $messagesToUser ) . "
\n"; } return; } if ( ( $ueConfig['emailpass'] == '1' ) && ( $user[0]->approved == 1 ) ) { $pwd = cbMakeRandomString( 8, true ); $pwd_md5 = cbHashPassword( $pwd ); $user[0]->password = $pwd; } $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger( 'onBeforeUserConfirm', array($user[0])); if($_PLUGINS->is_errors()) { echo $_PLUGINS->getErrorMSG("
"); return; } $query = "UPDATE #__comprofiler SET confirmed = 1 WHERE id=" . (int) $user[0]->id; $_CB_database->setQuery($query); $_CB_database->query(); if ( ( $ueConfig['emailpass'] == '1' ) && ( $user[0]->approved == 1 ) ) { $_CB_database->setQuery( "UPDATE #__users SET password = " . $_CB_database->Quote( $pwd_md5 ) . " WHERE id=" . (int) $user[0]->id ); $_CB_database->query(); } if ( $user[0]->confirmed == 1 ) { $messagesToUser = getActivationMessage($user[0], "UserConfirmation"); } else { $user[0]->confirmed = 1; $messagesToUser = activateUser($user[0], 1, "UserConfirmation"); } $_PLUGINS->trigger( 'onAfterUserConfirm', array($user[0],true)); echo "\n
" . implode( "
\n
", $messagesToUser ) . "
\n"; } else { // cbRedirect( cbSef( 'index.php?option=com_comprofiler'.getCBprofileItemid(), false ) ); // cbNotAuth(); : echo _UE_NOT_AUTHORIZED." :

"._UE_DO_LOGOUT." !
"; return; } } function approveImage() { global $_CB_database, $_POST, $_REQUEST, $_SERVER, $_CB_framework; $andItemid = getCBprofileItemid(); // simple spoof check security for posts (menus do gets): if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { cbSpoofCheck( 'moderateImages' ); } $isModerator=isModerator( $_CB_framework->myId() ); if (!$isModerator) { cbNotAuth(); return; } $avatars=array(); if(isset($_POST['avatar'])) $avatars=$_POST['avatar']; else $avatars[] = $_REQUEST['avatars']; if(isset($_POST['act'])) $act=$_POST['act']; else $act = $_REQUEST['flag']; $cbNotification = new cbNotification(); if($act=='1') { foreach ($avatars AS $avatar) { $query = "UPDATE #__comprofiler SET avatarapproved = 1, lastupdatedate='".date('Y-m-d H:i:s')."' WHERE id = " . (int) $avatar; $_CB_database->setQuery($query); $_CB_database->query(); $cbNotification->sendFromSystem( (int) $avatar, _UE_IMAGEAPPROVED_SUB, _UE_IMAGEAPPROVED_MSG ); } } else { foreach ($avatars AS $avatar) { $query = "SELECT avatar FROM #__comprofiler WHERE id = " . (int) $avatar; $_CB_database->setQuery($query); $file = $_CB_database->loadResult(); if(eregi("gallery/",$file)==false && is_file($_CB_framework->getCfg('absolute_path')."/images/comprofiler/".$file)) { unlink($_CB_framework->getCfg('absolute_path')."/images/comprofiler/".$file); if(is_file($_CB_framework->getCfg('absolute_path')."/images/comprofiler/tn".$file)) unlink($_CB_framework->getCfg('absolute_path')."/images/comprofiler/tn".$file); } $query = "UPDATE #__comprofiler SET avatarapproved = 1, avatar=null WHERE id = " . (int) $avatar; $_CB_database->setQuery($query); $_CB_database->query(); $cbNotification->sendFromSystem( (int) $avatar, _UE_IMAGEREJECTED_SUB, _UE_IMAGEREJECTED_MSG ); } } cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=moderateImages' . $andItemid, false ), _UE_USERIMAGEMODERATED_SUCCESSFUL); } function reportUser($option,$form=1,$uid=0) { global $_CB_framework, $_CB_database, $ueConfig, $Itemid, $_POST; if($ueConfig['allowUserReports']==0) { echo _UE_FUNCTIONALITY_DISABLED; exit(); } if (!allowAccess( $ueConfig['allow_profileviewbyGID'],'RECURSE', userGID( $_CB_framework->myId() ))) { echo _UE_NOT_AUTHORIZED; return; } if($form==1) { HTML_comprofiler::reportUserForm($option,$uid); } else { // simple spoof check security cbSpoofCheck( 'reportUserForm' ); $row = new moscomprofilerUserReport( $_CB_database ); if (!$row->bind( $_POST )) { cbRedirect( cbSef("index.php?option=$option&task=reportUser".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $row->getError(), 'error' ); return; } _cbMakeHtmlSafe($row); //TBD: remove this: not urgent but isn't right $row->reportedondate = date("Y-m-d H:i:s"); if (!$row->check()) { cbRedirect( cbSef("index.php?option=$option&task=reportUser".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $row->getError(), 'error' ); return; } if (!$row->store()) { cbRedirect( cbSef("index.php?option=$option&task=reportUser".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $row->getError(), 'error' ); return; } if($ueConfig['moderatorEmail']==1) { $cbNotification = new cbNotification(); $cbNotification->sendToModerators(_UE_USERREPORT_SUB,_UE_USERREPORT_MSG); } echo _UE_USERREPORT_SUCCESSFUL; } } function banUser( $option, $uid, $form=1, $act=1 ) { global $_CB_framework, $_CB_database, $ueConfig, $_POST; $isModerator=isModerator( $_CB_framework->myId() ); if ( ( $_CB_framework->myId() < 1 ) || ( $uid < 1 ) ) { cbNotAuth(); exit(); } if ( $ueConfig['allowUserBanning'] == 0 ) { echo _UE_FUNCTIONALITY_DISABLED; exit(); } if ( $form == 1 ) { $_CB_database->setQuery( "SELECT bannedreason FROM #__comprofiler WHERE id = " . (int) $uid ); $orgbannedreason = $_CB_database->loadresult(); HTML_comprofiler::banUserForm( $option, $uid, $act, $orgbannedreason); } else { $now = $_CB_framework->now(); $dateStr = cbFormatDate( $now ); $cbNotification = new cbNotification(); if ( $act == 1 ) { // Ban by moderator: if ( ( ! $isModerator ) || ( $_CB_framework->myId() != cbGetParam( $_POST, 'bannedby', 0 ) ) ) { cbNotAuth(); return; } // simple spoof check security cbSpoofCheck( 'banUserForm' ); $bannedreason = '' . htmlspecialchars("["._UE_MODERATORBANRESPONSE.", " . $dateStr . "]") . "\n" . htmlspecialchars( stripslashes( cbGetParam( $_POST, 'bannedreason') ) ) ."\n"; $sql="UPDATE #__comprofiler SET banned=1, bannedby=" . (int) $_CB_framework->myId() . ", banneddate='".date('Y-m-d\TH:i:s')."', bannedreason = CONCAT_WS('','" . $_CB_database->getEscaped( $bannedreason ) . "', bannedreason) WHERE id=". (int) $uid; $_CB_database->SetQuery($sql); $_CB_database->query(); $cbNotification->sendFromSystem($uid,_UE_BANUSER_SUB,_UE_BANUSER_MSG); echo _UE_USERBAN_SUCCESSFUL; } elseif ( $act == 0 ) { // Unban by moderator: if (!$isModerator){ cbNotAuth(); return; } // $mineName = getNameFormat($_CB_framework->myName(), $_CB_framework->myUsername,$ueConfig['name_format']); // DEFINE('_UE_UNBANUSER_BY_ON','User profile unbanned by %s on %s'); // $unbannedBy = "" . addslashes( htmlspecialchars("[".sprintf( _UE_UNBANUSER_BY_ON, $mineName, $dateStr ) ) ) . "]\n"; $unbannedBy = "" . htmlspecialchars("[". _UE_UNBANUSER . ", " . $dateStr ) . "]\n"; $sql="UPDATE #__comprofiler SET banned=0, unbannedby=" . (int) $_CB_framework->myId() . ", bannedreason = CONCAT_WS('','" . $_CB_database->getEscaped( $unbannedBy ) . "', bannedreason), unbanneddate='".date('Y-m-d\TH:i:s')."' WHERE id=".(int) $uid; // , bannedreason=null, bannedby=null, banneddate=null $_CB_database->SetQuery($sql); $_CB_database->query(); $cbNotification->sendFromSystem($uid,_UE_UNBANUSER_SUB,_UE_UNBANUSER_MSG); echo _UE_USERUNBAN_SUCCESSFUL; } elseif ( $act == 2 ) { // Unban request from user: if ( $_CB_framework->myId() != $uid ) { cbNotAuth(); return; } $bannedreason = "".htmlspecialchars("["._UE_USERBANRESPONSE.", " . $dateStr . "]")."\n" . htmlspecialchars( stripslashes( cbGetParam( $_POST, 'bannedreason' ) ) ) ."\n"; $sql="UPDATE #__comprofiler SET banned=2, bannedreason = CONCAT_WS('','" . $_CB_database->getEscaped( $bannedreason) . "', bannedreason) WHERE id=" . (int) $uid; $_CB_database->SetQuery($sql); $_CB_database->query(); if($ueConfig['moderatorEmail']==1) { $cbNotification->sendToModerators(_UE_UNBANUSERREQUEST_SUB,_UE_UNBANUSERREQUEST_MSG); } echo _UE_USERUNBANREQUEST_SUCCESSFUL; } } } function processReports(){ global $_CB_framework, $_CB_database, $_POST; // simple spoof check security cbSpoofCheck( 'moderateReports' ); $isModerator=isModerator( $_CB_framework->myId() ); if (!$isModerator) { cbNotAuth(); return; } $reports = cbGetParam( $_POST, 'reports', array() ); foreach ($reports AS $report) { $query = "UPDATE #__comprofiler_userreports SET reportedstatus = 1 WHERE reportid = " . (int) $report; $_CB_database->setQuery($query); $_CB_database->query(); } cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=moderateReports' . getCBprofileItemid(), false ), _UE_USERREPORTMODERATED_SUCCESSFUL ); } function moderator(){ global $_CB_framework, $_CB_database; $isModerator=isModerator( $_CB_framework->myId() ); if (!$isModerator) { cbNotAuth(); return; } $query = "SELECT count(*) FROM #__comprofiler WHERE avatarapproved=0 AND approved=1 AND confirmed=1 AND banned=0"; if(!$_CB_database->setQuery($query)) print $_CB_database->getErrorMsg(); $totalimages = $_CB_database->loadResult(); $query = "SELECT count(*) FROM #__comprofiler_userreports WHERE reportedstatus=0 "; if(!$_CB_database->setQuery($query)) print $_CB_database->getErrorMsg(); $totaluserreports = $_CB_database->loadResult(); $query = "SELECT count(*) FROM #__comprofiler WHERE banned=2 AND approved=1 AND confirmed=1"; if(!$_CB_database->setQuery($query)) print $_CB_database->getErrorMsg(); $totalunban = $_CB_database->loadResult(); if($totalunban > 0 || $totaluserreports > 0 || $totalimages > 0) { if($totalunban > 0) echo "
".$totalunban._UE_UNBANREQUIREACTION."
"; if($totaluserreports > 0) echo "
".$totaluserreports._UE_USERREPORTSREQUIREACTION."
"; if($totalimages > 0) echo "
".$totalimages._UE_IMAGESREQUIREACTION."
"; } else { echo _UE_NOACTIONREQUIRED; } } function approveUser($uids) { global $_CB_framework, $_CB_database, $ueConfig, $_PLUGINS, $Itemid; $andItemid = getCBprofileItemid(); // simple spoof check security cbSpoofCheck( 'pendingApprovalUsers' ); if($ueConfig['allowModUserApproval']==0) { echo _UE_FUNCTIONALITY_DISABLED; exit(); } $isModerator=isModerator( $_CB_framework->myId() ); if (!$isModerator){ cbNotAuth(); return; } $_PLUGINS->loadPluginGroup('user'); if ( ! isset( $ueConfig['emailpass'] ) ) { $ueConfig['emailpass'] = '0'; } foreach($uids AS $uid) { $query = "SELECT * FROM #__comprofiler c, #__users u WHERE c.id=u.id AND c.id = " . (int) $uid; $_CB_database->setQuery($query); $user = $_CB_database->loadObjectList(); $row = $user[0]; if ( $ueConfig['emailpass'] == "1" ) { $pwd = cbMakeRandomString( 8, true ); $pwd_md5 = cbHashPassword( $pwd ); $row->password = $pwd; } $_PLUGINS->trigger( 'onBeforeUserApproval', array($row,true)); if($_PLUGINS->is_errors()) { cbRedirect( cbSef("index.php?option=com_comprofiler&task=pendingApprovalUser".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $_PLUGINS->getErrorMSG(), 'error' ); return; } $_CB_database->SetQuery( "UPDATE #__comprofiler SET approved=1 WHERE id=" . (int) $uid ); $_CB_database->query(); $row->approved = 1; if ( $ueConfig['emailpass'] == "1" ) { $_CB_database->setQuery( "UPDATE #__users SET password = " . $_CB_database->Quote( $pwd_md5 ) . " WHERE id=" . (int) $uid ); $_CB_database->query(); } $_PLUGINS->trigger( 'onAfterUserApproval', array($row,true,true)); activateUser($row, 1, "UserApproval", false); } cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=pendingApprovalUser' . $andItemid, false ), ( count( $uids ) ) ? count( $uids ) . ' ' . _UE_USERAPPROVAL_SUCCESSFUL : '' ); } function rejectUser($uids) { global $_CB_framework, $_CB_database, $ueConfig, $_POST, $_PLUGINS; $andItemid = getCBprofileItemid(); // simple spoof check security cbSpoofCheck( 'pendingApprovalUsers' ); if($ueConfig['allowModUserApproval']==0) { echo _UE_FUNCTIONALITY_DISABLED; exit(); } $isModerator=isModerator( $_CB_framework->myId() ); if (!$isModerator){ cbNotAuth(); return; } $cbNotification= new cbNotification(); foreach($uids AS $uid) { $query = "SELECT * FROM #__comprofiler c, #__users u WHERE c.id=u.id AND c.id = " . (int) $uid; $_CB_database->setQuery($query); $user = $_CB_database->loadObjectList(); $row = $user[0]; $_PLUGINS->loadPluginGroup('user'); $_PLUGINS->trigger( 'onBeforeUserApproval', array($row,false)); if($_PLUGINS->is_errors()) { cbRedirect( cbSef("index.php?option=$option&task=pendingApprovalUser".($Itemid ? "&Itemid=". (int) $Itemid : ""), false ), $_PLUGINS->getErrorMSG(), 'error' ); return; } $sql="UPDATE #__comprofiler SET approved=2 WHERE id=" . (int) $uid; $_CB_database->SetQuery($sql); $_CB_database->query(); $_PLUGINS->trigger( 'onAfterUserApproval', array($row,false,true)); $cbNotification->sendFromSystem(cbGetEscaped($uid),_UE_REG_REJECT_SUB,sprintf(_UE_USERREJECT_MSG,$_CB_framework->getCfg( 'sitename' ), stripslashes( cbGetParam( $_POST, 'comment' . $uid, '' ) ) ) ); } cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=pendingApprovalUser' . $andItemid, false ),(count($uids))?count($uids)." "._UE_USERREJECT_SUCCESSFUL:""); } function pendingApprovalUsers($option) { global $_CB_framework, $_CB_database, $ueConfig; $isModerator = isModerator( $_CB_framework->myId() ); if($ueConfig['allowModUserApproval']==0) { echo _UE_FUNCTIONALITY_DISABLED; exit(); } if (!$isModerator){ cbNotAuth(); return; } $_CB_database->setQuery( "SELECT u.id, u.name, u.username, u.email, u.registerDate " ."\n FROM #__users u, #__comprofiler c " ."\n WHERE u.id=c.id AND c.approved=0 AND c.confirmed=1" ); $rows = $_CB_database->loadObjectList(); HTML_comprofiler::pendingApprovalUsers($option, $rows); } //Connections function addConnection($userid,$connectionid,$umsg=null) { global $_CB_framework, $ueConfig; $andItemid = getCBprofileItemid(true); if(!$ueConfig['allowConnections']) { echo _UE_FUNCTIONALITY_DISABLED; return; } if (! ($_CB_framework->myId() > 0 ) ) { cbNotAuth(); return; } $cbCon=new cbConnection($userid); $cbCon->addConnection($connectionid,stripcslashes($umsg)); $url=cbSef( "index.php?option=com_comprofiler&task=userProfile&user=" . $connectionid . $andItemid ); echo "\n"; } function removeConnection( $userid, $connectionid ) { global $_CB_framework, $ueConfig; $andItemid = getCBprofileItemid(true); if ( ! $ueConfig['allowConnections'] ) { echo _UE_FUNCTIONALITY_DISABLED; return; } if ( ! ( $_CB_framework->myId() > 0 ) ) { cbNotAuth(); return; } $cbCon = new cbConnection( $userid ); if ( ! $cbCon->removeConnection( $userid, $connectionid ) ) { $msg = $cbCon->getErrorMSG(); } else { $msg = $cbCon->getUserMSG(); } // $url=cbSef("index.php?option=com_comprofiler&task=manageConnections"); $url=cbSef( "index.php?option=com_comprofiler&tab=getConnectionTab" . $andItemid ); echo "\n"; } function denyConnection( $userid, $connectionid ) { global $_CB_framework, $ueConfig; if(!$ueConfig['allowConnections']) { echo _UE_FUNCTIONALITY_DISABLED; return; } if (! ( $_CB_framework->myId() > 0 ) ) { cbNotAuth(); return; } $cbCon = new cbConnection( $userid ); $cbCon->denyConnection( $userid, $connectionid ); echo "\n"; //TBD solve this as a redirect to ??? } function acceptConnection($userid,$connectionid) { global $_CB_framework, $ueConfig; if(!$ueConfig['allowConnections']) { // do not test, needed if rules changed! || !$ueConfig['useMutualConnections'] echo _UE_FUNCTIONALITY_DISABLED; return; } if (! ( $_CB_framework->myId() > 0 ) ) { cbNotAuth(); return; } $cbCon=new cbConnection($userid); $cbCon->acceptConnection($userid,$connectionid); echo "\n"; //TBD solve this as a redirect to ??? } function manageConnections($userid) { global $_CB_framework, $ueConfig; if(!$ueConfig['allowConnections']) { echo _UE_FUNCTIONALITY_DISABLED; return; } if ( $_CB_framework->myId() != $userid || $_CB_framework->myId() == 0) { cbNotAuth(); return; } $cbCon = new cbConnection( $userid ); $connections = $cbCon->getActiveConnections( $userid ); $tabs = new cbTabs( 0, $_CB_framework->getUi() ); $tabs->element = ''; $pagingParams = $tabs->_getPaging( array(), array( 'connections_' ) ); $perpage = 20; //TBD unhardcode and get the code below better $total = $cbCon->getConnectionsCount( $userid, true ); if ( $pagingParams["connections_limitstart"] === null ) { $pagingParams["connections_limitstart"] = 0; } if ( $pagingParams["connections_limitstart"] > $total ) { $pagingParams["connections_limitstart"] = 0; } $offset = ( $pagingParams["connections_limitstart"] ? (int) $pagingParams["connections_limitstart"] : 0 ); $connections = $cbCon->getActiveConnections( $userid, $offset, $perpage ); $actions = $cbCon->getPendingConnections( $userid ); $connecteds = $cbCon->getConnectedToMe( $userid ); HTML_comprofiler::manageConnections( $connections, $actions, $total, $tabs, $pagingParams, $perpage, $connecteds ); } function saveConnections($connectionids) { global $_CB_framework, $ueConfig, $_POST; $andItemid = getCBprofileItemid(); // simple spoof check security cbSpoofCheck( 'manageConnections' ); if(!$ueConfig['allowConnections']) { echo _UE_FUNCTIONALITY_DISABLED; return; } if ( ! ( $_CB_framework->myId() > 0 ) ) { cbNotAuth(); return; } $cbCon = new cbConnection( $_CB_framework->myId() ); if (is_array($connectionids)) { foreach($connectionids AS $cid) { $connectionTypes = cbGetParam( $_POST, $cid.'connectiontype', array() ); $cbCon->saveConnection( $cid, stripslashes( cbGetParam( $_POST, $cid . 'description', '' ) ), implode( '|*|', $connectionTypes ) ); } } cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=manageConnections&tab=1' . $andItemid, false ), (is_array($connectionids)) ? _UE_CONNECTIONSUPDATEDSUCCESSFULL : null); } function processConnectionActions($connectionids) { global $_CB_framework, $ueConfig, $_POST; // simple spoof check security cbSpoofCheck( 'manageConnections' ); if(!$ueConfig['allowConnections']) { echo _UE_FUNCTIONALITY_DISABLED; return; } if ( ! ( $_CB_framework->myId() > 0 ) ) { cbNotAuth(); return; } $cbCon = new cbConnection( $_CB_framework->myId() ); if (is_array($connectionids)) { foreach($connectionids AS $cid) { $action = cbGetParam( $_POST, $cid . 'action' ); if ( $action== 'd' ) { $cbCon->denyConnection( $_CB_framework->myId(), $cid ); } elseif ( $action == 'a' ) { $cbCon->acceptConnection( $_CB_framework->myId(), $cid ); } } } $error = $cbCon->getErrorMSG(); if ( $error ) { cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=manageConnections' . getCBprofileItemid(), false ), $error, 'error' ); } else { cbRedirect( cbSef( 'index.php?option=com_comprofiler&task=manageConnections' . getCBprofileItemid(), false ), ( is_array($connectionids) ) ? _UE_CONNECTIONACTIONSSUCCESSFULL : null ); } return; } ?>