Cheetah
ChBaseSearchResultSharedMedia.php
Go to the documentation of this file.
1 <?php
2 
8 ch_import('ChBaseSearchResult');
9 ch_import('ChWsbAlbums');
10 ch_import('ChTemplVotingView');
11 
13 {
14  var $bDynamic = false;
15  var $bAdminMode = false;
16 
18  var $aConstants = array();
19 
20  var $aPermalinks = array();
21 
23 
24  // additional tables parameters (rate, favorite ...)
25  var $aAddPartsConfig = array();
26 
29 
31  var $oModule;
32 
33  var $oPrivacy;
34 
35  function __construct ($sModuleClass = '')
36  {
37  /* main settings for shared modules
38  ownFields - fields which will be got from main table ($this->aCurrent['table'])
39  searchFields - fields which using for full text key search
40  join - array of join tables
41  join array (
42  'type' - type of join
43  'table' - join table
44  'mainField' - field from main table for 'on' condition
45  'onField' - field from joining table for 'on' condition
46  'joinFields' - array of fields from joining table
47  )
48  */
49 
50  $this->aCurrent = array(
51  'ownFields' => array('ID', 'Title', 'Uri', 'Date', 'Time', 'Rate', 'RateCount'),
52  'searchFields' => array('Title', 'Tags', 'Description', 'Categories'),
53  'join' => array(
54  'profile' => array(
55  'type' => 'left',
56  'table' => 'Profiles',
57  'mainField' => 'Owner',
58  'onField' => 'ID',
59  'joinFields' => array('NickName')
60  ),
61  'albumsObjects' => array(
62  'type' => 'left',
63  'table' => 'sys_albums_objects',
64  'mainField' => 'ID',
65  'onField' => 'id_object',
66  'joinFields' => ''
67  ),
68  'albums' => array(
69  'type' => 'left',
70  'table' => 'sys_albums',
71  'mainField' => 'id_album',
72  'onField' => 'ID',
73  'joinFields' => array('AllowAlbumView'),
74  'mainTable' => 'sys_albums_objects'
75  )
76  ),
77  'restriction' => array(
78  'activeStatus' => array('value'=>'approved', 'field'=>'Status', 'operator'=>'=', 'paramName'=>'status'),
79  'owner' => array('value'=>'', 'field'=>'Owner', 'operator'=>'=', 'paramName'=>'userID'),
80  'ownerStatus' => array('value'=>array('Rejected', 'Suspended'), 'operator'=>'not in', 'paramName'=>'ownerStatus', 'table'=>'Profiles', 'field'=>'Status'),
81  'tag' => array('value'=>'', 'field'=>'Tags', 'operator'=>'against', 'paramName'=>'tag'),
82  'category'=> array('value'=>'', 'field'=>'Categories', 'operator'=>'against', 'paramName'=>'categoryUri'),
83  'id' => array('value'=>'', 'field'=>'ID', 'operator'=>'in'),
84  'allow_view' => array('value'=>'', 'field'=>'AllowAlbumView', 'operator'=>'in', 'table'=> 'sys_albums'),
85  'not_allow_view' => array('value'=>'', 'field'=>'AllowAlbumView', 'operator'=>'not in', 'table'=> 'sys_albums'),
86  'album_status' => array('value'=>'active', 'field'=>'Status', 'operator'=>'=', 'table'=> 'sys_albums'),
87  'albumType' => array('value'=>'', 'field'=>'Type', 'operator'=>'=', 'paramName'=>'albumType', 'table'=>'sys_albums'),
88  ),
89  'paginate' => array('perPage' => 10, 'page' => 1, 'totalNum' => 10, 'totalPages' => 1),
90  'sorting' => 'last',
91  'view' => 'full',
92  'rss' => array(
93  'title' => '',
94  'link' => '',
95  'image' => '',
96  'profile' => 0,
97  'fields' => array (
98  'Link' => '',
99  'Title' => 'title',
100  'DateTimeUTS' => 'date',
101  'Desc' => 'desc',
102  'Image' => '',
103  ),
104  ),
105  );
106  // favorite config, basic for all media modules
107  $this->aAddPartsConfig['favorite'] = array(
108  'type' => 'inner',
109  'table' => '',
110  'mainField' => 'ID',
111  'onField' => 'ID',
112  'userField' => 'Profile',
113  'joinFields' => ''
114  );
115  $this->aPseud = $this->_getPseud();
116  parent::__construct();
117 
118  $this->sModuleClass = $sModuleClass;
119  $this->oModule = ChWsbModule::getInstance($this->sModuleClass);
120  $this->oTemplate = $GLOBALS['oSysTemplate'];
121 
122  $sClassName = $this->oModule->_oConfig->getClassPrefix() . 'Privacy';
123  ch_import('Privacy', $this->oModule->_aModule);
124  $this->oPrivacy = new $sClassName('sys_albums', 'ID', 'Owner');
125  $this->sTemplUnit = 'browse_unit';
126 
127  $this->bDynamic = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
128  }
129 
130  function getCurrentUrl ($sType, $iId = 0, $sUri = '', $aOwner = '')
131  {
132  $sLink = $this->aConstants['linksTempl'][$sType];
133  return CH_WSB_URL_ROOT . $this->oModule->_oConfig->getBaseUri() . str_replace('{uri}', $sUri, $sLink);
134  }
135 
136  function displaySearchUnit ($aData)
137  {
138  $bFull = isset($this->aCurrent['view']) && $this->aCurrent['view'] == 'short' ? false : true;
139  if ($this->oModule->isAdmin($this->oModule->_iProfileId) || is_array($this->aCurrent['restriction']['allow_view']['value']))
140  $bVis = true;
141  elseif ($this->oPrivacy->check('album_view', $aData['id_album'], $this->oModule->_iProfileId))
142  $bVis = true;
143  else
144  $bVis = false;
145 
146  if (!$bVis) {
147  $aUnit = array(
148  'ch_if:show_title' => array(
149  'condition' => $bFull,
150  'content' => array(1)
151  )
152  );
153  $sCode = $this->oTemplate->parseHtmlByName('browse_unit_private.html', $aUnit);
154  }
155  else
156  $sCode = !$bFull ? $this->getSearchUnitShort($aData) : $this->getSearchUnit($aData);
157 
158  return $sCode;
159  }
160 
161  function getSearchUnitShort ($aData)
162  {
163  $sCode = '
164  <div class="sys_file_search_unit_short" id="unit_{id}">
165  {pic}
166  </div>
167  ';
168  $aUnit['id'] = $aData['id'];
169  $sFileLink = $this->getCurrentUrl('file', $aData['id'], $aData['uri']);
170  // pic
171  $aUnit['pic'] = $this->_getSharedThumb($aData['id'], $sFileLink, $aData['Hash']);
172  return $this->_transformData($aUnit, $sCode, $this->sCssPref);
173  }
174 
175  function getSearchUnit ($aData)
176  {
177  $aUnit = array();
178  $aUnit['main_prefix'] = $this->oModule->_oConfig->getMainPrefix();
179 
180  $aUnit['id'] = $aData['id'];
181  $sFileLink = $this->getCurrentUrl('file', $aData['id'], $aData['uri']);
182  // pic
183  $aUnit['pic'] = $this->_getSharedThumb($aData['id'], $sFileLink, $aData['Hash']);
184  // rate
185  $aUnit['rate'] = '';
186  if (!is_null($this->oRate) && $this->oRate->isEnabled()) {
187  if ($this->sTemplUnit == 'browse_unit')
188  $aUnit['rate'] = $this->oRate->getSmallVoting(0, $aData['Rate']);
189  else {
190  $oRate = new ChTemplVotingView($this->aCurrent['name'], $aData['id']);
191  $aUnit['rate'] = $oRate->getSmallVoting(0);
192  }
193  }
194  // size
195  $aUnit['size'] = isset($aData['size']) ? $this->getLength($aData['size']) : '';
196  // title
197  $aUnit['titleLink'] = $sFileLink;
198  $aUnit['title'] = stripslashes($aData['title']);
199 
200  // when
201  $aUnit['when'] = defineTimeInterval($aData['date']);
202 
203  // from
204  $aUnit['fromLink'] = getProfileLink($aData['ownerId']);
205  $aUnit['from'] = getNickName($aData['ownerId']);
206 
207  // view
208  $aUnit['view'] = $aData['view'];
209  return $this->oTemplate->parseHtmlByName($this->sTemplUnit . '.html', $aUnit, array('{', '}'));
210  }
211 
212  function getCurrentAlbum ($sAlbumUri)
213  {
214  $this->sCurrentAlbum = strip_tags($sAlbumUri);
215  }
216 
217  function getLength ($iTime)
218  {
219  $iTime = (int)round($iTime/1000);
220  if ($iTime < 60) {
221  $aLength[1] = '0';
222  $aLength[0] = $iTime;
223  } elseif ($iTime < 3600) {
224  $aLength[1] = (int)($iTime/60);
225  $aLength[0] = $iTime%60;
226  } else {
227  $aLength[2] = (int)($iTime/3600);
228  $iOther = $iTime - $aLength[2]*3600;
229  $aLength[1] = (int)($iOther/60);
230  $aLength[0] = $iOther%60;
231  }
232  $sCode = '';
233  for ($i = count($aLength)-1; $i >= 0; $i--) {
234  $sCode .= strlen($aLength[$i]) < 2 ? '0' . $aLength[$i] : $aLength[$i];
235  $sCode .= ':';
236  }
237  return trim($sCode, ':');
238  }
239 
240  function displayMenu ()
241  {
242  $aDBTopMenu = $this->getTopMenu(array($this->aCurrent['name'] . '_mode'));
243  $aDBBottomMenu = $this->getBottomMenu();
244  return array( $aDBTopMenu, $aDBBottomMenu );
245  }
246 
247  function getAlterOrder()
248  {
249  $aSql = array();
250  switch ($this->aCurrent['sorting']) {
251  case 'popular':
252  $aSql['order'] = " ORDER BY `{$this->aCurrent['table']}`.`Views` DESC";
253  break;
254  case 'album_order':
255  $aSql['order'] = " ORDER BY `obj_order` ASC, `id_object` DESC";
256  break;
257  default:
258  }
259  return $aSql;
260  }
261 
262  function getTopMenu ($aExclude = array())
263  {
264  $aDBTopMenu = array();
265  $aLinkAddon = $this->getLinkAddByPrams($aExclude);
266  foreach (array('last', 'top') as $sMyMode) {
267  switch ($sMyMode) {
268  case 'last':
269  $sModeTitle = '_Latest';
270  break;
271  case 'top':
272  $sModeTitle = '_Top';
273  break;
274  }
275 
276  if (basename( $_SERVER['PHP_SELF'] ) == 'rewrite_name.php' || basename( $_SERVER['PHP_SELF'] ) == 'profile.php')
277  $sLink = CH_WSB_URL_ROOT . "profile.php?ID={$this->aCurrent['restriction']['owner']['value']}&";
278  else
279  $sLink = ch_html_attribute($_SERVER['PHP_SELF']) . "?";
280  $sLink .= $this->aCurrent['name'] . "_mode=$sMyMode" . $aLinkAddon['params'] . $aLinkAddon['paginate'] . $aLinkAddon['type'];
281 
282  $aDBTopMenu[$sModeTitle] = array('href' => $sLink, 'dynamic' => true, 'active' => ($sMyMode == $this->aCurrent['sorting']));
283  }
284  return $aDBTopMenu;
285  }
286  function getBrowseBlock ($aParams, $aCustom = array(), $sMainUrl = '', $bClearJoins = true)
287  {
288  if(!isset($aCustom['sorting']))
289  $aCustom['sorting'] = 'album_order';
290 
291  return parent::getBrowseBlock($aParams, $aCustom, $sMainUrl, $bClearJoins);
292  }
293  function getLatestFile ()
294  {
295  $aWhere[] = "1";
296  foreach( $this->aCurrent['restriction'] as $sKey => $aValue ) {
297  if (isset($aValue['value'])) {
298  switch ($sKey) {
299  case 'featured':
300  case 'owner':
301  if ((int)$aValue['value'] != 0)
302  $aWhere[] = "`{$this->aCurrent['table']}`.`{$aValue['field']}` = '" . (int)$aValue['value'] . "'";
303  break;
304  case 'category':
305  case 'tag':
306  if (strlen($aValue['value']) > 0)
307  $aWhere[] = "MATCH(`{$this->aCurrent['table']}`.`{$aValue['field']}`) AGAINST ('" . trim(process_db_input($aValue['value'], CH_TAGS_STRIP)) . "')";
308  break;
309  case 'allow_view':
310  if (is_array($aValue['value'])) {
311  $sqlJoin = "LEFT JOIN `sys_albums_objects` ON `sys_albums_objects`.`id_object`=`{$this->aCurrent['table']}`.`{$this->aCurrent['ident']}`
312  LEFT JOIN `sys_albums` ON `sys_albums_objects`.`id_album`=`sys_albums`.`ID`
313  ";
314  $sqlCode = "`AllowAlbumView` IN(";
315  foreach ($aValue['value'] as $sValue)
316  $sqlCode .= "$sValue, ";
317  $aWhere[] = rtrim($sqlCode, ", ") . ')';
318  }
319  break;
320  }
321  }
322  }
323  $sqlWhere = "WHERE " . implode( ' AND ', $aWhere ) . " AND `{$this->aCurrent['table']}`.`Status`= 'approved'";
324  $sqlQuery = "SELECT `{$this->aCurrent['table']}`.`{$this->aCurrent['ident']}` as `{$this->aCurrent['ident']}` FROM `{$this->aCurrent['table']}` $sqlJoin $sqlWhere ORDER BY `{$this->aCurrent['ident']}` DESC LIMIT 1";
325  $iFileId = db_value($sqlQuery);
326  $sCode = '';
327  if ($iFileId != 0) {
328  $aInfo = $this->oModule->_oDb->getFileInfo(array('fileId' => $iFileId));
329 
330  $oRate = new ChTemplVotingView($this->aCurrent['name'], $aInfo['medID']);
331  $aDraw = array(
332  'file' => $this->oTemplate->getFileConcept($aInfo['medID'], array('ext'=>$aInfo['medExt'], 'source'=>$aInfo['medSource'])),
333  'file_url' => $this->getCurrentUrl('file', $aInfo['medID'], $aInfo['medUri']),
334  'title' => $aInfo['medTitle'],
335  'rate' => $oRate->getSmallVoting(0),
336  'date' => defineTimeInterval($aInfo['medDate']),
337  'owner_url' => getProfileLink($aInfo['medProfId']),
338  'owner_nick' => getNickName($aInfo['medProfId'])
339  );
340 
341  $this->oTemplate->addCss('view.css');
342  $sCode = $this->oTemplate->parseHtmlByName('latest_file.html', $aDraw);
343  }
344  return $sCode;
345  }
346 
347  function _getSharedThumb ($iId, $sFileLink, $sHash = '')
348  {
349  $sIdent = strlen($sHash) > 0 ? $sHash : $iId;
350  $aUnit = array(
351  'imgUrl' => $this->getImgUrl($sIdent, 'browse'),
352  'imgUrl_2x' => $this->getImgUrl($sIdent, 'browse2x'),
353  'fileLink' => $sFileLink,
354  'ch_if:admin' => array(
355  'condition' => $this->bAdminMode,
356  'content' => array('id' => $iId)
357  )
358  );
359  return $this->oModule->_oTemplate->parseHtmlByName('thumb.html', $aUnit);
360  }
361 
362  function displaySearchBox ($sCode, $sPaginate = '', $bAdminBox = false)
363  {
364  $sCode = $GLOBALS['oFunctions']->centerContent($sCode, '.sys_file_search_unit') . '<div class="clear_both"></div>';
365  $sTitle = _t($this->aCurrent['title']);
366  $sFunc = !$bAdminBox ? 'Content' : 'Admin';
367  $sCode = call_user_func('DesignBox' . $sFunc, $sTitle, '<div class="searchContentBlock">' . $sCode . '</div>' .$sPaginate, 1);
368  if (!isset($_GET['searchMode']))
369  $sCode = '<div id="page_block_' . $this->id . '">' . $sCode . '</div>';
370  return $sCode;
371  }
372 
373  function getImgUrl ($iId, $sImgType = 'browse')
374  {
375  $iId = (int)$iId;
376  $sPostFix = isset($this->aConstants['picPostfix'][$sImgType]) ? $this->aConstants['picPostfix'][$sImgType] : $this->aConstants['picPostfix']['browse'];
377  if(!file_exists($this->aConstants['filesDir'] . $iId . $sPostFix))
378  return '';
379 
380  return $this->aConstants['filesUrl'] . $iId . $sPostFix;
381  }
382 
383  function getFilesInCatArray ($iId, $sCategory = '')
384  {
385  $this->clearFilters();
386  $this->aCurrent['restriction']['owner']['value'] = $iId;
387  $this->aCurrent['paginate']['perPage'] = 1000;
388  $this->aCurrent['join']['category'] = array(
389  'type' => 'left',
390  'table' => 'sys_categories',
391  'mainField' => $this->aCurrent['ident'],
392  'onField' => 'ID',
393  'joinFields' => array('Category')
394  );
395  $this->aCurrent['restriction']['category'] = array(
396  'value' => $sCategory,
397  'field' => 'Category',
398  'operator' => '=',
399  'table' => 'sys_categories'
400  );
401 
402  $this->aCurrent['restriction']['type'] = array(
403  'value' => $this->aCurrent['name'],
404  'field' => 'Type',
405  'operator' => '=',
406  'table' => 'sys_categories'
407  );
408 
409  $aFiles = $this->getSearchData();
410  if (!$aFiles)
411  $aFiles = array();
412  return $aFiles;
413  }
414 
415  function getFilesInAlbumArray ($iAlbumId, $aLimits = array())
416  {
417  $iAlbumId = (int)$iAlbumId;
418  if (!$iAlbumId)
419  return array();
420  $this->clearFilters(array('activeStatus'));
421  $this->aCurrent['join']['albumsObjects'] = array(
422  'type' => 'left',
423  'table' => 'sys_albums_objects',
424  'mainField' => 'ID',
425  'onField' => 'id_object',
426  'joinFields' => array('obj_order')
427  );
428  $this->aCurrent['sorting'] = 'album_order';
429  if ($aLimits['page'])
430  $this->aCurrent['paginate']['page'] = (int)$aLimits['page'];
431  if (isset($aLimits['per_page']) && $aLimits['per_page'] !== false)
432  $this->aCurrent['paginate']['perPage'] = (int)$aLimits['per_page'];
433  $this->aCurrent['restriction']['album'] = array(
434  'value'=>$iAlbumId, 'field'=>'id_album', 'operator'=>'=', 'paramName'=>'albumId', 'table'=>'sys_albums_objects'
435  );
436  $aFiles = $this->getSearchData();
437  if (!$aFiles)
438  $aFiles = array();
439  return $aFiles;
440  }
441 
442  function getProfileFiles ($iProfId, $aLimits = array())
443  {
444  $this->clearFilters(array(), array('albumsObjects', 'albums'));
445  if ($aLimits['page'])
446  $this->aCurrent['paginate']['page'] = (int)$aLimits['page'];
447  if ($aLimits['per_page'])
448  $this->aCurrent['paginate']['perPage'] = $aLimits['per_page'];
449  $this->aCurrent['restriction']['activeStatus']['value'] = 'approved';
450  $this->aCurrent['restriction']['owner']['value'] = (int)$iProfId;
451  $aFiles = $this->getSearchData();
452  if (!$aFiles)
453  $aFiles = array();
454  return $aFiles;
455  }
456 
457  // browse functions
458  function addCustomParts ()
459  {
460  if (!$this->bCustomParts) {
461  $this->bCustomParts = true;
462  $sModulePart = $this->getModuleFolder() . '/';
463  $this->oTemplate->addLocation($this->aCurrent['name'], CH_DIRECTORY_PATH_MODULES . $sModulePart, CH_WSB_URL_MODULES . $sModulePart);
464  $this->oTemplate->addCss(array('search.css'));
465  //$this->oTemplate->removeLocation($this->aCurrent['name']);
466  return '';
467  }
468  }
469 
470  function getModuleFolder ()
471  {
472  return 'cheetah/'.$this->aCurrent['name'];
473  }
474 
475  function addAlbumJsCss($bDynamic = false)
476  {
477  $sResult = $this->oTemplate->addJs(array(
478  'modernizr.js',
479  'ChWsbAlbums.js'
480  ), $bDynamic);
481 
482  return $bDynamic ? $sResult : '';
483  }
484 
485  function getAlbumList ($iPage = 1, $iPerPage = 10, $aCond = array())
486  {
487  $oSet = new ChWsbAlbums($this->aCurrent['name']);
488  foreach ($this->aCurrent['restriction'] as $sKey => $aParam) {
489  if (!empty($aParam['value']))
490  $aData[$sKey] = $aParam['value'];
491  }
492  $aData = array_merge($aData, $aCond);
493  $iAlbumCount = $oSet->getAlbumCount($aData);
494  $this->aCurrent['paginate']['totalAlbumNum'] = $iAlbumCount;
495  if ($iAlbumCount > 0) {
496  $sCode = $this->addCustomParts();
497  $aList = $oSet->getAlbumList($aData, (int)$iPage, (int)$iPerPage);
498  $bCheckPrivacy = isset($aData['allow_view']) ? false : true;
499  foreach ($aList as $aData)
500  $sCode .= $this->displayAlbumUnit($aData, $bCheckPrivacy);
501  } else
502  $sCode = MsgBox(_t('_Empty'));
503 
504  $sCode .= $this->addAlbumJsCss($this->bDynamic);
505  return $this->oTemplate->parseHtmlByName('album_units.html', array('content' => $sCode));
506  }
507 
508  function getAlbumsBlock ($aSectionParams = array(), $aAlbumParams = array(), $aCustom = array())
509  {
510  $aCustomTmpl = array(
511  'caption' => _t('_' . $this->oModule->_oConfig->getMainPrefix() .'_albums'),
512  'enable_center' => true,
513  'unit_css_class' => '.sys_album_unit',
514  'page' => isset($_GET['page']) ? (int)$_GET['page'] : 1,
515  'per_page' => isset($_GET['per_page']) ? (int)$_GET['per_page']: (int)$this->oModule->_oConfig->getGlParam('number_albums_home'),
516  'simple_paginate' => true,
517  'menu_top' => '',
518  'menu_bottom' => '',
519  'paginate_url' => '',
520  'simple_paginate_url' => CH_WSB_URL_ROOT . $this->oModule->_oConfig->getUri() . '/albums/browse',
521  'simple_paginate_view_all' => true
522  );
523  $aCustom = array_merge($aCustomTmpl, $aCustom);
524  $this->aCurrent['paginate']['perPage'] = $aCustom['per_page'];
525  $this->aCurrent['paginate']['page'] = $aCustom['page'];
526 
527  $this->fillFilters($aSectionParams);
528  $sCode = $this->getAlbumList($this->aCurrent['paginate']['page'], $this->aCurrent['paginate']['perPage'], $aAlbumParams);
529  if ($this->aCurrent['paginate']['totalAlbumNum'] > 0) {
530  if ($aCustom['enable_center'])
531  $sCode = $GLOBALS['oFunctions']->centerContent($sCode, $aCustom['unit_css_class']);
532  if (empty($aCustom['menu_bottom'])) {
533  $aLinkAddon = $this->getLinkAddByPrams(array('r'));
534  $oPaginate = new ChWsbPaginate(array(
535  'page_url' => $aCustom['paginate_url'],
536  'count' => $this->aCurrent['paginate']['totalAlbumNum'],
537  'per_page' => $this->aCurrent['paginate']['perPage'],
538  'page' => $this->aCurrent['paginate']['page'],
539  'on_change_page' => 'return !loadDynamicBlock({id}, \'' . $aCustom['paginate_url'] . $aLinkAddon['params'] .'&page={page}&per_page={per_page}\');',
540  ));
541  $aCode['menu_bottom'] = $aCustom['simple_paginate'] ? $oPaginate->getSimplePaginate($aCustom['simple_paginate_url'], -1, -1, $aCustom['simple_paginate_view_all']) : $oPaginate->getPaginate();
542  } else
543  $aCode['menu_bottom'] = $aCustom['menu_bottom'];
544  $aCode['code'] = DesignBoxContent($aCustom['caption'], $sCode);
545  }
546  $aCode['menu_top'] = $aCustom['menu_top'];
547  return array($aCode['code'], $aCode['menu_top'], $aCode['menu_bottom'], (!empty($aCode['code']) ? false : ''));
548  }
549 
550  function getAlbumCovers ($iAlbumId, $aParams = array())
551  {
552  $iAlbumId = (int)$iAlbumId;
553  $iLimit = isset($aParams['filesInAlbumCover']) ? (int)$aParams['filesInAlbumCover'] : null;
554  return $this->oModule->oAlbums->getAlbumCoverFiles($iAlbumId, array('table'=>$this->aCurrent['table'], 'field'=> 'ID'), array(array('field'=>'Status', 'value'=>'approved')), $iLimit);
555  }
556 
557  function getAlbumCoverUrl (&$aIdent)
558  {
559  return $this->getImgUrl($aIdent['id_object'], 'thumb');
560  }
561 
562  function displayAlbumUnit ($aData, $bCheckPrivacy = true)
563  {
564  $bOwner = $this->oModule->_iProfileId == $aData['Owner'];
565 
566  if(!$this->bAdminMode && $bCheckPrivacy) {
567  if(!$this->oPrivacy->check('album_view', $aData['ID'], $this->oModule->_iProfileId)) {
568  $aUnit = array(
569  'type' => $this->aCurrent['name']
570  );
571  return $this->oTemplate->parseHtmlByName('album_unit_private.html', $aUnit);
572  }
573  }
574 
575  $sLink = $this->getCurrentUrl('album', $aData['ID'], $aData['Uri']) . '/owner/' . getUsername($aData['Owner']);
576  $aUnit = array(
577  'type' => $aData['Type'],
578  'ch_if:editMode' => array(
579  'condition' => $this->bAdminMode,
580  'content' => array(
581  'id' => $aData['ID'],
582  'checked' => $this->sCurrentAlbum == $aData['Uri'] ? 'checked="checked"' : ''
583  )
584  ),
585  'albumUrl' => $sLink,
586  'ch_repeat:units' => array(),
587  'title' => $aData['Caption'],
588  'titleLink' => stripcslashes($sLink),
589  'from' => getNickName($aData['Owner']),
590  'fromLink' => getProfileLink($aData['Owner']),
591  'view' => isset($aData['ObjCount']) ? $aData['ObjCount'] . ' ' . _t($this->aCurrent['title']): '',
592  'when' => defineTimeInterval($aData['Date'])
593  );
594 
595  $iPics = isset($this->aConstants['filesInAlbumCover']) ? (int)$this->aConstants['filesInAlbumCover'] : 15;
596  $aPics = $this->getAlbumCovers($aData['ID'], array('filesInAlbumCover' => $iPics));
597  $bPics = is_array($aPics) && count($aPics) > 0;
598 
599  if(!$bPics && !$bOwner) {
600  $this->aCurrent['paginate']['totalAlbumNum']--;
601  return '';
602  }
603  else if(!$bPics && $bOwner) {
604  if(isset($this->aConstants['filesInEmptyAlbumCover']))
605  $iPics = $this->aConstants['filesInEmptyAlbumCover'];
606  }
607 
608  $aUnit['ch_repeat:units'] = array();
609  for($i = 0; $i < $iPics; $i++)
610  $aUnit['ch_repeat:units'][] = $this->_getAlbumUnitItem($i, array_shift($aPics), array('album_url' => $sLink));
611 
612  $sResult = $this->oTemplate->parseHtmlByName('album_unit.html', $aUnit, array('{','}'));
613  if(!empty($aData['show_as_list'])) {
614  $sResult .= $this->addAlbumJsCss($this->bDynamic);
615  $sResult = $this->oTemplate->parseHtmlByName('album_units.html', array('content' => $sResult));
616 
617  if(!empty($aData['enable_center']))
618  $sResult = $GLOBALS['oFunctions']->centerContent($sResult, '.sys_album_unit');
619  }
620 
621  return $sResult;
622  }
623 
624  function _getAlbumUnitItem($iIndex, $aPicture, $aParams = array())
625  {
626  $sClass = '';
627 
628  $bPicture = isset($aPicture['id_object']) && (int)$aPicture['id_object'] > 0;
629  return array(
630  'ch_if:exist' => array(
631  'condition' => $bPicture,
632  'content' => array(
633  'class' => $sClass,
634  'unit' => $bPicture ? $this->getAlbumCoverUrl($aPicture) : '',
635  )
636  ),
637  'ch_if:not-exist' => array(
638  'condition' => !$bPicture,
639  'content' => array()
640  )
641  );
642  }
643 
644  function serviceGetLength ($iTime)
645  {
646  return $this->getLength ($iTime);
647  }
648 
649  function serviceGetFilesInCat ($iId, $sCategory = '')
650  {
651  }
652 
653  function serviceGetFilesInAlbum ($iAlbum)
654  {
655  }
656 
657  function serviceGetAlbumPrivacy ($iAlbumId, $iViewer = 0)
658  {
659  if (!$iViewer)
660  $iViewer = $this->oModule->_iProfileId;
661  return $this->oModule->oAlbumPrivacy->check('album_view', (int)$iAlbumId, $iViewer);
662  }
663 
664  function serviceGetProfileAlbumsBlock ($iProfileId, $sSpecUrl = '')
665  {
666  $iProfileId = (int)$iProfileId;
667  $sNickName = getUsername($iProfileId);
668  $sSimpleUrl = CH_WSB_URL_ROOT . $this->oModule->_oConfig->getBaseUri() . 'albums/browse/owner/' . $sNickName;
669  $sPaginateUrl = mb_strlen($sSpecUrl) > 0 ? strip_tags($sSpecUrl) : getProfileLink($iProfileId);
670  return $this->getAlbumsBlock(array(), array('owner' => $iProfileId, 'hide_default' => TRUE), array('enable_center' => true, 'paginate_url' => $sPaginateUrl, 'simple_paginate_url' => $sSimpleUrl));
671  }
672 
674  {
675  $iProfileId = (int)$iProfileId;
676  $sNickKey = '{nickname}';
677  $sNickName = getUsername($iProfileId);
678  $sDefAlbumName = $this->oModule->_oConfig->getGlParam('profile_album_name');
679  if (strpos($sDefAlbumName, $sNickKey) !== false)
680  $sCaption = str_replace($sNickKey, $sNickName, $sDefAlbumName);
681  else {
682  $sCaption = $sDefAlbumName;
683  $this->aCurrent['restriction']['album_owner'] = array(
684  'value'=>$iProfileId, 'field'=>'Owner', 'operator'=>'=', 'paramName'=>'albumOwner', 'table'=>'sys_albums'
685  );
686  }
687  $sUri = uriFilter($sCaption);
688  $this->aCurrent['sorting'] = 'album_order';
689  $this->aCurrent['restriction']['album'] = array(
690  'value'=>$sUri, 'field'=>'Uri', 'operator'=>'=', 'paramName'=>'albumUri', 'table'=>'sys_albums'
691  );
692  $aFiles = $this->getSearchData();
693  if (is_array($aFiles)) {
694  foreach ($aFiles as $iKey => $aData)
695  $aFiles[$iKey]['file'] = $this->getImgUrl($aData['id'], 'icon');
696  } else
697  $aFiles = array();
698  return $aFiles;
699  }
700 
701  function checkMemAction ($iFileOwner, $sAction = 'view')
702  {
703  $iFileOwner = (int)$iFileOwner;
705  if ($this->oModule->isAdmin($this->oModule->_iProfileId) || $iFileOwner == $this->oModule->_iProfileId) return true;
706  $this->oModule->_defineActions();
707  $aCheck = checkAction($this->oModule->_iProfileId, $this->oModule->_defineActionName($sAction));
709  return false;
710  return true;
711  }
712 
713  function getRssUnitLink (&$a)
714  {
715  return CH_WSB_URL_ROOT . $this->oModule->_oConfig->getBaseUri() . 'view/' . $a['uri'];
716  }
717 
721  function serviceGetWallPostComment($aEvent, $aParams = array())
722  {
723  $iId = (int)$aEvent['object_id'];
724  $iOwner = (int)$aEvent['owner_id'];
725  $sOwner = getNickName($iOwner);
726 
727  $aItem = $this->serviceGetEntry($iId, 'browse');
728  if(empty($aItem) || !is_array($aItem))
729  return array('perform_delete' => true);
730 
731  $aContent = unserialize($aEvent['content']);
732  if(empty($aContent) || !isset($aContent['comment_id']))
733  return '';
734 
735  if(!$this->oPrivacy->check('album_view', (int)$aItem['album_id'], $this->oModule->_iProfileId))
736  return '';
737 
738  ch_import('ChTemplCmtsView');
739  $oCmts = new ChTemplCmtsView($this->oModule->_oConfig->getMainPrefix(), $iId);
740  if(!$oCmts->isEnabled())
741  return '';
742 
743  $aComment = $oCmts->getCommentRow((int)$aContent['comment_id']);
744 
745  $sCss = '';
746  $sUri = $this->oModule->_oConfig->getUri();
747  if($aEvent['js_mode'])
748  $sCss = $this->oModule->_oTemplate->addCss('wall_post.css', true);
749  else
750  $this->oModule->_oTemplate->addCss('wall_post.css');
751 
752  $sTextAddedNew = _t('_ch_' . $sUri . '_wall_added_new_comment');
753  $sTextWallObject = _t('_ch_' . $sUri . '_wall_object');
754 
755  $sTmplName = isset($aParams['templates']['main']) ? $aParams['templates']['main'] : 'modules/cheetah/wall/|timeline_comment.html';
756  $sTmplNameSnippet = isset($aParams['templates']['snippet']) ? $aParams['templates']['snippet'] : 'modules/cheetah/wall/|timeline_comment_files.html';
757  return array(
758  'title' => $sOwner . ' ' . $sTextAddedNew . ' ' . $sTextWallObject,
759  'description' => $aComment['cmt_text'],
760  'content' => $sCss . $this->oModule->_oTemplate->parseHtmlByName($sTmplName, array(
761  'mod_prefix' => 'ch_' . $sUri,
762  'cpt_user_name' => $sOwner,
763  'cpt_added_new' => $sTextAddedNew,
764  'cpt_object' => $sTextWallObject,
765  'cpt_item_url' => $aItem['url'],
766  'cnt_comment_text' => $aComment['cmt_text'],
767  'snippet' => $this->oModule->_oTemplate->parseHtmlByName($sTmplNameSnippet, array(
768  'mod_prefix' => 'ch_' . $sUri,
769  'cnt_item_page' => $aItem['url'],
770  'cnt_item_icon' => $aItem['file'],
771  'cnt_item_title' => $aItem['title'],
772  'cnt_item_title_attr' => ch_html_attribute($aItem['title']),
773  'cnt_item_description' => $aItem['description'],
774  'post_id' => $aEvent['id'],
775  ))
776  ))
777  );
778  }
779 }
ChBaseSearchResultSharedMedia\getAlbumCovers
getAlbumCovers($iAlbumId, $aParams=array())
Definition: ChBaseSearchResultSharedMedia.php:550
ChBaseSearchResultSharedMedia\getAlbumList
getAlbumList($iPage=1, $iPerPage=10, $aCond=array())
Definition: ChBaseSearchResultSharedMedia.php:485
process_db_input
process_db_input($sText, $iStripTags=0)
Definition: utils.inc.php:256
ChBaseSearchResultSharedMedia\$sProfileCatType
$sProfileCatType
Definition: ChBaseSearchResultSharedMedia.php:22
TRUE
URI MungeSecretKey $secret_key</pre >< p > If the output is TRUE
Definition: URI.MungeSecretKey.txt:17
ChBaseSearchResultSharedMedia\$aAddPartsConfig
$aAddPartsConfig
Definition: ChBaseSearchResultSharedMedia.php:25
ChBaseSearchResultSharedMedia\getRssUnitLink
getRssUnitLink(&$a)
Definition: ChBaseSearchResultSharedMedia.php:713
ChBaseSearchResult\getLinkAddByPrams
getLinkAddByPrams($aExclude=array())
Definition: ChBaseSearchResult.php:186
ChBaseSearchResultSharedMedia\serviceGetFilesInCat
serviceGetFilesInCat($iId, $sCategory='')
Definition: ChBaseSearchResultSharedMedia.php:649
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
ChBaseSearchResultSharedMedia\getProfileFiles
getProfileFiles($iProfId, $aLimits=array())
Definition: ChBaseSearchResultSharedMedia.php:442
ChWsbModule\getInstance
static getInstance($sClassName)
Definition: ChWsbModule.php:89
defineTimeInterval
defineTimeInterval($iTime, $bAutoDateConvert=true, $bShort=false)
Definition: utils.inc.php:831
ChBaseSearchResultSharedMedia\serviceGetWallPostComment
serviceGetWallPostComment($aEvent, $aParams=array())
Definition: ChBaseSearchResultSharedMedia.php:721
$aUnit
$aUnit
Definition: short_profile_info.php:31
ChBaseSearchResultSharedMedia\serviceGetProfileAlbumsBlock
serviceGetProfileAlbumsBlock($iProfileId, $sSpecUrl='')
Definition: ChBaseSearchResultSharedMedia.php:664
$sCode
$sCode
Definition: explanation.php:19
CHECK_ACTION_RESULT_ALLOWED
const CHECK_ACTION_RESULT_ALLOWED
Definition: membership_levels.inc.php:60
$sResult
$sResult
Definition: advanced_settings.php:26
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
CHECK_ACTION_RESULT
const CHECK_ACTION_RESULT
Definition: membership_levels.inc.php:54
ChBaseSearchResultSharedMedia\_getSharedThumb
_getSharedThumb($iId, $sFileLink, $sHash='')
Definition: ChBaseSearchResultSharedMedia.php:347
ChBaseSearchResultSharedMedia\$bDynamic
$bDynamic
Definition: ChBaseSearchResultSharedMedia.php:14
php
ChBaseSearchResultSharedMedia\addCustomParts
addCustomParts()
Definition: ChBaseSearchResultSharedMedia.php:458
$iId
$iId
Definition: license.php:15
ChBaseSearchResultSharedMedia\$aPermalinks
$aPermalinks
Definition: ChBaseSearchResultSharedMedia.php:20
ChBaseSearchResultSharedMedia\getSearchUnit
getSearchUnit($aData)
Definition: ChBaseSearchResultSharedMedia.php:175
ChBaseSearchResultSharedMedia\serviceGetFilesInAlbum
serviceGetFilesInAlbum($iAlbum)
Definition: ChBaseSearchResultSharedMedia.php:653
ChBaseSearchResultSharedMedia\getTopMenu
getTopMenu($aExclude=array())
Definition: ChBaseSearchResultSharedMedia.php:262
ChBaseSearchResult\getBottomMenu
getBottomMenu($sAllLinkType='browseAll', $iId=0, $sUri='', $aExclude=array(), $bPgnSim=TRUE)
Definition: ChBaseSearchResult.php:257
$iPerPage
else $iPerPage
Definition: browse.php:61
ChWsbSearchResult\_getPseud
_getPseud()
Definition: ChWsbSearch.php:720
ChBaseSearchResult\_transformData
_transformData($aUnit, $sTempl, $sCssHeader='')
Definition: ChBaseSearchResult.php:71
ChBaseSearchResultSharedMedia\addAlbumJsCss
addAlbumJsCss($bDynamic=false)
Definition: ChBaseSearchResultSharedMedia.php:475
ch_html_attribute
ch_html_attribute($mixedInput)
Definition: utils.inc.php:1324
$aInfo
$aInfo
Definition: constants.inc.php:21
ChBaseSearchResultSharedMedia\getLatestFile
getLatestFile()
Definition: ChBaseSearchResultSharedMedia.php:293
ChBaseSearchResultSharedMedia\getAlterOrder
getAlterOrder()
Definition: ChBaseSearchResultSharedMedia.php:247
$sType
$sType
Definition: actions.inc.php:11
ChBaseSearchResult\fillFilters
fillFilters($aParams)
Definition: ChBaseSearchResult.php:242
$_GET
$_GET['debug']
Definition: index.php:67
$iIndex
$iIndex
Definition: bottom_menu_compose.php:142
ChBaseSearchResultSharedMedia\serviceGetProfileAlbumFiles
serviceGetProfileAlbumFiles($iProfileId)
Definition: ChBaseSearchResultSharedMedia.php:673
ChBaseSearchResultSharedMedia\__construct
__construct($sModuleClass='')
Definition: ChBaseSearchResultSharedMedia.php:35
ChBaseSearchResultSharedMedia\serviceGetAlbumPrivacy
serviceGetAlbumPrivacy($iAlbumId, $iViewer=0)
Definition: ChBaseSearchResultSharedMedia.php:657
ChBaseSearchResultSharedMedia\displaySearchUnit
displaySearchUnit($aData)
Definition: ChBaseSearchResultSharedMedia.php:136
ChBaseSearchResultSharedMedia\$oTemplate
$oTemplate
Definition: ChBaseSearchResultSharedMedia.php:27
$sTitle
$sTitle
Definition: actions.inc.php:13
ChTemplCmtsView
Definition: ChTemplCmtsView.php:14
ChBaseSearchResultSharedMedia\getModuleFolder
getModuleFolder()
Definition: ChBaseSearchResultSharedMedia.php:470
ChBaseSearchResult\clearFilters
clearFilters($aPassParams=array(), $aPassJoins=array())
Definition: ChBaseSearchResult.php:223
getNickName
getNickName( $ID='')
Definition: profiles.inc.php:461
ChWsbAlbums
Definition: ChWsbAlbums.php:9
ChBaseSearchResultSharedMedia\$sCurrentAlbum
$sCurrentAlbum
Definition: ChBaseSearchResultSharedMedia.php:28
ChBaseSearchResultSharedMedia\getBrowseBlock
getBrowseBlock($aParams, $aCustom=array(), $sMainUrl='', $bClearJoins=true)
Definition: ChBaseSearchResultSharedMedia.php:286
uriFilter
uriFilter($s)
Definition: utils.inc.php:931
getUsername
getUsername( $ID='')
Definition: profiles.inc.php:443
ChWsbSearchResult\getSearchData
getSearchData()
Definition: ChWsbSearch.php:376
ChWsbPaginate
Definition: ChWsbPaginate.php:69
ChBaseSearchResultSharedMedia\$sModuleClass
$sModuleClass
Definition: ChBaseSearchResultSharedMedia.php:30
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
ChBaseSearchResultSharedMedia\getAlbumCoverUrl
getAlbumCoverUrl(&$aIdent)
Definition: ChBaseSearchResultSharedMedia.php:557
getProfileLink
getProfileLink( $iID, $sLinkAdd='')
Definition: profiles.inc.php:484
ChBaseSearchResultSharedMedia\_getAlbumUnitItem
_getAlbumUnitItem($iIndex, $aPicture, $aParams=array())
Definition: ChBaseSearchResultSharedMedia.php:624
ChBaseSearchResultSharedMedia\$oPrivacy
$oPrivacy
Definition: ChBaseSearchResultSharedMedia.php:33
ChBaseSearchResultSharedMedia\$aConstants
$aConstants
Definition: ChBaseSearchResultSharedMedia.php:18
ChBaseSearchResultSharedMedia\checkMemAction
checkMemAction($iFileOwner, $sAction='view')
Definition: ChBaseSearchResultSharedMedia.php:701
checkAction
checkAction($iMemberId, $actionID, $performAction=false, $iForcedProfID=0, $isCheckMemberStatus=true)
Definition: membership_levels.inc.php:313
CH_TAGS_STRIP
const CH_TAGS_STRIP
Definition: utils.inc.php:22
ChBaseSearchResultSharedMedia\displaySearchBox
displaySearchBox($sCode, $sPaginate='', $bAdminBox=false)
Definition: ChBaseSearchResultSharedMedia.php:362
ChBaseSearchResultSharedMedia\getAlbumsBlock
getAlbumsBlock($aSectionParams=array(), $aAlbumParams=array(), $aCustom=array())
Definition: ChBaseSearchResultSharedMedia.php:508
$iPage
$iPage
Definition: browse.php:50
ChBaseSearchResultSharedMedia\getLength
getLength($iTime)
Definition: ChBaseSearchResultSharedMedia.php:217
$iFileId
$iFileId
Definition: embed.php:12
db_value
db_value($query, $bindings=[], $error_checking=true, $index=0)
Definition: db.inc.php:98
ChWsbSearchResult\$oRate
$oRate
Definition: ChWsbSearch.php:209
ChBaseSearchResultSharedMedia
Definition: ChBaseSearchResultSharedMedia.php:13
ChBaseSearchResultSharedMedia\displayMenu
displayMenu()
Definition: ChBaseSearchResultSharedMedia.php:240
ChBaseSearchResultSharedMedia\getFilesInCatArray
getFilesInCatArray($iId, $sCategory='')
Definition: ChBaseSearchResultSharedMedia.php:383
ChBaseSearchResultSharedMedia\serviceGetLength
serviceGetLength($iTime)
Definition: ChBaseSearchResultSharedMedia.php:644
$sCaption
$sCaption
Definition: tellfriend.php:39
$iProfId
$iProfId
Definition: short_profile_info.php:22
ChBaseSearchResultSharedMedia\$oModule
$oModule
Definition: ChBaseSearchResultSharedMedia.php:31
ChBaseSearchResultSharedMedia\getImgUrl
getImgUrl($iId, $sImgType='browse')
Definition: ChBaseSearchResultSharedMedia.php:373
ChBaseSearchResult
Definition: ChBaseSearchResult.php:13
ChBaseSearchResultSharedMedia\$sTemplUnit
$sTemplUnit
Definition: ChBaseSearchResultSharedMedia.php:17
$sAction
$sAction
Definition: categories.php:274
DesignBoxContent
DesignBoxContent($title, $content, $db_num=0, $caption_item='', $bottom_item='')
Definition: design.inc.php:78
ChBaseSearchResultSharedMedia\getFilesInAlbumArray
getFilesInAlbumArray($iAlbumId, $aLimits=array())
Definition: ChBaseSearchResultSharedMedia.php:415
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
ChBaseSearchResultSharedMedia\getCurrentUrl
getCurrentUrl($sType, $iId=0, $sUri='', $aOwner='')
Definition: ChBaseSearchResultSharedMedia.php:130
ChBaseSearchResultSharedMedia\$bAdminMode
$bAdminMode
Definition: ChBaseSearchResultSharedMedia.php:15
ChBaseSearchResultSharedMedia\displayAlbumUnit
displayAlbumUnit($aData, $bCheckPrivacy=true)
Definition: ChBaseSearchResultSharedMedia.php:562
ChBaseSearchResultSharedMedia\getCurrentAlbum
getCurrentAlbum($sAlbumUri)
Definition: ChBaseSearchResultSharedMedia.php:212
false
if(!defined("FALSE_VAL")) define("FALSE_VAL" false
Definition: constants.inc.php:9
ChBaseSearchResultSharedMedia\getSearchUnitShort
getSearchUnitShort($aData)
Definition: ChBaseSearchResultSharedMedia.php:161
$iProfileId
if( $sMembersList) $iProfileId
Definition: communicator.php:29
ChTemplVotingView
Definition: ChTemplVotingView.php:14
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10
clear_xss
clear_xss($val)
Definition: utils.inc.php:700