oont-contents/plugins/insert-headers-and-footers/includes/class-wpcode-auto-insert.php
2025-02-08 15:10:23 +01:00

161 lines
3.6 KiB
PHP

<?php
/**
* Central handler of auto-inserting snippets.
* Loads the different types and processes them.
*
* @package WPCode
*/
/**
* Class WPCode_Auto_Insert.
*/
class WPCode_Auto_Insert {
/**
* The auto-insert types.
*
* @var array
*/
public $types = array();
/**
* The auto-insert categories.
*
* @var array
*/
public $type_categories = array();
public $categories_with_labels;
/**
* Constructor.
*/
public function __construct() {
$this->hooks();
}
/**
* Add hooks.
*
* @return void
*/
private function hooks() {
add_action( 'plugins_loaded', array( $this, 'load_types' ), 1 );
}
/**
* Define the categories of auto-insert types.
*
* @return void
*/
public function define_category_label() {
$categories_labels = array(
'global' => __( 'Global', 'insert-headers-and-footers' ),
'page' => __( 'Page-Specific', 'insert-headers-and-footers' ),
'ecommerce' => __( 'eCommerce', 'insert-headers-and-footers' ),
);
// Add the labels to the $this->type_categories array.
foreach ( $categories_labels as $key => $category ) {
$this->type_categories[ $key ]['label'] = $category;
}
$this->categories_with_labels = true;
}
/**
* Load and initialize the different types of auto-insert types.
*
* @return void
*/
public function load_types() {
require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-type.php';
require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-everywhere.php';
require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-site-wide.php';
require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-single.php';
require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-archive.php';
require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-admin.php';
}
/**
* Register an auto-insert type.
*
* @param WPCode_Auto_Insert_Type $type The type to add to the available types.
*
* @return void
*/
public function register_type( $type ) {
$this->types[ $type->name ] = $type;
if ( isset( $type->category ) ) {
$this->type_categories[ $type->category ]['types'][ $type->name ] = $type;
}
}
/**
* Get the types of auto-insert options.
*
* @return WPCode_Auto_Insert_Type[]
*/
public function get_types() {
return $this->types;
}
/**
* Get the categories of auto-insert options.
*
* @return array
*/
public function get_type_categories() {
if ( ! isset( $this->categories_with_labels ) ) {
$this->define_category_label();
}
return $this->type_categories;
}
/**
* Get the categories info for the sidebar admin view.
*
* @return array
*/
public function get_type_categories_for_sidebar() {
$sidebar_categories = array();
$categories = $this->get_type_categories();
foreach ( $categories as $key => $category ) {
$sidebar_categories[] = array(
'slug' => $key,
'name' => $category['label'],
);
}
return $sidebar_categories;
}
/**
* Get a location label from the class not the term.
*
* @param string $location The location slug/name.
*
* @return string
*/
public function get_location_label( $location ) {
foreach ( $this->types as $type ) {
/**
* Added for convenience.
*
* @var WPCode_Auto_Insert_Type $type
*/
$locations = $type->get_locations();
if ( isset( $locations[ $location ] ) ) {
if ( isset( $locations[ $location ]['label'] ) ) {
return $locations[ $location ]['label'];
} else {
return $locations[ $location ];
}
}
}
return '';
}
}