mage-eventpress/lib/classes/class-taxonomy-edit.php

284 lines
8.7 KiB
PHP
Executable File

<?php
if ( ! defined('ABSPATH')) exit; // if direct access
if( ! class_exists( 'TaxonomyEdit' ) ) {
class TaxonomyEdit {
public $data = array();
public function __construct( $args ){
$this->data = &$args;
add_action( $this->get_taxonomy().'_add_form_fields', array( $this, 'add_form_fields' ), 12 );
add_action( $this->get_taxonomy().'_edit_form_fields', array( $this, 'edit_form_fields' ), 12 );
add_action( 'edited_'.$this->get_taxonomy(), array( $this, 'save_update_taxonomy' ), 12 );
add_action( 'create_'.$this->get_taxonomy(), array( $this, 'save_update_taxonomy' ), 12 );
}
public function save_update_taxonomy($term_id){
foreach ($this->get_panels() as $optionIndex=>$option):
$option_value = isset($_POST[$option['id']]) ? $_POST[$option['id']] : '';
if(is_array($option_value)){
$option_value = serialize($option_value);
}
update_term_meta($term_id, $option['id'], $option_value);
endforeach;
}
public function edit_form_fields($term){
$term_id = $term->term_id;
?>
<?php
foreach ($this->get_panels() as $optionIndex=>$option):
//var_dump($option);
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="<?php echo $option['id']; ?>"><?php echo $option['title']; ?></label></th>
<td>
<?php
$this->field_generator($option, $term_id)
?>
</td>
</tr>
<?php
endforeach;
}
public function add_form_fields($term){
$term_id = '';
?>
<?php
foreach ($this->get_panels() as $optionIndex=>$option):
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="<?php echo $option['id']; ?>"><?php echo $option['title']; ?></label></th>
<td>
<?php
$this->field_generator($option, $term_id)
?>
</td>
</tr>
<?php
endforeach;
}
public function field_generator( $option, $term_id ) {
$id = isset( $option['id'] ) ? $option['id'] : "";
$type = isset( $option['type'] ) ? $option['type'] : "";
$details = isset( $option['details'] ) ? $option['details'] : "";
if( empty( $id ) ) return;
$FormFieldsGenerator = new FormFieldsGenerator();
$option['field_name'] = $id;
$option_value = get_term_meta($term_id, $id, true );
$option['value'] = is_serialized($option_value) ? unserialize($option_value): $option_value;
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'] === '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'] === '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'] === $type ){
do_action( "wp_theme_settings_field_$type", $option );
}
if( !empty( $details ) ) echo "<p class='description'>$details</p>";
}
private function get_taxonomy(){
if( isset( $this->data['taxonomy'] ) ) return $this->data['taxonomy'];
else return "category";
}
private function get_panels(){
if( isset( $this->data['options'] ) ) return $this->data['options'];
else return array();
}
private function get_tax_id(){
//$post_id = get_the_ID();
//return $post_id;
}
}
}