Skip to content
Snippets Groups Projects
Select Git revision
  • 3b388b3ab7b83808ac7b323064d69b26aea76e28
  • main default protected
  • v0.10
  • 0.10.6
  • 0.10.5
  • 0.10.4
  • 0.10.3
  • 0.10.2
  • 0.10.1
  • 0.10.0
  • 0.9.1
  • 0.9.0
12 results

DefaultHeaderParser.php

Blame
  • 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,