BxDolRss.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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 UnaCore UNA Core
  7. * @{
  8. */
  9. /**
  10. * This class unifies the usage of RSS feeds in the script.
  11. *
  12. *
  13. * Usage.
  14. *
  15. * Step 1:
  16. * Add record to sys_objects_rss table, like you are doing this for Comments or Voting objects:
  17. * - object: your rss object name, usually it is in the following format - vendor prefix, underscore, module prefix;
  18. * - class_name: user defined class name which is derived from BxTemplRss.
  19. * - class_file: the location of the user defined class, leave it empty if class is located in system folders.
  20. *
  21. * Step 2:
  22. * Write a code for getUrl method in your class (MyModuleRss) which is derived from BxTemplRss.
  23. * @code
  24. * public function getUrl($mixedId) {
  25. * if(!isset($this->aFeeds[$mixedId]))
  26. * return false;
  27. *
  28. * return $this->aFeeds[$mixedId];
  29. * }
  30. * @endcode
  31. *
  32. * Step 2:
  33. * Get an RSS placeholder to display somewhere on a page
  34. * @code
  35. * BxDolRss::getObjectInstance('my_module_rss_object')->getHolder($mixedRssId, $iRssNum);
  36. * @endcode
  37. *
  38. */
  39. class BxDolRss extends BxDolFactory implements iBxDolFactoryObject
  40. {
  41. protected $_oDb;
  42. protected $_sObject;
  43. protected $_aObject;
  44. public static $bInitialized = false;
  45. /**
  46. * Constructor
  47. */
  48. protected function __construct($aObject)
  49. {
  50. parent::__construct();
  51. $this->_aObject = $aObject;
  52. $this->_sObject = $aObject['object'];
  53. $this->_oDb = new BxDolRssQuery($this->_aObject);
  54. }
  55. /**
  56. * Get rss object instance by object name
  57. * @param $sObject object name
  58. * @return object instance or false on error
  59. */
  60. public static function getObjectInstance($sObject)
  61. {
  62. if(isset($GLOBALS['bxDolClasses']['BxDolRss!' . $sObject]))
  63. return $GLOBALS['bxDolClasses']['BxDolRss!' . $sObject];
  64. $aObject = BxDolRssQuery::getRssObject($sObject);
  65. if(!$aObject || !is_array($aObject))
  66. return false;
  67. $sClass = 'BxTemplRss';
  68. if(!empty($aObject['class_name'])) {
  69. $sClass = $aObject['class_name'];
  70. if(!empty($aObject['class_file']))
  71. require_once(BX_DIRECTORY_PATH_ROOT . $aObject['class_file']);
  72. }
  73. $o = new $sClass($aObject);
  74. return ($GLOBALS['bxDolClasses']['BxDolRss!' . $sObject] = $o);
  75. }
  76. public function getUrl($mixedId) {}
  77. }
  78. /** @} */