AbstractCode.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Google Optimizer Scripts Block
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\GoogleOptimizer\Block;
  9. abstract class AbstractCode extends \Magento\Framework\View\Element\Template
  10. {
  11. /**
  12. * @var Entity name in registry
  13. */
  14. protected $_registryName;
  15. /**
  16. * @var \Magento\Framework\Registry
  17. */
  18. protected $_registry;
  19. /**
  20. * @var \Magento\GoogleOptimizer\Helper\Data
  21. */
  22. protected $_helper;
  23. /**
  24. * @var \Magento\GoogleOptimizer\Helper\Code
  25. */
  26. protected $_codeHelper;
  27. /**
  28. * @param \Magento\Framework\View\Element\Template\Context $context
  29. * @param \Magento\GoogleOptimizer\Helper\Data $helper
  30. * @param \Magento\Framework\Registry $registry
  31. * @param \Magento\GoogleOptimizer\Helper\Code $codeHelper
  32. * @param array $data
  33. */
  34. public function __construct(
  35. \Magento\Framework\View\Element\Template\Context $context,
  36. \Magento\GoogleOptimizer\Helper\Data $helper,
  37. \Magento\Framework\Registry $registry,
  38. \Magento\GoogleOptimizer\Helper\Code $codeHelper,
  39. array $data = []
  40. ) {
  41. $this->_helper = $helper;
  42. $this->_registry = $registry;
  43. $this->_codeHelper = $codeHelper;
  44. parent::__construct($context, $data);
  45. }
  46. /**
  47. * Get google experiment code model
  48. *
  49. * @return \Magento\GoogleOptimizer\Model\Code
  50. * @throws \RuntimeException
  51. */
  52. protected function _getGoogleExperiment()
  53. {
  54. return $this->_codeHelper->getCodeObjectByEntity($this->_getEntity());
  55. }
  56. /**
  57. * Render block HTML
  58. *
  59. * @return string
  60. */
  61. protected function _toHtml()
  62. {
  63. return parent::_toHtml() . $this->_getScriptCode();
  64. }
  65. /**
  66. * Return script code
  67. *
  68. * @return string
  69. */
  70. protected function _getScriptCode()
  71. {
  72. $result = '';
  73. if ($this->_helper->isGoogleExperimentActive() && $this->_getGoogleExperiment()) {
  74. $result = $this->_getGoogleExperiment()->getData('experiment_script');
  75. }
  76. return $result;
  77. }
  78. /**
  79. * Get entity from registry
  80. *
  81. * @return mixed
  82. * @throws \RuntimeException
  83. */
  84. protected function _getEntity()
  85. {
  86. $entity = $this->_registry->registry($this->_registryName);
  87. if (!$entity) {
  88. throw new \RuntimeException('Entity is not found in registry.');
  89. }
  90. return $entity;
  91. }
  92. }