Making WordPress.org


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/handbook/inc/init.php

    r10792 r10041  
    88class WPorg_Handbook_Init {
    99
    10     /**
    11      * Asociative array of WPorg_Handbook objects.
    12      *
    13      * @var array
    14      */
    15     protected static $handbooks = [];
    16 
    17     /**
    18      * Returns the handbook objects.
    19      *
    20      * @return WPorg_Handbook[]
    21      */
    22     public static function get_handbook_objects() {
    23         return self::$handbooks;
     10    public static function get_post_types() {
     11        return (array) apply_filters( 'handbook_post_types', array( 'handbook' ) );
    2412    }
    2513
    26     /**
    27      * Returns a handbook of the given post type.
    28      *
    29      * @param string $post_type The handbook post type.
    30      * @return WPorg_Handbook|false The handbook object, or false if no such
    31      *                              handbook.
    32      */
    33     public static function get_handbook( $post_type ) {
    34         $handbooks = self::get_handbook_objects();
    35         return $handbooks[ $post_type ] ?? false;
     14    static function init() {
     15
     16        $post_types = self::get_post_types();
     17
     18        new WPorg_Handbook_TOC( $post_types );
     19
     20        foreach ( $post_types as $type ) {
     21            new WPorg_Handbook( $type );
     22        }
     23
     24        WPorg_Handbook_Glossary::init();
     25
     26        add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_styles' ) );
     27        add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) );
    3628    }
    3729
    38     /**
    39      * Returns the post types of all handbooks.
    40      *
    41      * @return array
    42      */
    43     public static function get_post_types() {
    44         return array_keys( self::$handbooks );
     30    static public function enqueue_styles() {
     31        wp_enqueue_style( 'wporg-handbook-css', plugins_url( 'stylesheets/callout-boxes.css', WPORG_HANDBOOK_PLUGIN_FILE ), array(), '20200121' );
    4532    }
    4633
    47     /**
    48      * Returns the handbooks configurations.
    49      *
    50      * @param string $handbook Optional. A specific handbook to return config for.
    51      *                         If none specified, then all are returned. Default ''.
    52      * @return array|false If $handbook defined, then the config for that handbook
    53      *                     if handbook exists, else false. If no $handbook specified,
    54      *                     then an associative array of config for all handbooks,
    55      *                     keyed by post type.
    56      */
    57     public static function get_handbooks_config( $handbook = '' ) {
    58         $return = false;
    59         $handbooks = self::get_handbook_objects();
    60 
    61         // If no handbook specified, return configs for all handbooks.
    62         if ( ! $handbook ) {
    63             $return = [];
    64             foreach ( $handbooks as $type => $handbook_obj ) {
    65                 $return[ $type ] = $handbook_obj->get_config();
    66             }
    67         }
    68 
    69         return ( $handbook && ! empty( $handbooks[ $handbook ] ) && is_a( $handbooks[ $handbook ], 'WPorg_Handbook' ) )
    70             ? $handbooks[ $handbook ]->get_config()
    71             : $return;
    72     }
    73 
    74     /**
    75      * Resets memoized and cached variables.
    76      *
    77      * @param bool $delete_handbook_objects Optional. Delete associated handbook
    78      *                                      objects? Default false.
    79      */
    80     public static function reset( $delete_handbook_objects = false ) {
    81         if ( $delete_handbook_objects ) {
    82             foreach ( self::get_handbook_objects() as $obj ) {
    83                 unset( $obj );
    84             }
    85         }
    86 
    87         self::$handbooks  = [];
    88     }
    89 
    90     /**
    91      * Initializes handbooks.
    92      */
    93     public static function init() {
    94         $config = [];
    95         $handbooks_config = [];
    96 
    97         /**
    98          * Fires before handbooks have been initialized.
    99          */
    100         do_action( 'before_handbooks_init' );
    101 
    102         /**
    103          * Filters the handbook post types for creating handbooks.
    104          *
    105          * @deprecated Use {@see 'handbooks_config'} instead.
    106          *
    107          * @param array $handbooks Array of handbook post types. Default empty
    108          *                         array, which later will be interpreted to
    109          *                         be 'handbook'.
    110          */
    111         $post_types = (array) apply_filters( 'handbook_post_types', [] );
    112 
    113         foreach ( $post_types as $post_type ) {
    114             $config[ $post_type ] = [];
    115         }
    116 
    117         /**
    118          * Defines and configures all handbooks.
    119          *
    120          * @see WPorg_Handbook::get_default_handbook_config()
    121          *
    122          * @param array $config Associative array of handbooks and their
    123          *                      configuration options. Keys should be the handbook
    124          *                      post type (which will get appended '-handbook' if
    125          *                      the post type isn't 'handbook' and doesn't already
    126          *                      contain '-handbook'. See
    127          *                      {@see WPorg_Handbook::get_default_handbook_config()}
    128          *                      for list of per-handbook configuration options.
    129          */
    130         $config = (array) apply_filters( 'handbooks_config', $config );
    131 
    132         // If no handbooks were configured, default to a basic handbook.
    133         if ( ! $config ) {
    134             $config = [ 'handbook' => [] ];
    135         }
    136 
    137         // Get default settings for a handbook.
    138         $defaults = WPorg_Handbook::get_default_handbook_config();
    139 
    140         // Determine each handbook's config.
    141         foreach ( $config as $key => $value ) {
    142             $key = sanitize_title( $key );
    143             $post_type = ( 'handbook' === $key || false !== strpos( $key, '-handbook' ) ) ? $key : $key . '-handbook';
    144 
    145             $handbooks_config[ $post_type ] = wp_parse_args( $value, $defaults );
    146 
    147             // Set slug if not explicitly set.
    148             if ( empty( $handbooks_config[ $post_type ]['slug'] ) ) {
    149                 $handbooks_config[ $post_type ]['slug'] = $key;
    150             }
    151         }
    152 
    153         $post_types = array_keys( $handbooks_config );
    154 
    155         // Enable table of contents.
    156         new WPorg_Handbook_TOC( $post_types );
    157 
    158         // Instantiate each of the handbooks.
    159         self::$handbooks = [];
    160         foreach ( $handbooks_config as $type => $conf ) {
    161             self::$handbooks[ $type ] = new WPorg_Handbook( $type, $conf );
    162         }
    163 
    164         // Enable glossary.
    165         WPorg_Handbook_Glossary::init();
    166 
    167         // Enqueue styles and scripts.
    168         add_action( 'wp_enqueue_scripts', [ __CLASS__, 'enqueue_styles' ] );
    169         add_action( 'wp_enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
    170 
    171         /**
    172          * Fires after handbooks have been initialized.
    173          */
    174         do_action( 'after_handbooks_init' );
    175     }
    176 
    177     /**
    178      * Enqueues styles.
    179      */
    180     public static function enqueue_styles() {
    181         wp_enqueue_style( 'wporg-handbook-css', plugins_url( 'stylesheets/callout-boxes.css', WPORG_HANDBOOK_PLUGIN_FILE ), [], '20200121' );
    182     }
    183 
    184     /**
    185      * Enqueues scripts.
    186      */
    187     public static function enqueue_scripts() {
    188         wp_enqueue_script( 'wporg-handbook', plugins_url( 'scripts/handbook.js', WPORG_HANDBOOK_PLUGIN_FILE ), [ 'jquery' ], '20150930' );
     34    static public function enqueue_scripts() {
     35        wp_enqueue_script( 'wporg-handbook', plugins_url( 'scripts/handbook.js', WPORG_HANDBOOK_PLUGIN_FILE ), array( 'jquery' ), '20150930' );
    18936    }
    19037
    19138}
    19239
    193 add_action( 'after_setup_theme', [ 'WPorg_Handbook_Init', 'init' ] );
     40add_action( 'after_setup_theme', array( 'WPorg_Handbook_Init', 'init' ) );
     41
Note: See TracChangeset for help on using the changeset viewer.