/home/edulekha/sriramaaresorts.com/wp-content/plugins/adminify/Inc/functions.php
<?php
/**
* Check given value empty or not
*
* @param [type] $value
*
* @return void
*/
function check_is_empty($value, $default = '')
{
$value = !empty(esc_attr($value)) ? $value : $default;
return $value;
}
// WP Adminify function for get an option
if (!function_exists('jltwp_adminify_get_option')) {
function jltwp_adminify_get_option($option = '', $default = null)
{
$options = [];
// if (is_multisite() && is_site_wide('wp-adminify/wp-adminify.php')) {
$options = (array) \WPAdminify\Inc\Admin\AdminSettings::get_instance()->get();
// }
return (isset($options[$option])) ? $options[$option] : $default;
}
}
function is_site_wide($plugin)
{
if (!is_multisite()) {
return false;
}
$plugins = get_site_option('active_sitewide_plugins');
if (isset($plugins[$plugin])) {
return true;
}
return false;
}
/**
* Check if the request is coming from an iframe.
*
* @param None
* @throws None
* @return bool
*/
function is_iframe()
{
return isset($_SERVER["HTTP_SEC_FETCH_DEST"]) && strtolower($_SERVER["HTTP_SEC_FETCH_DEST"]) === "iframe";
// $isIframe = isset($_SERVER["HTTP_SEC_FETCH_DEST"]) && strtolower($_SERVER["HTTP_SEC_FETCH_DEST"]) === "iframe";
// if ( $isIframe ) return true;
// if ( isset($_GET['adminify-iframe']) ) return true;
// return false;
}
/**
* Load a template file.
*
* @param string $template_name The name of the template file to load.
* @throws None
* @return void
*/
function adminify_load_template($template_name)
{
require_once WP_ADMINIFY_PATH . 'Inc/Admin/Frames/Templates/' . $template_name;
}
function maybe_network_admin_url($url) {
if ( is_network_admin() ) {
return network_admin_url($url);
}
return admin_url($url);
}
/**
* User Roles Slug from Names
*
* @param [type] $user_roles
*
* @return void
*/
function jltwp_adminify_menu_roles($user_roles = [])
{
$disabled_for_roles = [];
if (!empty( $user_roles)) {
foreach ($user_roles as $usr_key) {
$disabled_for_roles[] = strtolower(str_replace(' ', '_', $usr_key));
}
}
return $disabled_for_roles;
}
/**
* Build admin menu array.
*
* @param array $menu Menu array.
* @param array $submenu Submenu array.
* @param array $menu_options Menu options array.
*
* @return array Admin menu array.
*/
function jltwp_adminify_build_menu($menu, $submenu, $menu_options) {
$admin_menu = [];
$menu_options = apply_filters('jltwp_adminify_menu_option_compatibility_filter', $menu_options, $menu);
foreach ($menu as $key => $item) {
if (is_array($menu_options)) {
if (isset($menu_options[$item[2]])) {
$optiongroup = $menu_options[$item[2]];
if (!empty($optiongroup['hidden_for'])) {
$disabled_for = jltwp_adminify_menu_roles($optiongroup['hidden_for']);
if (\WPAdminify\Inc\Utils::restrict_for($disabled_for)) {
continue;
}
}
}
}
$menu_slug = $item[2];
$menu_title = $item[0];
$menu_name = isset($item[5]) ? $item[5] : '';
$menu_icon = isset($item[6]) ? $item[6] : '';
$external_link = (isset($item['external_link']) && $item['external_link'] == 1 ) ? true: false;
$menu_hook = get_plugin_page_hook($menu_slug, 'admin.php');
$menu_file = $menu_slug;
$pos = strpos($menu_file, '?');
if (false !== $pos) {
$menu_file = substr($menu_file, 0, $pos);
}
$url = '';
$arrParsedUrl = parse_url($menu_slug);
if (!empty($arrParsedUrl['scheme'])) {
if ($arrParsedUrl['scheme'] === "http" || $arrParsedUrl['scheme'] === "https") {
$url = $menu_slug;
}
} else {
$url = ( ! empty($menu_hook) || ( ( 'index.php' !== $menu_slug ) && file_exists(WP_PLUGIN_DIR . "/$menu_file") && ! file_exists(ABSPATH . "/wp-admin/$menu_file") ) )
? maybe_network_admin_url('admin.php?page=' . $menu_slug)
: maybe_network_admin_url($menu_slug);
}
$admin_menu[$menu_slug] = [
'key' => $menu_slug,
'title' => $menu_title,
'url' => $url,
'name' => $menu_name,
'icon' => $menu_icon,
'children' => [],
'separator' => !empty( $item['separator'] ) ? $item['separator'] : '',
'external_link' => $external_link ,
];
if (!empty($submenu[$menu_slug])) {
foreach ($submenu[$menu_slug] as $sub_key => $sub_item) {
$external_link = false;
if( isset($optiongroup['submenu'][$sub_item[2]])){
$external_link = ($optiongroup['submenu'][$sub_item[2]]['external_link'] == 1)? true : false ;
}
$sub_slug = $sub_item[2];
$sub_title = $sub_item[0];
$sub_name = isset($sub_item[5]) ? $sub_item[5] : '';
$sub_icon = isset($sub_item[6]) ? $sub_item[6] : '';
$sub_menu_hook = get_plugin_page_hook($sub_slug, $menu_slug);
$sub_file = $sub_slug;
$pos = strpos($sub_file, '?');
if (false !== $pos) {
$sub_file = substr($sub_file, 0, $pos);
}
$sub_url = '';
$arrParsedUrl = parse_url($sub_slug);
if (!empty($arrParsedUrl['scheme'])) {
if ($arrParsedUrl['scheme'] === "http" || $arrParsedUrl['scheme'] === "https") {
$sub_url = $sub_slug;
}
} else {
$sub_url = ( ! empty($sub_menu_hook) || ( ( 'index.php' !== $sub_slug ) && file_exists(WP_PLUGIN_DIR . "/$sub_file") && ! file_exists(ABSPATH . "/wp-admin/$sub_file") ) )
? maybe_network_admin_url('admin.php?page=' . $sub_slug)
: maybe_network_admin_url($sub_slug);
}
// Wrong Menu/Submenu Links
// Support for White Label Plugin Url
if ('white-label' === $sub_slug) {
$sub_url = admin_url('options-general.php?page=white-label');
}
// JetFormBuilder
if ('jet-form-builder' === $sub_slug) { $sub_url = admin_url('edit.php?post_type=jet-form-builder'); }
if ('jet-form-builder' === $sub_slug) { $sub_url = admin_url('post-new.php?post_type=jet-form-builder'); }
if ('jfb-settings' === $sub_slug) { $sub_url = admin_url('edit.php?post_type=jet-form-builder&page=jfb-settings'); }
if ('jfb-addons' === $sub_slug) { $sub_url = admin_url('edit.php?post_type=jet-form-builder&page=jfb-addons'); }
if ('jfb-payments' === $sub_slug) { $sub_url = admin_url('edit.php?post_type=jet-form-builder&page=jfb-payments'); }
if ('jfb-records' === $sub_slug) { $sub_url = admin_url('edit.php?post_type=jet-form-builder&page=jfb-records'); }
// WP Adminify Support - open in new tab
if ('adminify-support' === $sub_slug) {
$sub_url = \WPAdminify\Inc\Admin\AdminSettings::support_url();
$external_link = true;
}
// WP Adminify Pricing/Upgrade - open in new tab
if ('wp-adminify-settings-pricing' === $sub_slug) {
$sub_url = 'https://wpadminify.com/pricing';
$external_link = true;
}
$admin_menu[$menu_slug]['children'][$sub_slug] = [
'key' => $sub_slug,
'title' => $sub_title,
'url' => $sub_url,
'name' => $sub_name,
'icon' => $sub_icon,
'external_link' => $external_link,
];
}
}
}
// Elementor 3rd-level flyout menu integration
// Grabs Quick Start, Settings, Tools, Role Manager, etc. from Elementor's sidebar navigation
// Wrapped in Throwable catch so any Elementor API change degrades gracefully
try {
$elementor_flyout_class = '\Elementor\Modules\EditorOne\Classes\Menu_Data_Provider';
if (class_exists($elementor_flyout_class)) {
$elementor_menu_key = isset($admin_menu['elementor-home']) ? 'elementor-home' :
(isset($admin_menu['elementor']) ? 'elementor' : null);
if ($elementor_menu_key && isset($admin_menu[$elementor_menu_key]['children']['elementor'])
&& method_exists($elementor_flyout_class, 'instance')
) {
$menu_data_provider = $elementor_flyout_class::instance();
// Try known method names in order: current API → known alternates
$flyout_items = [];
$method_candidates = [
'get_third_level_data' => ['editor_flyout'], // Current Elementor API
'get_editor_flyout_data' => [], // Legacy / alternate
'get_level3_items' => [], // Fallback
];
foreach ($method_candidates as $method => $args) {
if (!method_exists($menu_data_provider, $method)) {
continue;
}
$result = call_user_func_array([$menu_data_provider, $method], $args);
if (is_array($result)) {
// Normalize: result might wrap items under an 'items' key or be the array itself
$flyout_items = isset($result['items']) && is_array($result['items'])
? $result['items']
: $result;
}
break;
}
if (!empty($flyout_items)) {
$flyout_children = [];
foreach ($flyout_items as $item) {
if (!is_array($item)) {
continue;
}
// Flexible key mapping — tolerate renamed fields
$slug = $item['slug'] ?? ($item['id'] ?? '');
$label = $item['label'] ?? ($item['title'] ?? '');
$url = $item['url'] ?? ($item['link'] ?? '');
if (empty($slug) || empty($label)) {
continue;
}
$flyout_children[$slug] = [
'key' => $slug,
'title' => $label,
'url' => $url,
'icon' => $item['icon'] ?? '',
'name' => '',
'is_flyout_child' => true,
'external_link' => false,
];
}
if (!empty($flyout_children)) {
$admin_menu[$elementor_menu_key]['children']['elementor']['children'] = $flyout_children;
$admin_menu[$elementor_menu_key]['children']['elementor']['has_flyout_children'] = true;
}
}
}
}
} catch (\Throwable $e) {
// Silently degrade — menu renders without flyout items
}
$admin_menu = jlt_adminify_replaceAmpersandInHref($admin_menu, 'url');
return $admin_menu;
}
/**
* Recursively replace all occurrences of & with & in an array.
*
* @see https://wordpress.org/support/topic/automatically-adding-amp-in-url/
* @param array $array The input array to process.
* @return array The updated array with replacements.
*/
function jlt_adminify_replaceAmpersandInHref($array, $indicator='href') {
foreach ($array as $key => $value) {
if (is_array($value)) {
// Recursively process child arrays
$array[$key] = jlt_adminify_replaceAmpersandInHref($value, $indicator);
} elseif ($key === $indicator && is_string($value)) {
// Replace & with & in $indicator keys
$array[$key] = str_replace('&', '&', $value);
}
}
return $array;
}
function jlt_adminify_sluggify_with_underscores($string) {
$slug = sanitize_title($string);
$slug = str_replace('-', '_', $slug);
return $slug;
}