HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: /home/mmickelson/church.martyknows.com/wp-content/themes/gridz/inc/admin/theme-options.php
<?php
/**
 * @package gridz
 */
/**
 * Initializing theme options
 */
function gridz_init_options() {
    if(false === gridz_get_options()) add_option('gridz_options', gridz_default_options());
    $default_options = gridz_default_options();
    $current_options = gridz_get_options();
    if(count($current_options) != count($default_options)) {
        $default_keys = array_keys($default_options);
        foreach($default_keys as $entry) {
            if(array_key_exists($entry,$current_options)) {
                $default_options[$entry] = $current_options[$entry];
            }
        }
        update_option('gridz_options',$default_options);
    }
    register_setting('gridz_options', 'gridz_options', 'gridz_validate_options');
}
add_action('admin_init', 'gridz_init_options');

/**
 * Adding theme options menu item
 */
function gridz_activate_options() {
    $gridz_theme_page = add_theme_page(__('Theme Options','gridz'), __('Theme Options','gridz'), 'edit_theme_options', 'gridz_options', 'gridz_options_page');
    if(!$gridz_theme_page) return;
    add_action('admin_print_styles-' . $gridz_theme_page, 'gridz_enqueue_admin_scripts');
}
add_action('admin_menu', 'gridz_activate_options');

/**
 * Return page capability
 */
function gridz_page_capability($capability) {
    return 'edit_theme_options';
}
add_filter('option_page_capability_gridz_options', 'gridz_page_capability');

/**
 * Enqeueing the javascripts & stylesheets
 */
function gridz_enqueue_admin_scripts($hook_suffix) {
    wp_enqueue_script('jquery');
    wp_enqueue_script('media-upload');
    wp_enqueue_script('thickbox');
    wp_enqueue_style('thickbox');
    wp_enqueue_style('wp-color-picker');
    wp_enqueue_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui-slider');
    wp_enqueue_script('gridz_admin_js', get_template_directory_uri().'/inc/admin/js/theme-options.js', array('jquery','wp-color-picker'), false, true);
    wp_enqueue_script('gridz_media_uploader_js', get_template_directory_uri().'/inc/admin/js/media-uploader.js', 'jquery', false);
    wp_enqueue_style('gridz_admin_css', get_template_directory_uri().'/inc/admin/theme-options.css', false, false, 'all');
    wp_enqueue_style('gridz_jquery_ui', 'http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css', false, false, 'all');
}

/**
 * Applying color scheme
 */
function gridz_color_scheme() {
    global $_wp_admin_css_colors;
    $current_color = get_user_option('admin_color');
    $color_scheme = $_wp_admin_css_colors[$current_color]->colors;
    $icon_color = $_wp_admin_css_colors[$current_color]->icon_colors;
    $hover_bg_color = $color_scheme[2];
    $hover_font_color = $icon_color['current'];
    ?>
    <style type="text/css">
        .tab:hover, .current-tab { background-color: <?php echo $hover_bg_color; ?>; color: <?php echo $hover_font_color; ?> !important; }
    </style>
    <?php
}
add_action("admin_head","gridz_color_scheme");

/**
 * Initialize Slider
 */
function gridz_slider_bar_init() {
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery(".font-slider").each(function() {
            var slider_id = jQuery(this).attr("id");
            var text_id = slider_id.replace("-slider","");
            jQuery(this).slider({
                min: 10,
                max: 40,
                value: jQuery("#" + text_id).val(),
                slide: function(event, ui) {
                    jQuery("#" + text_id).val(ui.value);
                } 
            });
        });        
    });    
    </script>
    <?php
}
add_action("admin_footer","gridz_slider_bar_init");

/**
 * Retreive theme options
 */
function gridz_get_options() {
    return get_option('gridz_options', gridz_default_options());
}

/**
 * Default theme options
 */
function gridz_default_options() {
    $options = array(
        "favicon" => "",
        "logo" => "",
        "color_scheme" => "#59a0d6",
        "header_color" => "#e58c59",
        "content_font" => "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;",        
        "site_title_font" => "font-family:'pacificoregular';font-weight:normal;",        
        "site_title_font_size" => "26",
        "post_title_font" => "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;",
        "post_title_font_size" => "16",
        "widget_title_font" => "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;",
        "widget_title_font_size" => "16",
        "grid_columns" => "3",
        "show_home_sidebar" => false,
        "sidebar_layout" => "right",
        "show_categories" => true,
        "show_tags" => true,
        "show_post_nav" => true
    );
    return apply_filters("gridz_default_options", $options);
}

function gridz_column_list() {
    $list = array(
        "2" => array("value" => "2", "label" => __("2","gridz")),
        "3" => array("value" => "3", "label" => __("3","gridz")),
        "4" => array("value" => "4", "label" => __("4","gridz")),
    );
    return apply_filters("gridz_options_tabs", $list);
}

function gridz_sidebar_layout() {
    $list = array(
        "left" => array("value" => "left", "label" => __("left","gridz")),
        "right" => array("value" => "right", "label" => __("right","gridz")),
    );
    return apply_filters("gridz_sidebar_layout", $list);
}

function gridz_custom_fonts() {
    $list = array(
        "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;" => array("value" => "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;", "label" => __("Helvetica, Arial Regular","gridz")),
        "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;" => array("value" => "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;", "label" => __("Helvetica, Arial Bold","gridz")),
        "font-family:'pacificoregular';font-weight:normal;" => array("value" => "font-family:'pacificoregular';font-weight:normal;", "label" => __("Pacifico","gridz")),
        "font-family:'comfortaabold';font-weight:normal;" => array("value" => "font-family:'comfortaabold';font-weight:normal;", "label" => __("Comfortaa Bold","gridz")),
        "font-family:'chivoblack';font-weight:normal;text-transform:uppercase;" => array("value" => "font-family:'chivoblack';font-weight:normal;text-transform:uppercase;", "label" => __("Chivo Black","gridz")),        
        "font-family:'source_sans_proextralight';font-weight:normal;" => array("value" => "font-family:'source_sans_proextralight';font-weight:normal;", "label" => __("Source Sans Pro Extra Light","gridz")),
        "font-family:'source_sans_prolight';font-weight:normal;" => array("value" => "font-family:'source_sans_prolight';font-weight:normal;", "label" => __("Source Sans Pro Light","gridz")),
        "font-family:'source_sans_proregular';font-weight:normal;" => array("value" => "font-family:'source_sans_proregular';font-weight:normal;", "label" => __("Source Sans Pro Regular","gridz")),
        "font-family:'source_sans_probold';font-weight:normal;" => array("value" => "font-family:'source_sans_probold';font-weight:normal;", "label" => __("Source Sans Pro Bold","gridz")),
    );
    return apply_filters("gridz_custom_fonts", $list);
}

/**
 * List of theme options tabs
 */
function gridz_options_tabs() {
    $tabs = array(
        "1" => array("value" => "1", "label" => __("Fonts & Colors","gridz")),
        "2" => array("value" => "2", "label" => __("Logo & Favicon","gridz")),
        "3" => array("value" => "3", "label" => __("Homepage","gridz")),
        "4" => array("value" => "4", "label" => __("Post Settings","gridz"))
    );
    return apply_filters("gridz_options_tabs", $tabs);
}

/**
 * Display the options page
 */
function gridz_options_page() {
    if(isset($_POST['settings-reset'])) {
        delete_option('gridz_options');
        add_settings_error('gridz_options','reset',__('Default settings restored','gridz'),'updated');
    }
    ?>
    <div id="settings-wrap">
        <?php $theme_name = wp_get_theme(); ?>
        <h2 class="settings-title"><?php printf(__('%s Theme Options', 'gridz'), $theme_name); ?></h2>
        <table class="settings-table"><tr>
            <td class="settings-tabs">            
                <?php
                $first = true;
                    foreach(gridz_options_tabs() as $entry) {
                        if($first) $current_class = " current-tab"; else $current_class = "";
                        echo '<a class="tab wp-has-current-submenu'.$current_class.'" id="tab-'.$entry['value'].'" href="javascript:void(0)">'.$entry['label'].'</a>';
                        $first = false;
                    }
                ?>
            </td>
            <td class="settings-body">
                <span id="error-container"><?php settings_errors(); ?></span>
                <form method="post" id="settings-form" action="options.php">
                    <?php
                        settings_fields('gridz_options');
                        $gridz_options = gridz_get_options();
                        $gridz_default_options = gridz_default_options();
                    ?>
                    <div class="section" id="section-1"> <!-- Section 1 -->
                        <table>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Color Scheme','gridz'); ?></label></td>
                                <td>
                                    <input type="text" name="gridz_options[color_scheme]" class="color" value="<?php echo esc_attr($gridz_options['color_scheme']); ?>" data-default-color="<?php echo esc_attr($gridz_default_options['color_scheme']); ?>"/>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Header Color','gridz'); ?></label></td>
                                <td>
                                    <input type="text" name="gridz_options[header_color]" class="color" value="<?php echo esc_attr($gridz_options['header_color']); ?>" data-default-color="<?php echo esc_attr($gridz_default_options['header_color']); ?>"/>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Content Font','gridz'); ?></label></td>
                                <td>
                                    <select class="font-select" name="gridz_options[content_font]">
                                        <?php foreach (gridz_custom_fonts() as $entry) { ?>
                                            <option value="<?php echo $entry['value']; ?>" <?php selected($gridz_options['content_font'], $entry['value']); ?>><?php echo $entry['label']; ?></option>
                                        <?php } ?>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Site Title Font','gridz'); ?></label></td>
                                <td>
                                    <select class="font-select" name="gridz_options[site_title_font]">
                                        <?php foreach (gridz_custom_fonts() as $entry) { ?>
                                            <option value="<?php echo $entry['value']; ?>" <?php selected($gridz_options['site_title_font'], $entry['value']); ?>><?php echo $entry['label']; ?></option>
                                        <?php } ?>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Site Title Font Size (in px)','gridz'); ?></label></td>
                                <td>
                                    <div id="site-title-font-size-slider" class="font-slider ui-slider"></div>
                                    <input type="text" readonly="readonly" class="readonly" id="site-title-font-size" name="gridz_options[site_title_font_size]" value="<?php echo esc_attr($gridz_options['site_title_font_size']); ?>"/><span>px</span>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Post Title Font','gridz'); ?></label></td>
                                <td>
                                    <select class="font-select" name="gridz_options[post_title_font]">
                                        <?php foreach (gridz_custom_fonts() as $entry) { ?>
                                            <option value="<?php echo $entry['value']; ?>" <?php selected($gridz_options['post_title_font'], $entry['value']); ?>><?php echo $entry['label']; ?></option>
                                        <?php } ?>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Post Title Font Size (in px)','gridz'); ?></label></td>
                                <td>
                                    <div id="post-title-font-size-slider" class="font-slider ui-slider"></div>
                                    <input type="text" readonly="readonly" class="readonly" id="post-title-font-size" name="gridz_options[post_title_font_size]" value="<?php echo esc_attr($gridz_options['post_title_font_size']); ?>"/><span>px</span>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Widget Title Font','gridz'); ?></label></td>
                                <td>
                                    <select class="font-select" name="gridz_options[widget_title_font]">
                                        <?php foreach (gridz_custom_fonts() as $entry) { ?>
                                            <option value="<?php echo $entry['value']; ?>" <?php selected($gridz_options['widget_title_font'], $entry['value']); ?>><?php echo $entry['label']; ?></option>
                                        <?php } ?>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Widget Title Font Size (in px)','gridz'); ?></label></td>
                                <td>
                                    <div id="widget-title-font-size-slider" class="font-slider ui-slider"></div>
                                    <input type="text" readonly="readonly" class="readonly" id="widget-title-font-size" name="gridz_options[widget_title_font_size]" value="<?php echo esc_attr($gridz_options['widget_title_font_size']); ?>"/><span>px</span>
                                </td>
                            </tr>
                        </table>
                    </div>
                    
                    <div class="section" id="section-2"> <!-- Section 2 -->
                        <table>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Custom Logo','gridz'); ?></label></td>
                                <td>
                                    <input type="text" name="gridz_options[logo]" id="logo" value="<?php echo esc_url($gridz_options['logo']); ?>"/>
                                    <input id="logo_upload" type="button" class="button-secondary image_upload" value="<?php _e('Upload Logo','gridz'); ?>" />
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Custom Favicon','gridz'); ?></label></td>
                                <td>
                                    <input type="text" name="gridz_options[favicon]" id="favicon" value="<?php echo esc_url($gridz_options['favicon']); ?>"/>
                                    <input id="favicon_upload" type="button" class="button-secondary image_upload" value="<?php _e('Upload Favicon','gridz'); ?>" />
                                </td>
                            </tr>
                        </table>
                    </div>
                    
                    <div class="section" id="section-3"> <!-- Section 3 -->
                        <table>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Number of grid columns','gridz'); ?></label></td>
                                <td>
                                    <select name="gridz_options[grid_columns]">
                                        <?php foreach (gridz_column_list() as $entry) { ?>
                                            <option value="<?php echo $entry['value']; ?>" <?php selected($gridz_options['grid_columns'], $entry['value']); ?>><?php echo $entry['label']; ?></option>
                                        <?php } ?>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Show sidebar along with masonry','gridz'); ?></label></td>
                                <td>
                                    <input type="checkbox" name="gridz_options[show_home_sidebar]" value="false" <?php checked(true,$gridz_options['show_home_sidebar']); ?> />
                                </td>
                            </tr>
                        </table>
                    </div>
                    
                    <div class="section" id="section-4"> <!-- Section 4 -->
                        <table>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Sidebar Layout','gridz'); ?></label></td>
                                <td>
                                    <?php foreach(gridz_sidebar_layout() as $entry) { ?>
                                        <?php if($gridz_options['sidebar_layout'] == $entry['value']) $selected = " selected"; else $selected = ""; ?>
                                        <img class="image-select <?php echo $selected; ?>" rel="sidebar-layout" id="image-select-<?php echo $entry['value']; ?>" src="<?php echo get_template_directory_uri(); ?>/inc/admin/images/<?php echo $entry['value']; ?>-sidebar.png" />
                                    <?php } ?>
                                    <input type="hidden" name="gridz_options[sidebar_layout]" id="sidebar-layout" value="<?php echo esc_attr($gridz_options['sidebar_layout']); ?>"/>
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Show Categories','gridz'); ?></label></td>
                                <td>
                                    <input type="checkbox" name="gridz_options[show_categories]" value="false" <?php checked(true,$gridz_options['show_categories']); ?> />
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Show Tags','gridz'); ?></label></td>
                                <td>
                                    <input type="checkbox" name="gridz_options[show_tags]" value="false" <?php checked(true,$gridz_options['show_tags']); ?> />
                                </td>
                            </tr>
                            <tr>
                                <td class="tdlabel"><label><?php _e('Show Post Navigation','gridz'); ?></label></td>
                                <td>
                                    <input type="checkbox" name="gridz_options[show_post_nav]" value="false" <?php checked(true,$gridz_options['show_post_nav']); ?> />
                                </td>
                            </tr>
                        </table>
                    </div>
                    <?php submit_button(__('Save Changes','gridz')); ?>                    
                </form>
                <form method="post" id="settings-reset-form">
                    <input type="submit" class="button-secondary" name="settings-reset" id="settings-reset" value="<?php _e('Reset Settings','gridz'); ?>" />
                </form>
                <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank" id="settings-paypal-form">
                    <input type="hidden" name="cmd" value="_s-xclick">
                    <input type="hidden" name="hosted_button_id" value="NR5ENJ5DRLHJN">
                    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="<?php _e('PayPal - The safer, easier way to pay online!','gridz'); ?>" title="<?php _e('Donate via PayPal','gridz'); ?>">
                    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
                </form>
            </td>
        </tr></table>
    </div>
    <?php
}

/**
 * Validate theme options
 */
function gridz_validate_options($input) {
    $output = $defaults = gridz_default_options();
    if(isset($input['grid_columns']) && array_key_exists($input['grid_columns'], gridz_column_list()))
	$output['grid_columns'] = $input['grid_columns'];
    if(isset($input['content_font']) && array_key_exists($input['post_title_font'], gridz_custom_fonts()))
	$output['content_font'] = $input['content_font'];
    if(isset($input['site_title_font']) && array_key_exists($input['site_title_font'], gridz_custom_fonts()))
	$output['site_title_font'] = $input['site_title_font'];
    if(isset($input['post_title_font']) && array_key_exists($input['post_title_font'], gridz_custom_fonts()))
	$output['post_title_font'] = $input['post_title_font'];
    if(isset($input['widget_title_font']) && array_key_exists($input['widget_title_font'], gridz_custom_fonts()))
	$output['widget_title_font'] = $input['widget_title_font'];
        
    if(!gridz_validate_hex_color($input['color_scheme']))
        add_settings_error('gridz_options', 'invalid-hex-color', __('Invalid Color for Color Scheme','gridz'), 'error');
    else
        $output['color_scheme'] = esc_attr($input['color_scheme']);
        
    if(!gridz_validate_hex_color($input['header_color']))
        add_settings_error('gridz_options', 'invalid-hex-color', __('Invalid Color for Header Color','gridz'), 'error');
    else
        $output['header_color'] = esc_attr($input['header_color']);
    
    $output['site_title_font_size'] = esc_attr($input['site_title_font_size']);
    $output['post_title_font_size'] = esc_attr($input['post_title_font_size']);
    $output['widget_title_font_size'] = esc_attr($input['widget_title_font_size']);
    $output['sidebar_layout'] = esc_attr($input['sidebar_layout']);
    
    if(trim($input['favicon']) == "") {
        $output['favicon'] = esc_url_raw($input['favicon']);
    } else {
        if(gridz_validate_image_url($input['favicon'])) {
            if(gridz_validate_image_size($input['favicon'],16,16)) $output['favicon'] = esc_url_raw($input['favicon']);
            else add_settings_error('gridz_options', 'invalid-favicon-size', __('Favicon image cannot exceed 16 x 16 pixels','gridz'), 'error');
        } else add_settings_error('gridz_options', 'invalid-favicon-image', __('Invalid favicon image URL','gridz'), 'error');
    }
    if(trim($input['logo']) == "") {
        $output['logo'] = esc_url_raw($input['logo']);
    } else {
        if(gridz_validate_image_url($input['logo'])) {
            $output['logo'] = esc_url_raw($input['logo']);
        } else add_settings_error('gridz_options', 'invalid-logo-image', __('Invalid logo image URL','gridz'), 'error');
    }
    
    $chkboxinputs = array('show_home_sidebar','show_categories','show_tags','show_post_nav');
    foreach($chkboxinputs as $chkbox) {
        if (!isset($input[$chkbox]))
            $input[$chkbox] = null;
        $output[$chkbox] = ($input[$chkbox] == true ? true : false);
    }

    return apply_filters('gridz_validate_options', $output, $input, $defaults);
}

/**
 * Validation helper functions
 */
function gridz_validate_image_url($url) {
    $exp = "/^https?:\/\/(.)*\.(jpg|png|gif|ico)$/i";
    if(!preg_match($exp,$url))
        return false;
    else
        return true;
}

function gridz_validate_image_size($url,$width,$height) {
    $size = getimagesize($url);
    if($size[0] > $width or $size[1] > $height)
        return false;
    else
        return true;
}

function gridz_validate_number($value) {
    if(is_numeric($value) and $value > 0) {
        return true;
    } else return false;
}

function gridz_validate_hex_color($color) {
    if(preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color))
        return true;
    else return false;
}
?>