<?php /** * Copyright © 2016 Ihor Vansach (ihor@magefan.com). All rights reserved. * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php). * * Glory to Ukraine! Glory to the heroes! */ namespace Magefan\Blog\Block\Post; use Magento\Store\Model\ScopeInterface; /** * Abstract post мшуц block */ abstract class AbstractPost extends \Magento\Framework\View\Element\Template { /** * @var \Magento\Cms\Model\Template\FilterProvider */ protected $_filterProvider; /** * @var \Magefan\Blog\Model\Post */ protected $_post; /** * Page factory * * @var \Magefan\Blog\Model\PostFactory */ protected $_postFactory; /** * @var Magento\Framework\Registry */ protected $_coreRegistry; /** * @var string */ protected $_defaultPostInfoBlock = 'Magefan\Blog\Block\Post\Info'; /** * @var \Magefan\Blog\Model\Url */ protected $_url; /** * Construct * * @param \Magento\Framework\View\Element\Context $context * @param \Magento\Cms\Model\Page $post * @param \Magento\Framework\Registry $coreRegistry, * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider * @param \Magento\Cms\Model\PageFactory $postFactory * @param \Magefan\Blog\Model\Url $url * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magefan\Blog\Model\Post $post, \Magento\Framework\Registry $coreRegistry, \Magento\Cms\Model\Template\FilterProvider $filterProvider, \Magefan\Blog\Model\PostFactory $postFactory, \Magefan\Blog\Model\Url $url, array $data = [] ) { parent::__construct($context, $data); $this->_post = $post; $this->_coreRegistry = $coreRegistry; $this->_filterProvider = $filterProvider; $this->_postFactory = $postFactory; $this->_url = $url; } /** * Retrieve post instance * * @return \Magefan\Blog\Model\Post */ public function getPost() { if (!$this->hasData('post')) { $this->setData('post', $this->_coreRegistry->registry('current_blog_post') ); } return $this->getData('post'); } /** * Retrieve post short content * * @return string */ public function getShorContent() { $content = $this->getContent(); $pageBraker = '<!-- pagebreak -->'; if ($p = mb_strpos($content, $pageBraker)) { $content = mb_substr($content, 0, $p); } $dom = new \DOMDocument(); $dom->loadHTML($content); $content = $dom->saveHTML(); return $content; } /** * Retrieve post content * * @return string */ public function getContent() { $post = $this->getPost(); $key = 'filtered_content'; if (!$post->hasData($key)) { $cotent = $this->_filterProvider->getPageFilter()->filter( $post->getContent() ); $post->setData($key, $cotent); } return $post->getData($key); } /** * Retrieve post info html * * @return string */ public function getInfoHtml() { return $this->getInfoBlock()->toHtml(); } /** * Retrieve post info block * * @return \Magefan\Blog\Block\Post\Info */ public function getInfoBlock() { $k = 'info_block'; if (!$this->hasData($k)) { $blockName = $this->getPostInfoBlockName(); if ($blockName) { $block = $this->getLayout()->getBlock($blockName); } if (empty($block)) { $block = $this->getLayout()->createBlock($this->_defaultPostInfoBlock, uniqid(microtime())); } $this->setData($k, $block); } return $this->getData($k)->setPost($this->getPost()); } }