File "options-page.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/advanced-custom-fields-pro/pro/options-page.php
File size: 9.5 KB
MIME-type: text/x-php
Charset: utf-8
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('acf_options_page') ) :
class acf_options_page {
/** @var array Contains an array of optiions page settings */
var $pages = array();
/*
* __construct
*
* Initialize filters, action, variables and includes
*
* @type function
* @date 23/06/12
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function __construct() {
/* do nothing */
}
/*
* validate_page
*
* description
*
* @type function
* @date 28/2/17
* @since 5.5.8
*
* @param $post_id (int)
* @return $post_id (int)
*/
function validate_page( $page ) {
// default
if( empty($page) ) {
$page_title = __('Options', 'acf');
$page = array(
'page_title' => $page_title,
'menu_title' => $page_title,
'menu_slug' => 'acf-options'
);
// string
} elseif( is_string($page) ) {
$page_title = $page;
$page = array(
'page_title' => $page_title,
'menu_title' => $page_title
);
}
// defaults
$page = wp_parse_args($page, array(
'page_title' => '',
'menu_title' => '',
'menu_slug' => '',
'capability' => 'edit_posts',
'parent_slug' => '',
'position' => false,
'icon_url' => false,
'redirect' => true,
'post_id' => 'options',
'autoload' => false,
'update_button' => __('Update', 'acf'),
'updated_message' => __("Options Updated", 'acf'),
));
// ACF4 compatibility
$migrate = array(
'title' => 'page_title',
'menu' => 'menu_title',
'slug' => 'menu_slug',
'parent' => 'parent_slug'
);
foreach( $migrate as $old => $new ) {
if( !empty($page[$old]) ) {
$page[ $new ] = $page[ $old ];
}
}
// page_title (allows user to define page with just page_title or title)
if( empty($page['menu_title']) ) {
$page['menu_title'] = $page['page_title'];
}
// menu_slug
if( empty($page['menu_slug']) ) {
$page['menu_slug'] = 'acf-options-' . sanitize_title( $page['menu_title'] );
}
// filter
$page = apply_filters('acf/validate_options_page', $page);
// return
return $page;
}
/*
* add_page
*
* This function will store an options page settings
*
* @type function
* @date 9/6/17
* @since 5.6.0
*
* @param $page (array)
* @return n/a
*/
function add_page( $page ) {
// validate
$page = $this->validate_page( $page );
$slug = $page['menu_slug'];
// bail ealry if already exists
if( isset($this->pages[$slug]) ) return false;
// append
$this->pages[$slug] = $page;
// return
return $page;
}
/*
* add_sub_page
*
* description
*
* @type function
* @date 9/6/17
* @since 5.6.0
*
* @param $post_id (int)
* @return $post_id (int)
*/
function add_sub_page( $page ) {
// validate
$page = $this->validate_page( $page );
// default parent
if( !$page['parent_slug'] ) {
$page['parent_slug'] = 'acf-options';
}
// create default parent if not yet exists
if( $page['parent_slug'] == 'acf-options' && !$this->get_page('acf-options') ) {
$this->add_page( '' );
}
// return
return $this->add_page( $page );
}
/*
* update_page
*
* This function will update an options page settings
*
* @type function
* @date 9/6/17
* @since 5.6.0
*
* @param $slug (string)
* @param $data (array)
* @return (array)
*/
function update_page( $slug = '', $data = array() ) {
// vars
$page = $this->get_page( $slug );
// bail early if no page
if( !$page ) return false;
// loop
$page = array_merge( $page, $data );
// set
$this->pages[ $slug ] = $page;
// return
return $page;
}
/*
* get_page
*
* This function will return an options page settings
*
* @type function
* @date 6/07/2016
* @since 5.4.0
*
* @param $slug (string)
* @return (mixed)
*/
function get_page( $slug ) {
return isset( $this->pages[$slug] ) ? $this->pages[$slug] : null;
}
/*
* get_pages
*
* This function will return all options page settings
*
* @type function
* @date 6/07/2016
* @since 5.4.0
*
* @param $slug (string)
* @return (mixed)
*/
function get_pages() {
return $this->pages;
}
}
/*
* acf_options_page
*
* This function will return the options page instance
*
* @type function
* @date 9/6/17
* @since 5.6.0
*
* @param n/a
* @return (object)
*/
function acf_options_page() {
global $acf_options_page;
if( !isset($acf_options_page) ) {
$acf_options_page = new acf_options_page();
}
return $acf_options_page;
}
// remove Options Page add-on conflict
unset($GLOBALS['acf_options_page']);
// initialize
acf_options_page();
endif; // class_exists check
/*
* acf_add_options_page
*
* alias of acf_options_page()->add_page()
*
* @type function
* @date 24/02/2014
* @since 5.0.0
*
* @param $page (mixed)
* @return (array)
*/
if( !function_exists('acf_add_options_page') ):
function acf_add_options_page( $page = '' ) {
return acf_options_page()->add_page( $page );
}
endif;
/*
* acf_add_options_sub_page
*
* alias of acf_options_page()->add_sub_page()
*
* @type function
* @date 24/02/2014
* @since 5.0.0
*
* @param $page (mixed)
* @return (array)
*/
if( !function_exists('acf_add_options_sub_page') ):
function acf_add_options_sub_page( $page = '' ) {
return acf_options_page()->add_sub_page( $page );
}
endif;
/*
* acf_update_options_page
*
* alias of acf_options_page()->update_page()
*
* @type function
* @date 24/02/2014
* @since 5.0.0
*
* @param $slug (string)
* @param $page (mixed)
* @return (array)
*/
if( !function_exists('acf_update_options_page') ):
function acf_update_options_page( $slug = '', $data = array() ) {
return acf_options_page()->update_page( $slug, $data );
}
endif;
/*
* acf_get_options_page
*
* This function will return an options page settings
*
* @type function
* @date 24/02/2014
* @since 5.0.0
*
* @param $slug (string)
* @return (array)
*/
if( !function_exists('acf_get_options_page') ):
function acf_get_options_page( $slug ) {
// vars
$page = acf_options_page()->get_page( $slug );
// bail early if no page
if( !$page ) return false;
// filter
$page = apply_filters('acf/get_options_page', $page, $slug);
// return
return $page;
}
endif;
/*
* acf_get_options_pages
*
* This function will return all options page settings
*
* @type function
* @date 24/02/2014
* @since 5.0.0
*
* @param n/a
* @return (array)
*/
if( !function_exists('acf_get_options_pages') ):
function acf_get_options_pages() {
// global
global $_wp_last_utility_menu;
// vars
$pages = acf_options_page()->get_pages();
// bail early if no pages
if( empty($pages) ) return false;
// apply filter to each page
foreach( $pages as $slug => &$page ) {
$page = acf_get_options_page( $slug );
}
// calculate parent => child redirectes
foreach( $pages as $slug => &$page ) {
// bail early if is child
if( $page['parent_slug'] ) continue;
// add missing position
if( !$page['position']) {
$_wp_last_utility_menu++;
$page['position'] = $_wp_last_utility_menu;
}
// bail early if no redirect
if( !$page['redirect'] ) continue;
// vars
$parent = $page['menu_slug'];
$child = '';
// update children
foreach( $pages as &$sub_page ) {
// bail early if not child of this parent
if( $sub_page['parent_slug'] !== $parent ) continue;
// set child (only once)
if( !$child ) {
$child = $sub_page['menu_slug'];
}
// update parent_slug to the first child
$sub_page['parent_slug'] = $child;
}
// finally update parent menu_slug
if( $child ) {
$page['menu_slug'] = $child;
}
}
// filter
$pages = apply_filters('acf/get_options_pages', $pages);
// return
return $pages;
}
endif;
/*
* acf_set_options_page_title
*
* This function is used to customize the options page admin menu title
*
* @type function
* @date 13/07/13
* @since 4.0.0
*
* @param $title (string)
* @return n/a
*/
if( ! function_exists('acf_set_options_page_title') ):
function acf_set_options_page_title( $title = 'Options' ) {
acf_update_options_page('acf-options', array(
'page_title' => $title,
'menu_title' => $title
));
}
endif;
/*
* acf_set_options_page_menu
*
* This function is used to customize the options page admin menu name
*
* @type function
* @date 13/07/13
* @since 4.0.0
*
* @param $title (string)
* @return n/a
*/
if( ! function_exists('acf_set_options_page_menu') ):
function acf_set_options_page_menu( $title = 'Options' ) {
acf_update_options_page('acf-options', array(
'menu_title' => $title
));
}
endif;
/*
* acf_set_options_page_capability
*
* This function is used to customize the options page capability. Defaults to 'edit_posts'
*
* @type function
* @date 13/07/13
* @since 4.0.0
*
* @param $title (string)
* @return n/a
*/
if( ! function_exists('acf_set_options_page_capability') ):
function acf_set_options_page_capability( $capability = 'edit_posts' ) {
acf_update_options_page('acf-options', array(
'capability' => $capability
));
}
endif;
/*
* register_options_page()
*
* This is an old function which is now referencing the new 'acf_add_options_sub_page' function
*
* @type function
* @since 3.0.0
* @date 29/01/13
*
* @param {string} $title
* @return N/A
*/
if( ! function_exists('register_options_page') ):
function register_options_page( $page = '' ) {
acf_add_options_sub_page( $page );
}
endif;
?>