Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/Ecombricks/InventoryConfig/Plugin/Block/System/Config/Form/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/Ecombricks/InventoryConfig/Plugin/Block/System/Config/Form/Field.php
<?php
/**
 * Copyright © eComBricks. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Ecombricks\InventoryConfig\Plugin\Block\System\Config\Form;

/**
 * Configuration form field plugin
 */
class Field extends \Ecombricks\Framework\Plugin\AbstractPlugin
{
    
    /**
     * Product metadata
     * 
     * @var \Magento\Framework\App\ProductMetadata 
     */
    protected $productMetadata;
    
    /**
     * Secure renderer
     * 
     * @var \Magento\Framework\View\Helper\SecureHtmlRenderer
     */
    protected $secureRenderer;
    
    /**
     * Constructor
     * 
     * @param \Magento\Framework\App\ProductMetadata $productMetadata
     * @return void
     */
    public function __construct(
        \Magento\Framework\App\ProductMetadata $productMetadata
    )
    {
        $this->productMetadata = $productMetadata;
        if (version_compare($this->productMetadata->getVersion(), '2.4.0', '>=')) {
            $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
            $this->secureRenderer = $objectManager->get(\Magento\Framework\View\Helper\SecureHtmlRenderer::class);
        }
    }
    
    /**
     * Check if inheritance checkbox is required
     * 
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return bool
     */
    public function isInheritCheckboxRequired(\Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        return 
            $element->getSourceCode() || 
            $element->getCanUseWebsiteValue() || 
            $element->getCanUseDefaultValue() || 
            $element->getCanRestoreToDefault();
    }
    
    /**
     * Get inheritance checkbox label
     *
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return string
     */
    protected function getInheritCheckboxLabel(\Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        if ($element->getSourceCode()) {
            $checkboxLabel  = __('Use default value');
            return $checkboxLabel;
        }
        $checkboxLabel = __('Use system value');
        if ($element->getCanUseDefaultValue()) {
            $checkboxLabel = __('Use Default');
        }
        if ($element->getCanUseWebsiteValue()) {
            $checkboxLabel = __('Use Website');
        }
        return $checkboxLabel;
    }
    
    /**
     * Remove use default cell
     * 
     * @param string $html
     * @return string
     */
    public function removeUseDefaultCell($html)
    {
        $openTag = '<td class="use-default"';
        $closeTag = '</td>';
        $openTagPos = strpos($html, $openTag);
        if ($openTagPos === false) {
            return $html;
        }
        $closeTagPos = strpos($html, $closeTag, $openTagPos);
        if ($closeTagPos === false) {
            return $html;
        }
        return substr($html, 0, $openTagPos).substr($html, $closeTagPos + strlen($closeTag));
    }
    
    /**
     * Render inheritance checkbox
     * 
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return string
     */
    protected function renderInheritCheckbox(\Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        $htmlId = $element->getHtmlId();
        $namePrefix = preg_replace('#\[value\](\[\])?$#', '', $element->getName());
        $checkedHtml = $element->getInherit() == 1 ? 'checked="checked"' : '';
        $disabled = $element->getIsDisableInheritance() == true ? ' disabled="disabled" readonly="1"' : '';
        $html = '<td class="use-default">';
        $html .= '<input id="'.$htmlId.'_inherit" name="'.$namePrefix;
        $html .= '[inherit]" type="checkbox" value="1" class="checkbox config-inherit" '.$checkedHtml.$disabled;
        if (version_compare($this->productMetadata->getVersion(), '2.4.0', '>=')) {
            $html .= '/>';
            $html .= $this->secureRenderer->renderEventListenerAsTag(
                'onclick',
                "toggleValueElements(this, Element.previous(this.parentNode))",
                'input#'.$htmlId.'_inherit'
            );
        } else {
            $html .= ' onclick="toggleValueElements(this, Element.previous(this.parentNode))"/> ';
        }
        $html .= '<label for="'.$htmlId.'_inherit" class="inherit">'.$this->getInheritCheckboxLabel($element).'</label>';
        $html .= '</td>';
        return $html;
    }
    
    /**
     * Replace inherit checkbox
     * 
     * @param string $html
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return string
     */
    public function replaceInheritCheckbox($html, \Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        $html = $this->removeUseDefaultCell($html);
        $newCheckboxHtml = ($this->isInheritCheckboxRequired($element)) ? $this->renderInheritCheckbox($element) : '';
        $hintPos = strpos($html, '<td class="">');
        return substr($html, 0, $hintPos).$newCheckboxHtml.substr($html, $hintPos);
    }
    
    /**
     * Before render
     * 
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return $this
     */
    protected function beforeRender(\Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        if ($element->getInherit() == 1 && $this->isInheritCheckboxRequired($element)) {
            $element->setDisabled(true);
        }
        return $this;
    }
    
    /**
     * After render
     * 
     * @param string $html
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return string
     */
    protected function afterRender($html, \Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        if (
            $element->getInherit() == 1 && 
            $this->isInheritCheckboxRequired($element)
        ) {
            $element->setDisabled(true);
        }
        return $this->replaceInheritCheckbox($html, $element);
    }
    
    /**
     * Around render
     * 
     * @param \Magento\Config\Block\System\Config\Form\Field $subject
     * @param \Closure $proceed
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return string
     */
    public function aroundRender(
        \Magento\Config\Block\System\Config\Form\Field $subject,
        \Closure $proceed,
        \Magento\Framework\Data\Form\Element\AbstractElement $element
    )
    {
        $this->setSubject($subject);
        $this->beforeRender($element);
        $html = $proceed($element);
        return $this->afterRender($html, $element);
    }
    
}

Spamworldpro Mini