BxDolRss.php 2.5 KB

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