mage-eventpress/lib/classes/class-meta-box.php

521 lines
17 KiB
PHP
Raw Normal View History

2020-04-28 06:37:33 -04:00
<?php
2020-12-13 07:25:42 -05:00
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // if direct access
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
if ( ! class_exists( 'AddMetaBox' ) ) {
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
class AddMetaBox {
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
public $data = array();
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
public function __construct( $args ) {
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$this->data = &$args;
if ( isset( $this->data['seat_plan'] ) ) {
add_action( 'mp_event_all_in_tab_item_seat_plan', array( $this, 'meta_box_callback' ), 10, 1 );
}elseif ( isset( $this->data['every_day_setting'] ) ) {
add_action('mp_event_recurring_every_day_setting',array( $this, 'meta_box_callback' ), 10, 1);
} elseif ( $this->get_meta_box_screen()[0] == 'mep_events' && $this->get_meta_box_context() == 'normal' ) {
add_action( 'mp_event_all_in_tab_menu', array( $this, 'mp_event_all_in_tab_menu_list' ) );
add_action( 'mp_event_all_in_tab_item', array( $this, 'meta_box_callback' ), 10, 1 );
} else {
add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 12 );
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
add_action( 'save_post', array( $this, 'save_post' ), 12 );
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
public function add_meta_boxes() {
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
add_meta_box( $this->get_meta_box_id(), $this->get_meta_box_title(), array( $this, 'meta_box_callback' ),
$this->get_meta_box_screen(), $this->get_meta_box_context(), $this->get_meta_box_priority(), $this->get_callback_args() );
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
public function save_post( $post_id ) {
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$get_option_name = $this->get_option_name();
$post_id = $this->get_post_id();
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
if ( ! empty( $get_option_name ) ):
2020-12-17 05:11:50 -05:00
$option_value = serialize( stripslashes_deep($_POST[ $get_option_name ]) );
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
update_post_meta( $post_id, $get_option_name, $option_value );
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
else:
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
foreach ( $this->get_panels() as $panelsIndex => $panel ):
foreach ( $panel['sections'] as $sectionIndex => $section ):
foreach ( $section['options'] as $option ):
2020-04-28 06:37:33 -04:00
2020-12-17 05:11:50 -05:00
$option_value = isset( $_POST[ $option['id'] ] ) ? stripslashes_deep($_POST[ $option['id'] ]) : '';
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
if ( is_array( $option_value ) ) {
$option_value = serialize( $option_value );
}
2020-04-28 06:37:33 -04:00
2020-12-20 06:37:12 -05:00
if(!empty($option['id'])){
update_post_meta( $post_id, $option['id'], $option_value );
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
endforeach;
endforeach;
endforeach;
endif;
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
public function mp_event_all_in_tab_menu_list() {
?>
<li data-target-tabs="#<?php echo $this->get_meta_box_id(); ?>">
<?php echo $this->get_meta_box_title(); ?>
</li>
<?php
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
public function meta_box_callback( $post_id = null ) {
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$get_nav_position = $this->get_nav_position();
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
//var_dump($get_nav_position);
if ( $this->get_meta_box_screen()[0] == 'mep_events' && $this->get_meta_box_context() == 'normal' && !isset( $this->data['seat_plan'] )) {
?>
<div class="mp_tab_item" data-tab-item="#<?php echo $this->get_meta_box_id(); ?>">
<?php
}
?>
2020-04-28 06:37:33 -04:00
<div class='wrap ppof-settings ppof-metabox'>
<div class='navigation <?php echo $get_nav_position; ?>'>
<div class="nav-header">
2020-12-13 07:25:42 -05:00
<?php
do_action( 'nav_header_top' );
?>
2020-04-28 06:37:33 -04:00
<div class="themeName"><?php echo $this->get_item_name(); ?></div>
2020-12-13 07:25:42 -05:00
<div class="themeVersion"><?php echo sprintf( __( 'Version: %s', 'wp-theme-settings' ), $this->get_item_version() ); ?></div>
<?php
do_action( 'nav_header_bottom' );
?>
2020-04-28 06:37:33 -04:00
</div>
<div class="nav-items">
2020-12-13 07:25:42 -05:00
<?php
do_action( 'nav_nav_items_top' );
?>
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$current_page = 1;
foreach ( $this->get_panels() as $page_id => $page ):
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$page_settings = ! empty( $page['sections'] ) ? $page['sections'] : array();
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$page_settings_count = count( $page_settings );
//var_dump($page_settings);
?>
<li class="nav-item-wrap <?php if ( ( $page_settings_count > 1 ) ) {
echo 'has-child';
} ?> <?php if ( $current_page == $page_id ) {
echo 'active';
} ?>">
<a dataid="<?php echo $page_id; ?>" href='#<?php //echo $pagenow.'?'.$section_id;
?><?php echo
$page_id; ?>' class='nav-item'><?php echo $page['page_nav']; ?>
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
<?php if ( ( $page_settings_count > 1 ) ) {
echo '<i class="child-nav-icon fas fa-angle-down"></i>';
} ?>
2020-04-28 06:37:33 -04:00
</a>
2020-12-13 07:25:42 -05:00
<?php
if ( ( $page_settings_count > 1 ) ):
?>
2020-04-28 06:37:33 -04:00
<ul class="child-navs">
2020-12-13 07:25:42 -05:00
<?php
foreach ( $page_settings as $section_id => $nav_sections ):
$nav_sections_title = ! empty( $nav_sections['nav_title'] ) ? $nav_sections['nav_title'] : $nav_sections['title'];
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
//var_dump($nav_sections_title);
?>
2020-04-28 06:37:33 -04:00
<li>
2020-12-13 07:25:42 -05:00
<a sectionId="<?php echo $section_id; ?>" dataid="<?php echo $page_id; ?>" href='#<?php echo $section_id; ?>' class='nav-item <?php if ( $current_page == $page_id ) {
echo 'active';
} ?>'><?php echo $nav_sections_title; ?>
2020-04-28 06:37:33 -04:00
</a>
</li>
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
endforeach;
?>
2020-04-28 06:37:33 -04:00
</ul>
2020-12-13 07:25:42 -05:00
<?php
endif;
?>
2020-04-28 06:37:33 -04:00
</li>
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$current_page ++;
endforeach;
?>
<?php
do_action( 'nav_nav_items_bottom' );
?>
2020-04-28 06:37:33 -04:00
</div>
<div class="nav-footer">
2020-12-13 07:25:42 -05:00
<?php
do_action( 'nav_footer_top' );
?>
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
<?php
do_action( 'nav_footer_bottom' );
?>
2020-04-28 06:37:33 -04:00
</div>
</div>
2020-12-13 07:25:42 -05:00
<?php
if ( $get_nav_position == 'right' ) {
$form_wrapper_position = 'left';
} elseif ( $get_nav_position == 'left' ) {
$form_wrapper_position = 'right';
} elseif ( $get_nav_position == 'top' ) {
$form_wrapper_position = 'full-width-top';
} else {
$form_wrapper_position = 'full-width';
}
?>
2020-04-28 06:37:33 -04:00
<div class="form-wrapper <?php echo $form_wrapper_position; ?>">
<div class="form-section">
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$current_page = 1;
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
foreach ( $this->get_panels() as $panelsIndex => $panel ):
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
?>
<div class="tab-content <?php if ( $current_page == 1 ) {
echo 'active';
} ?> tab-content-<?php
echo $panelsIndex; ?>">
<?php
foreach ( $panel['sections'] as $sectionIndex => $section ):
?>
2020-04-28 06:37:33 -04:00
<div class="section">
<h1 id="<?php echo $sectionIndex; ?>" class="section-title"><?php echo $section['title']; ?></h1>
<p class="description"><?php echo $section['description']; ?></p>
<table class="form-table">
<tbody>
2020-12-13 07:25:42 -05:00
<?php
foreach ( $section['options'] as $option ):
?>
2020-04-28 06:37:33 -04:00
<tr>
<th scope="row"><?php echo $option['title']; ?></th>
<td>
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$option_value = get_post_meta( $this->get_post_id(), $option['id'], true );
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
if ( is_serialized( $option_value ) ) {
$option_value = unserialize( $option_value );
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
}
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$option['value'] = $option_value;
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$this->field_generator( $option )
?>
2020-04-28 06:37:33 -04:00
</td>
</tr>
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
endforeach;
?>
2020-04-28 06:37:33 -04:00
</tbody>
</table>
</div>
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
endforeach;
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
?>
2020-04-28 06:37:33 -04:00
</div>
2020-12-13 07:25:42 -05:00
<?php
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
$current_page ++;
endforeach;
2020-04-28 06:37:33 -04:00
2020-12-13 07:25:42 -05:00
?>
2020-04-28 06:37:33 -04:00
</div>
</div>
</div>
2020-12-13 07:25:42 -05:00
<?php
if ( $this->get_meta_box_screen()[0] == 'mep_events' && $this->get_meta_box_context() == 'normal' && !isset( $this->data['seat_plan'] )) {
?>
</div>
<?php
}
}
public function field_generator( $option ) {
$id = isset( $option['id'] ) ? $option['id'] : "";
$type = isset( $option['type'] ) ? $option['type'] : "";
$details = isset( $option['details'] ) ? $option['details'] : "";
$post_id = $this->get_post_id();
if ( empty( $id ) ) {
return;
}
$prent_option_name = $this->get_option_name();
$FormFieldsGenerator = new FormFieldsGenerator();
if ( ! empty( $prent_option_name ) ):
$field_name = $prent_option_name . '[' . $id . ']';
$option['field_name'] = $field_name;
$prent_option_value = get_post_meta( $post_id, $prent_option_name, true );
$prent_option_value = is_serialized( $prent_option_value ) ? unserialize( $prent_option_value ) : array();
$option['value'] = isset( $prent_option_value[ $id ] ) ? $prent_option_value[ $id ] : '';
else:
$option['field_name'] = $id;
$option_value = get_post_meta( $post_id, $id, true );
$option['value'] = is_serialized( $option_value ) ? unserialize( $option_value ) : $option_value;
endif;
//var_dump($prent_option_value);
?>
<?php
if ( isset( $option['type'] ) && $option['type'] === 'text' ) {
echo $FormFieldsGenerator->field_text( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'text_multi' ) {
echo $FormFieldsGenerator->field_text_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'textarea' ) {
echo $FormFieldsGenerator->field_textarea( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'checkbox' ) {
echo $FormFieldsGenerator->field_checkbox( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'checkbox_multi' ) {
echo $FormFieldsGenerator->field_checkbox_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'radio' ) {
echo $FormFieldsGenerator->field_radio( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'select' ) {
echo $FormFieldsGenerator->field_select( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'range' ) {
echo $FormFieldsGenerator->field_range( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'range_input' ) {
echo $FormFieldsGenerator->field_range_input( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'switch' ) {
echo $FormFieldsGenerator->field_switch( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'switch_multi' ) {
echo $FormFieldsGenerator->field_switch_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'switch_img' ) {
echo $FormFieldsGenerator->field_switch_img( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'time_format' ) {
echo $FormFieldsGenerator->field_time_format( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'date_format' ) {
echo $FormFieldsGenerator->field_date_format( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'datepicker' ) {
echo $FormFieldsGenerator->field_datepicker( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'color_sets' ) {
echo $FormFieldsGenerator->field_color_sets( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'colorpicker' ) {
echo $FormFieldsGenerator->field_colorpicker( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'colorpicker_multi' ) {
echo $FormFieldsGenerator->field_colorpicker_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'link_color' ) {
echo $FormFieldsGenerator->field_link_color( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'icon' ) {
echo $FormFieldsGenerator->field_icon( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'icon_multi' ) {
echo $FormFieldsGenerator->field_icon_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'dimensions' ) {
echo $FormFieldsGenerator->field_dimensions( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'wp_editor' ) {
echo $FormFieldsGenerator->field_wp_editor( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'select2' ) {
echo $FormFieldsGenerator->field_select2( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'faq' ) {
echo $FormFieldsGenerator->field_faq( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'grid' ) {
echo $FormFieldsGenerator->field_grid( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'color_palette' ) {
echo $FormFieldsGenerator->field_color_palette( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'color_palette_multi' ) {
echo $FormFieldsGenerator->field_color_palette_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'media' ) {
echo $FormFieldsGenerator->field_media( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'media_multi' ) {
echo $FormFieldsGenerator->field_media_multi( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'repeatable' ) {
echo $FormFieldsGenerator->field_repeatable( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'user' ) {
echo $FormFieldsGenerator->field_user( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'margin' ) {
echo $FormFieldsGenerator->field_margin( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'padding' ) {
echo $FormFieldsGenerator->field_padding( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'border' ) {
echo $FormFieldsGenerator->field_border( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'switcher' ) {
echo $FormFieldsGenerator->field_switcher( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'password' ) {
echo $FormFieldsGenerator->field_password( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'post_objects' ) {
echo $FormFieldsGenerator->field_post_objects( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === 'google_map' ) {
echo $FormFieldsGenerator->field_google_map( $option );
} elseif ( isset( $option['type'] ) && $option['type'] === $type ) {
do_action( "wp_theme_settings_field_$type", $option );
}
if ( ! empty( $details ) ) {
echo "<p class='description'>$details</p>";
}
}
private function get_meta_box_id() {
if ( isset( $this->data['meta_box_id'] ) ) {
return $this->data['meta_box_id'];
} else {
return "";
}
}
private function get_meta_box_title() {
if ( isset( $this->data['meta_box_title'] ) ) {
return $this->data['meta_box_title'];
} else {
return "";
}
}
private function get_meta_box_screen() {
if ( isset( $this->data['screen'] ) ) {
return $this->data['screen'];
} else {
return array( 'post' );
}
}
private function get_meta_box_context() {
if ( isset( $this->data['context'] ) ) {
return $this->data['context'];
} else {
return 'normal';
}
}
private function get_meta_box_priority() {
if ( isset( $this->data['priority'] ) ) {
return $this->data['priority'];
} else {
return "high";
}
}
private function get_callback_args() {
if ( isset( $this->data['callback_args'] ) ) {
return $this->data['callback_args'];
} else {
return array();
}
}
private function get_panels() {
if ( isset( $this->data['panels'] ) ) {
return $this->data['panels'];
} else {
return array();
}
}
private function get_item_name() {
if ( isset( $this->data['item_name'] ) ) {
return $this->data['item_name'];
} else {
return "PickPlugins";
}
}
private function get_item_version() {
if ( isset( $this->data['item_version'] ) ) {
return $this->data['item_version'];
} else {
return "1.0.0";
}
}
private function get_option_name() {
if ( isset( $this->data['option_name'] ) ) {
return $this->data['option_name'];
} else {
return false;
}
}
private function get_nav_position() {
if ( isset( $this->data['nav_position'] ) ) {
return $this->data['nav_position'];
} else {
return 'left';
}
}
private function get_post_id() {
$post_id = get_the_ID();
return $post_id;
}
}
2020-04-28 06:37:33 -04:00
}