HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: /home/cga.org.uk/public_html-20250117120149/wp-content/themes/simpleshift/inc/meta_boxes.php
<?php

/* **************************************************************************************************** */
// METABOX - SIDEBAR +++ START
/* **************************************************************************************************** */

$meta_box_options['simpleshift_sidebar_meta_box']['id'] = 'sidebar_meta_box';
$meta_box_options['simpleshift_sidebar_meta_box']['title'] = 'SimpleShift Sidebar Options';
$meta_box_options['simpleshift_sidebar_meta_box']['callback'] = 'simpleshift_call_sidebar_meta_box'; #create
$meta_box_options['simpleshift_sidebar_meta_box']['post_type'] = 'post,page';
$meta_box_options['simpleshift_sidebar_meta_box']['context'] = 'side';
$meta_box_options['simpleshift_sidebar_meta_box']['priority'] = 'low';
$meta_box_options['simpleshift_sidebar_meta_box']['fields']['sidebar_select']
    = array('type'=>'radio',
            'options'=>array('left'=>__('Left','simpleshift'), 'right'=>__('Right','simpleshift'), 'none'=>__('None','simpleshift')),
            'default'=>'none',
            'script'=>'',
            'help'=>__('Sidebar Display Options:','simpleshift')
            );
$meta_box_options['simpleshift_sidebar_meta_box']['fields']['sidebar_number']
    = array('type'=>'textbox',
            'default'=>'',
            'script'=>'',
            'label'=>__('Sidebar #:','simpleshift'),
            'help'=>__('Enter the number of the alternate sidebar you would like to apply. Leave blank to use default.','simpleshift'),
            'size'=>2);
add_action("admin_init", "simpleshift_sidebar_meta_box");
add_action('save_post', 'simpleshift_save_sidebar_meta_box');


function simpleshift_sidebar_meta_box() {
    $key = 'simpleshift_sidebar_meta_box';
    global $meta_box_options;
    $id = $meta_box_options[$key]['id'];
    $title = $meta_box_options[$key]['title'];
    $callback = $meta_box_options[$key]['callback'];
    $post_type = $meta_box_options[$key]['post_type'];
    $context = $meta_box_options[$key]['context'];
    $priority = $meta_box_options[$key]['priority'];
    $arr = explode(',', $post_type);
    foreach($arr as $v){
        add_meta_box($id, $title, $callback, $v, $context, $priority);
    }
}

function simpleshift_call_sidebar_meta_box() {
    $key = 'simpleshift_sidebar_meta_box';
    global $meta_box_options;
    global $post;
    $fields = $meta_box_options[$key]['fields'];
    simpleshift_output_metabox_style($meta_box_options['simpleshift_sidebar_meta_box']['id'], $meta_box_options['simpleshift_sidebar_meta_box']['context']);
    simpleshift_metabox_nonce();
    simpleshift_draw_fields($fields, $post->ID);
}

function simpleshift_save_sidebar_meta_box($post_id) {

    $key = 'simpleshift_sidebar_meta_box';
    global $meta_box_options;
    global $post;

    // verify nonce
    if (isset($_POST['meta_box_nonce'])) {
        $pid = simpleshift_verify_nonce($_POST['meta_box_nonce'], $post_id);
        if($pid) return $pid;
    }

    // check autosave
    $pid = simpleshift_check_autosave($post_id);
    if($pid) return $pid;

    // check permissions
    if (isset($_POST['post_type'])) {
        $pid = simpleshift_verify_permissions($post_id, $_POST['post_type']);
        if($pid) return $pid;
    }

    $fields = $meta_box_options[$key]['fields'];
    foreach($fields as $k=>$f){
        $field_name = $k;
        if(isset($_POST[$field_name])) {
            $raw_value=$_POST[$field_name];
            $type=$f['type'];
            $value=sanitize_meta_field_value($type,$raw_value);
            update_post_meta($post_id, $field_name, $value);
        }
    }

}






/*** HELPER FUNCTIONS ***/


// Sanitize all input

function sanitize_meta_field_value($type,$raw_value) {
    switch($type){
                case 'radio':
                            $value = sanitize_key($raw_value);
                            return $value;
                            break;
                case 'textbox':
                            $value = sanitize_text_field($raw_value);
                            return $value;
                            break;
                case 'textarea':
                            $value = wp_kses_post($raw_value);
                            return $value;
                            break;
                case 'select':
                            $value = sanitize_key( $raw_value );
                            return $value;
                            break;
                case 'colorbox':
                            $value = sanitize_hex_color($raw_value);
                            return $value;
                            break;
    }
}



### FORM FIELDS ###

function simpleshift_draw_fields($fields, $post_id){
    foreach($fields as $k=>$f){
        $field_name = $k;
        $field_value = get_post_meta($post_id, $field_name, true);
        echo '<p>' . $f['help'] .'</p>';
        echo $f['script'];
        switch($f['type']){
            case 'radio':
                        simpleshift_draw_radio_buttons($f['options'], $f['default'], $field_name, $field_value);
                        break;
            case 'textbox':
                        simpleshift_draw_textbox($f['label'], $field_name, $field_value, $f['size']);
                        break;
            case 'textarea':
                        simpleshift_draw_textarea($f['label'], $field_name, $field_value, $f['cols'], $f['rows']);
                        break;
            case 'select':
                        simpleshift_draw_select($f['options'], $f['default'], $field_name, $field_value);
                        break;
            case 'colorbox':
                        simpleshift_draw_colorbox($f['label'], $field_name, $field_value, $f['size']);
                        break;
        }
    }
}


function simpleshift_metabox_nonce(){
    echo '<input type="hidden" name="meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
}


function simpleshift_draw_radio_buttons($options, $default, $field_name, $field_value){
    $checked_option = $default;
    foreach($options as $val=>$lab){
        if($field_value == $val && $field_value != $default)
            $checked_option = $val;
    }
    foreach($options as $val=>$lab){
        $checked = $val == $checked_option ? 'checked' : '';
        $id = $field_name . '-' . $val;
        echo '<input class="" type="radio" name="'.$field_name.'" id="'.$id .'" value="'.$val.'" ' . $checked . '><label style="float:none;" for="'.$id.'">'.$lab.'</label><br />';
    }
}

function simpleshift_draw_select($options, $default, $field_name, $field_value){
    echo '<select name="'.$field_name.'">';
    foreach($options as $val=>$lab){
        $selected = $field_value == $val ? 'selected' : '';
        if($checked == '') $checked = $val == $default ? 'selected' : '';
        echo '<option value="'.$val.'" ' . $selected . '>'.$lab.'</option>';
    }
    echo '</select>';
}

function simpleshift_draw_textbox($label, $field_name, $field_value, $size){
    echo '<label>' . $label . ' </label>';
    echo '<input type="text" id="'.$field_name.'" name="'.$field_name.'" value="'.$field_value.'" size="'.$size.'" />';
}

function simpleshift_draw_colorbox($label, $field_name, $field_value, $size){
    echo '<label>' . $label . ' </label>';
    echo '<input type="text" class="color {required:false}" id="colorbox_'.$field_name.'" name="'.$field_name.'" value="'.$field_value.'" size="'.$size.'" />';
}

function simpleshift_draw_textarea($label, $field_name, $field_value, $cols, $rows){
    echo '<label>' . $label . '</label><br />';
    echo '<textarea name="'.$field_name.'" id="'.$field_name.'" cols="'.$cols.'" rows="'.$rows.'">' . $field_value . '</textarea>';
}

### VERIFICATION FUNCTIONS ###

function simpleshift_verify_nonce($meta_box_nonce, $post_id){
    if (isset($meta_box_nonce)) {
        if (!wp_verify_nonce($meta_box_nonce, basename(__FILE__))) {
            return $post_id;
        }
    }
    return false;
}

function simpleshift_check_autosave($post_id){
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }
    return false;
}

function simpleshift_verify_permissions($post_id, $post_type){
     if (isset($post_type)) {
        if ('page' == $post_type) {
            if (!current_user_can('edit_page', $post_id)) {
                return $post_id;
            }
        } elseif (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }
        return false;
    }
    return false;
}

function simpleshift_output_metabox_style($meta_box_id, $context='normal'){

    if(!is_admin()) return;

$str_normal =
'<style>
form .counter{ font-size:13px; font-weight:normal; display:block; padding-left:26%; }
form .warning{ color:#600; }
form .exceeded{ color:#e00; }
#[META_BOX_ID] { background:#e9f7ff!important; }
#[META_BOX_ID] h3.hndle { background-color:#90c9e9;background-image:-ms-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:-moz-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:-o-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:-webkit-gradient(linear,left top,left bottom,from(#abdaf4),to(#90c9e9))!important; background-image:-webkit-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:linear-gradient(top,#abdaf4,#90c9e9)!important; color:#000; }
#[META_BOX_ID] label {float:left; width:25%; margin-right:0.5em; padding-top:0.2em; font-weight:bold;}}
</style>';

$str_side =
'<style>
form .counter{ font-size:13px; font-weight:normal; display:block; padding-left:26%; }
form .warning{ color:#600; }
form .exceeded{ color:#e00; }
#[META_BOX_ID] { background:#e9f7ff!important; }
#[META_BOX_ID] h3.hndle { background-color:#90c9e9;background-image:-ms-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:-moz-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:-o-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:-webkit-gradient(linear,left top,left bottom,from(#abdaf4),to(#90c9e9))!important; background-image:-webkit-linear-gradient(top,#abdaf4,#90c9e9)!important; background-image:linear-gradient(top,#abdaf4,#90c9e9)!important; color:#000; }
</style>';
$str = $context == 'normal' ? $str_normal : $str_side;
echo str_replace('[META_BOX_ID]', $meta_box_id, $str);
}
?>