web/wp-content/plugins/acf-extended/includes/module-manager.php (82 lines of code) (raw):
<?php
if(!defined('ABSPATH')){
exit;
}
if(!class_exists('acfe_module_manager')):
class acfe_module_manager{
/**
* construct
*/
function __construct(){
add_action('acfe/init', array($this, 'register_items'), 99);
add_action('init', array($this, 'register_items'));
add_action('init', array($this, 'register_post_types'));
}
/**
* register_items
*/
function register_items(){
// get current hook
// ini or acf/init
$hook = current_filter();
// query modules by register hook
$modules = acfe_query_modules(array(
'register' => $hook
));
// bail early
if(!$modules){
return;
}
// loop modules
foreach($modules as $module){
// check active
if(!$module->is_active()){
continue;
}
// get loaded items
$items = $module->get_local_items();
$items = $module->apply_module_filters('acfe/module/register_items', $items);
// loop items
foreach($items as $item){
// cleanup keys (ID, local, _valid...)
$item = $module->prepare_item_for_export($item);
// filters
$item = $module->apply_module_filters('acfe/module/register_item_args', $item);
// bail early
if($item === false){
continue;
}
// bail early
if(!$item['active']){
continue;
}
// actions
$module->do_module_action('acfe/module/register_item', $item);
}
}
}
/**
* register_post_types
*/
function register_post_types(){
// get all modules
$modules = acfe_get_modules();
// loop modules
foreach($modules as $module){
// check active
if(!$module->is_active()){
continue;
}
// capability
$capability = acf_get_setting('show_admin') ? acf_get_setting('capability') : false;
// arguments
$args = wp_parse_args($module->args, array(
'label' => '',
'labels' => array(),
'supports' => array('title'),
'hierarchical' => false,
'public' => false,
'show_ui' => true,
'show_in_menu' => false,
'menu_icon' => 'dashicons-layout',
'show_in_admin_bar' => false,
'show_in_nav_menus' => false,
'can_export' => false,
'has_archive' => false,
'rewrite' => false,
'exclude_from_search' => true,
'publicly_queryable' => false,
'capabilities' => array(
'publish_posts' => $capability,
'edit_posts' => $capability,
'edit_others_posts' => $capability,
'delete_posts' => $capability,
'delete_others_posts' => $capability,
'read_private_posts' => $capability,
'edit_post' => $capability,
'delete_post' => $capability,
'read_post' => $capability,
),
'acfe_admin_orderby' => 'title',
'acfe_admin_order' => 'ASC',
'acfe_admin_ppp' => 999,
));
// register post type
register_post_type($module->post_type, $args);
}
}
}
acf_new_instance('acfe_module_manager');
endif;