Files

209 lines
5.9 KiB
PHP
Executable File

<?php
/**
* Athlete2 Theme
*
* NOTICE OF LICENSE
*
* This source file is subject to the Olegnax.com license that is
* available through the world-wide-web at this URL:
* https://www.olegnax.com/license
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Olegnax
* @package Olegnax_Athlete2
* @copyright Copyright (c) 2023 Olegnax (http://www.olegnax.com/)
* @license https://www.olegnax.com/license
*/
namespace Olegnax\Athlete2\Helper;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\UrlInterface;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Store\Model\ScopeInterface;
class CssFiles extends AbstractHelper {
/**
* Store Manager
*
* @var \Magento\Store\Model\StoreManagerInterface
*/
private $_storeManager;
private $google_font_enable;
protected $store_code;
/**
* @var string
*/
protected $webFolder;
/**
* @var string
*/
protected $dymanicFolder;
/**
* @var string
*/
protected $generatedCssDir;
public function __construct( Context $context, StoreManagerInterface $storeManager ) {
$this->_storeManager = $storeManager;
$base = BP;
$this->webFolder = 'athlete2/web/';
$this->dymanicFolder = 'athlete2/dymanic';
$this->generatedCssDir = sprintf( '%s/pub/media/%s', $base, $this->dymanicFolder );
parent::__construct($context);
}
public function getDymanicDir() {
return $this->generatedCssDir;
}
public function getBaseMediaUrl( $path = '' ) {
return $this->_storeManager->getStore()->getBaseUrl( UrlInterface::URL_TYPE_MEDIA ) . $path;
}
public function getModuleMediaUrl( $path = '' ) {
return $this->getBaseMediaUrl( $this->dymanicFolder ) . $path;
}
public function getModuleWebUrl( $path = '' ) {
return $this->getBaseMediaUrl( $this->webFolder ) . $path;
}
public function getDynamicCss( $name, $code = null ) {
return $this->getDynamicFile( $name, $code );
}
public function getDynamicJs( $name, $code = null ) {
return $this->getDynamicFile( $name, $code, 'js' );
}
public function getDynamicFile( $name, $code = null, $format = 'css' ) {
if ( empty( $code ) ) {
$code = $this->_storeManager->getStore()->getCode();
}
return sprintf( '%s/%s_%s.%s', $this->getModuleMediaUrl(), $name, $code, $format );
}
public function getConfig( $path, $storeCode = null ) {
$value = $this->scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE, $storeCode);
if (is_null($value)) {
$value = '';
}
return $value;
}
public function getFont( $font_name ) {
$font = $this->getConfigFont( $font_name );
if ( empty( $font ) ) {
$default = $this->defaultFont();
if ( array_key_exists( $font_name, $default ) ) {
$font = $default[ $font_name ];
}
}
return $font;
}
public function fontOutput($font_name_google, $font_name_custom){
$font_name = 'Open Sans';
if('' != $font_name_custom) {
$font_name = preg_replace("/[^a-zA-Z0-9-_\s]/", "", $font_name_custom);
} elseif($font_name_google) {
$font_name = $font_name_google;
}
return '\'' . $font_name . '\', Helvetica, Arial, sans-serif';
}
public function getFontWeight($font_name)
{
$font_name = $font_name . '_weight';
$fontWeight = $this->getConfigFont($font_name);
if ( empty( $fontWeight ) ) {
// fallback. use default font weight option if there are no specific weight option for selected font
$fontWeight = $this->getConfigFont( 'general_font_weight' );
}
return $fontWeight;
}
public function getGoogleFontUrl()
{
if (!$this->isGoogleFontEnable()) {
return '';
}
$default = array_keys($this->defaultFont());
$fonts = [];
foreach ($default as $font_name) {
$font = $this->getFont($font_name);
if (!empty($font)) {
$gfw = explode(',', $this->getFontWeight($font_name));
$ar = array_key_exists($font, $fonts) ? $fonts[$font] : [];
$fonts[$font] = array_merge($ar, $gfw);
}
}
$fonts = array_map('array_unique', $fonts);
$fonts = array_map('array_filter', $fonts);
$fonts = array_filter($fonts);
foreach ($fonts as $font => $weight) {
$fonts[$font] = sprintf('%s:%s', $font, implode(',', $weight));
}
$fonts = implode('|', $fonts);
$fonts = urlencode($fonts);
return '//fonts.googleapis.com/css?family=' . $fonts . '&display='. ($this->getConfigFont( 'fonts_display_mode' ) ?: 'fallback');
}
protected function getConfigFont( $font_name ) {
$store_code = $this->getStoreCode();
$appearance_general = $this->getConfig( 'athlete2_design/appearance_general', $store_code );
if ( is_array($appearance_general) && isset( $appearance_general[ $font_name ] ) && !empty( $appearance_general[ $font_name ] ) ) {
return $appearance_general[ $font_name ];
}
return '';
}
protected function isGoogleFontEnable() {
if ( is_null( $this->google_font_enable ) ) {
$this->google_font_enable = $this->getConfig( 'athlete2_design/appearance_general/google_font_enable', $this->getStoreCode() );
}
return $this->google_font_enable;
}
public function setStoreCode( $store_code = null ) {
$this->store_code = $store_code;
}
public function getStoreCode() {
return $this->store_code;
}
protected function defaultFont() {
return [
'body_font' => 'Open Sans',
'menu_font' => 'Open Sans',
'general_font' => 'Open Sans',
'button_font' => 'Open Sans',
'title_font' => 'Poppins',
'title_font_fancy' => 'Open Sans',
'title_font_medium' => 'Poppins',
'footer_content_font' => 'Open Sans',
'copyright_content_font' => 'Open Sans',
'sidebar_title_font'=> 'Open Sans',
];
}
}