71 lines
1.5 KiB
PHP
Executable File
71 lines
1.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Olegnax\Athlete2\Model\Config\Settings;
|
|
|
|
use Magento\Framework\Option\ArrayInterface;
|
|
|
|
class GoogleFonts implements ArrayInterface {
|
|
|
|
private $font_api = 'https://www.googleapis.com/webfonts/v1/webfonts?sort=alpha&key=AIzaSyAELicRrZCL8Refz-D2-FeyahisL1hUoYc';
|
|
|
|
private function _getApiFonts() {
|
|
$ch = curl_init();
|
|
curl_setopt_array( $ch, array(
|
|
CURLOPT_URL => $this->font_api,
|
|
CURLOPT_SSL_VERIFYHOST => 0,
|
|
CURLOPT_SSL_VERIFYPEER => 0,
|
|
CURLOPT_RETURNTRANSFER => 1,
|
|
) );
|
|
$result = curl_exec( $ch );
|
|
curl_close( $ch );
|
|
|
|
if ( empty( $result ) ) {
|
|
return [ ];
|
|
}
|
|
$fonts = json_decode( (string) $result, true );
|
|
if ( array_key_exists( 'items', $fonts ) ) {
|
|
return $fonts[ 'items' ];
|
|
}
|
|
|
|
return [ ];
|
|
}
|
|
|
|
public function _mapFonts( $font ) {
|
|
if ( array_key_exists( 'family', $font ) ) {
|
|
return [
|
|
'value' => $font[ 'family' ],
|
|
'label' => $font[ 'family' ],
|
|
'variants' => $font[ 'variants' ],
|
|
];
|
|
}
|
|
|
|
return [ ];
|
|
}
|
|
|
|
private function _prepareFonts() {
|
|
$fonts = $this->_getApiFonts();
|
|
if ( !empty( $fonts ) && is_array( $fonts ) ) {
|
|
$fonts = array_map( [$this, '_mapFonts' ], $fonts );
|
|
$fonts = array_filter( $fonts );
|
|
}
|
|
|
|
return $fonts;
|
|
}
|
|
|
|
public function toOptionArray() {
|
|
$fonts = $this->_prepareFonts();
|
|
|
|
return $fonts;
|
|
}
|
|
|
|
public function toArray() {
|
|
$fonts = $this->_prepareFonts();
|
|
$_fonts = [];
|
|
foreach ( $fonts as $font ) {
|
|
$_fonts[$font['value']] = $font['label'];
|
|
}
|
|
|
|
return $_fonts;
|
|
}
|
|
}
|