<?php

class Siteinfo {
    private $siteinfo_options;

    public function __construct() {
        add_action( 'admin_menu', array( $this, 'siteinfo_add_plugin_page' ) );
        add_action( 'admin_init', array( $this, 'siteinfo_page_init' ) );
    }

    public function siteinfo_add_plugin_page() {
        add_menu_page(
            'Site Info', // page_title
            'Site Info', // menu_title
            'manage_options', // capability
            'site-info', // menu_slug
            array( $this, 'siteinfo_create_admin_page' ), // function
            'dashicons-info', // icon_url
            3 // position
        );
    }

    public function siteinfo_create_admin_page() {
        $this->siteinfo_options = get_option( 'siteinfo_option_name' ); ?>

        <div class="wrap">
            <?php settings_errors(); ?>

            <form method="post" action="options.php">
                <?php
                    settings_fields( 'siteinfo_option_group' );
                    do_settings_sections( 'site-info-admin' );
                    submit_button();
                ?>
            </form>
        </div>
    <?php }

    public function siteinfo_page_init() {
        register_setting(
            'siteinfo_option_group', // option_group
            'siteinfo_option_name', // option_name
            array( $this, 'siteinfo_sanitize' ) // sanitize_callback
        );

        add_settings_section(
            'siteinfo_setting_section', // id
            'Site Info', // title
            array( $this, 'siteinfo_section_info' ), // callback
            'site-info-admin' // page
        );

        add_settings_field(
            'phonenumber1', // id
            'Phone Number 1', // title
            array( $this, 'phonenumber1_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'phonenumber1_display', // id
            'Phone Number 1 - Label', // title
            array( $this, 'phonenumber1_display_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'phonenumber2', // id
            'Phone Numer 2', // title
            array( $this, 'phonenumber2_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'phonenumber2_display', // id
            'Phone Number 2 - Label', // title
            array( $this, 'phonenumber2_display_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'address_1', // id
            'Address1', // title
            array( $this, 'address_1_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'address_2', // id
            'Address2', // title
            array( $this, 'address_2_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'infoemail', // id
            'Info Email', // title
            array( $this, 'infoemail_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'api_3', // id
            'Mailchimp API', // title
            array( $this, 'api_3_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'listid_4', // id
            'Mailchimp ListID', // title
            array( $this, 'listid_4_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );
        // Social Media
        add_settings_field(
            'facebook_social', // id
            'Facebook', // title
            array( $this, 'facebook_social_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'twitter_social', // id
            'Twitter', // title
            array( $this, 'twitter_social_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'instagram_social', // id
            'Instagram', // title
            array( $this, 'instagram_social_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );

        add_settings_field(
            'googleplus_social', // id
            'Google Plus', // title
            array( $this, 'googleplus_social_callback' ), // callback
            'site-info-admin', // page
            'siteinfo_setting_section' // section
        );
    }

    public function siteinfo_sanitize($input) {
        $sanitary_values = array();
        if ( isset( $input['phonenumber1'] ) ) {
            $sanitary_values['phonenumber1'] = sanitize_text_field( $input['phonenumber1'] );
        }
        if ( isset( $input['phonenumber1_display'] ) ) {
            $sanitary_values['phonenumber1_display'] = sanitize_text_field( $input['phonenumber1_display'] );
        }
        if ( isset( $input['phonenumber2'] ) ) {
            $sanitary_values['phonenumber2'] = sanitize_text_field( $input['phonenumber2'] );
        }
        if ( isset( $input['phonenumber2_display'] ) ) {
            $sanitary_values['phonenumber2_display'] = sanitize_text_field( $input['phonenumber2_display'] );
        }

        if ( isset( $input['address_1'] ) ) {
            $sanitary_values['address_1'] = sanitize_text_field( $input['address_1'] );
        }

        if ( isset( $input['address_2'] ) ) {
            $sanitary_values['address_2'] = sanitize_text_field( $input['address_2'] );
        }

        if ( isset( $input['infoemail'] ) ) {
            $sanitary_values['infoemail'] = sanitize_text_field( $input['infoemail'] );
        }

        if ( isset( $input['api_3'] ) ) {
            $sanitary_values['api_3'] = sanitize_text_field( $input['api_3'] );
        }

        if ( isset( $input['listid_4'] ) ) {
            $sanitary_values['listid_4'] = sanitize_text_field( $input['listid_4'] );
        }

        if ( isset( $input['facebook_social'] ) ) {
            $sanitary_values['facebook_social'] = sanitize_text_field( $input['facebook_social'] );
        }

        if ( isset( $input['twitter_social'] ) ) {
            $sanitary_values['twitter_social'] = sanitize_text_field( $input['twitter_social'] );
        }

        if ( isset( $input['instagram_social'] ) ) {
            $sanitary_values['instagram_social'] = sanitize_text_field( $input['instagram_social'] );
        }

        if ( isset( $input['googleplus_social'] ) ) {
            $sanitary_values['googleplus_social'] = sanitize_text_field( $input['googleplus_social'] );
        }

        return $sanitary_values;
    }

    public function siteinfo_section_info() {
        ?>
        <p> Please enter the site related infomation here </p>
        <?php
    }

    public function phonenumber1_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[phonenumber1]" id="phonenumber1" value="%s">',
            isset( $this->siteinfo_options['phonenumber1'] ) ? esc_attr( $this->siteinfo_options['phonenumber1']) : ''
        );
    }

    public function phonenumber1_display_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[phonenumber1_display]" id="phonenumber1_display" value="%s">',
            isset( $this->siteinfo_options['phonenumber1_display'] ) ? esc_attr( $this->siteinfo_options['phonenumber1_display']) : ''
        );
    }

    public function phonenumber2_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[phonenumber2]" id="phonenumber2" value="%s">',
            isset( $this->siteinfo_options['phonenumber2'] ) ? esc_attr( $this->siteinfo_options['phonenumber2']) : ''
        );
    }

    public function phonenumber2_display_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[phonenumber2_display]" id="phonenumber2_display" value="%s">',
            isset( $this->siteinfo_options['phonenumber2_display'] ) ? esc_attr( $this->siteinfo_options['phonenumber2_display']) : ''
        );
    }

    public function address_1_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[address_1]" id="address_1" value="%s">',
            isset( $this->siteinfo_options['address_1'] ) ? esc_attr( $this->siteinfo_options['address_1']) : ''
        );
    }

    public function address_2_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[address_2]" id="address_2" value="%s">',
            isset( $this->siteinfo_options['address_2'] ) ? esc_attr( $this->siteinfo_options['address_2']) : ''
        );
    }

    public function infoemail_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[infoemail]" id="infoemail" value="%s">',
            isset( $this->siteinfo_options['infoemail'] ) ? esc_attr( $this->siteinfo_options['infoemail']) : ''
        );
    }

    public function api_3_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[api_3]" id="api_3" value="%s">',
            isset( $this->siteinfo_options['api_3'] ) ? esc_attr( $this->siteinfo_options['api_3']) : ''
        );
    }

    public function listid_4_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[listid_4]" id="listid_4" value="%s">',
            isset( $this->siteinfo_options['listid_4'] ) ? esc_attr( $this->siteinfo_options['listid_4']) : ''
        );
    }

    public function facebook_social_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[facebook_social]" id="facebook_social" value="%s">',
            isset( $this->siteinfo_options['facebook_social'] ) ? esc_attr( $this->siteinfo_options['facebook_social']) : ''
        );
    }

    public function twitter_social_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[twitter_social]" id="twitter_social" value="%s">',
            isset( $this->siteinfo_options['twitter_social'] ) ? esc_attr( $this->siteinfo_options['twitter_social']) : ''
        );
    }

    public function instagram_social_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[instagram_social]" id="instagram_social" value="%s">',
            isset( $this->siteinfo_options['instagram_social'] ) ? esc_attr( $this->siteinfo_options['instagram_social']) : ''
        );
    }

    public function googleplus_social_callback() {
        printf(
            '<input class="regular-text" type="text" name="siteinfo_option_name[googleplus_social]" id="googleplus_social" value="%s">',
            isset( $this->siteinfo_options['googleplus_social'] ) ? esc_attr( $this->siteinfo_options['googleplus_social']) : ''
        );
    }

}
if ( is_admin() )
    $siteinfo = new Siteinfo();

/* 
 * Retrieve this value with:
 * $siteinfo_options = get_option( 'siteinfo_option_name' ); // Array of All Options
 * $phonenumber = $siteinfo_options['phonenumber']; // Phone
 * $phonenumber_display = $siteinfo_options['phonenumber_display']; // Phone
 * $phonenumber2 = $siteinfo_options['phonenumber2']; // Phone
 * $phonenumber2_display = $siteinfo_options['phonenumber2_display']; // Phone
 * $address_1 = $siteinfo_options['address_1']; // Address
 * $infoemail = $siteinfo_options['infoemail']; // Email
 * $api_3 = $siteinfo_options['api_3']; // Api
 * $listid_4 = $siteinfo_options['listid_4']; // List ID
 * $facebook_social = $siteinfo_options['facebook_social'];
 * $twitter_social = $siteinfo_options['twitter_social'];
 * $instagram_social = $siteinfo_options['instagram_social'];
 * $googleplus_social = $siteinfo_options['googleplus_social'];
 */
