Select Git revision
DefaultHeaderParser.php
-
Bartek Jaskulski authored
Signed-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
Bartek Jaskulski authoredSigned-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
DefaultHeaderParser.php 5.11 KiB
<?php
declare( strict_types=1 );
namespace WPDesk\Init;
class DefaultHeaderParser implements HeaderParser {
private const KB_IN_BYTES = 1024;
private const HEADERS = [
'Name' => 'Plugin Name',
'PluginURI' => 'Plugin URI',
'Version' => 'Version',
'Author' => 'Author',
'AuthorURI' => 'Author URI',
'TextDomain' => 'Text Domain',
'DomainPath' => 'Domain Path',
'Network' => 'Network',
'RequiresWP' => 'Requires at least',
'RequiresWC' => 'WC requires at least',
'RequiresPHP' => 'Requires PHP',
'TestedWP' => 'Tested up to',
'TestedWC' => 'WC tested up to',
'UpdateURI' => 'Update URI',
];
/**
* Parses the plugin contents to retrieve plugin's metadata.
* All plugin headers must be on their own line. Plugin description must not have
* any newlines, otherwise only parts of the description will be displayed.
* The below is formatted for printing.
* /*
* Plugin Name: Name of the plugin.
* Plugin URI: The home page of the plugin.
* Author: Plugin author's name.
* Author URI: Link to the author's website.
* Version: Plugin version.
* Text Domain: Optional. Unique identifier, should be same as the one used in
* load_plugin_textdomain().
* Domain Path: Optional. Only useful if the translations are located in a
* folder above the plugin's base path. For example, if .mo files are
* located in the locale folder then Domain Path will be "/locale/" and
* must have the first slash. Defaults to the base folder the plugin is
* located in.
* Network: Optional. Specify "Network: true" to require that a plugin is activated
* across all sites in an installation. This will prevent a plugin from being
* activated on a single site when Multisite is enabled.
* Requires at least: Optional. Specify the minimum required WordPress version.
* Requires PHP: Optional. Specify the minimum required PHP version.
* * / # Remove the space to close comment.
* The first 8 KB of the file will be pulled in and if the plugin data is not
* within that first 8 KB, then the plugin author should correct their plugin
* and move the plugin data headers to the top.
* The plugin file is assumed to have permissions to allow for scripts to read
* the file. This is not checked however and the file is only opened for
* reading.
*
* @param string $plugin_file Absolute path to the main plugin file.
*
* @return array{
* Name: string,
* PluginURI?: string,
* Version?: string,
* Author?: string,
* AuthorURI?: string,
* TextDomain?: string,
* DomainPath?: string,
* Network?: bool,
* RequiresWP?: string,
* RequiresWC?: string,
* RequiresPHP?: string,