BxDolModule.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  4. * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  5. *
  6. * @defgroup DolphinCore Dolphin Core
  7. * @{
  8. */
  9. /**
  10. * Base class for Module classes in modules engine.
  11. *
  12. * The object of the class contains major objects of the whole module. They are:
  13. * a. An object of config class
  14. * @see BxDolModuleConfig
  15. *
  16. * b. An object of database class.
  17. * @see BxDolModuleQuery
  18. *
  19. * c. An object of template class.
  20. * @see BxDolTemplate
  21. *
  22. *
  23. * Example of usage:
  24. * @see any module included in the default Dolphin's package.
  25. *
  26. *
  27. * Static Methods:
  28. *
  29. * Get an instance of a module's class.
  30. * @see BxDolModule::getInstance($sClassName)
  31. *
  32. *
  33. * Memberships/ACL:
  34. * Doesn't depend on user's membership.
  35. *
  36. *
  37. * Alerts:
  38. * no alerts available
  39. *
  40. */
  41. class BxDolModule extends BxDol {
  42. var $_aModule;
  43. var $_oDb;
  44. var $_oTemplate;
  45. var $_oConfig;
  46. /**
  47. * constructor
  48. */
  49. function BxDolModule($aModule) {
  50. parent::BxDol();
  51. $this->_aModule = $aModule;
  52. $sClassPrefix = $aModule['class_prefix'];
  53. $sClassPath = BX_DIRECTORY_PATH_MODULES . $aModule['path'] . 'classes/';
  54. $sClassName = $sClassPrefix . 'Config';
  55. require_once($sClassPath . $sClassName . '.php');
  56. $this->_oConfig = new $sClassName($aModule);
  57. $sClassName = $sClassPrefix . 'Db';
  58. require_once($sClassPath . $sClassName . '.php');
  59. $this->_oDb = new $sClassName($this->_oConfig);
  60. $sClassName = $sClassPrefix . 'Template';
  61. require_once($sClassPath . $sClassName . '.php');
  62. $this->_oTemplate = new $sClassName($this->_oConfig, $this->_oDb);
  63. $this->_oTemplate->loadTemplates();
  64. }
  65. /**
  66. * Static method to get an instance of a module's class.
  67. *
  68. * @param $sName module name.
  69. */
  70. static function getInstance($sName) {
  71. if(empty($sName))
  72. return null;
  73. bx_import('BxDolModuleQuery');
  74. $aModule = BxDolModuleQuery::getInstance()->getModuleByName($sName);
  75. if(empty($aModule) || !is_array($aModule))
  76. return null;
  77. $sClassName = $aModule['class_prefix'] . 'Module';
  78. if(isset($GLOBALS['bxDolClasses'][$sClassName]))
  79. return $GLOBALS['bxDolClasses'][$sClassName];
  80. $sClassPath = BX_DIRECTORY_PATH_MODULES . $aModule['path'] . '/classes/' . $sClassName . '.php';
  81. if(!file_exists($sClassPath))
  82. return null;
  83. require_once($sClassPath);
  84. $GLOBALS['bxDolClasses'][$sClassName] = new $sClassName($aModule);
  85. return $GLOBALS['bxDolClasses'][$sClassName];
  86. }
  87. /**
  88. * Check whether user logged in or not.
  89. *
  90. * @return boolean result of operation.
  91. */
  92. function isLogged() {
  93. return isLogged();
  94. }
  95. /**
  96. * Get currently logged in user ID.
  97. *
  98. * @return integer user ID.
  99. */
  100. function getUserId() {
  101. return getLoggedId();
  102. }
  103. /**
  104. * Get currently logged in user password.
  105. *
  106. * @return string user password.
  107. */
  108. function getUserPassword () {
  109. return getLoggedPassword();
  110. }
  111. function getTitle($sUri) {
  112. return _t(BxDolModule::getTitleKey($sUri));
  113. }
  114. function getTitleKey($sUri) {
  115. return '_sys_module_' . strtolower(str_replace(' ', '_', $sUri));
  116. }
  117. /**
  118. * get module name
  119. */
  120. function getName() {
  121. return $this->_aModule['name'];
  122. }
  123. }
  124. /** @} */