File "class-libraries.php"
Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/vibes/includes/libraries/class-libraries.php
File
size: 7.92 B (7.92 KB bytes)
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
<?php
/**
* Libraries handling
*
* Handles all libraries (vendor) operations and versioning.
*
* @package Libraries
* @author Pierre Lannoy <https://pierre.lannoy.fr/>.
* @since 1.0.0
*/
namespace Vibes\Library;
use Vibes\System\L10n;
/**
* Define the libraries functionality.
*
* Handles all libraries (vendor) operations and versioning.
*
* @package System
* @author Pierre Lannoy <https://pierre.lannoy.fr/>.
* @since 1.0.0
*/
class Libraries {
/**
* The array of PSR-4 libraries used by the plugin.
*
* @since 1.0.0
* @access private
* @var array $libraries The PSR-4 libraries used by the plugin.
*/
private static $psr4_libraries;
/**
* The array of mono libraries used by the plugin.
*
* @since 1.0.0
* @access private
* @var array $libraries The mono libraries used by the plugin.
*/
private static $mono_libraries;
/**
* Initializes the class and set its properties.
*
* @since 1.0.0
*/
public function __construct() {
self::init();
}
/**
* Defines all needed libraries.
*
* @since 1.0.0
*/
public static function init() {
self::$psr4_libraries = [];
self::$psr4_libraries['lock'] = [
'name' => 'Lock',
'prefix' => 'malkusch\lock',
'base' => VIBES_VENDOR_DIR . 'lock/',
'version' => '2.1',
// phpcs:ignore
'author' => 'Willem Stuursma-Ruwen',
'url' => 'https://github.com/php-lock/lock',
'license' => 'wtpfl',
'langs' => 'en',
];
self::$psr4_libraries['feather'] = [
'name' => 'Feather',
'prefix' => 'Feather',
'base' => VIBES_VENDOR_DIR . 'feather/',
'version' => '4.24.1',
// phpcs:ignore
'author' => 'Cole Bemis',
'url' => 'https://feathericons.com',
'license' => 'mit',
'langs' => 'en',
];
self::$psr4_libraries['markdown'] = [
'name' => 'Markdown Parser',
'prefix' => 'cebe\markdownparser',
'base' => VIBES_VENDOR_DIR . 'markdown/',
'version' => '1.2.1',
// phpcs:ignore
'author' => 'Carsten Brandt',
'url' => 'https://github.com/cebe/markdown',
'license' => 'mit',
'langs' => 'en',
];
if ( function_exists( 'decalog_get_psr_log_version' ) ) {
$psrlog_version = decalog_get_psr_log_version();
} else {
$psrlog_version = 1;
}
self::$psr4_libraries['psr-03'] = [
'name' => 'PSR-3',
'prefix' => 'Psr\\Log',
'base' => VIBES_VENDOR_DIR . 'psr/log-v' . $psrlog_version . '/',
'version' => $psrlog_version . '.0.0',
'author' => 'PHP Framework Interop Group',
'url' => 'https://www.php-fig.org/',
'license' => 'mit',
'langs' => 'en',
];
self::$psr4_libraries['psr-07'] = [
'name' => 'PSR-7',
'prefix' => 'Psr\\Http\\Message',
'base' => VIBES_VENDOR_DIR . 'psr/http-message/',
'version' => '2.0',
'author' => 'PHP Framework Interop Group',
'url' => 'https://www.php-fig.org/',
'license' => 'mit',
'langs' => 'en',
];
self::$psr4_libraries['psr-18'] = [
'name' => 'PSR-18',
'prefix' => 'Psr\\Http\\Client',
'base' => VIBES_VENDOR_DIR . 'psr/http-client/',
'version' => '1.0.3',
'author' => 'PHP Framework Interop Group',
'url' => 'https://www.php-fig.org/',
'license' => 'mit',
'langs' => 'en',
];
self::$psr4_libraries['decalog-sdk'] = [
'name' => 'DecaLog SDK',
'prefix' => 'DecaLog',
'base' => VIBES_VENDOR_DIR . 'decalog-sdk/',
'version' => '4.2.0',
'author' => 'Pierre Lannoy',
'url' => 'https://github.com/Pierre-Lannoy/wp-decalog-sdk',
'license' => 'mit',
'langs' => 'en',
];
self::$mono_libraries = [];
}
/**
* Get PSR-4 libraries.
*
* @return array The list of defined PSR-4 libraries.
* @since 1.0.0
*/
public static function get_psr4() {
return self::$psr4_libraries;
}
/**
* Get mono libraries.
*
* @return array The list of defined mono libraries.
* @since 1.0.0
*/
public static function get_mono() {
return self::$mono_libraries;
}
/**
* Get the full license name.
*
* @param string $license The license id.
* @return string The full license name.
* @since 1.0.0
*/
private function license_name( $license ) {
switch ( $license ) {
case 'mit':
$result = esc_html__( 'MIT license', 'vibes' );
break;
case 'apl2':
$result = esc_html__( 'Apache license, version 2.0', 'vibes' );
break;
case 'gpl2':
$result = esc_html__( 'GPL-2.0 license', 'vibes' );
break;
case 'gpl3':
$result = esc_html__( 'GPL-3.0 license', 'vibes' );
break;
default:
$result = esc_html__( 'unknown license', 'vibes' );
break;
}
return $result;
}
/**
* Get the libraries list.
*
* @param array $attributes 'style' => 'html'.
* @return string The output of the shortcode, ready to print.
* @since 1.0.0
*/
public function sc_get_list( $attributes ) {
$_attributes = shortcode_atts(
[
'style' => 'html',
],
$attributes
);
$style = $_attributes['style'];
$result = '';
$list = [];
foreach ( array_merge( self::get_psr4(), self::get_mono() ) as $library ) {
$item = [];
$item['name'] = $library['name'];
$item['version'] = $library['version'];
$item['author'] = $library['author'];
$item['url'] = $library['url'];
$item['license'] = $this->license_name( $library['license'] );
$item['langs'] = L10n::get_language_markup( explode( ',', $library['langs'] ) );
$list[] = $item;
}
$item = [];
$item['name'] = 'Plugin Boilerplate';
$item['version'] = '1.0.0';
$item['author'] = 'Pierre Lannoy';
$item['url'] = 'https://github.com/Pierre-Lannoy/wp-' . 'plugin-' . 'boilerplate';
$item['license'] = $this->license_name( 'gpl3' );
$item['langs'] = L10n::get_language_markup( [ 'en' ] );
$list[] = $item;
$item = [];
$item['name'] = 'Date Range Picker';
$item['version'] = '3.0.5';
$item['author'] = 'Dan Grossman';
$item['url'] = 'https://github.com/dangrossman/daterangepicker';
$item['license'] = $this->license_name( 'mit' );
$item['langs'] = L10n::get_language_markup( [ 'en' ] );
$list[] = $item;
$item = [];
$item['name'] = 'Moment';
$item['version'] = '2.29.4';
$item['author'] = 'Tim Wood';
$item['url'] = 'https://github.com/moment/moment';
$item['license'] = $this->license_name( 'mit' );
$item['langs'] = L10n::get_language_markup( [ 'en' ] );
$list[] = $item;
$item['name'] = 'SVG-Loaders';
$item['version'] = '1.0.2';
$item['author'] = 'Sam Herbert';
$item['url'] = 'https://github.com/SamHerbert/SVG-Loaders';
$item['license'] = $this->license_name( 'mit' );
$item['langs'] = L10n::get_language_markup( [ 'en' ] );
$list[] = $item;
$item['name'] = 'Chartist-JS';
$item['version'] = '0.11.4';
$item['author'] = 'Gion Kunz';
$item['url'] = 'https://github.com/gionkunz/chartist-js';
$item['license'] = $this->license_name( 'mit' );
$item['langs'] = L10n::get_language_markup( [ 'en' ] );
$list[] = $item;
$item['name'] = 'web-vitals';
$item['version'] = '2.1.2';
$item['author'] = 'Goggle';
$item['url'] = 'https://github.com/GoogleChrome/web-vitals';
$item['license'] = $this->license_name( 'apl2' );
$item['langs'] = L10n::get_language_markup( [ 'en' ] );
$list[] = $item;
usort( $list, function ( $a, $b ) { return strcmp( strtolower( $a['name'] ), strtolower( $b['name'] ) );} );
if ( 'html' === $style ) {
$items = [];
foreach ( $list as $library ) {
/* translators: as in the sentence "Product W version X by author Y (license Z)" */
$items[] = sprintf( __( '<a href="%1$s">%2$s %3$s</a>%4$s by %5$s & contributors (%6$s)', 'vibes' ), $library['url'], $library['name'], 'v' . $library['version'], $library['langs'], $library['author'], $library['license'] );
}
$result = implode( ', ', $items );
}
return $result;
}
}
Libraries::init();