AbstractPost.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * Copyright © 2016 Ihor Vansach (ihor@magefan.com). All rights reserved.
  4. * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
  5. *
  6. * Glory to Ukraine! Glory to the heroes!
  7. */
  8. namespace Magefan\Blog\Block\Post;
  9. use Magento\Store\Model\ScopeInterface;
  10. /**
  11. * Abstract post мшуц block
  12. */
  13. abstract class AbstractPost extends \Magento\Framework\View\Element\Template
  14. {
  15. /**
  16. * Deprecated property. Do not use it.
  17. * @var \Magento\Cms\Model\Template\FilterProvider
  18. */
  19. protected $_filterProvider;
  20. /**
  21. * @var \Magefan\Blog\Model\Post
  22. */
  23. protected $_post;
  24. /**
  25. * Page factory
  26. *
  27. * @var \Magefan\Blog\Model\PostFactory
  28. */
  29. protected $_postFactory;
  30. /**
  31. * @var Magento\Framework\Registry
  32. */
  33. protected $_coreRegistry;
  34. /**
  35. * @var string
  36. */
  37. protected $_defaultPostInfoBlock = 'Magefan\Blog\Block\Post\Info';
  38. /**
  39. * @var \Magefan\Blog\Model\Url
  40. */
  41. protected $_url;
  42. /**
  43. * Construct
  44. *
  45. * @param \Magento\Framework\View\Element\Context $context
  46. * @param \Magento\Cms\Model\Page $post
  47. * @param \Magento\Framework\Registry $coreRegistry,
  48. * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider
  49. * @param \Magento\Cms\Model\PageFactory $postFactory
  50. * @param \Magefan\Blog\Model\Url $url
  51. * @param array $data
  52. */
  53. public function __construct(
  54. \Magento\Framework\View\Element\Template\Context $context,
  55. \Magefan\Blog\Model\Post $post,
  56. \Magento\Framework\Registry $coreRegistry,
  57. \Magento\Cms\Model\Template\FilterProvider $filterProvider,
  58. \Magefan\Blog\Model\PostFactory $postFactory,
  59. \Magefan\Blog\Model\Url $url,
  60. array $data = []
  61. ) {
  62. parent::__construct($context, $data);
  63. $this->_post = $post;
  64. $this->_coreRegistry = $coreRegistry;
  65. $this->_filterProvider = $filterProvider;
  66. $this->_postFactory = $postFactory;
  67. $this->_url = $url;
  68. }
  69. /**
  70. * Retrieve post instance
  71. *
  72. * @return \Magefan\Blog\Model\Post
  73. */
  74. public function getPost()
  75. {
  76. if (!$this->hasData('post')) {
  77. $this->setData('post',
  78. $this->_coreRegistry->registry('current_blog_post')
  79. );
  80. }
  81. return $this->getData('post');
  82. }
  83. /**
  84. * Retrieve post short content
  85. *
  86. * @return string
  87. */
  88. public function getShorContent()
  89. {
  90. return $this->getPost()->getShortFilteredContent();
  91. }
  92. /**
  93. * Retrieve post content
  94. *
  95. * @return string
  96. */
  97. public function getContent()
  98. {
  99. return $this->getPost()->getFilteredContent();
  100. }
  101. /**
  102. * Retrieve post info html
  103. *
  104. * @return string
  105. */
  106. public function getInfoHtml()
  107. {
  108. return $this->getInfoBlock()->toHtml();
  109. }
  110. /**
  111. * Retrieve post info block
  112. *
  113. * @return \Magefan\Blog\Block\Post\Info
  114. */
  115. public function getInfoBlock()
  116. {
  117. $k = 'info_block';
  118. if (!$this->hasData($k)) {
  119. $blockName = $this->getPostInfoBlockName();
  120. if ($blockName) {
  121. $block = $this->getLayout()->getBlock($blockName);
  122. }
  123. if (empty($block)) {
  124. $block = $this->getLayout()->createBlock($this->_defaultPostInfoBlock, uniqid(microtime()));
  125. }
  126. $this->setData($k, $block);
  127. }
  128. return $this->getData($k)->setPost($this->getPost());
  129. }
  130. }