BxBaseModNotificationsModule.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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 BaseNotifications Base classes for Notifications like modules
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. define('BX_BASE_MOD_NTFS_HANDLER_TYPE_INSERT', 'insert');
  12. define('BX_BASE_MOD_NTFS_HANDLER_TYPE_UPDATE', 'update');
  13. define('BX_BASE_MOD_NTFS_HANDLER_TYPE_DELETE', 'delete');
  14. define('BX_BASE_MOD_NTFS_TYPE_OWNER', 'owner');
  15. define('BX_BASE_MOD_NTFS_TYPE_OBJECT_OWNER', 'object_owner');
  16. define('BX_BASE_MOD_NTFS_TYPE_CONNECTIONS', 'connections');
  17. define('BX_BASE_MOD_NTFS_TYPE_PUBLIC', 'public');
  18. /**
  19. * Base module class.
  20. */
  21. class BxBaseModNotificationsModule extends BxBaseModGeneralModule
  22. {
  23. public $_iOwnerId;
  24. function __construct(&$aModule)
  25. {
  26. parent::__construct($aModule);
  27. $this->_oConfig->init($this->_oDb);
  28. $this->_iOwnerId = 0;
  29. }
  30. public function serviceAddHandlers($sModuleUri)
  31. {
  32. $this->_updateModuleData('add_handlers', $sModuleUri);
  33. }
  34. public function serviceDeleteHandlers($sModuleUri)
  35. {
  36. $this->_updateModuleData('delete_handlers', $sModuleUri);
  37. }
  38. public function serviceDeleteModuleEvents($sModuleUri)
  39. {
  40. $this->_updateModuleData('delete_module_events', $sModuleUri);
  41. }
  42. function serviceGetActionsChecklist()
  43. {
  44. $sLangPrefix = $this->_oConfig->getPrefix('language');
  45. $aHandlers = $this->_oConfig->getHandlers();
  46. $aResults = array();
  47. foreach($aHandlers as $aHandler) {
  48. if($aHandler['type'] != BX_BASE_MOD_NTFS_HANDLER_TYPE_INSERT)
  49. continue;
  50. $_sUnit = '_' . $aHandler['alert_unit'];
  51. $sUnit = _t($_sUnit);
  52. if(strcmp($_sUnit, $sUnit) === 0)
  53. $sUnit = _t($sLangPrefix . '_alert_module_' . $aHandler['alert_unit']);
  54. $sAction = '';
  55. if(!empty($aHandler['alert_action'])) {
  56. $_sAction = '_' . $aHandler['alert_unit'] . '_alert_action_' . $aHandler['alert_action'];
  57. $sAction = _t($_sAction);
  58. if(strcmp($_sAction, $sAction) === 0)
  59. $sAction = _t($sLangPrefix . '_alert_action_' . $aHandler['alert_action']);
  60. $sAction = ' (' . $sAction . ')';
  61. }
  62. $aResults[$aHandler['id']] = $sUnit . $sAction;
  63. }
  64. asort($aResults);
  65. return $aResults;
  66. }
  67. public function isAllowedView($aEvent, $bPerform = false)
  68. {
  69. return true;
  70. }
  71. public function getOwnerId()
  72. {
  73. return $this->_iOwnerId;
  74. }
  75. protected function _updateModuleData($sAction, $sModuleUri)
  76. {
  77. $sMethod = $this->_oConfig->getHandlersMethod();
  78. $aModule = $this->_oDb->getModuleByUri($sModuleUri);
  79. if(!BxDolRequest::serviceExists($aModule, $sMethod))
  80. return;
  81. $aData = BxDolService::call($aModule['name'], $sMethod);
  82. if(empty($aData) || !is_array($aData))
  83. return;
  84. switch($sAction) {
  85. case 'add_handlers':
  86. $this->_oDb->insertData($aData);
  87. BxDolAlerts::cacheInvalidate();
  88. $this->_oDb->activateModuleEvents($aData, true);
  89. break;
  90. case 'delete_handlers':
  91. $this->_oDb->deleteData($aData);
  92. BxDolAlerts::cacheInvalidate();
  93. $this->_oDb->activateModuleEvents($aData, false);
  94. break;
  95. case 'delete_module_events':
  96. $this->_oDb->deleteModuleEvents($aData);
  97. break;
  98. }
  99. }
  100. }
  101. /** @} */