Cheetah
search.php
Go to the documentation of this file.
1 <?php
2 
8 require_once( './inc/header.inc.php' );
9 require_once( CH_DIRECTORY_PATH_INC . 'design.inc.php' );
10 require_once( CH_DIRECTORY_PATH_INC . 'admin.inc.php' );
11 require_once( CH_DIRECTORY_PATH_INC . 'db.inc.php' );
12 require_once( CH_DIRECTORY_PATH_INC . 'match.inc.php');
13 require_once( CH_DIRECTORY_PATH_CLASSES . 'ChWsbProfileFields.php' );
14 require_once( CH_DIRECTORY_PATH_CLASSES . 'ChWsbProfilesController.php' );
15 
16 ch_import('ChWsbDb');
17 ch_import('ChWsbPageView');
18 ch_import('ChTemplSearchProfile');
19 ch_import('ChTemplProfileGenerator');
20 
22 {
23  var $oPF;
24 
26 
27  function __construct()
28  {
29  parent::__construct('search');
30 
31  // get search mode
32  switch( $_REQUEST['search_mode'] ) {
33  case 'quick': $iPFArea = 10; break;
34  case 'adv': $iPFArea = 11; break;
35  default: $iPFArea = 9; // simple search (default)
36  }
37 
38  $this->oPF = new ChWsbProfileFields($iPFArea);
39 
40  $this->aFilterSortSettings = array();
41  }
42 
44  {
45  $this->aFilterSortSettings = array (
46  //'f_photos' => (isset($_GET['photos_only'])) ? $_GET['photos_only'] : null,
47  //'f_online' => (isset($_GET['online_only'])) ? $_GET['online_only'] : null,
48  'sort' => (isset($_GET['sort'])) ? process_db_input($_GET['sort'], CH_TAGS_STRIP) : 'activity',
49  //'s_mode' => (isset($_GET['search_result_mode']) && $_GET['search_result_mode'] == 'ext') ? 'ext' : 'sim',
50  );
51  }
52 
54  {
56 
57  $aProfile = $logged['member'] ? getProfileInfo(getLoggedId()) : array();
58 
59  // default params for search form
60  $aDefaultParams = array();
61 
62  $sSrmKey = 'search_result_mode';
63  if(ch_get($sSrmKey) !== false)
64  $aDefaultParams[$sSrmKey] = process_db_input(ch_get($sSrmKey));
65 
66  $aForms = $this->oPF->getFormsSearch($aDefaultParams, true);
67  foreach($aForms as $aForm) {
68  if(empty($aForm['inputs']) || !is_array($aForm['inputs']))
69  continue;
70 
71  foreach($aForm['inputs'] as $aInput) {
72  $sName = $aInput['name'];
73  $mValue = ch_get($sName);
74 
75  switch($sName) {
76  case 'LookingFor':
77  $aDefaultParams[$sName] = $mValue !== false ? $mValue : ($aProfile['Sex'] ? $aProfile['Sex'] : 'male');
78  break;
79 
80  case 'Sex':
81  $aDefaultParams[$sName] = $mValue !== false ? $mValue : ($aProfile['LookingFor'] ? $aProfile['LookingFor'] : 'female');
82  break;
83 
84  case 'Country':
85  $aDefaultParams[$sName] = $mValue !== false && isset($mValue[0]) ? $mValue[0] : ($aProfile['Country'] ? $aProfile['Country'] : getParam('default_country'));
86  break;
87 
88  case 'DateOfBirth':
89  $aDefaultParams[$sName] = $mValue !== false ? $mValue : getParam('search_start_age') . '-' . getParam('search_end_age');
90  break;
91 
92  default:
93  if($mValue !== false)
94  $aDefaultParams[$sName] = $mValue;
95  }
96  }
97 
98  }
99 
100  $sForms = $this->oPF->getFormCode(array('default_params' => $aDefaultParams));
101 
102  $bSimAct = ($this->oPF->iAreaID == 9) ? true : false;
103  $bAdvAct = ($this->oPF->iAreaID == 11) ? true : false;
104  $bQuiAct = ($this->oPF->iAreaID == 10) ? true : false;
105  $sUrl = CH_WSB_URL_ROOT . 'search.php';
106 
107  $aLinks = array(
108  _t('_search_tab_simple') => array('href' => $sUrl . '?search_mode=sim', 'active' => $bSimAct),
109  _t('_search_tab_Adv') => array('href' => $sUrl . '?search_mode=adv', 'active' => $bAdvAct),
110  _t('_search_tab_quick') => array('href' => $sUrl . '?search_mode=quick', 'active' => $bQuiAct),
111  );
112 
113  return array($sForms, $aLinks, array(), false);
114  }
115 
116  function showMatchProfiles($iBlockID)
117  {
119 
120  if (!$iProfileId)
121  return array('', MsgBox(_t('_Empty')));
122 
123  $sSort = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : 'none';
124  $aProfiles = getMatchProfiles($iProfileId, false, $sSort);
125 
126  if (empty($aProfiles))
127  return array('', MsgBox(_t('_Empty')));
128 
129  $sBaseUri = 'search.php?show=match';
130  $sTopLinksUri = '';
131  $sPaginateUri = '';
132 
133  foreach ($_REQUEST as $sKey => $sVal) {
134  switch ($sKey) {
135  case 'page':
136  $sPaginateUri .= '&page=' . $sVal;
137  break;
138  case 'per_page':
139  $sPaginateUri .= '&per_page=' . $sVal;
140  break;
141  case 'sort':
142  $sPaginateUri .= '&sort=' . $sVal;
143  break;
144  case 'mode':
145  $sTopLinksUri .= '&mode=' . $sVal;
146  break;
147  }
148  }
149 
150  $aPaginate = array(
151  'page_url' => $sBaseUri . $sTopLinksUri . '&page={page}&per_page={per_page}&sort={sorting}',
152  'info' => true,
153  'page_links' => true,
154  'per_page' => isset($_REQUEST['per_page']) ? (int)$_REQUEST['per_page'] : 25,
155  'sorting' => $sSort,
156  'count' => count($aProfiles),
157  'page' => isset($_REQUEST['page']) ? (int)$_REQUEST['page'] : 1,
158  );
159  $sMode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : 'simple';
160 
161  $oPaginate = new ChWsbPaginate($aPaginate);
162 
163  $oSearchProfile = new ChTemplSearchProfile();
164  $aExtendedCss = array( 'ext_css_class' => 'search_filled_block');
165  $sTemplateName = $sMode == 'extended' ? 'search_profiles_ext.html' : 'search_profiles_sim.html';
166  $iIndex = 0;
167  $sOutputHtml = '';
168  $sOutputMode = isset($_REQUEST['search_result_mode']) && $_REQUEST['search_result_mode'] == 'ext' ? 'ext' : 'sim';
169 
170  for ($i = ($aPaginate['page'] - 1) * $aPaginate['per_page'];
171  $i < $aPaginate['page'] * $aPaginate['per_page'] && $i < $aPaginate['count']; $i++)
172  {
173  $aProfile = getProfileInfo($aProfiles[$i]);
174 
175  if ($aProfile['Couple']) {
176  $aCoupleInfo = getProfileInfo($aProfile['Couple']);
177  if (!($iIndex % 2))
178  $sOutputHtml .= $oSearchProfile->PrintSearhResult($aProfile, $aCoupleInfo, null, $sTemplateName);
179  else
180  $sOutputHtml .= $oSearchProfile->PrintSearhResult($aProfile, $aCoupleInfo, $aExtendedCss, $sTemplateName);
181  } else {
182  if (!($iIndex % 2))
183  $sOutputHtml .= $oSearchProfile->PrintSearhResult($aProfile, '', null, $sTemplateName);
184  else
185  $sOutputHtml .= $oSearchProfile->PrintSearhResult($aProfile, '', $aExtendedCss, $sTemplateName);
186  }
187 
188  $iIndex++;
189  }
190 
191  // gen sorting block ( type of : drop down );
192  $sSortBlock = $oPaginate->getSorting(array(
193  'none' => _t('_None'),
194  'activity' => _t('_Latest activity'),
195  'date_reg' => _t('_FieldCaption_DateReg_View'),
196  ));
197  $sSortBlock = '<div class="ordered_block">' . $sSortBlock . '</div><div class="clear_both"></div>';
198 
199  $sContent = $GLOBALS['oSysTemplate']->parseHtmlByName('designbox_top_controls.html', array(
200  'top_controls' => $sSortBlock
201  ));
202  $sContent .= $GLOBALS['oSysTemplate']->parseHtmlByName('view_profiles.html', array(
203  'margin_type' => $sOutputMode == 'sim' ? '-thd' : '',
204  'content' => $sOutputHtml
205  )) . $oPaginate->getPaginate();
206 
207  $aLinks = array(
208  _t('_Simple') => array(
209  'href' => $sBaseUri . $sPaginateUri . '&mode=simple',
210  'dynamic' => true,
211  'active' => $sMode == 'simple'
212  ),
213  _t('_Extended') => array(
214  'href' => $sBaseUri . $sPaginateUri . '&mode=extended',
215  'dynamic' => true,
216  'active' => $sMode == 'extended'
217  )
218  );
219 
220  return array(
221  $aLinks,
222  $sContent
223  );
224  }
225 
226  function getBlockCode_Results($iBlockID)
227  {
228  //collect inputs
229  $aRequestParams = $this->oPF->collectSearchRequestParams();
230 
231  if( isset( $_REQUEST['Tags'] ) and trim( $_REQUEST['Tags'] ) )
232  $aRequestParams['Tags'] = trim( process_pass_data( $_REQUEST['Tags'] ) );
233 
234  if( isset( $_REQUEST['distance'] ) and (int)$_REQUEST['distance'] )
235  $aRequestParams['distance'] = (int)$_REQUEST['distance'];
236 
237  // start page generation
239 
240  switch($_REQUEST['show']) {
241  case 'match':
242  list($aDBTopMenu, $sResults) = $this->showMatchProfiles($iBlockID);
243  break;
244  case 'calendar':
245  list($sResults, $aDBTopMenu, $sPagination, $sTopFilter) = $oProfile->GenProfilesCalendarBlock();
246  break;
247  default:
248  $this->collectFilteredSettings();
249  list($sResults, $aDBTopMenu, $sPagination, $sTopFilter) = $oProfile->GenSearchResultBlock($this->oPF->aBlocks, $aRequestParams, $this->aFilterSortSettings, 'search.php');
250  break;
251  }
252 
253  return array($sTopFilter . $sResults . $sPagination, $aDBTopMenu, array(), $this->getTitle());
254  }
255 
256  function getTitle()
257  {
258  $sHeaderTitle = _t('_Search profiles');
259  switch($_REQUEST['show']) {
260  case 'match':
261  $sHeaderTitle = _t('_Match');
262  break;
263  /*case 'online':
264  $sHeaderTitle = _t('_Online');
265  break;*/
266  case 'featured':
267  $sHeaderTitle = _t('_Featured');
268  break;
269  case 'top_rated':
270  $sHeaderTitle = _t('_Top Rated');
271  break;
272  case 'popular':
273  $sHeaderTitle = _t('_Popular');
274  break;
275  case 'birthdays':
276  $sHeaderTitle = _t('_Birthdays');
277  break;
278  case 'world_map':
279  $sHeaderTitle = _t('_World_Map');
280  break;
281  case 'calendar':
282  $sHeaderTitle = _t('_People_Calendar');
283  break;
284  }
285  return $sHeaderTitle;
286  }
287 }
288 
289 check_logged();
290 
291 $_page['name_index'] = 81;
292 $_page['css_name'] = 'search.css';
293 
296 $_page['header'] = $sHeaderTitle;
297 $_ni = $_page['name_index'];
298 $_page_cont[$_ni]['page_main_code'] = $oSearchView->getCode();
299 
300 PageCode();
process_db_input
process_db_input($sText, $iStripTags=0)
Definition: utils.inc.php:256
ChWsbSearchPageView\$oPF
$oPF
Definition: search.php:23
$sOutputHtml
$sOutputHtml
Definition: browse.php:86
$sMode
else $sMode
Definition: antispam.php:362
ChWsbProfileFields
Definition: ChWsbProfileFields.php:13
$_page_cont
$_page_cont[$_ni]['page_main_code']
Definition: search.php:298
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
check_logged
check_logged()
Definition: admin.inc.php:238
ChWsbPageView
Definition: ChWsbPageView.php:99
ChTemplSearchProfile
Definition: ChTemplSearchProfile.php:11
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
ch_get
ch_get($sName)
Definition: utils.inc.php:1664
ChTemplProfileGenerator
Definition: ChTemplProfileGenerator.php:11
$sUrl
$sUrl
Definition: cart.php:15
php
ChWsbSearchPageView
Definition: search.php:22
ChWsbSearchPageView\showMatchProfiles
showMatchProfiles($iBlockID)
Definition: search.php:116
ChWsbSearchPageView\getTitle
getTitle()
Definition: search.php:256
$_ni
$_ni
Definition: search.php:297
$_page
$_page['name_index']
Definition: search.php:291
$oSearchView
$oSearchView
Definition: search.php:294
ChWsbSearchPageView\getBlockCode_Results
getBlockCode_Results($iBlockID)
Definition: search.php:226
$_GET
$_GET['debug']
Definition: index.php:67
$iIndex
$iIndex
Definition: bottom_menu_compose.php:142
and
and
Definition: license.txt:18
$sSort
$sSort
Definition: browse.php:27
getParam
getParam($sParamName, $bUseCache=true)
Definition: db.inc.php:130
ChWsbSearchPageView\collectFilteredSettings
collectFilteredSettings()
Definition: search.php:43
getLoggedId
getLoggedId()
Definition: profiles.inc.php:32
getMatchProfiles
getMatchProfiles($iProfileId, $bForce=false, $sSort='none')
Definition: match.inc.php:19
$aProfile
$aProfile
Definition: flash.php:14
$_REQUEST
$_REQUEST['action']
Definition: cmd.php:11
ChWsbPaginate
Definition: ChWsbPaginate.php:69
global
if(!defined("GLOBAL_MODULE")) define("GLOBAL_MODULE" global
Definition: header.inc.php:25
$sContent
$sContent
Definition: bottom_menu_compose.php:169
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
PageCode
PageCode($oTemplate=null)
Definition: design.inc.php:91
CH_TAGS_STRIP
const CH_TAGS_STRIP
Definition: utils.inc.php:22
ChWsbSearchPageView\__construct
__construct()
Definition: search.php:27
process_pass_data
process_pass_data($text, $strip_tags=0)
Definition: utils.inc.php:290
$logged
$logged['member']
Definition: activation_email.php:16
getProfileInfo
getProfileInfo($iProfileID=0, $checkActiveStatus=false, $forceCache=false)
Definition: profiles.inc.php:249
ChWsbSearchPageView\getBlockCode_SearchForm
getBlockCode_SearchForm()
Definition: search.php:53
$aForm
$aForm
Definition: forgot.php:43
$sHeaderTitle
$sHeaderTitle
Definition: search.php:295
exit
exit
Definition: search.php:301
ChWsbSearchPageView\$aFilterSortSettings
$aFilterSortSettings
Definition: search.php:25
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
$sName
$sName
Definition: ChWsbAdminTools.php:853
$oProfile
if($profileID !=$memberID) $oProfile
Definition: profile.php:55
$iProfileId
if( $sMembersList) $iProfileId
Definition: communicator.php:29
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10