BxDolEmbed.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. * Embed provider.
  11. *
  12. * Create an embed from a link.
  13. *
  14. * @section editor_create Creating the Editor object:
  15. *
  16. *
  17. * Add record to 'sys_objects_embeds' table:
  18. *
  19. * - object: name of the embed object, in the format: vendor prefix, underscore, module prefix, underscore, internal identifier or nothing
  20. * - title: title of the embed provider, dmay be isplayed in the Studio.
  21. * - override_class_name: user defined class name which is derived from one of base editor classes.
  22. * - override_class_file: the location of the user defined class, leave it empty if class is located in system folders.
  23. *
  24. *
  25. * @section example Example of usage
  26. *
  27. * Generate HTML for a link which will be converted to an embed later:
  28. *
  29. * @code
  30. * $oEmbed = BxDolEmbed::getObjectInstance(); // get default embed object instance
  31. * if ($oEmbed) // check if editor is available for using
  32. * echo $oEmbed->getLinkHTML ('https://una.io', 'UNA.IO'); // output HTML which will be automatically converted into embed upon page load
  33. * else
  34. * echo '<a href="https://una.io">UNA.IO</a>';
  35. * @endcode
  36. *
  37. */
  38. class BxDolEmbed extends BxDolFactoryObject
  39. {
  40. protected $_bCssJsAdded = false;
  41. protected $_sTableName = '';
  42. /**
  43. * Get editor object instance by object name
  44. * @param $sObject object name
  45. * @return object instance or false on error
  46. */
  47. static public function getObjectInstance($sObject = false, $oTemplate = false)
  48. {
  49. if (!$sObject)
  50. $sObject = getParam('sys_embed_default');
  51. return parent::getObjectInstanceByClassNames($sObject, $oTemplate, 'BxDolEmbed', 'BxDolEmbedQuery');
  52. }
  53. /**
  54. * Print HTML which will be automatically converted into embed upon page load
  55. * @param $sLink - link
  56. * @param $sTitle - title or use link for the title if omitted
  57. * @param $sMaxWidth - try to restrict max width of embed (works in supported embed providers only)
  58. */
  59. public function getLinkHTML ($sLink, $sTitle = '', $sMaxWidth = '')
  60. {
  61. // override this function in particular editor class
  62. }
  63. /**
  64. * Add css/js files which are needed for embed display and functionality.
  65. */
  66. public function addJsCss ()
  67. {
  68. // override this function in particular editor class
  69. }
  70. public function getData ($sUrl, $sTheme)
  71. {
  72. $sData = BxDolEmbedQuery::getLocal($sUrl, $sTheme, $this->_sTableName);
  73. if (!$sData){
  74. $sData = $this->getDataFromApi($sUrl, $sTheme);
  75. if ($sData){
  76. BxDolEmbedQuery::setLocal($sUrl, $sTheme, $this->_sTableName, $sData);
  77. }
  78. }
  79. $aData = json_decode($sData, true);
  80. return $aData;
  81. }
  82. }
  83. /** @} */