_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', ]; } }