/** * Test context calculations for submenus. */ public function test_submenu_contexts() { $screen = get_current_screen(); $self = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : null; $page = isset($_GET['page']) ? $_GET['page'] : null; $submenus = _fieldmanager_registry('submenus'); _fieldmanager_registry('submenus', array()); // Spoof is_admin(). set_current_screen('dashboard-user'); // Submenu of a default WordPress menu. $options_submenu = rand_str(); fm_register_submenu_page($options_submenu, 'options-general.php', 'Options'); $_SERVER['PHP_SELF'] = '/options-general.php'; $_GET['page'] = $options_submenu; $this->assertEquals(array('submenu', $options_submenu), fm_calculate_context()); // Submenu of a custom menu. $custom_menu_submenu = rand_str(); fm_register_submenu_page($custom_menu_submenu, rand_str(), 'Custom'); $_SERVER['PHP_SELF'] = '/admin.php'; $_GET['page'] = $custom_menu_submenu; $this->assertEquals(array('submenu', $custom_menu_submenu), fm_calculate_context()); // Submenu that Fieldmanager didn't register. $_SERVER['PHP_SELF'] = '/themes.php'; $_GET['page'] = rand_str(); $this->assertEquals(array(null, null), fm_calculate_context()); $GLOBALS['current_screen'] = $screen; $_SERVER['PHP_SELF'] = $self; $_GET['page'] = $page; _fieldmanager_registry('submenus', $submenus); }
/** * Get the context for triggers and pattern matching. * * This function is crucial for performance. It prevents the unnecessary * initialization of FM classes, and the unnecessary loading of CSS and * JavaScript. * * @see fm_calculate_context() for detail about the returned array values. * * @return array Contextual information for the current request. */ function fm_get_context() { static $calculated_context; if ($calculated_context) { return $calculated_context; } else { $calculated_context = fm_calculate_context(); return $calculated_context; } }
/** * Get the context for triggers and pattern matching. * * This function is crucial for performance. It prevents the unnecessary * initialization of FM classes, and the unnecessary loading of CSS and * JavaScript. * * @see fm_calculate_context() for detail about the returned array values. * * @param bool $recalculate Optional. If true, FM will recalculate the current * context. This is necessary for testing and perhaps * other programmatic purposes. * @return array Contextual information for the current request. */ function fm_get_context($recalculate = false) { static $calculated_context; if (!$recalculate && $calculated_context) { return $calculated_context; } else { $calculated_context = fm_calculate_context(); return $calculated_context; } }
/** * Test a submenu that Fieldmanager didn't register. */ public function test_non_fm_submenu() { $_SERVER['PHP_SELF'] = '/themes.php'; $_GET['page'] = rand_str(); $this->assertEquals(array(null, null), fm_calculate_context()); }
public function test_ajax_direct_context() { $_SERVER['PHP_SELF'] = '/admin-ajax.php'; $_POST = array('fm_context' => 'foo'); $this->assertEquals(array('foo', null), fm_calculate_context()); $this->_context_action_assertions('foo', null); $_POST = array('fm_context' => 'foo', 'fm_subcontext' => 'bar'); $this->assertEquals(array('foo', 'bar'), fm_calculate_context()); $this->_context_action_assertions('foo', 'bar'); }