getButton($iUserId, 'system', ''); $sContent = $oSubscription->getData() . $GLOBALS['oSysTemplate']->parseHtmlByName('home_page_subscribe.html', array( 'message' => _t('_SUBSCRIBE_TEXT', $site['title']), 'button_title' => $aButton['title'], 'button_script' => $aButton['script'] )); return array($sContent, array(), array(), false); } /** * Featured members block */ function getBlockCode_Featured() { $iFeatureNum = getParam('featured_num'); $aCode = $this->getMembers('Featured', array('Featured' => 1), $iFeatureNum); return $aCode; } function getBlockCode_Members() { $iMaxNum = (int) getParam( "top_members_max_num" ); // number of profiles $aCode = $this->getMembers('Members', array(), $iMaxNum); return $aCode; } function getBlockCode_Tags($iBlockId) { $oTags = new BxTemplTags(); $oTags->getTagObjectConfig(array('type' => '')); if(empty($oTags->aTagObjects)) return ''; $aParam = array( 'type' => isset($_REQUEST['tags_mode']) ? $_REQUEST['tags_mode'] : $oTags->getFirstObject(), 'orderby' => 'popular', 'limit' => getParam('tags_perpage_browse') ); $sMenu = $oTags->getTagsTopMenu($aParam); $sContent = $oTags->display($aParam, $iBlockId); return array($sContent, $sMenu, array(), false); } function getBlockCode_Categories($iBlockId) { $oCategories = new BxTemplCategories(); $oCategories->getTagObjectConfig(array('status' => 'active')); if(empty($oCategories->aTagObjects)) return ''; $aParam = array( 'type' => isset($_REQUEST['tags_mode']) ? $_REQUEST['tags_mode'] : $oCategories->getFirstObject(), 'limit' => getParam('categ_perpage_browse'), 'orderby' => 'popular' ); $sMenu = $oCategories->getCategTopMenu($aParam); $sContent = $oCategories->display($aParam, $iBlockId, '', false, getParam('categ_show_columns')); return array($sContent, $sMenu, array(), false); } function getBlockCode_QuickSearch() { $aProfile = isLogged() ? getProfileInfo() : array(); // default params for search form $aDefaultParams = array( 'LookingFor' => !empty($aProfile['Sex']) ? $aProfile['Sex'] : 'male', 'Sex' => !empty($aProfile['LookingFor']) ? $aProfile['LookingFor'] : 'female', 'Country' => !empty($aProfile['Country']) ? $aProfile['Country'] : getParam('default_country'), 'DateOfBirth' => getParam('search_start_age') . '-' . getParam('search_end_age'), ); $oPF = new BxDolProfileFields(10); return array($oPF->getFormCode(array('default_params' => $aDefaultParams)), array(), array(), false); } function getBlockCode_SiteStats() { return array(getSiteStatUser(), array(), array(), false); } function getBlockCode_Download() { $a = $GLOBALS['MySQL']->fromCache('sys_box_download', 'getAll', 'SELECT * FROM `sys_box_download` WHERE `disabled` = 0 ORDER BY `order`'); $s = ''; foreach ($a as $r) { if ('_' == $r['title'][0]) $r['title'] = _t($r['title']); if ('_' == $r['desc'][0]) $r['desc'] = _t($r['desc']); if (0 == strncmp('php:', $r['url'], 4)) $r['url'] = eval(substr($r['url'], 4)); if (!$r['url']) continue; $r['icon'] = $GLOBALS['oSysTemplate']->getIconUrl($r['icon']); $s .= $GLOBALS['oSysTemplate']->parseHtmlByName('download_box_unit.html', $r); } return array($s, array(), array(), false); } // ----- non-block functions ----- // function getMembers ($sBlockName, $aParams = array(), $iLimit = 16, $sMode = 'last') { $aDefFields = array( 'ID', 'NickName', 'Couple', 'Sex' ); $sCode = ''; $iOnlineTime = (int)getParam( "member_online_time" ); //main fields $sqlMainFields = ""; foreach ($aDefFields as $iKey => $sValue) $sqlMainFields .= "`Profiles`. `$sValue`, "; $sqlMainFields .= "if(`DateLastNav` > SUBDATE(NOW(), INTERVAL $iOnlineTime MINUTE ), 1, 0) AS `is_online`"; // possible conditions $sqlCondition = "WHERE `Profiles`.`Status` = 'Active' and (`Profiles`.`Couple` = 0 or `Profiles`.`Couple` > `Profiles`.`ID`)"; if (is_array($aParams)) { foreach ($aParams as $sField => $sValue) $sqlCondition .= " AND `Profiles`.`$sField` = '$sValue'"; } // top menu and sorting $aModes = array('last', 'top', 'rand', 'online'); $aDBTopMenu = array(); if (empty($_GET[$sBlockName . 'Mode'])) { $sMode = 'rand'; } else { $sMode = (in_array($_GET[$sBlockName . 'Mode'], $aModes)) ? $_GET[$sBlockName . 'Mode'] : $sMode = 'rand'; } $sqlOrder = ""; foreach( $aModes as $sMyMode ) { switch ($sMyMode) { case 'online': if ($sMode == $sMyMode) { $sqlCondition .= " AND `Profiles`.`DateLastNav` > SUBDATE(NOW(), INTERVAL ".$iOnlineTime." MINUTE)"; $sqlOrder = " ORDER BY `Profiles`.`Couple` ASC"; } $sModeTitle = _t('_Online'); break; case 'last': if ($sMode == $sMyMode) $sqlOrder = " ORDER BY `Profiles`.`Couple` ASC, `DateLastNav` > SUBDATE(NOW(), INTERVAL ".$iOnlineTime." MINUTE) DESC, `Profiles`.`Avatar` <> 0 DESC, RAND()"; $sModeTitle = _t('_Latest'); break; case 'top': if ($sMode == $sMyMode) { $oVotingView = new BxTemplVotingView ('profile', 0, 0); $aSql = $oVotingView->getSqlParts('`Profiles`', '`ID`'); $sqlOrder = $oVotingView->isEnabled() ? " ORDER BY `Profiles`.`Couple` ASC, (`pr_rating_sum`/`pr_rating_count`) DESC, `pr_rating_count` DESC, `Profiles`.`DateReg` DESC" : $sqlOrder; $sqlMainFields .= $aSql['fields']; $sqlLJoin = $aSql['join']; $sqlCondition .= " AND `pr_rating_count` > 1"; } $sModeTitle = _t('_Top'); break; case 'rand': if ($sMode == $sMyMode) $sqlOrder = " ORDER BY `Profiles`.`Couple` ASC, `DateLastNav` > SUBDATE(NOW(), INTERVAL ".$iOnlineTime." MINUTE) DESC, `Profiles`.`Avatar` <> 0 DESC, RAND()"; $sModeTitle = _t('_Random'); break; } $aDBTopMenu[$sModeTitle] = array('href' => BX_DOL_URL_ROOT . "index.php?{$sBlockName}Mode=$sMyMode", 'dynamic' => true, 'active' => ( $sMyMode == $sMode )); } if (empty($sqlLJoin)) $sqlLJoin = ''; $iCount = (int)db_value("SELECT COUNT(`Profiles`.`ID`) FROM `Profiles` $sqlLJoin $sqlCondition"); $aData = array(); $sPaginate = ''; if ($iCount) { $iLimit = (int)$iLimit > 0 ? (int)$iLimit : 8; $iPages = ceil($iCount/ $iLimit); $iPage = empty($_GET['page']) ? 1 : (int)$_GET['page']; if ($iPage > $iPages) $iPage = $iPages; if ($iPage < 1) $iPage = 1; $sqlFrom = ($iPage - 1) * $iLimit; $sqlLimit = "LIMIT $sqlFrom, $iLimit"; $sqlQuery = "SELECT " . $sqlMainFields . " FROM `Profiles` $sqlLJoin $sqlCondition $sqlOrder $sqlLimit"; $rData = db_res($sqlQuery); $iCurrCount = mysql_num_rows($rData); $aOnline = $aTmplVars = array(); while ($aData = mysql_fetch_assoc($rData)) { $aOnline['is_online'] = $aData['is_online']; $aTmplVars[] = array( 'thumbnail' => get_member_thumbnail($aData['ID'], 'none', true, 'visitor', $aOnline) ); } $sCode = $GLOBALS['oSysTemplate']->parseHtmlByName('members_list.html', array( 'bx_repeat:list' => $aTmplVars )); if ($iPages > 1) { $oPaginate = new BxDolPaginate(array( 'page_url' => BX_DOL_URL_ROOT . 'index.php', 'count' => $iCount, 'per_page' => $iLimit, 'page' => $iPage, 'per_page_changer' => true, 'page_reloader' => true, 'on_change_page' => 'return !loadDynamicBlock({id}, \'index.php?'.$sBlockName.'Mode='.$sMode.'&page={page}&per_page={per_page}\');', 'on_change_per_page' => '' )); $sPaginate = $oPaginate->getSimplePaginate(BX_DOL_URL_ROOT . 'browse.php'); } } else { $sCode = MsgBox(_t("_Empty")); } return array($sCode, $aDBTopMenu, $sPaginate, true); } }