web/wp-content/plugins/acf-extended/includes/module-legacy.php (292 lines of code) (raw):
<?php
if(!defined('ABSPATH')){
exit;
}
if(!class_exists('acfe_dynamic_module')):
class acfe_dynamic_module{
// vars
public $name = '',
$active = false,
$settings = '',
$post_type = '',
$label = '',
$textdomain = '',
$tool = '',
$columns = array(),
$tools = array();
/*
* Construct
*/
function __construct(){
$this->initialize();
if(!$this->active) return;
$this->actions();
$this->add_local_field_group();
add_action('init', array($this, 'init'));
add_action('current_screen', array($this, '_current_screen'));
add_action('acf/save_post', array($this, '_save_post'), 20);
add_action('trashed_post', array($this, '_trashed_post'));
add_action('untrashed_post', array($this, '_untrashed_post'));
add_filter('acf/get_post_types', array($this, 'get_post_types'), 10, 2);
}
/*
* Initialize
*/
function initialize(){
// ...
}
/*
* Init
*/
function actions(){
// ...
}
/*
* Get Name
*/
function get_name($post_id){
return false;
}
/*
* Init
*/
function init(){
// ...
}
/*
* Current Screen
*/
function _current_screen(){
$this->current_screen();
// Single
if(acf_is_screen($this->post_type)){
remove_meta_box('slugdiv', $this->post_type, 'normal');
add_action('admin_enqueue_scripts', array($this, '_post_head'));
add_filter('admin_body_class', array($this, 'post_body_class'));
add_action('post_submitbox_misc_actions', array($this, '_post_submitbox_misc_actions'));
add_filter('enter_title_here', array($this, 'post_enter_title_here'), 10, 2);
add_action('admin_footer', array($this, '_post_footer'));
add_action('load-post.php', array($this, 'post_load'));
add_action('load-post-new.php', array($this, 'post_new_load'));
add_filter('submenu_file', array($this, 'submenu_file'));
add_filter('acfe/localize_data', array($this, 'post_localize_data'));
$this->post_screen();
// List
}elseif(acf_is_screen("edit-{$this->post_type}")){
global $wp_post_statuses;
$wp_post_statuses['publish']->label_count = _n_noop( 'Active <span class="count">(%s)</span>', 'Active <span class="count">(%s)</span>', 'acf' );
add_action('admin_enqueue_scripts', array($this, '_edit_head'));
add_filter('admin_body_class', array($this, 'edit_body_class'));
add_filter("manage_edit-{$this->post_type}_columns", array($this, '_edit_columns'));
add_action("manage_{$this->post_type}_posts_custom_column", array($this, 'edit_columns_html'), 10, 2);
add_filter('display_post_states', array($this, 'display_post_states'), 10, 2);
add_filter('post_row_actions', array($this, '_edit_row_actions'), 10, 2);
add_filter('page_row_actions', array($this, '_edit_row_actions'), 10, 2);
add_action('admin_footer', array($this, 'edit_footer'));
add_action('load-edit.php', array($this, 'edit_load'));
add_filter("bulk_actions-edit-{$this->post_type}", array($this, 'bulk_actions'));
add_filter("handle_bulk_actions-edit-{$this->post_type}", array($this, 'handle_bulk_actions'), 10, 3);
add_filter('acfe/localize_data', array($this, 'edit_localize_data'));
$this->edit_screen();
}
}
function post_body_class($classes){
$classes .= " acfe-module acfe-module-post acfe-module-{$this->name}";
return $classes;
}
function edit_body_class($classes){
$classes .= " acfe-module acfe-module-posts acfe-module-{$this->name}";
return $classes;
}
function post_localize_data($data){
$data['module'] = array(
'name' => $this->name,
'screen' => 'post',
);
return $data;
}
function edit_localize_data($data){
$data['module'] = array(
'name' => $this->name,
'screen' => 'posts',
);
return $data;
}
function current_screen(){
// ...
}
function post_screen(){
// ...
}
function post_load(){
// ...
}
function post_new_load(){
// ...
}
function submenu_file($submenu_file){
return "edit.php?post_type={$this->post_type}";
}
function edit_screen(){
// ...
}
function edit_load(){
// ...
}
function bulk_actions($actions){
acfe_unset($actions, 'edit');
foreach($this->tools as $action){
$action_name = $action === 'php' ? 'PHP' : 'Json';
$actions["export_{$action}"] = __('Export ', 'acf') . $action_name;
}
return $actions;
}
function handle_bulk_actions($redirect, $action, $post_ids){
$post_ids = acfe_maybe_get_REQUEST('post');
if(!$post_ids){
return $redirect;
}
foreach($this->tools as $tool_action){
if($action !== "export_{$tool_action}") continue;
$keys = array();
foreach($post_ids as $post_id){
$name = $this->get_name($post_id);
if(!$name) continue;
$keys[] = $name;
}
$keys = implode('+', $keys);
$url = admin_url("edit.php?post_type=acf-field-group&page=acf-tools&tool={$this->tool}&action={$tool_action}&keys={$keys}");
wp_redirect($url);
exit;
}
return $redirect;
}
/*
* Post Head
*/
function _post_head(){
// no autosave
wp_dequeue_script('autosave');
$this->post_head();
}
function post_head(){
// ...
}
/*
* Post Submit Box
*/
function _post_submitbox_misc_actions($post){
$status = $post->post_status === 'publish' || $post->post_status === 'auto-draft' ? __("Active",'acf') : __("Inactive",'acf');
$name = $this->get_name($post->ID);
$tools = array();
foreach($this->tools as $action){
$action_name = $action === 'php' ? 'PHP' : 'Json';
$tools[] = '<a href="' . admin_url("edit.php?post_type=acf-field-group&page=acf-tools&tool={$this->tool}&action={$action}&keys={$name}") . '">' . $action_name . '</a>';
}
if($tools){ ?>
<div class="misc-pub-section acfe-misc-export">
<span class="dashicons dashicons-editor-code"></span>
Export: <?php echo implode(' ', $tools); ?>
</div>
<?php } ?>
<script type="text/javascript">
(function($) {
$('#post-status-display').html('<?php echo $status; ?>');
<?php if($tools){ ?>$('.acfe-misc-export').insertAfter('.misc-pub-post-status');<?php } ?>
})(jQuery);
</script>
<?php
$this->post_submitbox_misc_actions($post);
}
function post_submitbox_misc_actions($post){
// ...
}
/*
* Post Enter Title Here
*/
function post_enter_title_here($placeholder, $post){
return $this->label;
}
/*
* Post Footer
*/
function _post_footer(){
?>
<script type="text/javascript">
(function($){
$('#post').submit(function(e){
// vars
var $title = $('#titlewrap #title');
// empty
if($title.val()) return;
e.preventDefault();
alert('<?php echo $this->label; ?> is required.');
$title.focus();
});
})(jQuery);
</script>
<?php
$this->post_footer();
}
function post_footer(){
// ...
}
function _edit_head(){
// enqueue acf global js for tooltips
acf_enqueue_script('acf');
}
/*
* Edit Columns
*/
function _edit_columns($columns){
if(empty($this->columns)){
return $columns;
}
$columns = array_merge(array('cb' => $columns['cb'], 'title' => $columns['title']), $this->columns);
return $this->edit_columns($columns);
}
function edit_columns($columns){
return $columns;
}
/*
* Edit Columns HTML
*/
function edit_columns_html($column, $post_id){
// ...
}
/*
* Display Post States
*/
function display_post_states($post_states, $post){
if($post->post_status === 'acf-disabled'){
$post_states['acf-disabled'] = '<span class="dashicons dashicons-hidden acf-js-tooltip" title="' . _x('Disabled', 'post status', 'acf') . '"></span>';
}
return $post_states;
}
/*
* Edit Row Actions
*/
function _edit_row_actions($actions, $post){
if(!in_array($post->post_status, array('publish', 'acf-disabled'))){
return $actions;
}
$post_id = $post->ID;
$name = $this->get_name($post_id);
acfe_unset($actions, 'inline hide-if-no-js');
// View
$view = $this->edit_row_actions_view($post, $name);
if($view){
$actions['view'] = $view;
}
// Tools
foreach($this->tools as $action){
$action_name = $action === 'php' ? 'PHP' : 'Json';
$actions[$action] = '<a href="' . admin_url("edit.php?post_type=acf-field-group&page=acf-tools&tool={$this->tool}&action={$action}&keys={$name}") . '">' . $action_name . '</a>';
}
return $this->edit_row_actions($actions, $post);
}
function edit_row_actions($actions, $post){
return $actions;
}
function edit_row_actions_view($post, $name){
return false;
}
/*
* Edit Foot
*/
function edit_footer(){
// ...
}
/*
* ACF Save post
*/
function _save_post($post_id){
if(!is_numeric($post_id) || get_post_type($post_id) !== $this->post_type){
return;
}
$this->save_post($post_id);
}
function save_post($post_id){
// ...
}
/*
* Trashed Post Type
*/
function _trashed_post($post_id){
if(get_post_type($post_id) !== $this->post_type){
return;
}
$this->trashed_post($post_id);
}
function trashed_post($post_id){
// ...
}
/*
* Untrashed Post Type
*/
function _untrashed_post($post_id){
if(get_post_type($post_id) !== $this->post_type){
return;
}
$this->_save_post($post_id);
$this->untrashed_post($post_id);
}
function untrashed_post($post_id){
// ...
}
/*
* Import
*/
function import($name, $args){
// ...
}
/*
* Export
*/
function export_choices(){
return array();
}
function export_data($name){
// ...
}
function export_php($data){
return false;
}
/*
* Reset
*/
function reset(){
// ...
}
/*
* Exclude Post Type
*/
function get_post_types($post_types, $args){
foreach($post_types as $k => $post_type){
if($post_type !== $this->post_type) continue;
unset($post_types[$k]);
}
return $post_types;
}
/*
* Get Field Labels Recursive
*/
function get_fields_labels_recursive(&$array, $field){
$label = '';
$ancestors = isset($field['ancestors']) ? $field['ancestors'] : count(acf_get_field_ancestors($field));
$label = str_repeat('- ', $ancestors) . $label;
$label .= !empty($field['label']) ? $field['label'] : '(' . __('no label', 'acf') . ')';
$label .= $field['required'] ? ' <span class="acf-required">*</span>' : '';
$array[$field['key']] = $label;
if(isset($field['sub_fields']) && !empty($field['sub_fields'])){
foreach($field['sub_fields'] as $s_field){
$this->get_fields_labels_recursive($array, $s_field);
}
}
}
/*
* Add Local Field Group
*/
function add_local_field_group(){
// ...
}
}
endif;