settings_section = array(); $this->settings_fields = array(); $this->create_function = array(); $this->add_settings_pages(); $this->get_settings(); $this->add_settings_section(); $this->create_callback_function(); $this->add_settings_fields(); $this->page_hook = $page_hook; $this->settings = new WC_Quick_Donation_Settings(); if(empty($page_hook)) { add_action( 'admin_menu', array( $this, 'admin_menu' ) ); } add_action( 'admin_init', array( $this, 'admin_init' ) ); } function admin_menu() { $this->page_hook = add_submenu_page('edit.php?post_type=wcqd_project','Settings Page','Settings Page','administrator','WC_QD_settings', array( $this, 'admin_page' ) ); $this->page_hook = 'wc_qd'; } private function add_settings_pages(){ global $pages; $pages = array(); include(WC_QD_ADMIN.'settings/pages.php'); $this->settings_page = $pages; } private function add_settings_section(){ global $section; $section = array(); include(WC_QD_ADMIN.'settings/section.php'); $this->settings_section = $section; } private function create_callback_function(){ $sec = $this->settings_section; foreach($sec as $sk => $s){ if(is_array($s)){ $c = count($s); $a = 0; while($a < $c){ if(isset($s[$a]['validate_callback'])){ $this->create_function[] = $s[$a]['id']; $s[$a]['validate_callback'] = ''; $file = addslashes(WC_QD_ADMIN.'settings/validate-'.$s[$a]['id'].'.php'); $s[$a]['validate_callback'] = create_function('$fields', 'global $send_fields; $send_fields = $fields; require("'.$file.'"); return $fields;'); } $a++; } } $this->settings_section[$sk] = $s; } } private function add_settings_fields(){ global $fields; $fields = array(); include(WC_QD_ADMIN.'settings/fields.php'); $this->settings_field = $fields; } function admin_init(){ $this->settings->add_pages($this->settings_page); $sections = $this->settings_section; foreach ($sections as $page_id => $section_value){ $pages = $this->settings->add_sections($page_id,$section_value); } $fields = $this->settings_field; foreach($fields as $page_id => $section_fields){ foreach($section_fields as $section_id => $sfields){ if(is_array($sfields)){ foreach($sfields as $f){ $pages = $this->settings->add_field($page_id,$section_id,$f); } } else { $pages = $this->settings->add_field($page_id,$section_id,$sfields); } } } $this->settings->init( $pages, $this->page_hook ); } public function admin_page(){ echo '