BxGlsrModule.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup Glossary Glossary
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /**
  12. * Glossary module
  13. */
  14. class BxGlsrModule extends BxBaseModTextModule
  15. {
  16. function __construct(&$aModule)
  17. {
  18. parent::__construct($aModule);
  19. $CNF = &$this->_oConfig->CNF;
  20. $this->_aSearchableNamesExcept = array_merge($this->_aSearchableNamesExcept, array(
  21. $CNF['FIELD_STATUS_ADMIN']
  22. ));
  23. }
  24. public function serviceGetSafeServices()
  25. {
  26. $a = parent::serviceGetSafeServices();
  27. return array_merge($a, array (
  28. 'BrowseAlphabetical' => '',
  29. ));
  30. }
  31. /**
  32. * @page service Service Calls
  33. * @section bx_glossary Glossary
  34. * @subsection bx_glossary-browse Browse
  35. * @subsubsection bx_glossary-browse_alphabetical browse_alphabetical
  36. *
  37. * @code bx_srv('bx_glossary', 'browse_alphabetical', [...]); @endcode
  38. *
  39. * Display terms by alphabetical index
  40. *
  41. * @param $sUnitView unit view
  42. * @param $bDisplayEmptyMsg show "empty" message or not if nothing found
  43. * @param $bAjaxPaginate use AJAX paginate or not
  44. *
  45. * @see BxEventsModule::serviceBrowseAlphabetical
  46. */
  47. /**
  48. * @ref bx_glossary-browse_alphabetical "browse_alphabetical"
  49. */
  50. public function serviceBrowseAlphabetical ($sUnitView = false, $bEmptyMessage = true, $bAjaxPaginate = true)
  51. {
  52. $aTmp = $this->_serviceBrowse('alphabetical', $sUnitView ? array('unit_view' => $sUnitView) : false, BX_DB_PADDING_DEF, $bEmptyMessage, $bAjaxPaginate);
  53. $iPerPage = getParam('bx_glossary_per_page_browse');
  54. $aLetterData = $this->_oDb->getAlphabeticalIndex();
  55. $iStartPage = bx_get('start') ? bx_get('start') : 0;
  56. foreach ($aLetterData as $key => $aLetter){
  57. $iStart = floor($aLetter['row_number'] / $iPerPage) * $iPerPage;
  58. if ($iStartPage == $iStart){
  59. $aLetterData[$key]['url'] = "javascript:BxGlsrAlphabeticalList_goAnchor('" . $aLetter['letter'] . "')";
  60. }
  61. else{
  62. $aBaseLink = bx_get('dynamic') ? parse_url($_SERVER['HTTP_REFERER']) : parse_url($_SERVER['REQUEST_URI']);
  63. $aLetterData[$key]['url'] = $aBaseLink['path'] . ($iStart>0 ? '?start=' . $iStart . '&per_page=' . $iPerPage . '&letter=' . $aLetter['letter'] : '?letter=' . $aLetter['letter']);
  64. }
  65. }
  66. $sRv = $this->_oTemplate->getAlphabeticalList($aLetterData, $aTmp['content']);
  67. $aTmp['content'] = $sRv;
  68. return $aTmp;
  69. }
  70. }
  71. /** @} */