Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Core/src/View/Helper/ThemeHelper.php
<?php

namespace Croogo\Core\View\Helper;

use
Cake\Log\Log;
use
Cake\Utility\Hash;
use
Cake\View\Helper;
use
Cake\View\View;
use
Croogo\Extensions\CroogoTheme;

/**
 * Theme Helper
 *
 * @category Helper
 * @package  Croogo.Croogo.View.Helper
 * @author   Rachman Chavik <rchavik@xintesa.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class ThemeHelper extends Helper
{

    protected
$_themeSettings = [];

    protected
$_iconMap = [];

   
/**
     * Other helpers used by this helper
     *
     * @var array
     * @access public
     */
   
public $helpers = [
    ];

   
/**
     * ThemeHelper constructor.
     * @param View $View
     * @param array $settings
     */
   
public function __construct(View $View, $settings = [])
    {
       
$themeConfig = CroogoTheme::config($View->getTheme());
       
$this->_themeSettings = $themeConfig['settings'];

       
$this->_iconMap = $this->_themeSettings['icons'];
       
$prefix = $View->getRequest()->getParam('prefix');
        if (isset(
$this->_themeSettings['prefixes'][$prefix]['helpers']['Html']['icons'])) {
           
$this->_iconMap = Hash::merge(
               
$this->_iconMap,
               
$this->_themeSettings['prefixes'][$prefix]['helpers']['Html']['icons']
            );
        }

       
parent::__construct($View, $settings);
    }

   
/**
     * Helper method to retrieve css settings as configured in theme.json
     *
     * @param string $class Name of class/configuration to retrieve
     * @return string
     */
   
public function getCssClass($class = null)
    {
        if (
$class) {
           
$class = '.' . $class;
        }

        return
$this->settings('css' . $class);
    }

   
/**
     * Helper method to retrieve theme settings as configured in theme.json
     *
     * @param string $key Name of class/configuration to retrieve
     * @return string
     */
   
public function settings($key = null)
    {
       
$theme = $this->_View->getTheme() ?: 'default';
        if (empty(
$this->_themeSettings)) {
           
Log::debug(sprintf('Invalid settings for theme "%s"', $theme));

            return [];
        }
        if (
$key === null) {
            return
$this->_themeSettings;
        }

        return
Hash::get($this->_themeSettings, $key);
    }

   
/**
     * Returns a mapped icon identifier based on current active theme
     *
     * @param string $icon Icon name (without prefix)
     * @return string a mapped icon identifier
     */
   
public function getIcon($icon)
    {
       
$mapped = $icon;
        if (isset(
$this->_iconMap[$icon])) {
           
$mapped = $this->_iconMap[$icon];
        }

        return
$mapped;
    }
}