Cheetah
ChSitesSearchResult.php
Go to the documentation of this file.
1 <?php
2 
8 ch_import('ChTemplSearchResult');
9 
11 {
12  var $isError;
13  var $_oMain;
15  var $oVotingView = null;
19  var $sMode;
21  var $aCurrent = array(
22  'name' => 'ch_sites',
23  'table' => 'ch_sites_main',
24  'ownFields' => array('id', 'url', 'title', 'entryUri', 'description', 'photo', 'commentsCount',
25  'date', 'ownerid', 'categories', 'tags', 'rate'),
26  'searchFields' => array('title', 'description', 'tags', 'categories'),
27  'restriction' => array(
28  'activeStatus' => array('value' => 'approved', 'field'=>'status', 'operator'=>'='),
29  'tag' => array('value' => '', 'field' => 'tags', 'operator' => 'like'),
30  'category' => array('value' => '', 'field' => 'categories', 'operator' => 'like'),
31  'featured' => array('value' => '', 'field' => 'featured', 'operator' => '='),
32  'public' => array('value' => '', 'field' => 'allowView', 'operator' => 'in'),
33  ),
34  'paginate' => array('perPage' => 10, 'page' => 1, 'totalNum' => 2, 'totalPages' => 1),
35  'sorting' => 'last',
36  'rss' => array(
37  'title' => '',
38  'link' => '',
39  'image' => '',
40  'profile' => 0,
41  'fields' => array (
42  'Link' => '',
43  'Title' => 'title',
44  'DateTimeUTS' => 'date',
45  'Desc' => 'description',
46  'Image' => 'photo',
47  ),
48  ),
49  'ident' => 'id'
50  );
51 
52  function __construct($sMode = '', $sValue = '', $sValue2 = '', $sValue3 = '')
53  {
54  $this->_oMain = $this->getSitesMain();
55  $this->isError = false;
56  $this->sUnitTemplate = 'unit';
57  $this->sUnitName = 'unit';
58  $this->sThumbSize = 'browse';
59  $this->sMode = $sMode;
60 
61  ch_import("ChTemplVotingView");
62  $oVotingView = new ChTemplVotingView('ch_sites', 0);
63  $this->oVotingView = $oVotingView->isEnabled() ? $oVotingView : null;
64 
65  $this->aCurrent['title'] = _t('_ch_sites');
66  $this->aCurrent['paginate']['perPage'] = getParam('ch_sites_per_page');
67 
68  switch ($sMode) {
69  case 'pending':
70  unset($this->aCurrent['rss']);
71  break;
72 
73  case 'adminpending':
74  unset($this->aCurrent['rss']);
75  $this->aCurrent['restriction']['activeStatus']['value'] = 'pending';
76  $this->sSitesBrowseUrl = 'administration';
77  break;
78 
79  case 'my_pending':
80  $this->aCurrent['restriction']['owner'] = array(
81  'value' => $this->_oMain->iOwnerId,
82  'field' => 'ownerid',
83  'operator' => '='
84  );
85  $this->aCurrent['restriction']['activeStatus']['value'] = 'pending';
86  $this->sSitesBrowseUrl = 'browse/my';
87  unset($this->aCurrent['rss']);
88  break;
89 
90  case 'user':
91  if ($sValue) {
92  $iProfileId = $this->_oMain->_oDb->getProfileIdByNickName($sValue);
93  if ($iProfileId) {
94  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_by_user') . $sValue;
95  $GLOBALS['oTopMenu']->setCurrentProfileID($iProfileId);
96  $this->aCurrent['restriction']['owner'] = array(
97  'value' => $iProfileId,
98  'field' => 'ownerid',
99  'operator' => '='
100  );
101  $this->sSitesBrowseUrl = 'browse/user/' . $sValue;
102  } else
103  $this->isError = true;
104  } else
105  $this->isError = true;
106  break;
107 
108  case 'category':
109  $sCategory = uri2title($sValue);
110  $this->aCurrent['restriction']['category']['value'] = $sCategory;
111  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_by_category') . ' ' . $sCategory;
112  $GLOBALS['oTopMenu']->setCustomSubHeader(_t('_ch_sites_caption_browse_by_category') . ' ' . $sCategory);
113  $this->sSitesBrowseUrl = 'browse/category/' . $sValue . '/';
114  break;
115 
116  case 'tag':
117  $sTag = uri2title($sValue);
118  $this->aCurrent['restriction']['tag']['value'] = $sTag;
119  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_by_tag') . ' ' . $sTag;
120  $GLOBALS['oTopMenu']->setCustomSubHeader(_t('_ch_sites_caption_browse_by_tag') . ' ' . $sTag);
121  $this->sSitesBrowseUrl = 'browse/all';
122  break;
123 
124  case 'all':
125  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_all');
126  $this->sSitesBrowseUrl = 'browse/all';
127  break;
128 
129  case 'recent':
130  $this->aCurrent['paginate']['perPage'] = 1;
131  $this->aCurrent['restriction']['public']['value'] = CH_WSB_PG_ALL;
132  $this->sUnitTemplate = 'block_percent';
133  $this->sThumbSize = 'file';
134  break;
135 
136  case 'featured':
137  $this->aCurrent['restriction']['featured']['value'] = 1;
138  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_featured');
139  $this->sSitesBrowseUrl = 'browse/featured';
140  $this->sSitesBrowseAll = 'browse/featured';
141  break;
142 
143  case 'featuredlast':
144  $this->aCurrent['paginate']['perPage'] = 1;
145  $this->aCurrent['restriction']['featured']['value'] = 1;
146  $this->aCurrent['restriction']['public']['value'] = CH_WSB_PG_ALL;
147  $this->sUnitTemplate = 'block_percent';
148  $this->sThumbSize = 'file';
149  break;
150 
151  case 'featuredshort':
152  $this->aCurrent['restriction']['featured']['value'] = 1;
153  $this->aCurrent['restriction']['public']['value'] = CH_WSB_PG_ALL;
154  $this->sUnitTemplate = 'unit_short';
155  $this->sSitesBrowseUrl = 'browse/featuredshort';
156  $this->sSitesBrowseAll = 'browse/featured';
157  $this->aCurrent['paginate']['perPage'] = 5;
158  break;
159 
160  case 'top':
161  $this->aCurrent['sorting'] = 'top';
162  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_top_rated');
163  $this->sSitesBrowseUrl = 'browse/top';
164  break;
165 
166  case 'popular':
167  $this->aCurrent['sorting'] = 'popular';
168  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_popular');
169  $this->sSitesBrowseUrl = 'browse/popular';
170  break;
171 
172  case 'search':
173  if ($sValue)
174  $this->aCurrent['restriction']['keyword'] = array('value' => $sValue,'field' => '','operator' => 'against');
175  $this->aCurrent['title'] = _t('_ch_sites_caption_search_results') . ' ' . $sValue;
176  $this->sSitesBrowseUrl = 'browse/search/' . $sValue;
177  unset($this->aCurrent['rss']);
178  break;
179 
180  case 'admin':
181 
182  $this->aCurrent['join'] = array(
183  'profile' => array(
184  'type' => 'left',
185  'table' => 'Profiles',
186  'mainField' => 'ownerid',
187  'onField' => 'ID',
188  'joinFields' => array('Role')
189  )
190  );
191 
192  $this->aCurrent['restriction'] = array(
193  'admin' => array(
194  'value' => '3',
195  'field' => 'Role',
196  'operator' => '=',
197  'table' => 'Profiles'
198  )
199  );
200 
201  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_admin');
202  $this->sSitesBrowseUrl = 'browse/admin';
203  break;
204 
205  case 'users':
206 
207  $this->aCurrent['join'] = array(
208  'profile' => array(
209  'type' => 'left',
210  'table' => 'Profiles',
211  'mainField' => 'ownerid',
212  'onField' => 'ID',
213  'joinFields' => array('Role')
214  )
215  );
216 
217  $this->aCurrent['restriction']['role'] = array(
218  'value' => '3',
219  'field' => 'Role',
220  'operator' => '<>',
221  'table' => 'Profiles'
222  );
223  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_profile');
224  $this->sSitesBrowseUrl = 'browse/profile';
225  break;
226 
227  case 'calendar':
228  $this->aCurrent['restriction']['calendar-min'] = array('value' => "UNIX_TIMESTAMP('{$sValue}-{$sValue2}-{$sValue3} 00:00:00')", 'field' => 'date', 'operator' => '>=', 'no_quote_value' => true);
229  $this->aCurrent['restriction']['calendar-max'] = array('value' => "UNIX_TIMESTAMP('{$sValue}-{$sValue2}-{$sValue3} 23:59:59')", 'field' => 'date', 'operator' => '<=', 'no_quote_value' => true);
230  $this->sSitesBrowseUrl = "browse/calendar/{$sValue}/{$sValue2}/{$sValue3}";
231  $this->aCurrent['title'] = _t('_ch_sites_caption_browse_by_day')
232  . getLocaleDate( strtotime("{$sValue}-{$sValue2}-{$sValue3}"), CH_WSB_LOCALE_DATE_SHORT);
233 
234  $GLOBALS['oTopMenu']->setCustomSubHeader($this->aCurrent['title']);
235  break;
236 
237  case 'hon_rate':
238  $ip = getVisitorIP();
239  $aVotedItems = $oVotingView->getVotedItems($ip);
240  $aList = array();
241  $sPrefix = $oVotingView->_aSystem['row_prefix'] . 'id';
242  foreach ($aVotedItems as $iKey => $aVal)
243  $aList[$iKey] = $aVal[$sPrefix];
244 
245  $this->aCurrent['restriction']['public']['value'] = CH_WSB_PG_ALL;
246  $this->aCurrent['paginate']['perPage'] = 1;
247  $this->aCurrent['sorting'] = 'rand';
248  $this->aCurrent['restriction']['id'] = array(
249  'value' => $aList,
250  'field' => 'id',
251  'operator' => 'not in'
252  );
253 
254  break;
255 
256  case 'hon_prev_rate':
257  $this->aCurrent['join']['rateTrack'] = array(
258  'type' => 'inner',
259  'table' => 'ch_sites_rating_track',
260  'mainField' => 'id',
261  'onField' => 'sites_id',
262  'joinFields' => array('sites_ip', 'sites_date')
263  );
264  $this->aCurrent['paginate']['perPage'] = 1;
265  $this->aCurrent['sorting'] = 'sites_date';
266  $sIp = getVisitorIP();
267  $this->aCurrent['restriction']['ip'] = array(
268  'value' => $sIp,
269  'field' => 'sites_ip',
270  'table' => 'ch_sites_rating_track',
271  'operator' => '='
272  );
273  break;
274 
275  case 'index':
276  $this->sSitesBrowseUrl = 'index';
277  $this->sSitesBrowseAll = 'browse/all';
278  $this->aCurrent['paginate']['perPage'] = 3;
279  $aVis = array(CH_WSB_PG_ALL);
280  if (getLoggedId())
281  $aVis[] = CH_WSB_PG_MEMBERS;
282  $this->aCurrent['restriction']['public']['value'] = $aVis;
283  break;
284 
285  case 'profile':
286  if ($sValue) {
287  $iProfileId = $this->_oMain->_oDb->getProfileIdByNickName(process_db_input($sValue));
288  if ($iProfileId) {
289  $this->aCurrent['restriction']['owner'] = array(
290  'value' => $iProfileId,
291  'field' => 'ownerid',
292  'operator' => '='
293  );
294  $this->sSitesBrowseUrl = 'profile/' . $sValue;
295  $this->sSitesBrowseAll = 'browse/user/' . $sValue;
296  $this->aCurrent['paginate']['perPage'] = 3;
297  $this->aCurrent['restriction']['public']['value'] = CH_WSB_PG_ALL;
298  } else
299  $this->isError = true;
300  } else
301  $this->isError = true;
302 
303  break;
304 
305  case 'home':
306  $this->sSitesBrowseUrl = 'browse/home';
307  $this->sSitesBrowseAll = 'browse/all';
308  $this->aCurrent['paginate']['perPage'] = 5;
309  $this->aCurrent['restriction']['public']['value'] = CH_WSB_PG_ALL;
310  break;
311 
312  case '':
313  $this->sSitesBrowseUrl = 'browse/';
314  $this->aCurrent['title'] = _t('_ch_sites');
315  unset($this->aCurrent['rss']);
316  break;
317 
318  default:
319  $this->isError = true;
320  }
321 
322  if (!$this->isError) {
323  if (isset($this->aCurrent['rss']))
324  $this->aCurrent['rss']['link'] = CH_WSB_URL_ROOT . $this->_oMain->_oConfig->getBaseUri() . $this->sSitesBrowseUrl;
325 
326  if (ch_get('rss') !== false && ch_get('rss')) {
327  $this->aCurrent['ownFields'][] = 'description';
328  $this->aCurrent['ownFields'][] = 'date';
329  $this->aCurrent['paginate']['perPage'] = $this->_oMain->_oDb->getParam('ch_sites_max_rss_num');
330  }
331  }
332 
333  parent::__construct();
334  }
335 
336  function displayResultBlock ($bPagination = false, $isAjax = false)
337  {
338  $s = parent::displayResultBlock ();
339  if ($s) {
340  $GLOBALS['oSysTemplate']->addDynamicLocation($this->_oMain->_oConfig->getHomePath(), $this->_oMain->_oConfig->getHomeUrl());
341  $GLOBALS['oSysTemplate']->addCss(array('main.css', 'twig.css'));
342 
343  $s = $GLOBALS['oSysTemplate']->parseHtmlByName('default_padding.html', array('content' => $s));
344 
345  if ($bPagination)
346  $s .= $isAjax ? $this->showPaginationAjax() : $this->showPagination();
347 
348  $s = '<div id="search_result_block_' . $this->sMode . '">' . $s . '</div>';
349  }
350 
351  return $s;
352  }
353 
354  function displaySearchUnit($aData)
355  {
356  switch ($this->sUnitName) {
357  case 'unit':
358  return $this->_oMain->_oTemplate->unit($aData, $this->sUnitTemplate, $this->oVotingView, $this->sThumbSize);
359  break;
360 
361  case 'hon':
362  return $this->_oMain->_oTemplate->blockHon($aData);
363  break;
364  }
365  }
366 
367  function showPagination($aParams = array())
368  {
369  ch_import('ChWsbPaginate');
370  $oConfig = $this->_oMain->_oConfig;
371  $sUrlStart = CH_WSB_URL_ROOT . $oConfig->getBaseUri() . $this->sSitesBrowseUrl;
372  $sUrlStart .= (false === strpos($sUrlStart, '?') ? '?' : '&');
373  $oPaginate = new ChWsbPaginate(array(
374  'page_url' => $sUrlStart . 'page={page}&per_page={per_page}',
375  'count' => $this->aCurrent['paginate']['totalNum'],
376  'per_page' => $this->aCurrent['paginate']['perPage'],
377  'page' => $this->aCurrent['paginate']['page'],
378  'on_change_page' => '',
379  'on_change_per_page' => '',
380  ));
381  return '<div class="clear_both"></div>'.$oPaginate->getPaginate();
382  }
383 
385  {
386  ch_import('ChWsbPaginate');
387  $oConfig = $this->_oMain->_oConfig;
388  $sUrlStart = CH_WSB_URL_ROOT . $oConfig->getBaseUri() . $this->sSitesBrowseUrl;
389  $sUrlStart .= (false === strpos($sUrlStart, '?') ? '?' : '&');
390  $sUrlStart .= 'page={page}&per_page={per_page}';
391  $oPaginate = new ChWsbPaginate(array(
392  'page_url' => 'javascript:void(0);',
393  'count' => $this->aCurrent['paginate']['totalNum'],
394  'per_page' => $this->aCurrent['paginate']['perPage'],
395  'page' => $this->aCurrent['paginate']['page'],
396  'view_all_url' => CH_WSB_URL_ROOT . $oConfig->getBaseUri() . $this->sSitesBrowseAll,
397  'info' => false,
398  'view_all' => true,
399  'page_links' => false,
400  'on_change_page' => "getHtmlData('search_result_block_{$this->sMode}', '$sUrlStart')"
401  ));
402  return '<div class="clear_both"></div>'.$oPaginate->getPaginate();
403  }
404 
405  function getSitesMain()
406  {
407  return ChWsbModule::getInstance('ChSitesModule');
408  }
409 
410  function getRssUnitLink (&$a)
411  {
412  $oMain = $this->getSitesMain();
413  return CH_WSB_URL_ROOT . $oMain->_oConfig->getBaseUri() . 'view/' . $a['entryUri'];
414  }
415 
416  function getRssUnitImage (&$a, $sField)
417  {
418  $aImage = array ('ID' => $a['author_id'], 'Avatar' => $a[$sField]);
419  $aImage = ChWsbService::call('photos', 'get_image', array($aImage, 'browse'), 'Search');
420 
421  return $aImage['no_image'] ? '' : $aImage['file'];
422  }
423 
424  function getAlterOrder()
425  {
426  if ($this->aCurrent['sorting'] == 'sites_date')
427  return array('order' => " ORDER BY `sites_date` DESC");
428  else
429  return array();
430  }
431 }
process_db_input
process_db_input($sText, $iStripTags=0)
Definition: utils.inc.php:256
ChSitesSearchResult\getRssUnitLink
getRssUnitLink(&$a)
Definition: ChSitesSearchResult.php:410
getVisitorIP
getVisitorIP($isProxyCheck=true)
Definition: utils.inc.php:643
ChSitesSearchResult\displayResultBlock
displayResultBlock($bPagination=false, $isAjax=false)
Definition: ChSitesSearchResult.php:336
ChWsbModule\getInstance
static getInstance($sClassName)
Definition: ChWsbModule.php:89
ChSitesSearchResult\getSitesMain
getSitesMain()
Definition: ChSitesSearchResult.php:405
ChSitesSearchResult\$sSitesBrowseUrl
$sSitesBrowseUrl
Definition: ChSitesSearchResult.php:16
ChSitesSearchResult\showPagination
showPagination($aParams=array())
Definition: ChSitesSearchResult.php:367
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
ch_get
ch_get($sName)
Definition: utils.inc.php:1664
uri2title
uri2title($sValue)
Definition: utils.inc.php:51
ChSitesSearchResult\displaySearchUnit
displaySearchUnit($aData)
Definition: ChSitesSearchResult.php:354
ChSitesSearchResult\$sUnitName
$sUnitName
Definition: ChSitesSearchResult.php:18
php
ChSitesSearchResult\showPaginationAjax
showPaginationAjax()
Definition: ChSitesSearchResult.php:384
ChSitesSearchResult\$sThumbSize
$sThumbSize
Definition: ChSitesSearchResult.php:20
ChSitesSearchResult
Definition: ChSitesSearchResult.php:11
ChSitesSearchResult\$isError
$isError
Definition: ChSitesSearchResult.php:12
getParam
getParam($sParamName, $bUseCache=true)
Definition: db.inc.php:130
ChSitesSearchResult\$_oMain
$_oMain
Definition: ChSitesSearchResult.php:13
getLoggedId
getLoggedId()
Definition: profiles.inc.php:32
ChTemplSearchResult
Definition: ChTemplSearchResult.php:11
ChSitesSearchResult\$sMode
$sMode
Definition: ChSitesSearchResult.php:19
ChSitesSearchResult\getRssUnitImage
getRssUnitImage(&$a, $sField)
Definition: ChSitesSearchResult.php:416
ChSitesSearchResult\$sUnitTemplate
$sUnitTemplate
Definition: ChSitesSearchResult.php:14
ChWsbPaginate
Definition: ChWsbPaginate.php:69
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
CH_WSB_PG_ALL
const CH_WSB_PG_ALL
Definition: ChWsbPrivacy.php:12
CH_WSB_LOCALE_DATE_SHORT
const CH_WSB_LOCALE_DATE_SHORT
Definition: utils.inc.php:15
$s
$s
Definition: embed.php:13
ChSitesSearchResult\$oVotingView
$oVotingView
Definition: ChSitesSearchResult.php:15
ChSitesSearchResult\$aCurrent
$aCurrent
Definition: ChSitesSearchResult.php:21
CH_WSB_PG_MEMBERS
const CH_WSB_PG_MEMBERS
Definition: ChWsbPrivacy.php:13
ChSitesSearchResult\$sSitesBrowseAll
$sSitesBrowseAll
Definition: ChSitesSearchResult.php:17
ChSitesSearchResult\__construct
__construct($sMode='', $sValue='', $sValue2='', $sValue3='')
Definition: ChSitesSearchResult.php:52
ChWsbService\call
static call($mixed, $sMethod, $aParams=array(), $sClass='Module')
Definition: ChWsbService.php:32
getLocaleDate
getLocaleDate($sTimestamp='', $iCode=CH_WSB_LOCALE_DATE_SHORT)
Definition: utils.inc.php:70
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
ChSitesSearchResult\getAlterOrder
getAlterOrder()
Definition: ChSitesSearchResult.php:424
$iProfileId
if( $sMembersList) $iProfileId
Definition: communicator.php:29
ChTemplVotingView
Definition: ChTemplVotingView.php:14
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10